diff --git a/Chart.yaml b/Chart.yaml index 45cb1b6b0f7840898d97c13939b64deac23f54b0..a829719af757caea83f4b64da32b37bc4610abeb 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -1,8 +1,8 @@ apiVersion: v2 name: dataspace type: application -version: 1.1.3 -appVersion: "5.0" +version: 1.2.0-rc.1 +appVersion: "6.0" dependencies: - name: keycloak diff --git a/README.md b/README.md index 2881647ffbf1dc9a43c7cbccbb8512ef09b16a18..e59eec5e509e1ed893a450e066acf29ca62a3bcb 100644 --- a/README.md +++ b/README.md @@ -135,6 +135,36 @@ helm repo update ``` [Weitere Informationen zu Helm Repositories](https://helm.sh/docs/helm/helm_repo/). +## Hostname-Konfiguration +#### Standard-Domain (global.domain) + +Wenn der Benutzer eine DNS-Zone erstellen kann und diese in der values.yaml-Datei unter global.domain definiert, ist die Verwendung des Abschnitts custom_domain nicht erforderlich. Der Domain-Name wird in diesem Fall automatisch überall korrekt konfiguriert. + +#### Anpassung mit benutzerdefinierten Domain-Namen (global.custom_domain) +Um benutzerdefinierte Domain-Namen für Anwendungen zu verwenden, müssen folgende Parameter in der `values.yaml` gesetzt werden: +- **`global.custom_domain`**: Gibt die benutzerdefinierte Domain an. +- **`global.domain`**: Muss weiterhin gesetzt bleiben, um sicherzustellen, dass Anwendungen wie Keycloak, Portal usw. korrekt konfiguriert werden. + +Zusätzlich müssen die folgenden Abschnitte in der `values.yaml` berücksichtigt werden, insbesondere im Zusammenhang mit dem `edc-connector`: +- **`edc-connector.dspCallbackAddress`** +- **`edc-connector.dataplaneApiPublicBaseUrl`** + +--- + +### Beispielkonfiguration in `values.yaml` bei Nutzung von `custom_domain` + +Falls der Benutzer eine Domain wie `example.com` besitzt und nur A-Level-Einträge erstellen kann (z. B. `customer-ANYTHING.example.com`), könnte die `values.yaml`-Datei wie folgt aussehen: + +```yaml +global: + domain: &domain customer-ds.example.com + custom_domain: + thingsboard: customer-thingsboard.example.com + edc: customer-edc.example.com + fuseki: customer-fuseki.example.com + kafka_ui: customer-kafka-ui.example.com +``` +Die Kommentare in der values.yaml-Datei unter dem Abschnitt edc-connector enthalten wichtige Informationen, die bei der Konfiguration der Ingress-Ressourcen berücksichtigt werden müssen. ## edc-connector konfigurieren Der edc-connector ist eine optionale Komponente und kann im `values.yaml` deaktiviert werden: @@ -352,7 +382,7 @@ kubectl rollout restart sts dataspace-thingsboard-node -n core # Helm Chart Konfiguration -   +   ## Values @@ -362,23 +392,7 @@ kubectl rollout restart sts dataspace-thingsboard-node -n core | edc-connector.dspCallbackAddress | string | `"https://edc.{{ .Values.global.domain }}/connector/protocol"` | | | edc-connector.enabled | bool | `true` | | | edc-connector.federatedCatalog.nodes | string | `"{\"example\": \"https://example.connector.local/connector/protocol\"}"` | | -| edc-connector.ingress.annotations."cert-manager.io/acme-challenge-type" | string | `"http01"` | | -| edc-connector.ingress.annotations."cert-manager.io/cluster-issuer" | string | `"{{ .Values.global.certificates.issuerRef.name }}"` | | -| edc-connector.ingress.annotations."kubernetes.io/tls-acme" | string | `"true"` | | -| edc-connector.ingress.annotations."nginx.ingress.kubernetes.io/proxy-buffer-size" | string | `"128k"` | | -| edc-connector.ingress.annotations."nginx.ingress.kubernetes.io/rewrite-target" | string | `"/$1$2$3"` | | -| edc-connector.ingress.annotations."nginx.ingress.kubernetes.io/use-regex" | string | `"true"` | | -| edc-connector.ingress.className | string | `"nginx"` | | | edc-connector.ingress.enabled | bool | `true` | | -| edc-connector.ingress.host | string | `"edc.{{ .Values.global.domain }}"` | | -| edc-connector.ingress.rules[0].path | string | `"/connector/(public)(/|$)(.*)"` | | -| edc-connector.ingress.rules[0].pathType | string | `"Prefix"` | | -| edc-connector.ingress.rules[0].port | int | `19291` | | -| edc-connector.ingress.rules[1].path | string | `"/connector/(protocol)(/|$)(.*)"` | | -| edc-connector.ingress.rules[1].pathType | string | `"Prefix"` | | -| edc-connector.ingress.rules[1].port | int | `19194` | | -| edc-connector.ingress.tls[0].hosts[0] | string | `"edc.{{ .Values.global.domain }}"` | | -| edc-connector.ingress.tls[0].secretName | string | `"edc-connector-tls"` | | | edc-connector.oauth2.clientId | string | `"edc-provider"` | | | edc-connector.oauth2.participantId | string | `"company1"` | | | edc-connector.oauth2.privateKey | string | `"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBl6XaJnXTL+6D\\nWip3aBhU+MzmY4d1V9hbTm1tiZ3gE0VbUrvGO3LoYaxpPv6zFmsg3uJv6JxVAde7\\nEddidN0ITHB9cQNdAfdUJ5njmsGSPbdQuOQTHw0aG7/QvTI/nsvfEE6e0lbV/0e7\\nDHacZT/+OztBH1RwkG2ymM94Hf8HI6x7q6yfRTAZOqeOMrPCYTcluAgE9NskoPvj\\nX5qASakBtXISKIsOU84N0/2HDN3WEGMXvoHUQu6vrij6BwiwxKaw1AKwWENKoga7\\n75bPXN3M+JTSaIKE7dZbKzvx0Zi0h5X+bxc3BJi3Z/CsUBCzE+Y0SFetOiYmyl/2\\nYmnneYoVAgMBAAECggEBAJHXiN6bctAyn+DcoHlsNkhtVw+Jk5bXIutGXjHTJtiU\\nK//siAGC78IZMyXmi0KndPVCdBwShROVW8xWWIiXuZxy2Zvm872xqX4Ah3JsN7/Q\\nNrXdVBUDo38zwIGkxqIfIz9crZ4An+J/eq5zaTfRHzCLtswMqjRS2hFeBY5cKrBY\\n4bkSDGTP/c5cP7xS/UwaiTR2Ptd41f4zTyd4l5rl30TYHpazQNlbdxcOV4jh2Rnp\\nE0+cFEvEfeagVq7RmfBScKG5pk4qcRG0q2QHMyK5y00hdYvhdRjSgN7xIDkeO5B8\\ns8/tSLU78nCl2gA9IKxTXYLitpISwZ81Q04mEAKRRtECgYEA+6lKnhn//aXerkLo\\nZOLOjWQZhh005jHdNxX7DZqLpTrrfxc8v15KWUkAK1H0QHqYvfPrbbsBV1MY1xXt\\nsKmkeu/k8fJQzCIvFN4K2J5W5kMfq9PSw5d3XPeDaQuXUVaxBVp0gzPEPHmkKRbA\\nAkUqY0oJwA9gMKf8dK+flmLZfbsCgYEAxO4Roj2G46/Oox1GEZGxdLpiMpr9rEdR\\nJlSZ9kMGfddNLV7sFp6yPXDcyc/AOqeNj7tw1MyoT3Ar454+V0q83EZzCXvs4U6f\\njUrfFcoVWIwf9AV/J4KWzMIzfqPIeNwqymZKd6BrZgcXXvAEPWt27mwO4a1GhC4G\\noZv0t3lAsm8CgYAQ8C0IhSF4tgBN5Ez19VoHpDQflbmowLRt77nNCZjajyOokyzQ\\niI0ig0pSoBp7eITtTAyNfyew8/PZDi3IVTKv35OeQTv08VwP4H4EZGve5aetDf3C\\nkmBDTpl2qYQOwnH5tUPgTMypcVp+NXzI6lTXB/WuCprjy3qvc96e5ZpT3wKBgQC8\\nXny/k9rTL/eYTwgXBiWYYjBL97VudUlKQOKEjNhIxwkrvQBXIrWbz7lh0Tcu49al\\nBcaHxru4QLO6pkM7fGHq0fh3ufJ8EZjMrjF1xjdk26Q05o0aXe+hLKHVIRVBhlfo\\nArB4fRo+HcpdJXjox0KcDQCvHe+1v9DYBTWvymv4QQKBgBy3YH7hKz35DcXvA2r4\\nKis9a4ycuZqTXockO4rkcIwC6CJp9JbHDIRzig8HYOaRqmZ4a+coqLmddXr2uOF1\\n7+iAxxG1KzdT6uFNd+e/j2cdUjnqcSmz49PRtdDswgyYhoDT+W4yVGNQ4VuKg6a3\\nZ3pC+KTdoHSKeA2FyAGnSUpD\\n-----END PRIVATE KEY-----"` | | @@ -424,6 +438,7 @@ kubectl rollout restart sts dataspace-thingsboard-node -n core | global.credentials.thingsboard.oauth2.clientID | string | `"thingsboard"` | | | global.credentials.thingsboard.oauth2.clientSecret | string | `"IbBVadsR4DbPo3LSAzsKqlaWMFvtPDmq"` | | | global.credentials.thingsboard.tokenSigningKey | string | `"OdGzsN031wLAo4n5EcdFhejW4DoiBsDNHsTlc7LnIeeA5cHcujoR1UF2V44cHt4T"` | | +| global.custom_domain | object | `{}` | | | global.domain | string | `"mvp-ds.chart-example.local"` | | | global.ingress.ingressClassName | string | `"nginx"` | | | kafka-ui.enabled | bool | `true` | | diff --git a/README.md.gotmpl b/README.md.gotmpl index ae188cee2ed5a6b1968bf5f74597e97df759106a..c368e7681fe4e6f7eedc6e9044617ddc5831a77a 100644 --- a/README.md.gotmpl +++ b/README.md.gotmpl @@ -136,7 +136,37 @@ helm repo update ``` [Weitere Informationen zu Helm Repositories](https://helm.sh/docs/helm/helm_repo/). +## Hostname-Konfiguration +#### Standard-Domain (global.domain) +Wenn der Benutzer eine DNS-Zone erstellen kann und diese in der values.yaml-Datei unter global.domain definiert, ist die Verwendung des Abschnitts custom_domain nicht erforderlich. Der Domain-Name wird in diesem Fall automatisch überall korrekt konfiguriert. + +#### Anpassung mit benutzerdefinierten Domain-Namen (global.custom_domain) +Um benutzerdefinierte Domain-Namen für Anwendungen zu verwenden, müssen folgende Parameter in der `values.yaml` gesetzt werden: +- **`global.custom_domain`**: Gibt die benutzerdefinierte Domain an. +- **`global.domain`**: Muss weiterhin gesetzt bleiben, um sicherzustellen, dass Anwendungen wie Keycloak, Portal usw. korrekt konfiguriert werden. + +Zusätzlich müssen die folgenden Abschnitte in der `values.yaml` berücksichtigt werden, insbesondere im Zusammenhang mit dem `edc-connector`: +- **`edc-connector.dspCallbackAddress`** +- **`edc-connector.dataplaneApiPublicBaseUrl`** + + +--- + +### Beispielkonfiguration in `values.yaml` bei Nutzung von `custom_domain` + +Falls der Benutzer eine Domain wie `example.com` besitzt und nur A-Level-Einträge erstellen kann (z. B. `customer-ANYTHING.example.com`), könnte die `values.yaml`-Datei wie folgt aussehen: + +```yaml +global: + domain: &domain customer-ds.example.com + custom_domain: + thingsboard: customer-thingsboard.example.com + edc: customer-edc.example.com + fuseki: customer-fuseki.example.com + kafka_ui: customer-kafka-ui.example.com +``` +Die Kommentare in der values.yaml-Datei unter dem Abschnitt edc-connector enthalten wichtige Informationen, die bei der Konfiguration der Ingress-Ressourcen berücksichtigt werden müssen. ## edc-connector konfigurieren Der edc-connector ist eine optionale Komponente und kann im `values.yaml` deaktiviert werden: diff --git a/charts/edc-connector/README.md b/charts/edc-connector/README.md index 95f2e0f1fa82691f735a56e2455c404faa46fedd..9a3b34bcc450e8ca2c3958dee2542dbe177c2708 100644 --- a/charts/edc-connector/README.md +++ b/charts/edc-connector/README.md @@ -13,30 +13,21 @@ For more details, please refer to the [edc-connector repository](https://gitlab. | dataplaneApiPublicBaseUrl | string | `"https://connector.domain/connector/public"` | your connector's public endpoint | | dspCallbackAddress | string | `"https://connector.domain/connector/protocol"` | your connector's dsp endpoint | | federatedCatalog.nodes | string | `"example=https://example.connector.local/connector/protocol"` | nodes that the federated catalog should crawl in properties file format | +| global.domain | string | `""` | | | image.registry | string | `"registry.int.smartlivingnext.de/registry"` | | | image.repository | string | `"public/edc"` | | | image.tag | string | `"3.1.0"` | | -| ingress.annotations."cert-manager.io/acme-challenge-type" | string | `"http01"` | | -| ingress.annotations."cert-manager.io/cluster-issuer" | string | `"letsencrypt-nginx-prod"` | | -| ingress.annotations."kubernetes.io/tls-acme" | string | `"true"` | | -| ingress.annotations."nginx.ingress.kubernetes.io/proxy-buffer-size" | string | `"128k"` | | -| ingress.annotations."nginx.ingress.kubernetes.io/rewrite-target" | string | `"/$1"` | | -| ingress.annotations."nginx.ingress.kubernetes.io/use-regex" | string | `"true"` | | +| ingress.annotations."nginx.ingress.kubernetes.io/rewrite-target" | string | `"/$1$2$3"` | | | ingress.className | string | `"nginx"` | | | ingress.enabled | bool | `false` | | -| ingress.host | string | `"host.domain"` | | -| ingress.rules[0].path | string | `"/connector/(public/.*)"` | | +| ingress.externalAccess.cidr | string | `"0.0.0.0/0"` | | +| ingress.externalAccess.enabled | bool | `true` | | +| ingress.rules[0].path | string | `"/connector/(public)(/|$)(.*)"` | | | ingress.rules[0].pathType | string | `"Prefix"` | | | ingress.rules[0].port | int | `19291` | | -| ingress.rules[1].path | string | `"/connector/(protocol/.*)"` | | +| ingress.rules[1].path | string | `"/connector/(protocol)(/|$)(.*)"` | | | ingress.rules[1].pathType | string | `"Prefix"` | | | ingress.rules[1].port | int | `19194` | | -| ingress.tls[0].hosts[0] | string | `"connector.domain"` | | -| ingress.tls[0].secretName | string | `"edc-connector-tls"` | | -| networkPolicies.edcConnector.allowedIngress[0].from[0].podSelector.matchLabels.app | string | `"edc-connector"` | | -| networkPolicies.enabled | bool | `false` | | -| networkPolicies.externalAccess.cidr | string | `"0.0.0.0/0"` | | -| networkPolicies.externalAccess.enabled | bool | `true` | | | oauth2.clientId | string | `"keycloak-clientid"` | client id of the federated keycloak instance | | oauth2.participantId | string | `"edc-participant-id"` | unique participant id, which identifies you within the ecosystem | | oauth2.privateKey | string | `"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDBl6XaJnXTL+6D\\nWip3aBhU+MzmY4d1V9hbTm1tiZ3gE0VbUrvGO3LoYaxpPv6zFmsg3uJv6JxVAde7\\nEddidN0ITHB9cQNdAfdUJ5njmsGSPbdQuOQTHw0aG7/QvTI/nsvfEE6e0lbV/0e7\\nDHacZT/+OztBH1RwkG2ymM94Hf8HI6x7q6yfRTAZOqeOMrPCYTcluAgE9NskoPvj\\nX5qASakBtXISKIsOU84N0/2HDN3WEGMXvoHUQu6vrij6BwiwxKaw1AKwWENKoga7\\n75bPXN3M+JTSaIKE7dZbKzvx0Zi0h5X+bxc3BJi3Z/CsUBCzE+Y0SFetOiYmyl/2\\nYmnneYoVAgMBAAECggEBAJHXiN6bctAyn+DcoHlsNkhtVw+Jk5bXIutGXjHTJtiU\\nK//siAGC78IZMyXmi0KndPVCdBwShROVW8xWWIiXuZxy2Zvm872xqX4Ah3JsN7/Q\\nNrXdVBUDo38zwIGkxqIfIz9crZ4An+J/eq5zaTfRHzCLtswMqjRS2hFeBY5cKrBY\\n4bkSDGTP/c5cP7xS/UwaiTR2Ptd41f4zTyd4l5rl30TYHpazQNlbdxcOV4jh2Rnp\\nE0+cFEvEfeagVq7RmfBScKG5pk4qcRG0q2QHMyK5y00hdYvhdRjSgN7xIDkeO5B8\\ns8/tSLU78nCl2gA9IKxTXYLitpISwZ81Q04mEAKRRtECgYEA+6lKnhn//aXerkLo\\nZOLOjWQZhh005jHdNxX7DZqLpTrrfxc8v15KWUkAK1H0QHqYvfPrbbsBV1MY1xXt\\nsKmkeu/k8fJQzCIvFN4K2J5W5kMfq9PSw5d3XPeDaQuXUVaxBVp0gzPEPHmkKRbA\\nAkUqY0oJwA9gMKf8dK+flmLZfbsCgYEAxO4Roj2G46/Oox1GEZGxdLpiMpr9rEdR\\nJlSZ9kMGfddNLV7sFp6yPXDcyc/AOqeNj7tw1MyoT3Ar454+V0q83EZzCXvs4U6f\\njUrfFcoVWIwf9AV/J4KWzMIzfqPIeNwqymZKd6BrZgcXXvAEPWt27mwO4a1GhC4G\\noZv0t3lAsm8CgYAQ8C0IhSF4tgBN5Ez19VoHpDQflbmowLRt77nNCZjajyOokyzQ\\niI0ig0pSoBp7eITtTAyNfyew8/PZDi3IVTKv35OeQTv08VwP4H4EZGve5aetDf3C\\nkmBDTpl2qYQOwnH5tUPgTMypcVp+NXzI6lTXB/WuCprjy3qvc96e5ZpT3wKBgQC8\\nXny/k9rTL/eYTwgXBiWYYjBL97VudUlKQOKEjNhIxwkrvQBXIrWbz7lh0Tcu49al\\nBcaHxru4QLO6pkM7fGHq0fh3ufJ8EZjMrjF1xjdk26Q05o0aXe+hLKHVIRVBhlfo\\nArB4fRo+HcpdJXjox0KcDQCvHe+1v9DYBTWvymv4QQKBgBy3YH7hKz35DcXvA2r4\\nKis9a4ycuZqTXockO4rkcIwC6CJp9JbHDIRzig8HYOaRqmZ4a+coqLmddXr2uOF1\\n7+iAxxG1KzdT6uFNd+e/j2cdUjnqcSmz49PRtdDswgyYhoDT+W4yVGNQ4VuKg6a3\\nZ3pC+KTdoHSKeA2FyAGnSUpD\\n-----END PRIVATE KEY-----"` | your private key | diff --git a/charts/edc-connector/templates/ingress.yaml b/charts/edc-connector/templates/ingress.yaml index 4f4909a1b6aa4c3028e6ea70952d1fc5aa762919..bbba9750e7d0fefed70acddbf76a63ba130ce771 100644 --- a/charts/edc-connector/templates/ingress.yaml +++ b/charts/edc-connector/templates/ingress.yaml @@ -7,15 +7,21 @@ metadata: labels: {{- include "edc-connector.labels" $root | nindent 4 }} annotations: - {{- with .Values.ingress.annotations }} - {{- tpl (toYaml .) $root | nindent 4 }} - {{- end }} + {{- if eq .Values.global.ingress.ingressClassName "nginx" }} + cert-manager.io/acme-challenge-type: http01 + cert-manager.io/cluster-issuer: {{ .Values.global.certificates.issuerRef.name }} + kubernetes.io/tls-acme: "true" + nginx.ingress.kubernetes.io/proxy-buffer-size: "128k" + nginx.ingress.kubernetes.io/use-regex: "true" + nginx.ingress.kubernetes.io/rewrite-target: {{ index .Values.ingress.annotations "nginx.ingress.kubernetes.io/rewrite-target" | default "/$1$2$3" }} + {{- end}} spec: - ingressClassName: {{ tpl .Values.ingress.className . }} + ingressClassName: {{ .Values.global.ingress.ingressClassName }} rules: - - host: {{ tpl .Values.ingress.host . }} + - host: {{ .Values.global.custom_domain.edc | default (printf "edc.%s" .Values.global.domain) }} http: paths: + {{- if .Values.ingress.rules }} {{- range $v := .Values.ingress.rules }} - path: {{ $v.path }} pathType: {{ $v.pathType }} @@ -25,8 +31,25 @@ spec: port: number: {{ $v.port }} {{- end }} - {{- with .Values.ingress.tls }} + {{- else }} + - path: /connector/(public)(/|$)(.*) + pathType: Prefix + backend: + service: + name: {{ include "edc-connector.fullname" $ }} + port: + number: 19291 + - path: /connector/(protocol)(/|$)(.*) + pathType: Prefix + backend: + service: + name: {{ include "edc-connector.fullname" $ }} + port: + number: 19194 + {{- end }} + tls: - {{- tpl (toYaml .) $root | nindent 4 }} - {{- end }} + - hosts: + - {{ .Values.global.custom_domain.edc | default (printf "edc.%s" .Values.global.domain) }} + secretName: edc-connector-tls {{- end }} \ No newline at end of file diff --git a/charts/edc-connector/values.yaml b/charts/edc-connector/values.yaml index 1f48e7bb3cdcd180a19b0630901b38a49ade00dc..6b8fd948f9b153a1823beed7aeaaa1af336c32ef 100644 --- a/charts/edc-connector/values.yaml +++ b/charts/edc-connector/values.yaml @@ -1,3 +1,5 @@ +global: + domain: &domain "" replicaCount: 1 resources: {} @@ -49,34 +51,15 @@ federatedCatalog: ingress: enabled: false className: nginx - host: host.domain annotations: - cert-manager.io/acme-challenge-type: http01 - cert-manager.io/cluster-issuer: letsencrypt-nginx-prod - kubernetes.io/tls-acme: "true" - nginx.ingress.kubernetes.io/proxy-buffer-size: "128k" - nginx.ingress.kubernetes.io/use-regex: "true" - nginx.ingress.kubernetes.io/rewrite-target: /$1 + nginx.ingress.kubernetes.io/rewrite-target: /$1$2$3 rules: - port: 19291 - path: /connector/(public/.*) + path: /connector/(public)(/|$)(.*) pathType: Prefix - port: 19194 - path: /connector/(protocol/.*) + path: /connector/(protocol)(/|$)(.*) pathType: Prefix - tls: - - hosts: - - connector.domain - secretName: edc-connector-tls - -networkPolicies: - enabled: false - edcConnector: - allowedIngress: - - from: - - podSelector: - matchLabels: - app: edc-connector externalAccess: enabled: true diff --git a/templates/certificates.yaml b/templates/certificates.yaml index 8144b27ab8fdc3124a507d06e5ae7e71b360d8fd..f1a4bfdc7842413a927f556fde760a82e957f7ff 100644 --- a/templates/certificates.yaml +++ b/templates/certificates.yaml @@ -5,9 +5,9 @@ metadata: spec: dnsNames: - {{ .Values.global.domain }} - - thingsboard.{{ .Values.global.domain }} - - fuseki.{{ .Values.global.domain }} - - kafka-ui.{{ .Values.global.domain }} + - {{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }} + - {{ .Values.global.custom_domain.fuseki | default (printf "fuseki.%s" .Values.global.domain) }} + - {{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }} issuerRef: {{- toYaml .Values.global.certificates.issuerRef | nindent 4 }} secretName: dataspace-tls diff --git a/templates/fuseki-ingress.yaml b/templates/fuseki-ingress.yaml index ff6008cca332f0d9f095d49bbf759f1b117403fc..6a227126c5b790ecd23bc341c07030b2d54fddcf 100644 --- a/templates/fuseki-ingress.yaml +++ b/templates/fuseki-ingress.yaml @@ -17,7 +17,7 @@ metadata: spec: ingressClassName: {{ .Values.global.ingress.ingressClassName }} rules: - - host: fuseki.{{ .Values.global.domain }} + - host: {{ .Values.global.custom_domain.fuseki | default (printf "fuseki.%s" .Values.global.domain) }} http: paths: - path: / @@ -29,6 +29,6 @@ spec: number: 3030 tls: - hosts: - - fuseki.{{ .Values.global.domain }} + - {{ .Values.global.custom_domain.fuseki | default (printf "fuseki.%s" .Values.global.domain) }} secretName: dataspace-tls-fuseki {{- end }} \ No newline at end of file diff --git a/templates/kafka-ui-config-map.yaml b/templates/kafka-ui-config-map.yaml index 85cf81d363bee270452b107b964105d468f79624..3818c68c6b83359652a1eb7a19fd5061d2578ff6 100644 --- a/templates/kafka-ui-config-map.yaml +++ b/templates/kafka-ui-config-map.yaml @@ -18,7 +18,7 @@ data: scope: openid issuer-uri: https://{{ .Values.global.domain }}/realms/dataspace user-name-attribute: preferred_username - redirect-uri: https://kafka-ui.{{ .Values.global.domain }}/login/oauth2/code/keycloak + redirect-uri: https://{{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }}/login/oauth2/code/keycloak client-name: keycloak provider: keycloak custom-params: diff --git a/templates/kafka-ui-ingress.yaml b/templates/kafka-ui-ingress.yaml index ca2620f5c5ce9a69d9b967548aff83118224e42e..4f8cc7148ca2a0db999c612dda92404304a7a109 100644 --- a/templates/kafka-ui-ingress.yaml +++ b/templates/kafka-ui-ingress.yaml @@ -16,7 +16,7 @@ metadata: spec: ingressClassName: {{ .Values.global.ingress.ingressClassName }} rules: - - host: kafka-ui.{{ .Values.global.domain }} + - host: {{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }} http: paths: - backend: @@ -28,5 +28,5 @@ spec: pathType: Prefix tls: - hosts: - - kafka-ui.{{ .Values.global.domain }} + - {{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }} secretName: acme-kafka-ui-tls \ No newline at end of file diff --git a/templates/keycloak-configmap-dataspace-realm.yaml b/templates/keycloak-configmap-dataspace-realm.yaml index b87ff520a7422e0dc3e728fc9cc9b37c8c7f6f7a..a8718c59071ade6ac601b971c2881f99dfeb3808 100644 --- a/templates/keycloak-configmap-dataspace-realm.yaml +++ b/templates/keycloak-configmap-dataspace-realm.yaml @@ -1138,19 +1138,19 @@ data: "clientId": "{{ .Values.global.credentials.thingsboard.oauth2.clientID }}", "name": "Thingsboard ", "description": "", - "rootUrl": "https://thingsboard.{{ .Values.global.domain }}", - "adminUrl": "https://thingsboard.{{ .Values.global.domain }}/", - "baseUrl": "https://thingsboard.{{ .Values.global.domain }}/", + "rootUrl": "https://{{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }}", + "adminUrl": "https://{{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }}/", + "baseUrl": "https://{{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }}/", "surrogateAuthRequired": false, "enabled": true, "alwaysDisplayInConsole": false, "clientAuthenticatorType": "client-secret", "secret": "{{ .Values.global.credentials.thingsboard.oauth2.clientSecret }}", "redirectUris": [ - "https://thingsboard.{{ .Values.global.domain }}/login/oauth2/code/" + "https://{{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }}/login/oauth2/code/" ], "webOrigins": [ - "https://thingsboard.{{ .Values.global.domain }}" + "https://{{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }}" ], "notBefore": 0, "bearerOnly": false, @@ -1226,19 +1226,19 @@ data: "clientId": "{{ .Values.global.credentials.kafka_ui.clientID }}", "name": "Kafka UI", "description": "", - "rootUrl": "https://kafka-ui.{{ .Values.global.domain }}", - "adminUrl": "https://kafka-ui.{{ .Values.global.domain }}/", - "baseUrl": "https://kafka-ui.{{ .Values.global.domain }}/", + "rootUrl": "https://{{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }}", + "adminUrl": "https://{{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }}/", + "baseUrl": "https://{{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }}/", "surrogateAuthRequired": false, "enabled": true, "alwaysDisplayInConsole": false, "clientAuthenticatorType": "client-secret", "secret": "{{ .Values.global.credentials.kafka_ui.clientSecret }}", "redirectUris": [ - "https://kafka-ui.{{ .Values.global.domain }}/login/oauth2/code/keycloak" + "https://{{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }}/login/oauth2/code/keycloak" ], "webOrigins": [ - "https://kafka-ui.{{ .Values.global.domain }}" + "https://{{ .Values.global.custom_domain.kafka_ui | default (printf "kafka-ui.%s" .Values.global.domain) }}" ], "notBefore": 0, "bearerOnly": false, diff --git a/templates/keycloak-ingress.yaml b/templates/keycloak-ingress.yaml index 9307736856190d7c4e9bf625689d8c4481560531..73f0e0ecb2f033f188a248f3608124eded69fae5 100644 --- a/templates/keycloak-ingress.yaml +++ b/templates/keycloak-ingress.yaml @@ -50,6 +50,6 @@ spec: number: 80 tls: - hosts: - - fuseki.{{ .Values.global.domain }} + - {{ .Values.global.domain }} secretName: dataspace-tls-keycloak {{- end }} diff --git a/templates/thingsboard-ingress.yaml b/templates/thingsboard-ingress.yaml index c8110dfaffde0c1d1eef34d7fcd0deb6b0daf32d..f240d1d1023e37e32d2dc11cdeaa5352c4d091d2 100644 --- a/templates/thingsboard-ingress.yaml +++ b/templates/thingsboard-ingress.yaml @@ -20,7 +20,7 @@ metadata: spec: ingressClassName: {{ .Values.global.ingress.ingressClassName }} rules: - - host: thingsboard.{{ .Values.global.domain }} + - host: {{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }} http: paths: - path: /api/auth/login @@ -102,6 +102,6 @@ spec: number: 8084 tls: - hosts: - - thingsboard.{{ .Values.global.domain }} + - {{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }} secretName: dataspace-tls-thingsboard {{- end }} \ No newline at end of file diff --git a/templates/thingsboard-initialize-secret.yaml b/templates/thingsboard-initialize-secret.yaml index d28b465d30931d1e7e0cced403829b961f5bb830..1ebee05add0b53083e8e312fafa4ba51a0ba0771 100644 --- a/templates/thingsboard-initialize-secret.yaml +++ b/templates/thingsboard-initialize-secret.yaml @@ -8,7 +8,7 @@ stringData: SYSADMIN_USERNAME: {{ .Values.global.credentials.thingsboard.admin.username }} SYSADMIN_PASSWORD: {{ .Values.global.credentials.thingsboard.admin.password }} JWT_SIGNING_KEY: {{ .Values.global.credentials.thingsboard.tokenSigningKey }} - OAUTH2_DOMAIN_NAME: thingsboard.{{ .Values.global.domain }} + OAUTH2_DOMAIN_NAME: {{ .Values.global.custom_domain.thingsboard | default (printf "thingsboard.%s" .Values.global.domain) }} OAUTH2_SCHEME: MIXED OAUTH2_USER_CREATION: "true" OAUTH2_ACTIVATE_USER: "true" diff --git a/update-doku/release-note-dataspace.md b/update-doku/release-note-dataspace.md index e59591b9744e58dfac7b7ef26a20a0cfa03cd42f..59c8839848c1e6a7fa10c365ab68ab225399ca52 100644 --- a/update-doku/release-note-dataspace.md +++ b/update-doku/release-note-dataspace.md @@ -1,3 +1,9 @@ +# Version 1.2.0 +| Komponente | Alte Chart Version | Ziel Chart Version | Alte App Version | Ziel App Version | Changes | Bemerkungen | +|---|---|---|---|---|---|---| +| Ingress Resources | - | - | - | - | Ingress Resources | Ingress-Ressourcen jetzt vollständig konfigurierbar mit Unterstützung für Custom Domains + + # Version 1.1.3 | Komponente | Alte Chart Version | Ziel Chart Version | Alte App Version | Ziel App Version | Changes | Bemerkungen | |---|---|---|---|---|---|---| diff --git a/update-doku/updatesanleitung.md b/update-doku/updatesanleitung.md index b176945628c93f2594b6f28ee41e4ec6f3bc1623..168a9e32de22da6a1cf25a13da7939015800a584 100644 --- a/update-doku/updatesanleitung.md +++ b/update-doku/updatesanleitung.md @@ -1,4 +1,27 @@ ## Upgrade einer bestehenden Version auf eine neue Version + +### Update von Version 1.1.3 auf 1.2.0 + +#### Erweiterung der Blueprint-Konfiguration für Ingress-Ressourcen + +Dieses Update ermöglicht es, die Ingress-Ressourcen vollständig über die `values.yaml` zu konfigurieren. + +#### Standard-Domain (global.domain) +Wenn der Benutzer eine DNS-Zone erstellt und diese unter `global.domain` definiert, bleibt die Konfiguration unverändert und funktioniert wie zuvor. Es sind keine zusätzlichen Anpassungen erforderlich. + +#### Anpassung mit benutzerdefinierten Domain-Namen (global.custom_domain) +Um benutzerdefinierte Domain-Namen für Anwendungen zu verwenden, müssen folgende Parameter in der `values.yaml` gesetzt werden: +- **`global.custom_domain`**: Gibt die benutzerdefinierte Domain an. +- **`global.domain`**: Muss weiterhin gesetzt bleiben, um sicherzustellen, dass Anwendungen wie Keycloak, Portal usw. korrekt konfiguriert werden. + +Zusätzlich müssen die folgenden Abschnitte in der `values.yaml` berücksichtigt werden, insbesondere im Zusammenhang mit dem `edc-connector`: +- **`edc-connector.dspCallbackAddress`** +- **`edc-connector.dataplaneApiPublicBaseUrl`** + +Die Kommentare in der values.yaml-Datei unter dem Abschnitt edc-connector enthalten wichtige Informationen, die bei der Konfiguration der Ingress-Ressourcen berücksichtigt werden müssen. + + + ### Update von Version 1.1.2 auf 1.1.3 ### Thing-Describer: diff --git a/values.yaml b/values.yaml index 4b5498a92cb90af7e2b3c9ca7141ecf8fd6941d4..c32b35ccf3ec1f4b43f380acbfd71b9b58771fb4 100644 --- a/values.yaml +++ b/values.yaml @@ -1,5 +1,10 @@ global: domain: &domain mvp-ds.chart-example.local + custom_domain: {} + # thingsboard: example-thingsboard.mvp-ds.chart-example.local + # edc: example-edc.mvp-ds.chart-example.local + # fuseki: example-fuseki.mvp-ds.chart-example.local + # kafka_ui: example-kafka-ui.mvp-ds.chart-example.local credentials: postgresql: username: &postgresql_username postgres @@ -359,6 +364,11 @@ edc-connector: limits: memory: "1024Mi" cpu: "512m" + # Bei Verwendung von custom_domain oder bei Änderung der default Ingress-Regeln + # müssen die zwei URLs entsprechend angepasst werden. + # Beispiel für die Verwendung von custom_domain: + # dspCallbackAddress: "https://{{ .Values.global.custom_domain.edc }}/connector/protocol" + # dataplaneApiPublicBaseUrl: "https://{{ .Values.global.custom_domain.edc }}/connector/public" dspCallbackAddress: "https://edc.{{ .Values.global.domain }}/connector/protocol" dataplaneApiPublicBaseUrl: "https://edc.{{ .Values.global.domain }}/connector/public" postgres: @@ -370,26 +380,11 @@ edc-connector: schemaname: edc ingress: enabled: true - className: nginx - host: "edc.{{ .Values.global.domain }}" - annotations: - cert-manager.io/acme-challenge-type: http01 - cert-manager.io/cluster-issuer: "{{ .Values.global.certificates.issuerRef.name }}" - kubernetes.io/tls-acme: "true" - nginx.ingress.kubernetes.io/proxy-buffer-size: "128k" - nginx.ingress.kubernetes.io/use-regex: "true" - nginx.ingress.kubernetes.io/rewrite-target: /$1$2$3 - rules: - - port: 19291 - path: /connector/(public)(/|$)(.*) - pathType: Prefix - - port: 19194 - path: /connector/(protocol)(/|$)(.*) - pathType: Prefix - tls: - - hosts: - - "edc.{{ .Values.global.domain }}" - secretName: edc-connector-tls + ## Custom Annotation + #annotations: + #nginx.ingress.kubernetes.io/rewrite-target: /$1$2$3 + # Custom Rules + #rules: {} oauth2: url: https://mvp-ds.dev.mat.ptr.smartlivingnext.de/realms/dataspace