diff --git a/charts/ndc-connector-oracle/Chart.yaml b/charts/ndc-connector-oracle/Chart.yaml index 187850a..f251e72 100644 --- a/charts/ndc-connector-oracle/Chart.yaml +++ b/charts/ndc-connector-oracle/Chart.yaml @@ -15,13 +15,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.0 +version: v2024.10.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "3.0.0" dependencies: - name: common diff --git a/charts/ndc-connector-oracle/README.md b/charts/ndc-connector-oracle/README.md index 6424bab..2866aa1 100644 --- a/charts/ndc-connector-oracle/README.md +++ b/charts/ndc-connector-oracle/README.md @@ -10,42 +10,53 @@ See all [configuration](#parameters) below. # EXAMPLES: # helm template and apply manifests via kubectl (example) -helm template \ +helm template \ --set image.repository="my_repo/ndc-jvm-oracle" \ --set image.tag="my_custom_image_tag" \ - --set connector.JDBC_URL="jdbc_url" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set connectorEnvVars.JDBC_URL="jdbc_url" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-connector-oracle | kubectl apply -f- # helm upgrade --install (pass configuration via command line) helm upgrade --install \ --set image.repository="my_repo/ndc-jvm-oracle" \ --set image.tag="my_custom_image_tag" \ - --set connector.JDBC_URL="jdbc_url" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - hasura-ddn/ndc-connector-oracle - -# helm upgrade --install (with OTEL variabes) -helm upgrade --install \ - --set image.repository="my_repo/ndc-jvm-oracle" \ - --set image.tag="my_custom_image_tag" \ - --set connector.JDBC_URL="jdbc_url" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - --set otel.deployOtelCollector="true" \ - --set otel.dataPlaneID= \ - --set otel.dataPlaneKey= \ + --set connectorEnvVars.JDBC_URL="jdbc_url" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-connector-oracle ``` -## Parameters +## Connector ENV Inputs + +| Name | Description | Value | +| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | +| `connectorEnvVars.JDBC_URL` | The JDBC URL to connect to the database (Required) | `""` | +| `connectorEnvVars.JDBC_SCHEMAS` | A comma-separated list of schemas to include in the metadata (Optional) | `""` | + +## Additional Parameters | Name | Description | Value | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------| +| `namespace` | Namespace to deploy to | `"default"` | | `image.repository` | Image repository containing custom created ndc-connector-oracle | `""` | | `image.tag` | Image tag to use for custom created ndc-connector-oracle | `""` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.otelCollectorRepository` | OTEL collector image repository | `otel/opentelemetry-collector` | | `image.otelCollectorTag` | OTEL collector image tag | `0.104.0` | +| `observability.enabled` | Deploy OTEL collector as sidecar | `true` | +| `dataPlane.id` | Data Plane ID (Required when observability.enabled is set to true) | `""` | +| `dataPlane.key` | Data Plane Key (Required when observability.enabled is set to true) | `""` | +| `controlPlane.otlpEndpoint` | OTEL endpoint under Hasura | `"https://gateway.otlp.hasura.io:443"` | +| `controlPlane.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | +| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-connector-oracle pod | `[]` | +| `extraContainers` | Optionally specify extra list of additional containers for the ndc-connector-oracle pod | `[]` | +| `resources` | Resource requests and limits of ndc-connector-oracle container | `{}` | +| `env` | Env variable section for ndc-connector-oracle | `[]` | | `replicas` | Replicas setting for pod | `1` | | `wsInactiveExpiryMins` | To be documented | `1` | | `securityContext` | Define privilege and access control settings for a Pod or Container | `{}` | @@ -56,21 +67,4 @@ helm upgrade --install \ | `hpa.minReplicas` | minReplicas setting for HPA | `2` | | `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | | `hpa.metrics.resource.name` | Resource name to autoscale on | `` | -| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | -| `otel.deployOtelCollector` | Deploy OTEL collector as sidecar to ndc-connector-oracle container | `true` | -| `otel.endpoint` | OTEL endpoint under Hasura | `https://gateway.otlp.hasura.io:443` | -| `otel.dataPlaneID` | Oauth Client ID for pushing telemetry data to endpoint | `""` | -| `otel.dataPlaneKey` | Oauth Client Secret for pushing telemetry data to endpoint | `""` | -| `otel.oauthTokenEndpoint` | Oauth Token URL | `""` | -| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-connector-oracle pod | `[]` | -| `extraContainers` | Optionally specify extra list of additional containers for the ndc-connector-oracle pod | `[]` | -| `resources` | Resource requests and limits of ndc-connector-oracle container | `{}` | -| `env` | Env variable section for ndc-connector-oracle | `[]` | - -## Connector ENV Inputs - -| Name | Description | Value | -| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | -| `connector.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | -| `connector.JDBC_URL` | The JDBC URL to connect to the database (Required) | `""` | -| `connector.JDBC_SCHEMAS` | A comma-separated list of schemas to include in the metadata (Optional) | `""` | \ No newline at end of file +| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | \ No newline at end of file diff --git a/charts/ndc-connector-oracle/templates/NOTES.txt b/charts/ndc-connector-oracle/templates/NOTES.txt new file mode 100644 index 0000000..451347c --- /dev/null +++ b/charts/ndc-connector-oracle/templates/NOTES.txt @@ -0,0 +1,22 @@ +Ndc-connector-oracle Helm Chart Deployment + +1. Deployment Information: + - Release Name: {{ .Release.Name }} + - Namespace: {{ template "common.namespace" . }} + - Chart Name: {{ .Chart.Name }} + - Chart Version: {{ .Chart.Version }} + +2. Service Information: + - Service Name: {{ template "common.name" . }} + - Service Port: {{ .Values.httpPort }} + +3. Useful Commands: + - Check the Deployment Status: + helm status {{ .Release.Name }} + + - Get Detailed Information about the Deployment: + helm get all {{ .Release.Name }} + +4. Clean Up: + - To uninstall/delete the deployment, run: + helm uninstall {{ .Release.Name }} \ No newline at end of file diff --git a/charts/ndc-connector-oracle/templates/imagepullsecret.yaml b/charts/ndc-connector-oracle/templates/imagepullsecret.yaml index 4f630fe..679ba77 100644 --- a/charts/ndc-connector-oracle/templates/imagepullsecret.yaml +++ b/charts/ndc-connector-oracle/templates/imagepullsecret.yaml @@ -8,9 +8,9 @@ metadata: name: hasura-image-pull namespace: {{ template "common.namespace" $ }} type: kubernetes.io/dockerconfigjson -data: +data: .dockerconfigjson: | -{{- toJson .imagePullSecret | b64enc | nindent 4 }} +{{- toJson .imagePullSecret | b64enc | nindent 4 }} {{- end }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/charts/ndc-connector-oracle/templates/secret.yaml b/charts/ndc-connector-oracle/templates/secret.yaml index 8c17ef2..7d7e22f 100644 --- a/charts/ndc-connector-oracle/templates/secret.yaml +++ b/charts/ndc-connector-oracle/templates/secret.yaml @@ -4,8 +4,8 @@ metadata: name: {{ printf "%s-secret" (include "common.name" .) }} namespace: {{ template "common.namespace" $ }} data: - HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connector.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} - MONGODB_DATABASE_URI: {{ .Values.connector.MONGODB_DATABASE_URI | b64enc | quote }} -{{- if .Values.otel.deployOtelCollector }} + HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} + JDBC_URL: {{ .Values.connectorEnvVars.JDBC_URL | b64enc | quote }} +{{- if .Values.observability.enabled }} otel-collector-config.yaml: {{ (tpl .Values.otel.config .) | b64enc | quote }} {{- end }} \ No newline at end of file diff --git a/charts/ndc-connector-oracle/values.yaml b/charts/ndc-connector-oracle/values.yaml index 6af5b24..d45b88f 100644 --- a/charts/ndc-connector-oracle/values.yaml +++ b/charts/ndc-connector-oracle/values.yaml @@ -1,3 +1,4 @@ +namespace: "default" useReleaseName: true additionalAnnotations: | @@ -27,7 +28,7 @@ hpa: enabled: false minReplicas: 2 maxReplicas: 4 - metrics: + metrics: - type: Resource resource: name: cpu @@ -39,26 +40,35 @@ hpa: name: memory target: type: Utilization - averageUtilization: 80 # Target 80% memory utilization per pod + averageUtilization: 80 # Target 80% memory utilization per pod -otel: - deployOtelCollector: false - endpoint: https://gateway.otlp.hasura.io:443 - dataPlaneID: "" - dataPlaneKey: "" +# Observability defaults are tuned for Hasura hosted Control Plane +# Enable observability +observability: + enabled: true + +# Required (when observability.enabled is set to true) +dataPlane: + id: "" + key: "" + +controlPlane: + otlpEndpoint: https://gateway.otlp.hasura.io:443 oauthTokenEndpoint: https://ddn-oauth.pro.hasura.io/oauth2/token + +otel: config: | extensions: oauth2client: - client_id: {{ .Values.otel.dataPlaneID }} - client_secret: {{ .Values.otel.dataPlaneKey }} - token_url: {{ .Values.otel.oauthTokenEndpoint }} + client_id: {{ required "Error: .Values.dataPlane.id is required!" .Values.dataPlane.id }} + client_secret: {{ required "Error: .Values.dataPlane.key is required!" .Values.dataPlane.key }} + token_url: {{ .Values.controlPlane.oauthTokenEndpoint }} scopes: ["opentelemetry:write"] endpoint_params: audience: https://ddn.hasura.io exporters: otlp/oauth: - endpoint: {{ .Values.otel.endpoint }} + endpoint: {{ .Values.controlPlane.otlpEndpoint }} auth: authenticator: oauth2client processors: @@ -93,31 +103,31 @@ otel: processors: - batch receivers: - - otlp + - otlp extraVolumes: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: otel-config secret: - secretName: {{ printf "%s-secret" (include "common.name" .) }} + secretName: {{ printf "%s-secret" (include "common.name" .) }} items: - key: otel-collector-config.yaml path: otel-collector-config.yaml {{- end }} extraContainers: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: "otel-collector" command: - - --config=/etc/otel-collector-config.yaml - command: - image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} + - --config=/etc/otel-collector-config.yaml + command: + image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} env: - name: "OTEL_ENDPOINT" - value: "{{ .Values.otel.endpoint }}" + value: "{{ .Values.controlPlane.otlpEndpoint }}" volumeMounts: - name: otel-config - mountPath: "/etc/otelcol-contrib/config.yaml" + mountPath: "/etc/otelcol-contrib/config.yaml" subPath: otel-collector-config.yaml {{- end }} @@ -129,7 +139,7 @@ resources: | cpu: "1" memory: "1Gi" -connector: +connectorEnvVars: HASURA_SERVICE_TOKEN_SECRET: "" JDBC_URL: "" JDBC_SCHEMAS: "" @@ -148,11 +158,11 @@ env: | secretKeyRef: key: JDBC_URL name: {{ printf "%s-secret" (include "common.name" .) }} - {{- if .Values.connector.JDBC_SCHEMAS }} + {{- if .Values.connectorEnvVars.JDBC_SCHEMAS }} - name: JDBC_SCHEMAS - value: {{ .Values.connector.JDBC_SCHEMAS | quote }} + value: {{ .Values.connectorEnvVars.JDBC_SCHEMAS | quote }} {{- end }} - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 - name: HASURA_CONFIGURATION_DIRECTORY - value: {{ .Values.connector.configDirectory }} \ No newline at end of file + value: {{ .Values.connectorEnvVars.configDirectory }} diff --git a/charts/ndc-connector-phoenix/Chart.yaml b/charts/ndc-connector-phoenix/Chart.yaml index 9f4468a..faee69b 100644 --- a/charts/ndc-connector-phoenix/Chart.yaml +++ b/charts/ndc-connector-phoenix/Chart.yaml @@ -15,13 +15,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.0 +version: v2024.10.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "3.0.0" dependencies: - name: common diff --git a/charts/ndc-connector-phoenix/README.md b/charts/ndc-connector-phoenix/README.md index eb35286..2b098ee 100644 --- a/charts/ndc-connector-phoenix/README.md +++ b/charts/ndc-connector-phoenix/README.md @@ -10,42 +10,52 @@ See all [configuration](#parameters) below. # EXAMPLES: # helm template and apply manifests via kubectl (example) -helm template \ +helm template \ --set image.repository="my_repo/ndc-jvm-phoenix" \ --set image.tag="my_custom_image_tag" \ - --set connector.JDBC_URL="jdbc_url" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set connectorEnvVars.JDBC_URL="jdbc_url" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-connector-phoenix | kubectl apply -f- # helm upgrade --install (pass configuration via command line) helm upgrade --install \ --set image.repository="my_repo/ndc-jvm-phoenix" \ --set image.tag="my_custom_image_tag" \ - --set connector.JDBC_URL="jdbc_url" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - hasura-ddn/ndc-connector-phoenix - -# helm upgrade --install (with OTEL variabes) -helm upgrade --install \ - --set image.repository="my_repo/ndc-jvm-phoenix" \ - --set image.tag="my_custom_image_tag" \ - --set connector.JDBC_URL="jdbc_url" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - --set otel.deployOtelCollector="true" \ - --set otel.dataPlaneID= \ - --set otel.dataPlaneKey= \ + --set connectorEnvVars.JDBC_URL="jdbc_url" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-connector-phoenix ``` -## Parameters +## Connector ENV Inputs + +| Name | Description | Value | +| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | +| `connectorEnvVars.JDBC_URL` | The JDBC URL to connect to the database (Required) | `""` | + +## Additional Parameters | Name | Description | Value | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------| +| `namespace` | Namespace to deploy to | `"default"` | | `image.repository` | Image repository containing custom created ndc-connector-phoenix | `""` | | `image.tag` | Image tag to use for custom created ndc-connector-phoenix | `""` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.otelCollectorRepository` | OTEL collector image repository | `otel/opentelemetry-collector` | | `image.otelCollectorTag` | OTEL collector image tag | `0.104.0` | +| `observability.enabled` | Deploy OTEL collector as sidecar | `true` | +| `dataPlane.id` | Data Plane ID (Required when observability.enabled is set to true) | `""` | +| `dataPlane.key` | Data Plane Key (Required when observability.enabled is set to true) | `""` | +| `controlPlane.otlpEndpoint` | OTEL endpoint under Hasura | `"https://gateway.otlp.hasura.io:443"` | +| `controlPlane.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | +| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-connector-phoenix pod | `[]` | +| `extraContainers` | Optionally specify extra list of additional containers for the ndc-connector-phoenix pod | `[]` | +| `resources` | Resource requests and limits of ndc-connector-phoenix container | `{}` | +| `env` | Env variable section for ndc-connector-phoenix | `[]` | | `replicas` | Replicas setting for pod | `1` | | `wsInactiveExpiryMins` | To be documented | `1` | | `securityContext` | Define privilege and access control settings for a Pod or Container | `{}` | @@ -56,20 +66,4 @@ helm upgrade --install \ | `hpa.minReplicas` | minReplicas setting for HPA | `2` | | `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | | `hpa.metrics.resource.name` | Resource name to autoscale on | `` | -| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | -| `otel.deployOtelCollector` | Deploy OTEL collector as sidecar to ndc-connector-phoenix container | `true` | -| `otel.endpoint` | OTEL endpoint under Hasura | `https://gateway.otlp.hasura.io:443` | -| `otel.dataPlaneID` | Oauth Client ID for pushing telemetry data to endpoint | `""` | -| `otel.dataPlaneKey` | Oauth Client Secret for pushing telemetry data to endpoint | `""` | -| `otel.oauthTokenEndpoint` | Oauth Token URL | `""` | -| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-connector-phoenix pod | `[]` | -| `extraContainers` | Optionally specify extra list of additional containers for the ndc-connector-phoenix pod | `[]` | -| `resources` | Resource requests and limits of ndc-connector-phoenix container | `{}` | -| `env` | Env variable section for ndc-connector-phoenix | `[]` | - -## Connector ENV Inputs - -| Name | Description | Value | -| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | -| `connector.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | -| `connector.JDBC_URL` | The JDBC URL to connect to the database (Required) | `""` | \ No newline at end of file +| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | \ No newline at end of file diff --git a/charts/ndc-connector-phoenix/templates/NOTES.txt b/charts/ndc-connector-phoenix/templates/NOTES.txt new file mode 100644 index 0000000..36403f0 --- /dev/null +++ b/charts/ndc-connector-phoenix/templates/NOTES.txt @@ -0,0 +1,22 @@ +Ndc-connector-phoenix Helm Chart Deployment + +1. Deployment Information: + - Release Name: {{ .Release.Name }} + - Namespace: {{ template "common.namespace" . }} + - Chart Name: {{ .Chart.Name }} + - Chart Version: {{ .Chart.Version }} + +2. Service Information: + - Service Name: {{ template "common.name" . }} + - Service Port: {{ .Values.httpPort }} + +3. Useful Commands: + - Check the Deployment Status: + helm status {{ .Release.Name }} + + - Get Detailed Information about the Deployment: + helm get all {{ .Release.Name }} + +4. Clean Up: + - To uninstall/delete the deployment, run: + helm uninstall {{ .Release.Name }} \ No newline at end of file diff --git a/charts/ndc-connector-phoenix/templates/imagepullsecret.yaml b/charts/ndc-connector-phoenix/templates/imagepullsecret.yaml index 4f630fe..679ba77 100644 --- a/charts/ndc-connector-phoenix/templates/imagepullsecret.yaml +++ b/charts/ndc-connector-phoenix/templates/imagepullsecret.yaml @@ -8,9 +8,9 @@ metadata: name: hasura-image-pull namespace: {{ template "common.namespace" $ }} type: kubernetes.io/dockerconfigjson -data: +data: .dockerconfigjson: | -{{- toJson .imagePullSecret | b64enc | nindent 4 }} +{{- toJson .imagePullSecret | b64enc | nindent 4 }} {{- end }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/charts/ndc-connector-phoenix/templates/secret.yaml b/charts/ndc-connector-phoenix/templates/secret.yaml index 8c17ef2..7d7e22f 100644 --- a/charts/ndc-connector-phoenix/templates/secret.yaml +++ b/charts/ndc-connector-phoenix/templates/secret.yaml @@ -4,8 +4,8 @@ metadata: name: {{ printf "%s-secret" (include "common.name" .) }} namespace: {{ template "common.namespace" $ }} data: - HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connector.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} - MONGODB_DATABASE_URI: {{ .Values.connector.MONGODB_DATABASE_URI | b64enc | quote }} -{{- if .Values.otel.deployOtelCollector }} + HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} + JDBC_URL: {{ .Values.connectorEnvVars.JDBC_URL | b64enc | quote }} +{{- if .Values.observability.enabled }} otel-collector-config.yaml: {{ (tpl .Values.otel.config .) | b64enc | quote }} {{- end }} \ No newline at end of file diff --git a/charts/ndc-connector-phoenix/values.yaml b/charts/ndc-connector-phoenix/values.yaml index 405760e..e684ff8 100644 --- a/charts/ndc-connector-phoenix/values.yaml +++ b/charts/ndc-connector-phoenix/values.yaml @@ -1,3 +1,6 @@ +namespace: "default" +useReleaseName: true + additionalAnnotations: | checksum/config: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} @@ -25,7 +28,7 @@ hpa: enabled: false minReplicas: 2 maxReplicas: 4 - metrics: + metrics: - type: Resource resource: name: cpu @@ -37,26 +40,35 @@ hpa: name: memory target: type: Utilization - averageUtilization: 80 # Target 80% memory utilization per pod + averageUtilization: 80 # Target 80% memory utilization per pod -otel: - deployOtelCollector: true - endpoint: https://gateway.otlp.hasura.io:443 - dataPlaneID: "" - dataPlaneKey: "" +# Observability defaults are tuned for Hasura hosted Control Plane +# Enable observability +observability: + enabled: true + +# Required (when observability.enabled is set to true) +dataPlane: + id: "" + key: "" + +controlPlane: + otlpEndpoint: https://gateway.otlp.hasura.io:443 oauthTokenEndpoint: https://ddn-oauth.pro.hasura.io/oauth2/token + +otel: config: | extensions: oauth2client: - client_id: {{ .Values.otel.dataPlaneID }} - client_secret: {{ .Values.otel.dataPlaneKey }} - token_url: {{ .Values.otel.oauthTokenEndpoint }} + client_id: {{ required "Error: .Values.dataPlane.id is required!" .Values.dataPlane.id }} + client_secret: {{ required "Error: .Values.dataPlane.key is required!" .Values.dataPlane.key }} + token_url: {{ .Values.controlPlane.oauthTokenEndpoint }} scopes: ["opentelemetry:write"] endpoint_params: audience: https://ddn.hasura.io exporters: otlp/oauth: - endpoint: {{ .Values.otel.endpoint }} + endpoint: {{ .Values.controlPlane.otlpEndpoint }} auth: authenticator: oauth2client processors: @@ -91,31 +103,31 @@ otel: processors: - batch receivers: - - otlp + - otlp extraVolumes: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: otel-config secret: - secretName: {{ printf "%s-secret" (include "common.name" .) }} + secretName: {{ printf "%s-secret" (include "common.name" .) }} items: - key: otel-collector-config.yaml path: otel-collector-config.yaml {{- end }} extraContainers: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: "otel-collector" command: - - --config=/etc/otel-collector-config.yaml - command: - image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} + - --config=/etc/otel-collector-config.yaml + command: + image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} env: - name: "OTEL_ENDPOINT" - value: "{{ .Values.otel.endpoint }}" + value: "{{ .Values.controlPlane.otlpEndpoint }}" volumeMounts: - name: otel-config - mountPath: "/etc/otelcol-contrib/config.yaml" + mountPath: "/etc/otelcol-contrib/config.yaml" subPath: otel-collector-config.yaml {{- end }} @@ -127,7 +139,7 @@ resources: | cpu: "1" memory: "1Gi" -connector: +connectorEnvVars: HASURA_SERVICE_TOKEN_SECRET: "" JDBC_URL: "" configDirectory: /etc/connector @@ -148,4 +160,4 @@ env: | - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 - name: HASURA_CONFIGURATION_DIRECTORY - value: {{ .Values.connector.configDirectory }} + value: {{ .Values.connectorEnvVars.configDirectory }} diff --git a/charts/ndc-graphql/Chart.yaml b/charts/ndc-graphql/Chart.yaml index 07307af..50c4877 100644 --- a/charts/ndc-graphql/Chart.yaml +++ b/charts/ndc-graphql/Chart.yaml @@ -15,13 +15,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.0 +version: v2024.10.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "3.0.0" dependencies: - name: common diff --git a/charts/ndc-graphql/README.md b/charts/ndc-graphql/README.md index 4e0361b..f510c43 100644 --- a/charts/ndc-graphql/README.md +++ b/charts/ndc-graphql/README.md @@ -10,42 +10,52 @@ See all [configuration](#parameters) below. # EXAMPLES: # helm template and apply manifests via kubectl (example) -helm template \ +helm template \ --set image.repository="my_repo/ndc-graphql" \ --set image.tag="my_custom_image_tag" \ - --set connector.GRAPHQL_ENDPOINT="graphql_endpoint" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set connectorEnvVars.GRAPHQL_ENDPOINT="graphql_endpoint" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-graphql | kubectl apply -f- # helm upgrade --install (pass configuration via command line) helm upgrade --install \ --set image.repository="my_repo/ndc-graphql" \ --set image.tag="my_custom_image_tag" \ - --set connector.GRAPHQL_ENDPOINT="graphql_endpoint" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - hasura-ddn/ndc-graphql - -# helm upgrade --install (with OTEL variabes) -helm upgrade --install \ - --set image.repository="my_repo/ndc-graphql" \ - --set image.tag="my_custom_image_tag" \ - --set connector.GRAPHQL_ENDPOINT="graphql_endpoint" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - --set otel.deployOtelCollector="true" \ - --set otel.dataPlaneID= \ - --set otel.dataPlaneKey= \ + --set connectorEnvVars.GRAPHQL_ENDPOINT="graphql_endpoint" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-graphql ``` -## Parameters +## Connector ENV Inputs + +| Name | Description | Value | +| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | +| `connectorEnvVars.GRAPHQL_ENDPOINT` | The GraphQL Endpoint (Required) | `""` | + +## Additional Parameters | Name | Description | Value | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `namespace` | Namespace to deploy to | `"default"` | | `image.repository` | Image repository containing custom created ndc-graphql | `""` | | `image.tag` | Image tag to use for custom created ndc-graphql | `""` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.otelCollectorRepository` | OTEL collector image repository | `otel/opentelemetry-collector` | | `image.otelCollectorTag` | OTEL collector image tag | `0.104.0` | +| `observability.enabled` | Deploy OTEL collector as sidecar | `true` | +| `dataPlane.id` | Data Plane ID (Required when observability.enabled is set to true) | `""` | +| `dataPlane.key` | Data Plane Key (Required when observability.enabled is set to true) | `""` | +| `controlPlane.otlpEndpoint` | OTEL endpoint under Hasura | `"https://gateway.otlp.hasura.io:443"` | +| `controlPlane.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | +| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-graphql pod | `[]` | +| `extraContainers` | Optionally specify extra list of additional containers for the ndc-graphql pod | `[]` | | +| `resources` | Resource requests and limits of ndc-graphql container | `{}` | +| `env` | Env variable section for ndc-graphql | `[]` | | `replicas` | Replicas setting for pod | `1` | | `wsInactiveExpiryMins` | To be documented | `1` | | `securityContext` | Define privilege and access control settings for a Pod or Container | `{}` | @@ -56,20 +66,4 @@ helm upgrade --install \ | `hpa.minReplicas` | minReplicas setting for HPA | `2` | | `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | | `hpa.metrics.resource.name` | Resource name to autoscale on | `` | -| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | -| `otel.deployOtelCollector` | Deploy OTEL collector as sidecar to ndc-graphql container | `true` | -| `otel.endpoint` | OTEL endpoint under Hasura | `https://gateway.otlp.hasura.io:443` | -| `otel.dataPlaneID` | Oauth Client ID for pushing telemetry data to endpoint | `""` | -| `otel.dataPlaneKey` | Oauth Client Secret for pushing telemetry data to endpoint | `""` | -| `otel.oauthTokenEndpoint` | Oauth Token URL | `""` | -| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-graphql pod | `[]` | -| `extraContainers` | Optionally specify extra list of additional containers for the ndc-graphql pod | `[]` | | -| `resources` | Resource requests and limits of ndc-graphql container | `{}` | -| `env` | Env variable section for ndc-graphql | `[]` | - -## Connector ENV Inputs - -| Name | Description | Value | -| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | -| `connector.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | -| `connector.GRAPHQL_ENDPOINT` | The GraphQL Endpoint (Required) | `""` | \ No newline at end of file +| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | \ No newline at end of file diff --git a/charts/ndc-graphql/templates/NOTES.txt b/charts/ndc-graphql/templates/NOTES.txt new file mode 100644 index 0000000..36aaf05 --- /dev/null +++ b/charts/ndc-graphql/templates/NOTES.txt @@ -0,0 +1,22 @@ +Ndc-graphql Helm Chart Deployment + +1. Deployment Information: + - Release Name: {{ .Release.Name }} + - Namespace: {{ template "common.namespace" . }} + - Chart Name: {{ .Chart.Name }} + - Chart Version: {{ .Chart.Version }} + +2. Service Information: + - Service Name: {{ template "common.name" . }} + - Service Port: {{ .Values.httpPort }} + +3. Useful Commands: + - Check the Deployment Status: + helm status {{ .Release.Name }} + + - Get Detailed Information about the Deployment: + helm get all {{ .Release.Name }} + +4. Clean Up: + - To uninstall/delete the deployment, run: + helm uninstall {{ .Release.Name }} \ No newline at end of file diff --git a/charts/ndc-graphql/templates/imagepullsecret.yaml b/charts/ndc-graphql/templates/imagepullsecret.yaml index 4f630fe..679ba77 100644 --- a/charts/ndc-graphql/templates/imagepullsecret.yaml +++ b/charts/ndc-graphql/templates/imagepullsecret.yaml @@ -8,9 +8,9 @@ metadata: name: hasura-image-pull namespace: {{ template "common.namespace" $ }} type: kubernetes.io/dockerconfigjson -data: +data: .dockerconfigjson: | -{{- toJson .imagePullSecret | b64enc | nindent 4 }} +{{- toJson .imagePullSecret | b64enc | nindent 4 }} {{- end }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/charts/ndc-graphql/templates/secret.yaml b/charts/ndc-graphql/templates/secret.yaml index d472f05..edd4b36 100644 --- a/charts/ndc-graphql/templates/secret.yaml +++ b/charts/ndc-graphql/templates/secret.yaml @@ -4,9 +4,9 @@ metadata: name: {{ printf "%s-secret" (include "common.name" .) }} namespace: {{ template "common.namespace" $ }} data: - HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connector.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} - CONNECTION_URI: {{ .Values.connector.CONNECTION_URI | b64enc | quote }} -{{- if .Values.otel.deployOtelCollector }} + HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} + GRAPHQL_ENDPOINT: {{ .Values.connectorEnvVars.GRAPHQL_ENDPOINT | b64enc | quote }} +{{- if .Values.observability.enabled }} otel-collector-config.yaml: {{ (tpl .Values.otel.config .) | b64enc | quote }} {{- end }} - + diff --git a/charts/ndc-graphql/values.yaml b/charts/ndc-graphql/values.yaml index 7c622bc..263d570 100644 --- a/charts/ndc-graphql/values.yaml +++ b/charts/ndc-graphql/values.yaml @@ -1,3 +1,4 @@ +namespace: "default" useReleaseName: true additionalAnnotations: | @@ -27,7 +28,7 @@ hpa: enabled: false minReplicas: 2 maxReplicas: 4 - metrics: + metrics: - type: Resource resource: name: cpu @@ -39,26 +40,35 @@ hpa: name: memory target: type: Utilization - averageUtilization: 80 # Target 80% memory utilization per pod + averageUtilization: 80 # Target 80% memory utilization per pod -otel: - deployOtelCollector: true - endpoint: https://gateway.otlp.hasura.io:443 - dataPlaneID: "" - dataPlaneKey: "" +# Observability defaults are tuned for Hasura hosted Control Plane +# Enable observability +observability: + enabled: true + +# Required (when observability.enabled is set to true) +dataPlane: + id: "" + key: "" + +controlPlane: + otlpEndpoint: https://gateway.otlp.hasura.io:443 oauthTokenEndpoint: https://ddn-oauth.pro.hasura.io/oauth2/token + +otel: config: | extensions: oauth2client: - client_id: {{ .Values.otel.dataPlaneID }} - client_secret: {{ .Values.otel.dataPlaneKey }} - token_url: {{ .Values.otel.oauthTokenEndpoint }} + client_id: {{ required "Error: .Values.dataPlane.id is required!" .Values.dataPlane.id }} + client_secret: {{ required "Error: .Values.dataPlane.key is required!" .Values.dataPlane.key }} + token_url: {{ .Values.controlPlane.oauthTokenEndpoint }} scopes: ["opentelemetry:write"] endpoint_params: audience: https://ddn.hasura.io exporters: otlp/oauth: - endpoint: {{ .Values.otel.endpoint }} + endpoint: {{ .Values.controlPlane.otlpEndpoint }} auth: authenticator: oauth2client processors: @@ -93,31 +103,31 @@ otel: processors: - batch receivers: - - otlp + - otlp extraVolumes: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: otel-config secret: - secretName: {{ printf "%s-secret" (include "common.name" .) }} + secretName: {{ printf "%s-secret" (include "common.name" .) }} items: - key: otel-collector-config.yaml path: otel-collector-config.yaml {{- end }} extraContainers: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: "otel-collector" command: - - --config=/etc/otel-collector-config.yaml - command: - image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} + - --config=/etc/otel-collector-config.yaml + command: + image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} env: - name: "OTEL_ENDPOINT" - value: "{{ .Values.otel.endpoint }}" + value: "{{ .Values.controlPlane.otlpEndpoint }}" volumeMounts: - name: otel-config - mountPath: "/etc/otelcol-contrib/config.yaml" + mountPath: "/etc/otelcol-contrib/config.yaml" subPath: otel-collector-config.yaml {{- end }} @@ -129,7 +139,7 @@ resources: | cpu: "1" memory: "1Gi" -connector: +connectorEnvVars: HASURA_SERVICE_TOKEN_SECRET: "" GRAPHQL_ENDPOINT: "" @@ -144,6 +154,5 @@ env: | secretKeyRef: key: GRAPHQL_ENDPOINT name: {{ printf "%s-secret" (include "common.name" .) }} - {{- end }} - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 diff --git a/charts/ndc-mongodb/Chart.yaml b/charts/ndc-mongodb/Chart.yaml index 1222090..e12dc1d 100644 --- a/charts/ndc-mongodb/Chart.yaml +++ b/charts/ndc-mongodb/Chart.yaml @@ -15,13 +15,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.0 +version: v2024.10.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "3.0.0" dependencies: - name: common diff --git a/charts/ndc-mongodb/README.md b/charts/ndc-mongodb/README.md index 3e1e2e7..e806538 100644 --- a/charts/ndc-mongodb/README.md +++ b/charts/ndc-mongodb/README.md @@ -10,66 +10,60 @@ See all [configuration](#parameters) below. # EXAMPLES: # helm template and apply manifests via kubectl (example) -helm template \ +helm template \ --set image.repository="my_repo/ndc-mongodb" \ --set image.tag="my_custom_image_tag" \ - --set connector.MONGODB_DATABASE_URI="db_connection_string" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set connectorEnvVars.MONGODB_DATABASE_URI="db_connection_string" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-mongodb | kubectl apply -f- # helm upgrade --install (pass configuration via command line) helm upgrade --install \ --set image.repository="my_repo/ndc-mongodb" \ --set image.tag="my_custom_image_tag" \ - --set connector.MONGODB_DATABASE_URI="db_connection_string" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - hasura-ddn/ndc-mongodb - -# helm upgrade --install (with OTEL variabes) -helm upgrade --install \ - --set image.repository="my_repo/ndc-mongodb" \ - --set image.tag="my_custom_image_tag" \ - --set connector.MONGODB_DATABASE_URI="db_connection_string" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - --set otel.deployOtelCollector="true" \ - --set otel.dataPlaneID= \ - --set otel.dataPlaneKey= \ + --set connectorEnvVars.MONGODB_DATABASE_URI="db_connection_string" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-mongodb ``` -## Parameters +## Connector ENV Inputs + +| Name | Description | Value | +| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | +| `connectorEnvVars.MONGODB_DATABASE_URI` | Database Connection URI (Required) | `""` | + +## Additional Parameters | Name | Description | Value | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------------| +| `namespace` | Namespace to deploy to | `"default"` | | `image.repository` | Image repository containing custom created ndc-mongodb | `""` | | `image.tag` | Image tag to use for custom created ndc-mongodb | `""` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.otelCollectorRepository` | OTEL collector image repository | `otel/opentelemetry-collector` | | `image.otelCollectorTag` | OTEL collector image tag | `0.104.0` | +| `observability.enabled` | Deploy OTEL collector as sidecar | `true` | +| `dataPlane.id` | Data Plane ID (Required when observability.enabled is set to true) | `""` | +| `dataPlane.key` | Data Plane Key (Required when observability.enabled is set to true) | `""` | +| `controlPlane.otlpEndpoint` | OTEL endpoint under Hasura | `"https://gateway.otlp.hasura.io:443"` | +| `controlPlane.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | +| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-mongodb pod | `[]` | +| `extraContainers` | Optionally specify extra list of additional containers for the ndc-mongodb pod | `[]` | +| `resources` | Resource requests and limits of ndc-mongodb container | `{}` | +| `env` | Env variable section for ndc-mongodb | `[]` | | `replicas` | Replicas setting for pod | `1` | | `wsInactiveExpiryMins` | To be documented | `1` | | `securityContext` | Define privilege and access control settings for a Pod or Container | `{}` | | `healthChecks.enabled` | Enable health check for ndc-mongodb container | `false` | | `healthChecks.livenessProbePath` | Health check liveness Probe path ndc-mongodb container | `"/healthz"` | -| `healthChecks.readinessProbePath` | Health check readiness Probe path mongo-connector container | `"/healthz"` | +| `healthChecks.readinessProbePath` | Health check readiness Probe path ndc-mongodb container | `"/healthz"` | | `hpa.enabled` | Enable HPA for ndc-mongodb. Ensure metrics cluster is configured when enabling | `false` | | `hpa.minReplicas` | minReplicas setting for HPA | `2` | | `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | | `hpa.metrics.resource.name` | Resource name to autoscale on | `` | -| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | -| `otel.deployOtelCollector` | Deploy OTEL collector as sidecar to ndc-mongodb container | `true` | -| `otel.endpoint` | OTEL endpoint under Hasura | `https://gateway.otlp.hasura.io:443` | -| `otel.dataPlaneID` | Oauth Client ID for pushing telemetry data to endpoint | `""` | -| `otel.dataPlaneKey` | Oauth Client Secret for pushing telemetry data to endpoint | `""` | -| `otel.oauthTokenEndpoint` | Oauth Token URL | `""` | -| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-mongodb pod | `[]` | -| `extraContainers` | Optionally specify extra list of additional containers for the ndc-mongodb pod | `[]` | -| `resources` | Resource requests and limits of ndc-mongodb container | `{}` | -| `env` | Env variable section for ndc-mongodb | `[]` | - -## Connector ENV Inputs - -| Name | Description | Value | -| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | -| `connector.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | -| `connector.MONGODB_DATABASE_URI` | Database Connection URI (Required) | `""` | \ No newline at end of file +| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | \ No newline at end of file diff --git a/charts/ndc-mongodb/templates/NOTES.txt b/charts/ndc-mongodb/templates/NOTES.txt new file mode 100644 index 0000000..487ef07 --- /dev/null +++ b/charts/ndc-mongodb/templates/NOTES.txt @@ -0,0 +1,22 @@ +Ndc-mongodb Helm Chart Deployment + +1. Deployment Information: + - Release Name: {{ .Release.Name }} + - Namespace: {{ template "common.namespace" . }} + - Chart Name: {{ .Chart.Name }} + - Chart Version: {{ .Chart.Version }} + +2. Service Information: + - Service Name: {{ template "common.name" . }} + - Service Port: {{ .Values.httpPort }} + +3. Useful Commands: + - Check the Deployment Status: + helm status {{ .Release.Name }} + + - Get Detailed Information about the Deployment: + helm get all {{ .Release.Name }} + +4. Clean Up: + - To uninstall/delete the deployment, run: + helm uninstall {{ .Release.Name }} \ No newline at end of file diff --git a/charts/ndc-mongodb/templates/imagepullsecret.yaml b/charts/ndc-mongodb/templates/imagepullsecret.yaml index 4f630fe..679ba77 100644 --- a/charts/ndc-mongodb/templates/imagepullsecret.yaml +++ b/charts/ndc-mongodb/templates/imagepullsecret.yaml @@ -8,9 +8,9 @@ metadata: name: hasura-image-pull namespace: {{ template "common.namespace" $ }} type: kubernetes.io/dockerconfigjson -data: +data: .dockerconfigjson: | -{{- toJson .imagePullSecret | b64enc | nindent 4 }} +{{- toJson .imagePullSecret | b64enc | nindent 4 }} {{- end }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/charts/ndc-mongodb/templates/secret.yaml b/charts/ndc-mongodb/templates/secret.yaml index 8c17ef2..709bada 100644 --- a/charts/ndc-mongodb/templates/secret.yaml +++ b/charts/ndc-mongodb/templates/secret.yaml @@ -4,8 +4,8 @@ metadata: name: {{ printf "%s-secret" (include "common.name" .) }} namespace: {{ template "common.namespace" $ }} data: - HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connector.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} - MONGODB_DATABASE_URI: {{ .Values.connector.MONGODB_DATABASE_URI | b64enc | quote }} -{{- if .Values.otel.deployOtelCollector }} + HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} + MONGODB_DATABASE_URI: {{ .Values.connectorEnvVars.MONGODB_DATABASE_URI | b64enc | quote }} +{{- if .Values.observability.enabled }} otel-collector-config.yaml: {{ (tpl .Values.otel.config .) | b64enc | quote }} {{- end }} \ No newline at end of file diff --git a/charts/ndc-mongodb/values.yaml b/charts/ndc-mongodb/values.yaml index aa72342..3952231 100644 --- a/charts/ndc-mongodb/values.yaml +++ b/charts/ndc-mongodb/values.yaml @@ -1,3 +1,4 @@ +namespace: "default" useReleaseName: true additionalAnnotations: | @@ -27,7 +28,7 @@ hpa: enabled: false minReplicas: 2 maxReplicas: 4 - metrics: + metrics: - type: Resource resource: name: cpu @@ -39,26 +40,35 @@ hpa: name: memory target: type: Utilization - averageUtilization: 80 # Target 80% memory utilization per pod + averageUtilization: 80 # Target 80% memory utilization per pod -otel: - deployOtelCollector: false - endpoint: https://gateway.otlp.hasura.io:443 - dataPlaneID: "" - dataPlaneKey: "" +# Observability defaults are tuned for Hasura hosted Control Plane +# Enable observability +observability: + enabled: true + +# Required (when observability.enabled is set to true) +dataPlane: + id: "" + key: "" + +controlPlane: + otlpEndpoint: https://gateway.otlp.hasura.io:443 oauthTokenEndpoint: https://ddn-oauth.pro.hasura.io/oauth2/token + +otel: config: | extensions: oauth2client: - client_id: {{ .Values.otel.dataPlaneID }} - client_secret: {{ .Values.otel.dataPlaneKey }} - token_url: {{ .Values.otel.oauthTokenEndpoint }} + client_id: {{ required "Error: .Values.dataPlane.id is required!" .Values.dataPlane.id }} + client_secret: {{ required "Error: .Values.dataPlane.key is required!" .Values.dataPlane.key }} + token_url: {{ .Values.controlPlane.oauthTokenEndpoint }} scopes: ["opentelemetry:write"] endpoint_params: audience: https://ddn.hasura.io exporters: otlp/oauth: - endpoint: {{ .Values.otel.endpoint }} + endpoint: {{ .Values.controlPlane.otlpEndpoint }} auth: authenticator: oauth2client processors: @@ -93,31 +103,31 @@ otel: processors: - batch receivers: - - otlp + - otlp extraVolumes: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: otel-config secret: - secretName: {{ printf "%s-secret" (include "common.name" .) }} + secretName: {{ printf "%s-secret" (include "common.name" .) }} items: - key: otel-collector-config.yaml path: otel-collector-config.yaml {{- end }} extraContainers: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: "otel-collector" command: - - --config=/etc/otel-collector-config.yaml - command: - image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} + - --config=/etc/otel-collector-config.yaml + command: + image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} env: - name: "OTEL_ENDPOINT" - value: "{{ .Values.otel.endpoint }}" + value: "{{ .Values.controlPlane.otlpEndpoint }}" volumeMounts: - name: otel-config - mountPath: "/etc/otelcol-contrib/config.yaml" + mountPath: "/etc/otelcol-contrib/config.yaml" subPath: otel-collector-config.yaml {{- end }} @@ -129,7 +139,7 @@ resources: | cpu: "1" memory: "1Gi" -connector: +connectorEnvVars: HASURA_SERVICE_TOKEN_SECRET: "" MONGODB_DATABASE_URI: "" configDirectory: /etc/connector @@ -150,4 +160,4 @@ env: | - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 - name: HASURA_CONFIGURATION_DIRECTORY - value: {{ .Values.connector.configDirectory }} + value: {{ .Values.connectorEnvVars.configDirectory }} diff --git a/charts/ndc-nodejs-lambda/Chart.yaml b/charts/ndc-nodejs-lambda/Chart.yaml index d73f366..e7ab4c8 100644 --- a/charts/ndc-nodejs-lambda/Chart.yaml +++ b/charts/ndc-nodejs-lambda/Chart.yaml @@ -15,13 +15,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.0 +version: v2024.10.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "3.0.0" dependencies: - name: common diff --git a/charts/ndc-nodejs-lambda/README.md b/charts/ndc-nodejs-lambda/README.md index dffebf0..c23ca4e 100644 --- a/charts/ndc-nodejs-lambda/README.md +++ b/charts/ndc-nodejs-lambda/README.md @@ -10,39 +10,49 @@ See all [configuration](#parameters) below. # EXAMPLES: # helm template and apply manifests via kubectl (example) -helm template \ +helm template \ --set image.repository="my_repo/ndc-nodejs-lambda" \ --set image.tag="my_custom_image_tag" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/nodejs-lambda | kubectl apply -f- # helm upgrade --install (pass configuration via command line) helm upgrade --install \ --set image.repository="my_repo/ndc-nodejs-lambda" \ --set image.tag="my_custom_image_tag" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - hasura-ddn/nodejs-lambda - -# helm upgrade --install (with OTEL variabes) -helm upgrade --install \ - --set image.repository="my_repo/ndc-nodejs-lambda" \ - --set image.tag="my_custom_image_tag" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - --set otel.deployOtelCollector="true" \ - --set otel.dataPlaneID= \ - --set otel.dataPlaneKey= \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/nodejs-lambda ``` -## Parameters +## Connector ENV Inputs + +| Name | Description | Value | +| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | + +## Additional Parameters | Name | Description | Value | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `namespace` | Namespace to deploy to | `"default"` | | `image.repository` | Image repository containing custom created ndc-nodejs-lambda | `""` | | `image.tag` | Image tag to use for custom created ndc-nodejs-lambda | `""` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.otelCollectorRepository` | OTEL collector image repository | `otel/opentelemetry-collector` | | `image.otelCollectorTag` | OTEL collector image tag | `0.104.0` | +| `observability.enabled` | Deploy OTEL collector as sidecar | `true` | +| `dataPlane.id` | Data Plane ID (Required when observability.enabled is set to true) | `""` | +| `dataPlane.key` | Data Plane Key (Required when observability.enabled is set to true) | `""` | +| `controlPlane.otlpEndpoint` | OTEL endpoint under Hasura | `"https://gateway.otlp.hasura.io:443"` | +| `controlPlane.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | +| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-nodejs-lambda pod | `[]` | +| `extraContainers` | Optionally specify extra list of additional containers for the ndc-nodejs-lambda pod | `[]` | | +| `resources` | Resource requests and limits of ndc-nodejs-lambda container | `{}` | +| `env` | Env variable section for ndc-nodejs-lambda | `[]` | | `replicas` | Replicas setting for pod | `1` | | `wsInactiveExpiryMins` | To be documented | `1` | | `securityContext` | Define privilege and access control settings for a Pod or Container | `{}` | @@ -53,19 +63,4 @@ helm upgrade --install \ | `hpa.minReplicas` | minReplicas setting for HPA | `2` | | `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | | `hpa.metrics.resource.name` | Resource name to autoscale on | `` | -| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | -| `otel.deployOtelCollector` | Deploy OTEL collector as sidecar to ndc-nodejs-lambda container | `true` | -| `otel.endpoint` | OTEL endpoint under Hasura | `https://gateway.otlp.hasura.io:443` | -| `otel.dataPlaneID` | Oauth Client ID for pushing telemetry data to endpoint | `""` | -| `otel.dataPlaneKey` | Oauth Client Secret for pushing telemetry data to endpoint | `""` | -| `otel.oauthTokenEndpoint` | Oauth Token URL | `""` | -| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-nodejs-lambda pod | `[]` | -| `extraContainers` | Optionally specify extra list of additional containers for the ndc-nodejs-lambda pod | `[]` | | -| `resources` | Resource requests and limits of ndc-nodejs-lambda container | `{}` | -| `env` | Env variable section for ndc-nodejs-lambda | `[]` | - -## Connector ENV Inputs - -| Name | Description | Value | -| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | -| `connector.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | \ No newline at end of file +| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | \ No newline at end of file diff --git a/charts/ndc-nodejs-lambda/templates/NOTES.txt b/charts/ndc-nodejs-lambda/templates/NOTES.txt new file mode 100644 index 0000000..16a92c5 --- /dev/null +++ b/charts/ndc-nodejs-lambda/templates/NOTES.txt @@ -0,0 +1,22 @@ +Ndc-nodejs-lambda Helm Chart Deployment + +1. Deployment Information: + - Release Name: {{ .Release.Name }} + - Namespace: {{ template "common.namespace" . }} + - Chart Name: {{ .Chart.Name }} + - Chart Version: {{ .Chart.Version }} + +2. Service Information: + - Service Name: {{ template "common.name" . }} + - Service Port: {{ .Values.httpPort }} + +3. Useful Commands: + - Check the Deployment Status: + helm status {{ .Release.Name }} + + - Get Detailed Information about the Deployment: + helm get all {{ .Release.Name }} + +4. Clean Up: + - To uninstall/delete the deployment, run: + helm uninstall {{ .Release.Name }} \ No newline at end of file diff --git a/charts/ndc-nodejs-lambda/templates/imagepullsecret.yaml b/charts/ndc-nodejs-lambda/templates/imagepullsecret.yaml index 4f630fe..679ba77 100644 --- a/charts/ndc-nodejs-lambda/templates/imagepullsecret.yaml +++ b/charts/ndc-nodejs-lambda/templates/imagepullsecret.yaml @@ -8,9 +8,9 @@ metadata: name: hasura-image-pull namespace: {{ template "common.namespace" $ }} type: kubernetes.io/dockerconfigjson -data: +data: .dockerconfigjson: | -{{- toJson .imagePullSecret | b64enc | nindent 4 }} +{{- toJson .imagePullSecret | b64enc | nindent 4 }} {{- end }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/charts/ndc-nodejs-lambda/templates/secret.yaml b/charts/ndc-nodejs-lambda/templates/secret.yaml index 576bed8..a87909d 100644 --- a/charts/ndc-nodejs-lambda/templates/secret.yaml +++ b/charts/ndc-nodejs-lambda/templates/secret.yaml @@ -4,7 +4,7 @@ metadata: name: {{ printf "%s-secret" (include "common.name" .) }} namespace: {{ template "common.namespace" $ }} data: - HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connector.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} -{{- if .Values.otel.deployOtelCollector }} + HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} +{{- if .Values.observability.enabled }} otel-collector-config.yaml: {{ (tpl .Values.otel.config .) | b64enc | quote }} {{- end }} \ No newline at end of file diff --git a/charts/ndc-nodejs-lambda/values.yaml b/charts/ndc-nodejs-lambda/values.yaml index 8c16e64..6b4caed 100644 --- a/charts/ndc-nodejs-lambda/values.yaml +++ b/charts/ndc-nodejs-lambda/values.yaml @@ -1,3 +1,4 @@ +namespace: "default" useReleaseName: true additionalAnnotations: | @@ -19,7 +20,7 @@ securityContext: fsGroup: 1000 initContainers: - gitSync: + gitSync: enabled: false repo: "git@github.com:hasura/ddn-example" branch: "main" @@ -33,7 +34,7 @@ hpa: enabled: false minReplicas: 2 maxReplicas: 4 - metrics: + metrics: - type: Resource resource: name: cpu @@ -45,26 +46,35 @@ hpa: name: memory target: type: Utilization - averageUtilization: 80 # Target 80% memory utilization per pod + averageUtilization: 80 # Target 80% memory utilization per pod -otel: - deployOtelCollector: true - endpoint: https://gateway.otlp.hasura.io:443 - dataPlaneID: "" - dataPlaneKey: "" +# Observability defaults are tuned for Hasura hosted Control Plane +# Enable observability +observability: + enabled: true + +# Required (when observability.enabled is set to true) +dataPlane: + id: "" + key: "" + +controlPlane: + otlpEndpoint: https://gateway.otlp.hasura.io:443 oauthTokenEndpoint: https://ddn-oauth.pro.hasura.io/oauth2/token + +otel: config: | extensions: oauth2client: - client_id: {{ .Values.otel.dataPlaneID }} - client_secret: {{ .Values.otel.dataPlaneKey }} - token_url: {{ .Values.otel.oauthTokenEndpoint }} + client_id: {{ required "Error: .Values.dataPlane.id is required!" .Values.dataPlane.id }} + client_secret: {{ required "Error: .Values.dataPlane.key is required!" .Values.dataPlane.key }} + token_url: {{ .Values.controlPlane.oauthTokenEndpoint }} scopes: ["opentelemetry:write"] endpoint_params: audience: https://ddn.hasura.io exporters: otlp/oauth: - endpoint: {{ .Values.otel.endpoint }} + endpoint: {{ .Values.controlPlane.otlpEndpoint }} auth: authenticator: oauth2client processors: @@ -99,33 +109,31 @@ otel: processors: - batch receivers: - - otlp + - otlp extraVolumes: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: otel-config secret: - secretName: {{ printf "%s-secret" (include "common.name" .) }} + secretName: {{ printf "%s-secret" (include "common.name" .) }} items: - key: otel-collector-config.yaml path: otel-collector-config.yaml {{- end }} extraContainers: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: "otel-collector" command: - - --config=/etc/otel-collector-config.yaml - command: - image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} + - --config=/etc/otel-collector-config.yaml + command: + image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} env: - - name: "HASURA_DDN_PAT" - value: "" - name: "OTEL_ENDPOINT" - value: "{{ .Values.otel.endpoint }}" + value: "{{ .Values.controlPlane.otlpEndpoint }}" volumeMounts: - name: otel-config - mountPath: "/etc/otelcol-contrib/config.yaml" + mountPath: "/etc/otelcol-contrib/config.yaml" subPath: otel-collector-config.yaml {{- end }} @@ -137,7 +145,7 @@ resources: | cpu: "1" memory: "1Gi" -connector: +connectorEnvVars: HASURA_SERVICE_TOKEN_SECRET: "" env: | diff --git a/charts/ndc-postgres/Chart.yaml b/charts/ndc-postgres/Chart.yaml index cfb2622..fc46e50 100644 --- a/charts/ndc-postgres/Chart.yaml +++ b/charts/ndc-postgres/Chart.yaml @@ -15,13 +15,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.0 +version: v2024.10.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "3.0.0" dependencies: - name: common diff --git a/charts/ndc-postgres/README.md b/charts/ndc-postgres/README.md index c9b513c..87f0d60 100644 --- a/charts/ndc-postgres/README.md +++ b/charts/ndc-postgres/README.md @@ -10,42 +10,55 @@ See all [configuration](#parameters) below. # EXAMPLES: # helm template and apply manifests via kubectl (example) -helm template \ +helm template \ --set image.repository="my_repo/ndc-postgres" \ --set image.tag="my_custom_image_tag" \ - --set connector.CONNECTION_URI="db_connection_string" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set connectorEnvVars.CONNECTION_URI="db_connection_string" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-postgres | kubectl apply -f- # helm upgrade --install (pass configuration via command line) helm upgrade --install \ --set image.repository="my_repo/ndc-postgres" \ --set image.tag="my_custom_image_tag" \ - --set connector.CONNECTION_URI="db_connection_string" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - hasura-ddn/ndc-postgres - -# helm upgrade --install (with OTEL variabes) -helm upgrade --install \ - --set image.repository="my_repo/ndc-postgres" \ - --set image.tag="my_custom_image_tag" \ - --set connector.CONNECTION_URI="db_connection_string" \ - --set connector.HASURA_SERVICE_TOKEN_SECRET="token" \ - --set otel.deployOtelCollector="true" \ - --set otel.dataPlaneID= \ - --set otel.dataPlaneKey= \ + --set connectorEnvVars.CONNECTION_URI="db_connection_string" \ + --set connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET="token" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/ndc-postgres ``` -## Parameters +## Connector ENV Inputs + +| Name | Description | Value | +| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | +| `connectorEnvVars.CONNECTION_URI` | Database Connection URI (Required) | `""` | +| `connectorEnvVars.CLIENT_CERT` | Database Client cert (Optional) | `""` | +| `connectorEnvVars.CLIENT_KEY` | Database Client key (Optional) | `""` | +| `connectorEnvVars.ROOT_CERT` | Database Root cert (Optional) | `""` | + +## Additional Parameters | Name | Description | Value | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `namespace` | Namespace to deploy to | `"default"` | | `image.repository` | Image repository containing custom created ndc-postgres | `""` | | `image.tag` | Image tag to use for custom created ndc-postgres | `""` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.otelCollectorRepository` | OTEL collector image repository | `otel/opentelemetry-collector` | | `image.otelCollectorTag` | OTEL collector image tag | `0.104.0` | +| `observability.enabled` | Deploy OTEL collector as sidecar | `true` | +| `dataPlane.id` | Data Plane ID (Required when observability.enabled is set to true) | `""` | +| `dataPlane.key` | Data Plane Key (Required when observability.enabled is set to true) | `""` | +| `controlPlane.otlpEndpoint` | OTEL endpoint under Hasura | `"https://gateway.otlp.hasura.io:443"` | +| `controlPlane.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | +| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-postgres pod | `[]` | +| `extraContainers` | Optionally specify extra list of additional containers for the ndc-postgres pod | `[]` | | +| `resources` | Resource requests and limits of ndc-postgres container | `{}` | +| `env` | Env variable section for ndc-postgres | `[]` | | `replicas` | Replicas setting for pod | `1` | | `wsInactiveExpiryMins` | To be documented | `1` | | `securityContext` | Define privilege and access control settings for a Pod or Container | `{}` | @@ -56,23 +69,4 @@ helm upgrade --install \ | `hpa.minReplicas` | minReplicas setting for HPA | `2` | | `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | | `hpa.metrics.resource.name` | Resource name to autoscale on | `` | -| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | -| `otel.deployOtelCollector` | Deploy OTEL collector as sidecar to ndc-postgres container | `true` | -| `otel.endpoint` | OTEL endpoint under Hasura | `https://gateway.otlp.hasura.io:443` | -| `otel.dataPlaneID` | Oauth Client ID for pushing telemetry data to endpoint | `""` | -| `otel.dataPlaneKey` | Oauth Client Secret for pushing telemetry data to endpoint | `""` | -| `otel.oauthTokenEndpoint` | Oauth Token URL | `""` | -| `extraVolumes` | Optionally specify extra list of additional volumes for the ndc-postgres pod | `[]` | -| `extraContainers` | Optionally specify extra list of additional containers for the ndc-postgres pod | `[]` | | -| `resources` | Resource requests and limits of ndc-postgres container | `{}` | -| `env` | Env variable section for ndc-postgres | `[]` | - -## Connector ENV Inputs - -| Name | Description | Value | -| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | -| `connector.HASURA_SERVICE_TOKEN_SECRET` | Hasura Service Token Secret (Required) | `""` | -| `connector.CONNECTION_URI` | Database Connection URI (Required) | `""` | -| `connector.CLIENT_CERT` | Database Client cert (Optional) | `""` | -| `connector.CLIENT_KEY` | Database Client key (Optional) | `""` | -| `connector.ROOT_CERT` | Database Root cert (Optional) | `""` | \ No newline at end of file +| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | \ No newline at end of file diff --git a/charts/ndc-postgres/templates/NOTES.txt b/charts/ndc-postgres/templates/NOTES.txt new file mode 100644 index 0000000..97de95e --- /dev/null +++ b/charts/ndc-postgres/templates/NOTES.txt @@ -0,0 +1,22 @@ +Ndc-postgres Helm Chart Deployment + +1. Deployment Information: + - Release Name: {{ .Release.Name }} + - Namespace: {{ template "common.namespace" . }} + - Chart Name: {{ .Chart.Name }} + - Chart Version: {{ .Chart.Version }} + +2. Service Information: + - Service Name: {{ template "common.name" . }} + - Service Port: {{ .Values.httpPort }} + +3. Useful Commands: + - Check the Deployment Status: + helm status {{ .Release.Name }} + + - Get Detailed Information about the Deployment: + helm get all {{ .Release.Name }} + +4. Clean Up: + - To uninstall/delete the deployment, run: + helm uninstall {{ .Release.Name }} \ No newline at end of file diff --git a/charts/ndc-postgres/templates/imagepullsecret.yaml b/charts/ndc-postgres/templates/imagepullsecret.yaml index 4f630fe..679ba77 100644 --- a/charts/ndc-postgres/templates/imagepullsecret.yaml +++ b/charts/ndc-postgres/templates/imagepullsecret.yaml @@ -8,9 +8,9 @@ metadata: name: hasura-image-pull namespace: {{ template "common.namespace" $ }} type: kubernetes.io/dockerconfigjson -data: +data: .dockerconfigjson: | -{{- toJson .imagePullSecret | b64enc | nindent 4 }} +{{- toJson .imagePullSecret | b64enc | nindent 4 }} {{- end }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/charts/ndc-postgres/templates/secret.yaml b/charts/ndc-postgres/templates/secret.yaml index d472f05..a1f974d 100644 --- a/charts/ndc-postgres/templates/secret.yaml +++ b/charts/ndc-postgres/templates/secret.yaml @@ -4,9 +4,17 @@ metadata: name: {{ printf "%s-secret" (include "common.name" .) }} namespace: {{ template "common.namespace" $ }} data: - HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connector.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} - CONNECTION_URI: {{ .Values.connector.CONNECTION_URI | b64enc | quote }} -{{- if .Values.otel.deployOtelCollector }} + HASURA_SERVICE_TOKEN_SECRET: {{ .Values.connectorEnvVars.HASURA_SERVICE_TOKEN_SECRET | b64enc | quote }} + CONNECTION_URI: {{ .Values.connectorEnvVars.CONNECTION_URI | b64enc | quote }} + {{- if .Values.connectorEnvVars.CLIENT_CERT }} + CLIENT_CERT: {{ .Values.connectorEnvVars.CLIENT_CERT | b64enc | quote }} + {{- end }} + {{- if .Values.connectorEnvVars.CLIENT_KEY }} + CLIENT_KEY: {{ .Values.connectorEnvVars.CLIENT_KEY | b64enc | quote }} + {{- end }} + {{- if .Values.connectorEnvVars.ROOT_CERT }} + ROOT_CERT: {{ .Values.connectorEnvVars.ROOT_CERT | b64enc | quote }} + {{- end }} +{{- if .Values.observability.enabled }} otel-collector-config.yaml: {{ (tpl .Values.otel.config .) | b64enc | quote }} {{- end }} - diff --git a/charts/ndc-postgres/values.yaml b/charts/ndc-postgres/values.yaml index a12c321..886de7a 100644 --- a/charts/ndc-postgres/values.yaml +++ b/charts/ndc-postgres/values.yaml @@ -1,3 +1,4 @@ +namespace: "default" useReleaseName: true additionalAnnotations: | @@ -27,7 +28,7 @@ hpa: enabled: false minReplicas: 2 maxReplicas: 4 - metrics: + metrics: - type: Resource resource: name: cpu @@ -39,26 +40,35 @@ hpa: name: memory target: type: Utilization - averageUtilization: 80 # Target 80% memory utilization per pod + averageUtilization: 80 # Target 80% memory utilization per pod -otel: - deployOtelCollector: false - endpoint: https://gateway.otlp.hasura.io:443 - dataPlaneID: "" - dataPlaneKey: "" +# Observability defaults are tuned for Hasura hosted Control Plane +# Enable observability +observability: + enabled: true + +# Required (when observability.enabled is set to true) +dataPlane: + id: "" + key: "" + +controlPlane: + otlpEndpoint: https://gateway.otlp.hasura.io:443 oauthTokenEndpoint: https://ddn-oauth.pro.hasura.io/oauth2/token + +otel: config: | extensions: oauth2client: - client_id: {{ .Values.otel.dataPlaneID }} - client_secret: {{ .Values.otel.dataPlaneKey }} - token_url: {{ .Values.otel.oauthTokenEndpoint }} + client_id: {{ required "Error: .Values.dataPlane.id is required!" .Values.dataPlane.id }} + client_secret: {{ required "Error: .Values.dataPlane.key is required!" .Values.dataPlane.key }} + token_url: {{ .Values.controlPlane.oauthTokenEndpoint }} scopes: ["opentelemetry:write"] endpoint_params: audience: https://ddn.hasura.io exporters: otlp/oauth: - endpoint: {{ .Values.otel.endpoint }} + endpoint: {{ .Values.controlPlane.otlpEndpoint }} auth: authenticator: oauth2client processors: @@ -93,31 +103,31 @@ otel: processors: - batch receivers: - - otlp + - otlp extraVolumes: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: otel-config secret: - secretName: {{ printf "%s-secret" (include "common.name" .) }} + secretName: {{ printf "%s-secret" (include "common.name" .) }} items: - key: otel-collector-config.yaml path: otel-collector-config.yaml {{- end }} extraContainers: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: "otel-collector" command: - - --config=/etc/otel-collector-config.yaml - command: - image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} + - --config=/etc/otel-collector-config.yaml + command: + image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} env: - name: "OTEL_ENDPOINT" - value: "{{ .Values.otel.endpoint }}" + value: "{{ .Values.controlPlane.otlpEndpoint }}" volumeMounts: - name: otel-config - mountPath: "/etc/otelcol-contrib/config.yaml" + mountPath: "/etc/otelcol-contrib/config.yaml" subPath: otel-collector-config.yaml {{- end }} @@ -129,7 +139,7 @@ resources: | cpu: "1" memory: "1Gi" -connector: +connectorEnvVars: HASURA_SERVICE_TOKEN_SECRET: "" CONNECTION_URI: "" CLIENT_CERT: "" @@ -147,17 +157,26 @@ env: | secretKeyRef: key: CONNECTION_URI name: {{ printf "%s-secret" (include "common.name" .) }} - {{- if .Values.connector.CLIENT_CERT }} + {{- if .Values.connectorEnvVars.CLIENT_CERT }} - name: CLIENT_CERT - value: {{ .Values.connector.CLIENT_CERT | quote }} + valueFrom: + secretKeyRef: + key: CLIENT_CERT + name: {{ printf "%s-secret" (include "common.name" .) }} {{- end }} - {{- if .Values.connector.CLIENT_KEY }} + {{- if .Values.connectorEnvVars.CLIENT_KEY }} - name: CLIENT_KEY - value: {{ .Values.connector.CLIENT_KEY | quote }} + valueFrom: + secretKeyRef: + key: CLIENT_KEY + name: {{ printf "%s-secret" (include "common.name" .) }} {{- end }} - {{- if .Values.connector.ROOT_CERT }} + {{- if .Values.connectorEnvVars.ROOT_CERT }} - name: ROOT_CERT - value: {{ .Values.connector.ROOT_CERT | quote }} - {{- end }} + valueFrom: + secretKeyRef: + key: ROOT_CERT + name: {{ printf "%s-secret" (include "common.name" .) }} + {{- end }} - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://localhost:4317 diff --git a/charts/v3-engine/Chart.yaml b/charts/v3-engine/Chart.yaml index a002f25..e6d8648 100644 --- a/charts/v3-engine/Chart.yaml +++ b/charts/v3-engine/Chart.yaml @@ -15,13 +15,13 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.3.0 +version: v2024.10.18 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "3.0.0" dependencies: - name: common diff --git a/charts/v3-engine/README.md b/charts/v3-engine/README.md index a30bfb9..36ae6d3 100644 --- a/charts/v3-engine/README.md +++ b/charts/v3-engine/README.md @@ -10,25 +10,21 @@ See all [configuration](#parameters) below. # EXAMPLES: # helm template and apply manifests via kubectl (example) -helm template \ +helm template \ --set image.repository="my_repo/v3-engine" \ --set image.tag="my_custom_image_tag" \ + --set observability.hostName="observability_hostname" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/v3-engine | kubectl apply -f- # helm upgrade --install (pass configuration via command line) helm upgrade --install \ --set image.repository="my_repo/v3-engine" \ --set image.tag="my_custom_image_tag" \ - hasura-ddn/v3-engine - -# helm upgrade --install (with OTEL variabes) -helm upgrade --install \ - --set image.repository="my_repo/v3-engine" \ - --set image.tag="my_custom_image_tag" \ - --set otel.deployOtelCollector="true" \ - --set otel.dataPlaneID= \ - --set otel.dataPlaneKey= \ - --set otel.hasuraCanonicalHost=. \ + --set observability.hostName="observability_hostname" \ + --set dataPlane.id="data_plane_id" \ + --set dataPlane.key="data_plane_key" \ hasura-ddn/v3-engine ``` @@ -47,33 +43,26 @@ helm upgrade --install \ hasura-ddn/v3-engine ``` -## Parameters +## Parameters | Name | Description | Value | | ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- | ------------------------------- | +| `namespace` | Namespace to deploy to | `"default"` | | `image.repository` | Image repository + image name containing custom created v3-engine | `""` | | `image.pullPolicy` | Image pull policy | `Always` | | `image.tag` | Image tag to use for custom created v3-engine | `""` | | `image.otelCollectorRepository` | OTEL collector image repository | `otel/opentelemetry-collector` | | `image.otelCollectorTag` | OTEL collector image tag | `0.104.0` | -| `healthChecks.enabled` | Enable health check for v3-engine container | `true` | -| `healthChecks.livenessProbePath` | Health check liveness Probe path v3-engine container | `"/health"` | -| `healthChecks.readinessProbePath` | Health check readiness Probe path v3-engine container | `"/health"` | -| `hpa.enabled` | Enable HPA for mongo-connector. Ensure metrics cluster is configured when enabling | `false` | -| `hpa.minReplicas` | minReplicas setting for HPA | `2` | -| `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | -| `hpa.metrics.resource.name` | Resource name to autoscale on | `` | -| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | | `openDDPath` | Path to `opendd.json` | `/md/open_dd.json` | | `authnConfigPath` | Path to `auth_config.json` | `/md/auth_config.json` | | `metadataPath` | Path to `metadata.json` | `/md/metadata.json` | | `enableCors` | Enable CORS by sending appropriate headers | `true` | -| `otel.deployOtelCollector` | Deploy OTEL collector as sidecar to v3-engine container | `true` | -| `otel.endpoint` | OTEL endpoint under Hasura | `https://gateway.otlp.hasura.io:443` | -| `otel.dataPlaneID` | Oauth Client ID for pushing telemetry data to endpoint | `""` | -| `otel.dataPlaneKey` | Oauth Client Secret for pushing telemetry data to endpoint | `""` | -| `otel.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | -| `otel.hasuraCanonicalHostname` | Hasura Canonical Hostname (Project hostname) | `""` | +| `observability.enabled` | Deploy OTEL collector as sidecar | `true` | +| `observability.hostName` | Hasura Observability Hostname (Required when observability.enabled is set to true) | `""` | +| `dataPlane.id` | Data Plane ID (Required when observability.enabled is set to true) | `""` | +| `dataPlane.key` | Data Plane Key (Required when observability.enabled is set to true) | `""` | +| `controlPlane.otlpEndpoint` | OTEL endpoint under Hasura | `"https://gateway.otlp.hasura.io:443"` | +| `controlPlane.oauthTokenEndpoint` | Oauth Token URL | `"https://ddn-oauth.pro.hasura.io/oauth2/token"` | | `extraVolumes` | Optionally specify extra list of additional volumes for the v3-engine pod | `[]` | | `extraContainers` | Optionally specify extra list of additional containers for the v3-engine pod | `[]` | | `securityContext` | Define privilege and access control settings for a Pod or Container | `{}` | @@ -81,3 +70,11 @@ helm upgrade --install \ | `replicas` | Replicas setting for pod | `1` | | `resources` | Resource requests and limits of v3-engine container | `{}` | | `env` | Env variable section for v3-engine | `[]` | +| `healthChecks.enabled` | Enable health check for v3-engine container | `true` | +| `healthChecks.livenessProbePath` | Health check liveness Probe path v3-engine container | `"/health"` | +| `healthChecks.readinessProbePath` | Health check readiness Probe path v3-engine container | `"/health"` | +| `hpa.enabled` | Enable HPA for mongo-connector. Ensure metrics cluster is configured when enabling | `false` | +| `hpa.minReplicas` | minReplicas setting for HPA | `2` | +| `hpa.maxReplicas` | maxReplicas setting for HPA | `4` | +| `hpa.metrics.resource.name` | Resource name to autoscale on | `` | +| `hpa.metrics.resource.target.averageUtilization` | Utilization target on specific resource type | `` | \ No newline at end of file diff --git a/charts/v3-engine/templates/NOTES.txt b/charts/v3-engine/templates/NOTES.txt new file mode 100644 index 0000000..4ffcf70 --- /dev/null +++ b/charts/v3-engine/templates/NOTES.txt @@ -0,0 +1,25 @@ +V3-engine Helm Chart Deployment + +1. Deployment Information: + - Release Name: {{ .Release.Name }} + - Namespace: {{ template "common.namespace" . }} + - Chart Name: {{ .Chart.Name }} + - Chart Version: {{ .Chart.Version }} + +2. Service Information: + - Service Name: {{ template "common.name" . }} + - Service Port: {{ .Values.httpPort }} + +3. Useful Commands: + - Check the Deployment Status: + helm status {{ .Release.Name }} + + - Get Detailed Information about the Deployment: + helm get all {{ .Release.Name }} + +4. Clean Up: + - To uninstall/delete the deployment, run: + helm uninstall {{ .Release.Name }} + +5. Next steps: + - You may now want to add connector(s) into your deployment stack. Perform a "helm search repo hasura-ddn" to see what connector Helm charts are available for installation \ No newline at end of file diff --git a/charts/v3-engine/templates/_helpers.tpl b/charts/v3-engine/templates/_helpers.tpl index 2e9c7ff..bb3f555 100644 --- a/charts/v3-engine/templates/_helpers.tpl +++ b/charts/v3-engine/templates/_helpers.tpl @@ -1,21 +1,21 @@ -{{- define "v3-engine-st.domain" -}} -{{- if .Values.global.subDomain -}} +{{- define "v3-engine-st.domain" -}} +{{- if .Values.global.subDomain -}} {{- printf "v3-engine-st.%s" .Values.global.domain -}} {{- else -}} {{- printf "%s" .Values.global.domain -}} {{- end -}} {{- end -}} -{{- define "v3-engine-st.path" -}} -{{- if .Values.global.subDomain -}} +{{- define "v3-engine-st.path" -}} +{{- if .Values.global.subDomain -}} {{- printf "" -}} {{- else -}} {{- printf "v3-engine-st(/|$)(.*)" -}} {{- end -}} {{- end -}} -{{- define "v3-engine-st.ingress.annotations" -}} -{{- if not .Values.global.subDomain -}} +{{- define "v3-engine-st.ingress.annotations" -}} +{{- if not .Values.global.subDomain -}} {{- printf "nginx.ingress.kubernetes.io/rewrite-target: /$2" -}} {{- end -}} {{- end -}} \ No newline at end of file diff --git a/charts/v3-engine/templates/imagepullsecret.yaml b/charts/v3-engine/templates/imagepullsecret.yaml index 4f630fe..679ba77 100644 --- a/charts/v3-engine/templates/imagepullsecret.yaml +++ b/charts/v3-engine/templates/imagepullsecret.yaml @@ -8,9 +8,9 @@ metadata: name: hasura-image-pull namespace: {{ template "common.namespace" $ }} type: kubernetes.io/dockerconfigjson -data: +data: .dockerconfigjson: | -{{- toJson .imagePullSecret | b64enc | nindent 4 }} +{{- toJson .imagePullSecret | b64enc | nindent 4 }} {{- end }} {{- end }} -{{- end -}} \ No newline at end of file +{{- end -}} \ No newline at end of file diff --git a/charts/v3-engine/templates/secret.yaml b/charts/v3-engine/templates/secret.yaml index 6ad2830..4bdf429 100644 --- a/charts/v3-engine/templates/secret.yaml +++ b/charts/v3-engine/templates/secret.yaml @@ -4,6 +4,6 @@ metadata: name: {{ printf "%s-secret" (include "common.name" .) }} namespace: {{ template "common.namespace" $ }} data: -{{- if .Values.otel.deployOtelCollector }} +{{- if .Values.observability.enabled }} otel-collector-config.yaml: {{ (tpl .Values.otel.config .) | b64enc | quote }} {{- end }} \ No newline at end of file diff --git a/charts/v3-engine/values.yaml b/charts/v3-engine/values.yaml index 2cf865e..2cd5fe4 100644 --- a/charts/v3-engine/values.yaml +++ b/charts/v3-engine/values.yaml @@ -1,4 +1,6 @@ +namespace: "default" useReleaseName: true + additionalAnnotations: | checksum/config: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }} @@ -11,7 +13,7 @@ image: otelCollectorTag: 0.104.0 initContainers: - gitSync: + gitSync: enabled: false repo: "git@github.com:/" branch: "main" @@ -25,7 +27,7 @@ hpa: enabled: false minReplicas: 2 maxReplicas: 4 - metrics: + metrics: - type: Resource resource: name: cpu @@ -39,25 +41,35 @@ hpa: type: Utilization averageUtilization: 80 # Target 80% memory utilization per pod -otel: - deployOtelCollector: false - endpoint: https://gateway.otlp.hasura.io:443 - dataPlaneID: "" - dataPlaneKey: "" +# Observability defaults are tuned for Hasura hosted Control Plane +# Enable observability +observability: + enabled: true + # Required (when observability.enabled is set to true) + hostName: "" + +# Required (when observability.enabled is set to true) +dataPlane: + id: "" + key: "" + +controlPlane: + otlpEndpoint: https://gateway.otlp.hasura.io:443 oauthTokenEndpoint: https://ddn-oauth.pro.hasura.io/oauth2/token - hasuraCanonicalHost: "" + +otel: config: | extensions: oauth2client: - client_id: {{ .Values.otel.dataPlaneID }} - client_secret: {{ .Values.otel.dataPlaneKey}} - token_url: {{ .Values.otel.oauthTokenEndpoint }} + client_id: {{ required "Error: .Values.dataPlane.id is required!" .Values.dataPlane.id }} + client_secret: {{ required "Error: .Values.dataPlane.key is required!" .Values.dataPlane.key }} + token_url: {{ .Values.controlPlane.oauthTokenEndpoint }} scopes: ["opentelemetry:write"] endpoint_params: audience: https://ddn.hasura.io exporters: otlp/oauth: - endpoint: {{ .Values.otel.endpoint }} + endpoint: {{ .Values.controlPlane.otlpEndpoint }} auth: authenticator: oauth2client processors: @@ -66,7 +78,7 @@ otel: actions: - key: http.host action: upsert - value: {{ .Values.otel.hasuraCanonicalHost }} + value: {{ required "Error: .Values.observability.hostName is required!" .Values.observability.hostName }} receivers: otlp: protocols: @@ -98,7 +110,7 @@ otel: - batch - attributes/host receivers: - - otlp + - otlp openDDPath: /md/open_dd.json authnConfigPath: /md/auth_config.json @@ -111,28 +123,28 @@ authnConfigPath: /md/auth_config.json enableCors: true extraVolumes: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: otel-config secret: - secretName: {{ printf "%s-secret" (include "common.name" .) }} + secretName: {{ printf "%s-secret" (include "common.name" .) }} items: - key: otel-collector-config.yaml path: otel-collector-config.yaml {{- end }} extraContainers: | - {{- if .Values.otel.deployOtelCollector }} + {{- if .Values.observability.enabled }} - name: "otel-collector" command: - - --config=/etc/otel-collector-config.yaml - command: - image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} + - --config=/etc/otel-collector-config.yaml + command: + image: {{ template "common.image" (dict "Values" $.Values "repository" .Values.image.otelCollectorRepository "tag" .Values.image.otelCollectorTag) }} env: - name: "OTEL_ENDPOINT" - value: "{{ .Values.otel.endpoint }}" + value: "{{ .Values.controlPlane.otlpEndpoint }}" volumeMounts: - name: otel-config - mountPath: "/etc/otelcol-contrib/config.yaml" + mountPath: "/etc/otelcol-contrib/config.yaml" subPath: otel-collector-config.yaml {{- end }}