From 6527c7f183bd7b227e85538361b2cf36144165f9 Mon Sep 17 00:00:00 2001 From: Luca Burgazzoli Date: Fri, 13 Oct 2023 08:53:46 +0200 Subject: [PATCH] update dapr helm chart from v1.11.3 to v1.12.0 --- Makefile | 2 +- config/crd/dapr/components.yaml | 26 ++-- config/crd/dapr/configuration.yaml | 47 +++++- config/crd/dapr/httpendpoints.yaml | 105 ++++++++++++- config/crd/dapr/subscription.yaml | 8 +- helm-charts/dapr/Chart.yaml | 4 +- helm-charts/dapr/README.md | 139 ++++++++++-------- .../dapr/charts/dapr_config/Chart.yaml | 2 +- .../templates/dapr_default_config.yaml | 3 + .../dapr/charts/dapr_config/values.yaml | 2 +- .../dapr/charts/dapr_operator/Chart.yaml | 2 +- .../templates/dapr_operator_deployment.yaml | 126 +++++++--------- .../dapr_operator_poddisruptionbudget.yaml | 1 + .../templates/dapr_operator_service.yaml | 2 + .../dapr/charts/dapr_operator/values.yaml | 2 + .../dapr/charts/dapr_placement/Chart.yaml | 2 +- .../dapr_placement_poddisruptionbudget.yaml | 1 + .../templates/dapr_placement_service.yaml | 1 + .../templates/dapr_placement_statefulset.yaml | 76 +++++++--- .../dapr/charts/dapr_placement/values.yaml | 6 + helm-charts/dapr/charts/dapr_rbac/Chart.yaml | 2 +- .../charts/dapr_rbac/templates/injector.yaml | 6 + .../charts/dapr_rbac/templates/operator.yaml | 3 + .../charts/dapr_rbac/templates/placement.yaml | 1 + .../charts/dapr_rbac/templates/sentry.yaml | 14 +- .../dapr/charts/dapr_sentry/Chart.yaml | 2 +- .../templates/dapr_sentry_deployment.yaml | 61 +++++--- .../dapr_sentry_poddisruptionbudget.yaml | 1 + .../templates/dapr_sentry_service.yaml | 14 +- .../dapr/charts/dapr_sentry/values.yaml | 4 +- .../charts/dapr_sidecar_injector/Chart.yaml | 2 +- .../dapr_sidecar_injector_deployment.yaml | 68 ++++++--- ..._sidecar_injector_poddisruptionbudget.yaml | 1 + .../dapr_sidecar_injector_service.yaml | 1 + .../dapr_sidecar_injector_webhook_config.yaml | 28 ---- .../charts/dapr_sidecar_injector/values.yaml | 1 + helm-charts/dapr/templates/_helpers.tpl | 17 +++ helm-charts/dapr/values.yaml | 38 ++++- 38 files changed, 559 insertions(+), 262 deletions(-) diff --git a/Makefile b/Makefile index 9c5a542..9a33891 100644 --- a/Makefile +++ b/Makefile @@ -22,7 +22,7 @@ LOCALBIN := $(PROJECT_PATH)/bin HELM_CHART_REPO ?= https://dapr.github.io/helm-charts HELM_CHART ?= dapr -HELM_CHART_VERSION ?= 1.11.3 +HELM_CHART_VERSION ?= 1.12.0 HELM_CHART_URL ?= https://raw.githubusercontent.com/dapr/helm-charts/master/dapr-$(HELM_CHART_VERSION).tgz ## Tool Versions diff --git a/config/crd/dapr/components.yaml b/config/crd/dapr/components.yaml index e959dbb..c6c23a2 100644 --- a/config/crd/dapr/components.yaml +++ b/config/crd/dapr/components.yaml @@ -12,7 +12,7 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: Component describes an Dapr component type + description: Component describes an Dapr component type. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation @@ -20,7 +20,7 @@ spec: internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string auth: - description: Auth represents authentication details for the component + description: Auth represents authentication details for the component. properties: secretStore: type: string @@ -39,32 +39,38 @@ spec: type: string type: array spec: - description: ComponentSpec is the spec for a component + description: ComponentSpec is the spec for a component. properties: - initTimeout: - type: string ignoreErrors: type: boolean + initTimeout: + type: string metadata: items: - description: MetadataItem is a name/value pair for a metadata + description: NameValuePair is a name/value pair. properties: + envRef: + description: EnvRef is the name of an environmental variable + to read the value from. + type: string name: + description: Name of the property. type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret holding - the value for the metadata item. Name is the secret name, - and key is the field in the secret. + description: SecretKeyRef is the reference of a value in a secret + store component. properties: key: + description: Field in the secret. type: string name: + description: Secret name. type: string required: - - key - name type: object value: + description: Value of the property, in plaintext. x-kubernetes-preserve-unknown-fields: true required: - name diff --git a/config/crd/dapr/configuration.yaml b/config/crd/dapr/configuration.yaml index e37c4af..4668827 100644 --- a/config/crd/dapr/configuration.yaml +++ b/config/crd/dapr/configuration.yaml @@ -4,7 +4,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.9.2 + controller-gen.kubebuilder.io/version: v0.11.3 creationTimestamp: null name: configurations.dapr.io labels: @@ -224,13 +224,20 @@ spec: description: Configure API logging. properties: enabled: - description: Default value for enabling API logging. Sidecars can always override this by setting `--enable-api-logging` to true or false explicitly. The default value is false. + description: Default value for enabling API logging. Sidecars + can always override this by setting `--enable-api-logging` + to true or false explicitly. The default value is false. type: boolean obfuscateURLs: - description: 'When enabled, obfuscates the values of URLs in HTTP API logs, logging the route name rather than the full path being invoked, which could contain PII. Default: false. This option has no effect if API logging is disabled.' + description: 'When enabled, obfuscates the values of URLs + in HTTP API logs, logging the route name rather than the + full path being invoked, which could contain PII. Default: + false. This option has no effect if API logging is disabled.' type: boolean omitHealthChecks: - description: 'If true, health checks are not reported in API logs. Default: false. This option has no effect if API logging is disabled.' + description: 'If true, health checks are not reported in API + logs. Default: false. This option has no effect if API logging + is disabled.' type: boolean type: object type: object @@ -315,8 +322,34 @@ spec: properties: allowedClockSkew: type: string + controlPlaneTrustDomain: + type: string enabled: type: boolean + sentryAddress: + type: string + tokenValidators: + description: Additional token validators to use. When Dapr is + running in Kubernetes mode, this is in addition to the built-in + "kubernetes" validator. In self-hosted mode, enabling a custom + validator will disable the built-in "insecure" validator. + items: + description: ValidatorSpec contains additional token validators + to use. + properties: + name: + description: Name of the validator + enum: + - jwks + type: string + options: + description: Options for the validator, if any + type: object + x-kubernetes-preserve-unknown-fields: true + required: + - name + type: object + type: array workloadCertTTL: type: string required: @@ -397,6 +430,12 @@ spec: required: - samplingRate type: object + wasm: + description: WasmSpec describes the security profile for all Dapr Wasm components. + properties: + strictSandbox: + type: boolean + type: object type: object type: object served: true diff --git a/config/crd/dapr/httpendpoints.yaml b/config/crd/dapr/httpendpoints.yaml index 2266759..82c3446 100644 --- a/config/crd/dapr/httpendpoints.yaml +++ b/config/crd/dapr/httpendpoints.yaml @@ -18,10 +18,14 @@ spec: - name: v1alpha1 schema: openAPIV3Schema: - description: HTTPEndpoint describes a Dapr HTTPEndpoint type for external service invocation. This endpoint can be external to Dapr, or external to the environment. + description: HTTPEndpoint describes a Dapr HTTPEndpoint type for external + service invocation. This endpoint can be external to Dapr, or external to + the environment. properties: apiVersion: - description: 'APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' type: string auth: description: Auth represents authentication details for the component. @@ -32,7 +36,9 @@ spec: - secretStore type: object kind: - description: 'Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' type: string metadata: type: object @@ -41,28 +47,113 @@ spec: type: string type: array spec: - description: HTTPEndpointSpec describes an access specification for allowing external service invocations. + description: HTTPEndpointSpec describes an access specification for allowing + external service invocations. properties: baseUrl: type: string + clientTLS: + description: TLS describes how to build client or server TLS configurations. + properties: + certificate: + description: TLSDocument describes and in-line or pointer to a + document to build a TLS configuration. + properties: + secretKeyRef: + description: SecretKeyRef is the reference of a value in a + secret store component. + properties: + key: + description: Field in the secret. + type: string + name: + description: Secret name. + type: string + required: + - name + type: object + value: + description: Value of the property, in plaintext. + x-kubernetes-preserve-unknown-fields: true + type: object + privateKey: + description: TLSDocument describes and in-line or pointer to a + document to build a TLS configuration. + properties: + secretKeyRef: + description: SecretKeyRef is the reference of a value in a + secret store component. + properties: + key: + description: Field in the secret. + type: string + name: + description: Secret name. + type: string + required: + - name + type: object + value: + description: Value of the property, in plaintext. + x-kubernetes-preserve-unknown-fields: true + type: object + renegotiation: + default: Never + description: Renegotiation sets the underlying tls negotiation + strategy for an http channel. + enum: + - Never + - OnceAsClient + - FreelyAsClient + type: string + rootCA: + description: TLSDocument describes and in-line or pointer to a + document to build a TLS configuration. + properties: + secretKeyRef: + description: SecretKeyRef is the reference of a value in a + secret store component. + properties: + key: + description: Field in the secret. + type: string + name: + description: Secret name. + type: string + required: + - name + type: object + value: + description: Value of the property, in plaintext. + x-kubernetes-preserve-unknown-fields: true + type: object + type: object headers: items: - description: Header is the name/value pair for a header specification. + description: NameValuePair is a name/value pair. properties: + envRef: + description: EnvRef is the name of an environmental variable + to read the value from. + type: string name: + description: Name of the property. type: string secretKeyRef: - description: SecretKeyRef is a reference to a secret holding the value for the metadata item. Name is the secret name, and key is the field in the secret. + description: SecretKeyRef is the reference of a value in a secret + store component. properties: key: + description: Field in the secret. type: string name: + description: Secret name. type: string required: - - key - name type: object value: + description: Value of the property, in plaintext. x-kubernetes-preserve-unknown-fields: true required: - name diff --git a/config/crd/dapr/subscription.yaml b/config/crd/dapr/subscription.yaml index cdf42c6..afd2322 100644 --- a/config/crd/dapr/subscription.yaml +++ b/config/crd/dapr/subscription.yaml @@ -54,9 +54,9 @@ spec: deadLetterTopic: type: string bulkSubscribe: - description: Represents bulk subscribe properies + description: Represents bulk subscribe properties properties: - enabled: + enabled: type: boolean maxMessagesCount: type: integer @@ -144,9 +144,9 @@ spec: description: The optional dead letter queue for this topic to send events to. type: string bulkSubscribe: - description: Represents bulk subscribe properies + description: Represents bulk subscribe properties properties: - enabled: + enabled: type: boolean maxMessagesCount: type: integer diff --git a/helm-charts/dapr/Chart.yaml b/helm-charts/dapr/Chart.yaml index f6320e9..faf0f0d 100644 --- a/helm-charts/dapr/Chart.yaml +++ b/helm-charts/dapr/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v1 -appVersion: 1.11.3 +appVersion: 1.12.0 description: A Helm chart for Dapr on Kubernetes name: dapr -version: 1.11.3 +version: 1.12.0 diff --git a/helm-charts/dapr/README.md b/helm-charts/dapr/README.md index 70e21d6..4a2010d 100644 --- a/helm-charts/dapr/README.md +++ b/helm-charts/dapr/README.md @@ -78,9 +78,9 @@ The Helm chart has the follow configuration options that can be supplied: | `global.tag` | Docker image version tag | latest release | | `global.logAsJson` | Json log format for control plane services | `false` | | `global.imagePullPolicy` | Global Control plane service imagePullPolicy | `IfNotPresent` | -| `global.imagePullSecrets` | Control plane service images pull secrets for docker registry | `""` | +| `global.imagePullSecrets` | Control plane service images pull secrets for docker registry. Its value can be: a string with single imagePullSecret, an array of `{name: pullSecret}` maps (Kubernetes-style), or an array of strings | `[]` | | `global.ha.enabled` | Highly Availability mode enabled for control plane | `false` | -| `global.ha.replicaCount` | Number of replicas of control plane services in Highly Availability mode | `3` | +| `global.ha.replicaCount` | Number of replicas of control plane services in Highly Availability mode
Note that in HA mode, Dapr Placement has 3 replicas and that cannot be configured. | `3` | | `global.ha.disruption.minimumAvailable` | Minimum amount of available instances for control plane. This can either be effective count or %. | `` | | `global.ha.disruption.maximumUnavailable` | Maximum amount of instances that are allowed to be unavailable for control plane. This can either be effective count or %. | `25%` | | `global.prometheus.enabled` | Prometheus metrics enablement for control plane services | `true` | @@ -88,6 +88,17 @@ The Helm chart has the follow configuration options that can be supplied: | `global.mtls.enabled` | Mutual TLS enablement | `true` | | `global.mtls.workloadCertTTL` | TTL for workload cert | `24h` | | `global.mtls.allowedClockSkew` | Allowed clock skew for workload cert rotation | `15m` | +| `global.mtls.controlPlaneTrustDomain ` | Trust domain for control plane | `cluster.local` | +| `global.mtls.sentryAddress` | Sentry address for control plane | `dapr-sentry.{{ .ReleaseNamespace }}.svc:443` | +| `global.mtls.mountSentryToken` | Gates whether the sentry bound service account token volume is mounted to control plane pods | `true` | +| `global.extraVolumes.sentry` | Array of extra volumes to make available to sentry pods | `[]` | +| `global.extraVolumes.placement` | Array of extra volumes to make available to placement pods | `[]` | +| `global.extraVolumes.operator` | Array of extra volumes to make available to operator pods | `[]` | +| `global.extraVolumes.injector` | Array of extra volumes to make available to sidecar injector pods | `[]` | +| `global.extraVolumeMounts.sentry` | Array of extra volume mounts to make available to sentry pod containers | `[]` | +| `global.extraVolumeMounts.placement` | Array of extra volume mounts to make available to placement pod containers | `[]` | +| `global.extraVolumeMounts.operator` | Array of extra volume mounts to make available to operator pod containers | `[]` | +| `global.extraVolumeMounts.injector` | Array of extra volume mounts to make available to sidecar injector pod containers | `[]` | | `global.dnsSuffix` | Kuberentes DNS suffix | `.cluster.local` | | `global.daprControlPlaneOs` | Operating System for Dapr control plane | `linux` | | `global.daprControlPlaneArch` | CPU Architecture for Dapr control plane | `amd64` | @@ -98,38 +109,43 @@ The Helm chart has the follow configuration options that can be supplied: | `global.issuerFilenames.ca` | Custom name of the file containing the root CA certificate inside the container | `ca.crt` | | `global.issuerFilenames.cert` | Custom name of the file containing the leaf certificate inside the container | `issuer.crt` | | `global.issuerFilenames.key` | Custom name of the file containing the leaf certificate's key inside the container | `issuer.key` | -| `global.actors.enabled` | Enables the Dapr actors building block. When "false", the Dapr Placement serice is not installed, and attempting to use Dapr actors will fail. | `true` | +| `global.actors.enabled` | Enables the Dapr actors building block. When "false", the Dapr Placement serice is not installed, and attempting to use Dapr actors will fail. | `true` | +| `global.seccompProfile` | SeccompProfile for Dapr control plane services | `""` | | `global.rbac.namespaced` | Removes cluster wide permissions where applicable | `false` | | `global.argoRolloutServiceReconciler.enabled` | Enable the service reconciler for Dapr-enabled Argo Rollouts | `false` | ### Dapr Operator options: -| Parameter | Description | Default | -|-------------------------------------------|-------------------------------------------------------------------------|-------------------------| -| `dapr_operator.replicaCount` | Number of replicas | `1` | -| `dapr_operator.logLevel` | Log level | `info` | -| `dapr_operator.watchInterval` | Interval for polling pods' state (e.g. `2m`). Set to `0` to disable, or `once` to only run once when the operator starts | `0` | -| `dapr_operator.maxPodRestartsPerMinute` | Maximum number of pods in an invalid state that can be restarted per minute | `20` | -| `dapr_operator.image.name` | Docker image name (`global.registry/dapr_operator.image.name`) | `dapr` | -| `dapr_operator.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot`. You may have to set this to `false` when running in Minikube | `true` | -| `dapr_operator.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | -| `dapr_operator.debug.enabled` | Boolean value for enabling debug mode | `{}` | -| `dapr_operator.serviceReconciler.enabled`| If false, disables the reconciler that creates Services for Dapr-enabled Deployments and StatefulSets.
Note: disabling this reconciler could prevent Dapr service invocation from working. | `true` | -| `dapr_operator.watchNamespace` | The namespace to watch for annotated Dapr resources in | `""` | +| Parameter | Description | Default | +|-------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------| +| `dapr_operator.replicaCount` | Number of replicas | `1` | +| `dapr_operator.logLevel` | Log level | `info` | +| `dapr_operator.watchInterval` | Interval for polling pods' state (e.g. `2m`). Set to `0` to disable, or `once` to only run once when the operator starts | `0` | +| `dapr_operator.maxPodRestartsPerMinute` | Maximum number of pods in an invalid state that can be restarted per minute | `20` | +| `dapr_operator.image.name` | Docker image name (`global.registry/dapr_operator.image.name`) | `dapr` | +| `dapr_operator.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot`. You may have to set this to `false` when running in Minikube | `true` | +| `dapr_operator.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | +| `dapr_operator.debug.enabled` | Boolean value for enabling debug mode | `{}` | +| `dapr_operator.serviceReconciler.enabled` | If false, disables the reconciler that creates Services for Dapr-enabled Deployments and StatefulSets.
Note: disabling this reconciler could prevent Dapr service invocation from working. | `true` | +| `dapr_operator.watchNamespace` | The namespace to watch for annotated Dapr resources in | `""` | +| `dapr_operator.deploymentAnnotations` | Custom annotations for Dapr Operator Deployment | `{}` | ### Dapr Placement options: -| Parameter | Description | Default | -|-------------------------------------------|-------------------------------------------------------------------------|-------------------------| -| `dapr_placement.replicationFactor` | Number of consistent hashing virtual node | `100` | -| `dapr_placement.logLevel` | Service Log level | `info` | -| `dapr_placement.image.name` | Service docker image name (`global.registry/dapr_placement.image.name`) | `dapr` | -| `dapr_placement.cluster.forceInMemoryLog` | Use in-memory log store and disable volume attach when `global.ha.enabled` is true | `false` | -| `dapr_placement.cluster.logStorePath` | Mount path for persistent volume for log store in unix-like system when `global.ha.enabled` is true | `/var/run/dapr/raft-log` | -| `dapr_placement.cluster.logStoreWinPath` | Mount path for persistent volume for log store in windows when `global.ha.enabled` is true | `C:\\raft-log` | -| `dapr_placement.volumeclaims.storageSize` | Attached volume size | `1Gi` | -| `dapr_placement.volumeclaims.storageClassName` | storage class name | | -| `dapr_placement.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot`. Does not apply unless `forceInMemoryLog` is set to `true`. You may have to set this to `false` when running in Minikube | `false` | -| `dapr_placement.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | -| `dapr_placement.debug.enabled` | Boolean value for enabling debug mode | `{}` | +| Parameter | Description | Default | +|------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| +| `dapr_placement.ha` | If set to true, deploys the Placement service with 3 nodes regardless of the value of `global.ha.enabled` | `false` | +| `dapr_placement.replicationFactor` | Number of consistent hashing virtual node | `100` | +| `dapr_placement.logLevel` | Service Log level | `info` | +| `dapr_placement.image.name` | Service docker image name (`global.registry/dapr_placement.image.name`) | `dapr` | +| `dapr_placement.cluster.forceInMemoryLog` | Use in-memory log store and disable volume attach when HA is true | `false` | +| `dapr_placement.cluster.logStorePath` | Mount path for persistent volume for log store in unix-like system when HA is true | `/var/run/dapr/raft-log` | +| `dapr_placement.cluster.logStoreWinPath` | Mount path for persistent volume for log store in windows when HA is true | `C:\\raft-log` | +| `dapr_placement.volumeclaims.storageSize` | Attached volume size | `1Gi` | +| `dapr_placement.volumeclaims.storageClassName` | storage class name | | +| `dapr_placement.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot`. Does not apply unless `forceInMemoryLog` is set to `true`. You may have to set this to `false` when running in Minikube | `false` | +| `dapr_placement.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | +| `dapr_placement.debug.enabled` | Boolean value for enabling debug mode | `{}` | +| `dapr_placement.metadataEnabled` | Boolean value for enabling placement tables metadata HTTP API | `false` | +| `dapr_placement.statefulsetAnnotations` | Custom annotations for Dapr Placement Statefulset | `{}` | ### Dapr RBAC options: | Parameter | Description | Default | @@ -138,42 +154,43 @@ The Helm chart has the follow configuration options that can be supplied: | `dapr_rbac.secretReader.namespace` | Namespace for the default secret reader | `default` | ### Dapr Sentry options: -| Parameter | Description | Default | -|-------------------------------------------|-------------------------------------------------------------------------|-------------------------| -| `dapr_sentry.replicaCount` | Number of replicas | `1` | -| `dapr_sentry.logLevel` | Log level | `info` | -| `dapr_sentry.image.name` | Docker image name (`global.registry/dapr_sentry.image.name`) | `dapr` | -| `dapr_sentry.tls.issuer.certPEM` | Issuer Certificate cert | `""` | -| `dapr_sentry.tls.issuer.keyPEM` | Issuer Private Key cert | `""` | -| `dapr_sentry.tls.root.certPEM` | Root Certificate cert | `""` | -| `dapr_sentry.tokenAudience` | Expected audience for tokens; multiple values can be separated by a comma. Defaults to the audience expected by the Kubernetes control plane if not set | `""` | -| `dapr_sentry.trustDomain` | Trust domain (logical group to manage app trust relationship) for access control list | `cluster.local` | -| `dapr_sentry.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot`. You may have to set this to `false` when running in Minikube | `true` | -| `dapr_sentry.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | -| `dapr_sentry.debug.enabled` | Boolean value for enabling debug mode | `{}` | +| Parameter | Description | Default | +|-------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| +| `dapr_sentry.replicaCount` | Number of replicas | `1` | +| `dapr_sentry.logLevel` | Log level | `info` | +| `dapr_sentry.image.name` | Docker image name (`global.registry/dapr_sentry.image.name`) | `dapr` | +| `dapr_sentry.tls.issuer.certPEM` | Issuer Certificate cert | `""` | +| `dapr_sentry.tls.issuer.keyPEM` | Issuer Private Key cert | `""` | +| `dapr_sentry.tls.root.certPEM` | Root Certificate cert | `""` | +| `dapr_sentry.tokenAudience` | Expected audience for tokens; multiple values can be separated by a comma. Defaults to the audience expected by the Kubernetes control plane if not set | `""` | +| `dapr_sentry.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot`. You may have to set this to `false` when running in Minikube | `true` | +| `dapr_sentry.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | +| `dapr_sentry.debug.enabled` | Boolean value for enabling debug mode | `{}` | +| `dapr_sentry.deploymentAnnotations` | Custom annotations for Dapr Sentry Deployment | `{}` | ### Dapr Sidecar Injector options: -| Parameter | Description | Default | -|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| -| `dapr_sidecar_injector.enabled` | Enable the sidecar injector | `true` | -| `dapr_sidecar_injector.sidecarImagePullPolicy` | Dapr sidecar image pull policy | `IfNotPresent` | -| `dapr_sidecar_injector.replicaCount` | Number of replicas | `1` | -| `dapr_sidecar_injector.logLevel` | Log level | `info` | -| `dapr_sidecar_injector.image.name` | Docker image name for Dapr runtime sidecar to inject into an application (`global.registry/dapr_sidecar_injector.image.name`) | `daprd`| -| `dapr_sidecar_injector.injectorImage.name` | Docker image name for sidecar injector service (`global.registry/dapr_sidecar_injector.injectorImage.name`) | `dapr`| -| `dapr_sidecar_injector.webhookFailurePolicy` | Failure policy for the sidecar injector | `Ignore` | -| `dapr_sidecar_injector.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot` for the Sidecar Injector container itself. You may have to set this to `false` when running in Minikube | `true` | -| `dapr_sidecar_injector.sidecarRunAsNonRoot` | When this boolean value is true (the default), the injected sidecar containers have `runAsRoot: true`. You may have to set this to `false` when running Minikube | `true` | -| `dapr_sidecar_injector.sidecarReadOnlyRootFilesystem` | When this boolean value is true (the default), the injected sidecar containers have `readOnlyRootFilesystem: true` | `true` | -| `dapr_sidecar_injector.sidecarDropALLCapabilities` | When this boolean valus is true, the injected sidecar containers have `securityContext.capabilities.drop: ["ALL"]` | `false` | -| `dapr_sidecar_injector.allowedServiceAccounts` | String value for extra allowed service accounts in the format of `namespace1:serviceAccount1,namespace2:serviceAccount2` | `""` | +| Parameter | Description | Default | +|-----------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| +| `dapr_sidecar_injector.enabled` | Enable the sidecar injector | `true` | +| `dapr_sidecar_injector.sidecarImagePullPolicy` | Dapr sidecar image pull policy | `IfNotPresent` | +| `dapr_sidecar_injector.replicaCount` | Number of replicas | `1` | +| `dapr_sidecar_injector.logLevel` | Log level | `info` | +| `dapr_sidecar_injector.image.name` | Docker image name for Dapr runtime sidecar to inject into an application (`global.registry/dapr_sidecar_injector.image.name`) | `daprd`| +| `dapr_sidecar_injector.injectorImage.name` | Docker image name for sidecar injector service (`global.registry/dapr_sidecar_injector.injectorImage.name`) | `dapr`| +| `dapr_sidecar_injector.webhookFailurePolicy` | Failure policy for the sidecar injector | `Ignore` | +| `dapr_sidecar_injector.runAsNonRoot` | Boolean value for `securityContext.runAsNonRoot` for the Sidecar Injector container itself. You may have to set this to `false` when running in Minikube | `true` | +| `dapr_sidecar_injector.sidecarRunAsNonRoot` | When this boolean value is true (the default), the injected sidecar containers have `runAsRoot: true`. You may have to set this to `false` when running Minikube | `true` | +| `dapr_sidecar_injector.sidecarReadOnlyRootFilesystem` | When this boolean value is true (the default), the injected sidecar containers have `readOnlyRootFilesystem: true` | `true` | +| `dapr_sidecar_injector.sidecarDropALLCapabilities` | When this boolean valus is true, the injected sidecar containers have `securityContext.capabilities.drop: ["ALL"]` | `false` | +| `dapr_sidecar_injector.allowedServiceAccounts` | String value for extra allowed service accounts in the format of `namespace1:serviceAccount1,namespace2:serviceAccount2` | `""` | | `dapr_sidecar_injector.allowedServiceAccountsPrefixNames` | Comma-separated list of extra allowed service accounts. Each item in the list should be in the format of namespace:serviceaccount. To match service accounts by a common prefix, you can add an asterisk (`*`) at the end of the prefix. For instance, ns1*:sa2* will match any service account that starts with sa2, whose namespace starts with ns1. For example, it will match service accounts like sa21 and sa2223 in namespaces such as ns1, ns1dapr, and so on. | `""` | -| `dapr_sidecar_injector.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | -| `dapr_sidecar_injector.debug.enabled` | Boolean value for enabling debug mode | `{}` | -| `dapr_sidecar_injector.kubeClusterDomain` | Domain for this kubernetes cluster. If not set, will auto-detect the cluster domain through the `/etc/resolv.conf` file `search domains` content. | `cluster.local` | -| `dapr_sidecar_injector.ignoreEntrypointTolerations` | JSON array of Kubernetes tolerations. If pod contains any of these tolerations, it will ignore the Docker image ENTRYPOINT for Dapr sidecar. | `[{\"effect\":\"NoSchedule\",\"key\":\"alibabacloud.com/eci\"},{\"effect\":\"NoSchedule\",\"key\":\"azure.com/aci\"},{\"effect\":\"NoSchedule\",\"key\":\"aws\"},{\"effect\":\"NoSchedule\",\"key\":\"huawei.com/cci\"}]` | -| `dapr_sidecar_injector.hostNetwork` | Enable hostNetwork mode. This is helpful when working with overlay networks such as Calico CNI and admission webhooks fail | `false` | -| `dapr_sidecar_injector.healthzPort` | The port used for health checks. Helpful in combination with hostNetwork to avoid port collisions | `8080` | +| `dapr_sidecar_injector.resources` | Value of `resources` attribute. Can be used to set memory/cpu resources/limits. See the section "Resource configuration" above. Defaults to empty | `{}` | +| `dapr_sidecar_injector.debug.enabled` | Boolean value for enabling debug mode | `{}` | +| `dapr_sidecar_injector.kubeClusterDomain` | Domain for this kubernetes cluster. If not set, will auto-detect the cluster domain through the `/etc/resolv.conf` file `search domains` content. | `cluster.local` | +| `dapr_sidecar_injector.ignoreEntrypointTolerations` | JSON array of Kubernetes tolerations. If pod contains any of these tolerations, it will ignore the Docker image ENTRYPOINT for Dapr sidecar. | `[{\"effect\":\"NoSchedule\",\"key\":\"alibabacloud.com/eci\"},{\"effect\":\"NoSchedule\",\"key\":\"azure.com/aci\"},{\"effect\":\"NoSchedule\",\"key\":\"aws\"},{\"effect\":\"NoSchedule\",\"key\":\"huawei.com/cci\"}]` | +| `dapr_sidecar_injector.hostNetwork` | Enable hostNetwork mode. This is helpful when working with overlay networks such as Calico CNI and admission webhooks fail | `false` | +| `dapr_sidecar_injector.healthzPort` | The port used for health checks. Helpful in combination with hostNetwork to avoid port collisions | `8080` | +| `dapr_sidecar.deploymentAnnotations` | Custom annotations for Dapr sidecar Deployment | `{}` | ## Example of highly available configuration of the control plane diff --git a/helm-charts/dapr/charts/dapr_config/Chart.yaml b/helm-charts/dapr/charts/dapr_config/Chart.yaml index 795540b..091ce4b 100644 --- a/helm-charts/dapr/charts/dapr_config/Chart.yaml +++ b/helm-charts/dapr/charts/dapr_config/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: "1.0" description: A Helm chart for Dapr configuration name: dapr_config -version: 1.11.3 +version: 1.12.0 diff --git a/helm-charts/dapr/charts/dapr_config/templates/dapr_default_config.yaml b/helm-charts/dapr/charts/dapr_config/templates/dapr_default_config.yaml index 1458475..d2adef6 100644 --- a/helm-charts/dapr/charts/dapr_config/templates/dapr_default_config.yaml +++ b/helm-charts/dapr/charts/dapr_config/templates/dapr_default_config.yaml @@ -3,6 +3,7 @@ apiVersion: dapr.io/v1alpha1 kind: Configuration metadata: name: {{ .Values.dapr_default_system_config_name }} + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -12,4 +13,6 @@ spec: enabled: {{ .Values.global.mtls.enabled }} workloadCertTTL: {{ .Values.global.mtls.workloadCertTTL }} allowedClockSkew: {{ .Values.global.mtls.allowedClockSkew }} + controlPlaneTrustDomain: {{ .Values.global.mtls.controlPlaneTrustDomain }} + sentryAddress: {{ if .Values.global.mtls.sentryAddress }}{{ .Values.global.mtls.sentryAddress }}{{ else }}dapr-sentry.{{ .Release.Namespace }}.svc.cluster.local:443{{ end }} {{- end }} diff --git a/helm-charts/dapr/charts/dapr_config/values.yaml b/helm-charts/dapr/charts/dapr_config/values.yaml index 0bc86c2..2173cfc 100644 --- a/helm-charts/dapr/charts/dapr_config/values.yaml +++ b/helm-charts/dapr/charts/dapr_config/values.yaml @@ -1,4 +1,4 @@ -# This value is essential in determining whether to build this chart or not based on the usecase. For example this chart should not be included while generating manifest file for dapr which is achieved by overriding this value. +# This value is essential in determining whether to build this chart or not based on the use case. For example this chart should not be included while generating manifest file for dapr which is achieved by overriding this value. dapr_config_chart_included: true dapr_default_system_config_name: "daprsystem" component: config diff --git a/helm-charts/dapr/charts/dapr_operator/Chart.yaml b/helm-charts/dapr/charts/dapr_operator/Chart.yaml index 2fe563e..ce2f47e 100644 --- a/helm-charts/dapr/charts/dapr_operator/Chart.yaml +++ b/helm-charts/dapr/charts/dapr_operator/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: "1.0" description: A Helm chart for Dapr Kubernetes Operator name: dapr_operator -version: 1.11.3 +version: 1.12.0 diff --git a/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_deployment.yaml b/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_deployment.yaml index 6307031..81c7434 100644 --- a/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_deployment.yaml +++ b/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_deployment.yaml @@ -1,48 +1,8 @@ -{{- $existingSecret := lookup "v1" "Secret" .Release.Namespace "dapr-webhook-cert"}} -{{- $existingCA := lookup "v1" "Secret" .Release.Namespace "dapr-webhook-ca"}} -{{- $ca := genCA "dapr-webhook-ca" 3650 }} -{{- $cn := printf "dapr-webhook" }} -{{- $altName1 := printf "dapr-webhook.%s" .Release.Namespace }} -{{- $altName2 := printf "dapr-webhook.%s.svc" .Release.Namespace }} -{{- $altName3 := printf "dapr-webhook.%s.svc.cluster" .Release.Namespace }} -{{- $altName4 := printf "dapr-webhook.%s.svc.cluster.local" .Release.Namespace }} -{{- $cert := genSignedCert $cn nil (list $altName1 $altName2 $altName3 $altName4) 3650 $ca }} -apiVersion: v1 -kind: Secret -metadata: - name: dapr-webhook-cert - labels: - app: dapr-operator - {{- range $key, $value := .Values.global.k8sLabels }} - {{ $key }}: {{ tpl $value $ }} - {{- end }} -data: - {{ if $existingSecret }}tls.crt: {{ index $existingSecret.data "tls.crt" }} - {{ else }}tls.crt: {{ b64enc $cert.Cert }} - {{ end }} - - {{ if $existingSecret }}tls.key: {{ index $existingSecret.data "tls.key" }} - {{ else }}tls.key: {{ b64enc $cert.Key }} - {{ end }} ---- -apiVersion: v1 -kind: Secret -metadata: - name: dapr-webhook-ca - labels: - app: dapr-operator - {{- range $key, $value := .Values.global.k8sLabels }} - {{ $key }}: {{ tpl $value $ }} - {{- end }} -data: - {{ if $existingCA }}caBundle: {{ index $existingCA.data "caBundle" }} - {{ else }}caBundle: {{ b64enc $ca.Cert }} - {{ end }} ---- apiVersion: apps/v1 kind: Deployment metadata: name: dapr-operator + namespace: {{ .Release.Namespace }} labels: app: dapr-operator {{- range $key, $value := .Values.global.k8sLabels }} @@ -67,11 +27,15 @@ spec: {{- with .Values.global.labels }} {{- toYaml . | nindent 8 }} {{- end }} -{{- if eq .Values.global.prometheus.enabled true }} annotations: + dapr.io/control-plane: operator +{{- if eq .Values.global.prometheus.enabled true }} prometheus.io/scrape: "{{ .Values.global.prometheus.enabled }}" prometheus.io/port: "{{ .Values.global.prometheus.port }}" prometheus.io/path: "/" +{{- end }} +{{- if .Values.deploymentAnnotations }} +{{ toYaml .Values.deploymentAnnotations | indent 4}} {{- end }} spec: containers: @@ -107,11 +71,18 @@ spec: {{- if eq .Values.global.daprControlPlaneOs "linux" }} securityContext: runAsNonRoot: {{ .Values.runAsNonRoot }} -{{- if eq .Values.debug.enabled true }} + {{- if eq .Values.debug.enabled true }} capabilities: - add: - - SYS_PTRACE -{{- end }} + add: ["SYS_PTRACE"] + {{- else }} + readOnlyRootFilesystem: true + capabilities: + drop: ["ALL"] + {{- end }} + {{- if .Values.global.seccompProfile }} + seccompProfile: + type: {{ .Values.global.seccompProfile }} + {{- end }} {{- end }} env: - name: NAMESPACE @@ -133,16 +104,22 @@ spec: resources: {{ toYaml .Values.resources | indent 10 }} volumeMounts: - - name: credentials - mountPath: /var/run/dapr/credentials - readOnly: true - - name: webhook-creds - {{- if eq .Values.global.daprControlPlaneOs "windows" }} - mountPath: "C:\\Windows\\TEMP\\k8s-webhook-server\\serving-certs" - {{- else }} - mountPath: /tmp/k8s-webhook-server/serving-certs - {{- end }} - readOnly: true + - name: dapr-trust-bundle + mountPath: /var/run/secrets/dapr.io/tls + readOnly: true + {{- if .Values.global.mtls.mountSentryVolume }} + - name: dapr-identity-token + mountPath: /var/run/secrets/dapr.io/sentrytoken + readOnly: true + {{- end }} + {{- if eq .Values.debug.enabled false }} + # This is not needed in debug mode because the root FS is writable + - name: dapr-operator-tmp + mountPath: /tmp + {{- end }} + {{- with .Values.global.extraVolumeMounts.operator }} + {{- toYaml . | nindent 8 }} + {{- end }} command: {{- if eq .Values.debug.enabled false }} - "/operator" @@ -166,6 +143,8 @@ spec: - "{{ .Values.maxPodRestartsPerMinute }}" - "--log-level" - "{{ .Values.logLevel }}" + - "--trust-anchors-file" + - "/var/run/secrets/dapr.io/tls/ca.crt" {{- if eq .Values.global.logAsJson true }} - "--log-as-json" {{- end }} @@ -176,14 +155,6 @@ spec: {{- else }} - "--enable-metrics=false" {{- end }} -{{- with .Values.global.issuerFilenames }} - - "--issuer-ca-filename" - - "{{ .ca }}" - - "--issuer-certificate-filename" - - "{{ .cert }}" - - "--issuer-key-filename" - - "{{ .key }}" -{{- end }} {{- if .Values.watchNamespace }} - "--watch-namespace" - "{{ .Values.watchNamespace }}" @@ -199,12 +170,25 @@ spec: {{- end }} serviceAccountName: dapr-operator volumes: - - name: credentials - secret: - secretName: dapr-trust-bundle - - name: webhook-creds - secret: - secretName: dapr-webhook-cert + - name: dapr-operator-tmp + emptyDir: + sizeLimit: 2Mi + medium: Memory + - name: dapr-trust-bundle + configMap: + name: dapr-trust-bundle + {{- if .Values.global.mtls.mountSentryVolume }} + - name: dapr-identity-token + projected: + sources: + - serviceAccountToken: + path: token + expirationSeconds: 600 + audience: "spiffe://{{ .Values.global.mtls.controlPlaneTrustDomain }}/ns/{{ .Release.Namespace }}/dapr-sentry" + {{- end }} + {{- with .Values.global.extraVolumes.operator }} + {{- toYaml . | nindent 8 }} + {{- end }} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: @@ -235,7 +219,7 @@ spec: {{- end }} {{- if .Values.global.imagePullSecrets }} imagePullSecrets: - - name: {{ .Values.global.imagePullSecrets }} + {{- include "dapr.imagePullSecrets" (dict "imagePullSecrets" .Values.global.imagePullSecrets) | nindent 8 }} {{- end }} {{- if .Values.global.nodeSelector }} nodeSelector: diff --git a/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_poddisruptionbudget.yaml b/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_poddisruptionbudget.yaml index 5ca533e..7069fae 100644 --- a/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_poddisruptionbudget.yaml +++ b/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_poddisruptionbudget.yaml @@ -7,6 +7,7 @@ apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: dapr-operator-disruption-budget + namespace: {{ .Release.Namespace }} labels: app: dapr-operator {{- range $key, $value := .Values.global.k8sLabels }} diff --git a/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_service.yaml b/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_service.yaml index fb994a6..10ffaa8 100644 --- a/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_service.yaml +++ b/helm-charts/dapr/charts/dapr_operator/templates/dapr_operator_service.yaml @@ -2,6 +2,7 @@ kind: Service apiVersion: v1 metadata: name: dapr-api + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -18,6 +19,7 @@ apiVersion: v1 kind: Service metadata: name: dapr-webhook + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} diff --git a/helm-charts/dapr/charts/dapr_operator/values.yaml b/helm-charts/dapr/charts/dapr_operator/values.yaml index 21a19ac..6f81c33 100644 --- a/helm-charts/dapr/charts/dapr_operator/values.yaml +++ b/helm-charts/dapr/charts/dapr_operator/values.yaml @@ -14,6 +14,8 @@ image: nameOverride: "" fullnameOverride: "" +deploymentAnnotations: {} + runAsNonRoot: true serviceReconciler: diff --git a/helm-charts/dapr/charts/dapr_placement/Chart.yaml b/helm-charts/dapr/charts/dapr_placement/Chart.yaml index 6b7c187..e13389b 100644 --- a/helm-charts/dapr/charts/dapr_placement/Chart.yaml +++ b/helm-charts/dapr/charts/dapr_placement/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: "1.0" description: A Helm chart for Dapr Kubernetes placement name: dapr_placement -version: 1.11.3 +version: 1.12.0 diff --git a/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_poddisruptionbudget.yaml b/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_poddisruptionbudget.yaml index b26d4f1..1ecd7f5 100644 --- a/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_poddisruptionbudget.yaml +++ b/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_poddisruptionbudget.yaml @@ -7,6 +7,7 @@ apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: dapr-placement-server-disruption-budget + namespace: {{ .Release.Namespace }} labels: app: dapr-placement-server {{- range $key, $value := .Values.global.k8sLabels }} diff --git a/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_service.yaml b/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_service.yaml index 7b7e443..42f2554 100644 --- a/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_service.yaml +++ b/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_service.yaml @@ -3,6 +3,7 @@ kind: Service apiVersion: v1 metadata: name: dapr-placement-server + namespace: {{ .Release.Namespace }} labels: app: dapr-placement-server {{- range $key, $value := .Values.global.k8sLabels }} diff --git a/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_statefulset.yaml b/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_statefulset.yaml index 6fa87ea..e805dbf 100644 --- a/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_statefulset.yaml +++ b/helm-charts/dapr/charts/dapr_placement/templates/dapr_placement_statefulset.yaml @@ -3,13 +3,14 @@ apiVersion: apps/v1 kind: StatefulSet metadata: name: dapr-placement-server + namespace: {{ .Release.Namespace }} labels: app: dapr-placement-server {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} {{- end }} spec: -{{- if eq .Values.global.ha.enabled true }} +{{- if or (eq .Values.global.ha.enabled true) (eq .Values.ha true) }} replicas: 3 {{- else }} replicas: 1 @@ -29,11 +30,15 @@ spec: {{- with .Values.global.labels }} {{- toYaml . | nindent 8 }} {{- end }} -{{- if eq .Values.global.prometheus.enabled true }} annotations: + dapr.io/control-plane: placement +{{- if eq .Values.global.prometheus.enabled true }} prometheus.io/scrape: "{{ .Values.global.prometheus.enabled }}" prometheus.io/port: "{{ .Values.global.prometheus.port }}" prometheus.io/path: "/" +{{- end }} +{{- if .Values.statefulsetAnnotations }} +{{ toYaml .Values.statefulsetAnnotations | indent 4}} {{- end }} spec: containers: @@ -69,10 +74,17 @@ spec: resources: {{ toYaml .Values.resources | indent 10 }} volumeMounts: - - name: credentials - mountPath: /var/run/dapr/credentials + - name: dapr-trust-bundle + mountPath: /var/run/secrets/dapr.io/tls readOnly: true -{{- if eq .Values.global.ha.enabled true }} + {{- if .Values.global.mtls.mountSentryVolume }} + - name: dapr-identity-token + mountPath: /var/run/secrets/dapr.io/sentrytoken + {{- end }} + {{- with .Values.global.extraVolumeMounts.placement }} + {{- toYaml . | nindent 10 }} + {{- end }} +{{- if or (eq .Values.global.ha.enabled true) (eq .Values.ha true) }} {{- if eq .Values.cluster.forceInMemoryLog false }} - name: raft-log {{- if eq .Values.global.daprControlPlaneOs "windows" }} @@ -109,7 +121,7 @@ spec: - "/placement" - "--" {{- end }} -{{- if eq .Values.global.ha.enabled true }} +{{- if or (eq .Values.global.ha.enabled true) (eq .Values.ha true) }} - "--id" - "$(PLACEMENT_ID)" - "--initial-cluster" @@ -128,6 +140,9 @@ spec: {{- if eq .Values.global.logAsJson true }} - "--log-as-json" {{- end }} +{{- if eq .Values.metadataEnabled true }} + - "--metadata-enabled" +{{- end }} {{- if eq .Values.global.prometheus.enabled true }} - "--enable-metrics" - "--replicationFactor" @@ -138,14 +153,10 @@ spec: - "--enable-metrics=false" {{- end }} - "--tls-enabled" -{{- with .Values.global.issuerFilenames }} - - "--issuer-ca-filename" - - "{{ .ca }}" - - "--issuer-certificate-filename" - - "{{ .cert }}" - - "--issuer-key-filename" - - "{{ .key }}" -{{- end }} + - "--trust-domain={{ .Values.global.mtls.controlPlaneTrustDomain }}" + - "--trust-anchors-file=/var/run/secrets/dapr.io/tls/ca.crt" + - "--sentry-address={{ if .Values.global.mtls.sentryAddress }}{{ .Values.global.mtls.sentryAddress }}{{ else }}dapr-sentry.{{ .Release.Namespace }}.svc.cluster.local:443{{ end }}" + - "--mode=kubernetes" {{- if eq .Values.global.daprControlPlaneOs "linux" }} securityContext: {{- if eq .Values.cluster.forceInMemoryLog true }} @@ -153,11 +164,18 @@ spec: {{- else }} runAsUser: 0 {{- end }} -{{- if eq .Values.debug.enabled true }} + {{- if eq .Values.debug.enabled true }} capabilities: - add: - - SYS_PTRACE -{{- end }} + add: ["SYS_PTRACE"] + {{- else }} + readOnlyRootFilesystem: true + capabilities: + drop: ["ALL"] + {{- end }} + {{- if .Values.global.seccompProfile }} + seccompProfile: + type: {{ .Values.global.seccompProfile }} + {{- end }} {{- end }} env: - name: PLACEMENT_ID @@ -170,9 +188,21 @@ spec: fieldPath: metadata.namespace serviceAccountName: dapr-placement volumes: - - name: credentials - secret: - secretName: dapr-trust-bundle + - name: dapr-trust-bundle + configMap: + name: dapr-trust-bundle + {{- if .Values.global.mtls.mountSentryVolume }} + - name: dapr-identity-token + projected: + sources: + - serviceAccountToken: + path: token + expirationSeconds: 600 + audience: "spiffe://{{ .Values.global.mtls.controlPlaneTrustDomain }}/ns/{{ .Release.Namespace }}/dapr-sentry" + {{- end }} + {{- with .Values.global.extraVolumes.placement }} + {{- toYaml . | nindent 6 }} + {{- end }} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: @@ -203,7 +233,7 @@ spec: {{- end }} {{- if .Values.global.imagePullSecrets }} imagePullSecrets: - - name: {{ .Values.global.imagePullSecrets }} + {{- include "dapr.imagePullSecrets" (dict "imagePullSecrets" .Values.global.imagePullSecrets) | nindent 8 }} {{- end }} {{- if .Values.global.nodeSelector }} nodeSelector: @@ -213,7 +243,7 @@ spec: tolerations: {{ toYaml .Values.global.tolerations | indent 8 }} {{- end }} -{{- if eq .Values.global.ha.enabled true }} +{{- if or (eq .Values.global.ha.enabled true) (eq .Values.ha true) }} {{- if eq .Values.cluster.forceInMemoryLog false }} volumeClaimTemplates: - metadata: diff --git a/helm-charts/dapr/charts/dapr_placement/values.yaml b/helm-charts/dapr/charts/dapr_placement/values.yaml index f057da4..06ee8e2 100644 --- a/helm-charts/dapr/charts/dapr_placement/values.yaml +++ b/helm-charts/dapr/charts/dapr_placement/values.yaml @@ -10,11 +10,15 @@ image: nameOverride: "" fullnameOverride: "" +statefulsetAnnotations: {} + ports: protocol: TCP apiPort: 50005 raftRPCPort: 8201 +ha: false + cluster: forceInMemoryLog: false logStorePath: /var/run/dapr/raft-log @@ -26,6 +30,8 @@ volumeclaims: replicationFactor: 100 +metadataEnabled: false + livenessProbe: initialDelaySeconds: 10 periodSeconds: 3 diff --git a/helm-charts/dapr/charts/dapr_rbac/Chart.yaml b/helm-charts/dapr/charts/dapr_rbac/Chart.yaml index 5e17ce2..d1766f0 100644 --- a/helm-charts/dapr/charts/dapr_rbac/Chart.yaml +++ b/helm-charts/dapr/charts/dapr_rbac/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: "1.0" description: A Helm chart for Dapr Kubernetes RBAC components name: dapr_rbac -version: 1.11.3 +version: 1.12.0 diff --git a/helm-charts/dapr/charts/dapr_rbac/templates/injector.yaml b/helm-charts/dapr/charts/dapr_rbac/templates/injector.yaml index 5dd79f6..ffb1845 100644 --- a/helm-charts/dapr/charts/dapr_rbac/templates/injector.yaml +++ b/helm-charts/dapr/charts/dapr_rbac/templates/injector.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: dapr-injector + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -19,6 +20,10 @@ rules: - apiGroups: [""] resources: ["serviceaccounts"] verbs: ["get", "list"] + - apiGroups: ["admissionregistration.k8s.io"] + resources: ["mutatingwebhookconfigurations"] + verbs: ["patch"] + resourceNames: ["dapr-sidecar-injector"] {{- if not .Values.global.rbac.namespaced }} - apiGroups: ["dapr.io"] resources: ["configurations", "components"] @@ -46,6 +51,7 @@ kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dapr-injector + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} diff --git a/helm-charts/dapr/charts/dapr_rbac/templates/operator.yaml b/helm-charts/dapr/charts/dapr_rbac/templates/operator.yaml index 130d325..4ef416b 100644 --- a/helm-charts/dapr/charts/dapr_rbac/templates/operator.yaml +++ b/helm-charts/dapr/charts/dapr_rbac/templates/operator.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: dapr-operator + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -84,6 +85,7 @@ kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dapr-operator + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -150,6 +152,7 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dapr-operator + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} diff --git a/helm-charts/dapr/charts/dapr_rbac/templates/placement.yaml b/helm-charts/dapr/charts/dapr_rbac/templates/placement.yaml index 94be694..588fa69 100644 --- a/helm-charts/dapr/charts/dapr_rbac/templates/placement.yaml +++ b/helm-charts/dapr/charts/dapr_rbac/templates/placement.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: dapr-placement + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} diff --git a/helm-charts/dapr/charts/dapr_rbac/templates/sentry.yaml b/helm-charts/dapr/charts/dapr_rbac/templates/sentry.yaml index e19c098..b21f303 100644 --- a/helm-charts/dapr/charts/dapr_rbac/templates/sentry.yaml +++ b/helm-charts/dapr/charts/dapr_rbac/templates/sentry.yaml @@ -2,6 +2,7 @@ apiVersion: v1 kind: ServiceAccount metadata: name: dapr-sentry + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -22,7 +23,10 @@ rules: {{- if not .Values.global.rbac.namespaced }} - apiGroups: ["dapr.io"] resources: ["configurations"] - verbs: ["list"] + verbs: ["list", "get", "watch"] + - apiGroups: [""] + resources: ["pods"] + verbs: ["list", "get", "watch"] {{- end }} --- kind: ClusterRoleBinding @@ -46,6 +50,7 @@ kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dapr-sentry + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -53,7 +58,11 @@ metadata: rules: - apiGroups: [""] resources: ["secrets"] - verbs: ["get", "update"] + verbs: ["get", "update","delete"] + resourceNames: ["dapr-trust-bundle"] + - apiGroups: [""] + resources: ["configmaps"] + verbs: ["get", "update", "watch", "list"] resourceNames: ["dapr-trust-bundle"] {{- if eq .Values.global.rbac.namespaced true }} - apiGroups: ["dapr.io"] @@ -65,6 +74,7 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: dapr-sentry + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} diff --git a/helm-charts/dapr/charts/dapr_sentry/Chart.yaml b/helm-charts/dapr/charts/dapr_sentry/Chart.yaml index bf93891..7f0243d 100644 --- a/helm-charts/dapr/charts/dapr_sentry/Chart.yaml +++ b/helm-charts/dapr/charts/dapr_sentry/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: "1.0" description: A Helm chart for Dapr Sentry name: dapr_sentry -version: 1.11.3 +version: 1.12.0 diff --git a/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_deployment.yaml b/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_deployment.yaml index 7cbf444..322f9d8 100644 --- a/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_deployment.yaml +++ b/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_deployment.yaml @@ -1,29 +1,39 @@ -{{- $existingSecret := lookup "v1" "Secret" .Release.Namespace "dapr-trust-bundle"}} ---- apiVersion: v1 kind: Secret metadata: name: dapr-trust-bundle + namespace: {{ .Release.Namespace }} labels: app: dapr-sentry {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} {{- end }} +{{ if and .Values.tls.issuer.certPEM (and .Values.tls.issuer.keyPEM .Values.tls.root.certPEM) }} data: - {{ if .Values.tls.issuer.certPEM }}issuer.crt: {{ b64enc .Values.tls.issuer.certPEM | trim }} - {{ else if $existingSecret }}issuer.crt: {{ index $existingSecret.data "issuer.crt" }} - {{ end }} - {{ if .Values.tls.issuer.keyPEM }}issuer.key: {{ b64enc .Values.tls.issuer.keyPEM | trim }} - {{ else if $existingSecret }}issuer.key: {{ index $existingSecret.data "issuer.key" }} - {{end}} - {{ if .Values.tls.root.certPEM }}ca.crt: {{ b64enc .Values.tls.root.certPEM | trim }} - {{ else if $existingSecret }}ca.crt: {{ index $existingSecret.data "ca.crt" }} - {{end}} + issuer.crt: {{ b64enc .Values.tls.issuer.certPEM | trim }} + issuer.key: {{ b64enc .Values.tls.issuer.keyPEM | trim }} + ca.crt: {{ b64enc .Values.tls.root.certPEM | trim }} +{{ end }} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: dapr-trust-bundle + labels: + app: dapr-sentry + {{- range $key, $value := .Values.global.k8sLabels }} + {{ $key }}: {{ tpl $value $ }} + {{- end }} +{{ if .Values.tls.root.certPEM }} +data: + ca.crt: {{- .Values.tls.root.certPEM | toYaml | indent 1}} +{{end}} --- apiVersion: apps/v1 kind: Deployment metadata: name: dapr-sentry + namespace: {{ .Release.Namespace }} labels: app: dapr-sentry {{- range $key, $value := .Values.global.k8sLabels }} @@ -48,11 +58,15 @@ spec: {{- with .Values.global.labels }} {{- toYaml . | nindent 8 }} {{- end }} -{{- if eq .Values.global.prometheus.enabled true }} annotations: + dapr.io/control-plane: sentry +{{- if eq .Values.global.prometheus.enabled true }} prometheus.io/scrape: "{{ .Values.global.prometheus.enabled }}" prometheus.io/port: "{{ .Values.global.prometheus.port }}" prometheus.io/path: "/" +{{- end }} +{{- if .Values.deploymentAnnotations }} +{{ toYaml .Values.deploymentAnnotations | indent 4}} {{- end }} spec: containers: @@ -90,8 +104,15 @@ spec: runAsNonRoot: {{ .Values.runAsNonRoot }} {{- if eq .Values.debug.enabled true }} capabilities: - add: - - SYS_PTRACE + add: ["SYS_PTRACE"] + {{- else }} + readOnlyRootFilesystem: true + capabilities: + drop: ["ALL"] + {{- end }} + {{- if .Values.global.seccompProfile }} + seccompProfile: + type: {{ .Values.global.seccompProfile }} {{- end }} {{- end }} env: @@ -115,8 +136,11 @@ spec: {{ toYaml .Values.resources | indent 10 }} volumeMounts: - name: credentials - mountPath: /var/run/dapr/credentials + mountPath: /var/run/secrets/dapr.io/credentials readOnly: true + {{- with .Values.global.extraVolumeMounts.sentry }} + {{- toYaml . | nindent 10 }} + {{- end }} command: {{- if eq .Values.debug.enabled false }} - "/sentry" @@ -147,7 +171,7 @@ spec: - "--enable-metrics=false" {{- end }} - "--trust-domain" - - {{ .Values.tls.trustDomain }} + - {{ .Values.global.mtls.controlPlaneTrustDomain }} {{- if .Values.tokenAudience }} - "--token-audience" - {{ .Values.tokenAudience }} @@ -165,6 +189,9 @@ spec: - name: credentials secret: secretName: dapr-trust-bundle + {{- with .Values.global.extraVolumes.sentry }} + {{- toYaml . | nindent 8 }} + {{- end }} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: @@ -195,7 +222,7 @@ spec: {{- end }} {{- if .Values.global.imagePullSecrets }} imagePullSecrets: - - name: {{ .Values.global.imagePullSecrets }} + {{- include "dapr.imagePullSecrets" (dict "imagePullSecrets" .Values.global.imagePullSecrets) | nindent 8 }} {{- end }} {{- if .Values.global.nodeSelector }} nodeSelector: diff --git a/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_poddisruptionbudget.yaml b/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_poddisruptionbudget.yaml index 817ddad..c80fe5d 100644 --- a/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_poddisruptionbudget.yaml +++ b/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_poddisruptionbudget.yaml @@ -7,6 +7,7 @@ apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: dapr-sentry-budget + namespace: {{ .Release.Namespace }} labels: app: dapr-sentry {{- range $key, $value := .Values.global.k8sLabels }} diff --git a/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_service.yaml b/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_service.yaml index 3f81a0c..559a3bf 100644 --- a/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_service.yaml +++ b/helm-charts/dapr/charts/dapr_sentry/templates/dapr_sentry_service.yaml @@ -2,6 +2,7 @@ kind: Service apiVersion: v1 metadata: name: dapr-sentry + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} @@ -11,5 +12,14 @@ spec: app: dapr-sentry ports: - protocol: TCP - port: {{ .Values.ports.port }} - targetPort: {{ .Values.ports.targetPort }} \ No newline at end of file + port: {{ .Values.ports.port }} + targetPort: {{ .Values.ports.targetPort }} + name: grpc +# Added for backwards compatibility where previous clients will attempt to +# connect on port 80. +{{ if (ne (int .Values.ports.port) 80) }} + - protocol: TCP + port: 80 + targetPort: {{ .Values.ports.targetPort }} + name: legacy +{{ end }} diff --git a/helm-charts/dapr/charts/dapr_sentry/values.yaml b/helm-charts/dapr/charts/dapr_sentry/values.yaml index f0fbc69..265d5ce 100644 --- a/helm-charts/dapr/charts/dapr_sentry/values.yaml +++ b/helm-charts/dapr/charts/dapr_sentry/values.yaml @@ -13,9 +13,11 @@ fullnameOverride: "" tokenAudience: "" +deploymentAnnotations: {} + ports: protocol: TCP - port: 80 + port: 443 targetPort: 50001 tls: diff --git a/helm-charts/dapr/charts/dapr_sidecar_injector/Chart.yaml b/helm-charts/dapr/charts/dapr_sidecar_injector/Chart.yaml index af0cbac..d19a1ee 100644 --- a/helm-charts/dapr/charts/dapr_sidecar_injector/Chart.yaml +++ b/helm-charts/dapr/charts/dapr_sidecar_injector/Chart.yaml @@ -2,4 +2,4 @@ apiVersion: v1 appVersion: "1.0" description: A Helm chart for the Dapr sidecar injector name: dapr_sidecar_injector -version: 1.11.3 +version: 1.12.0 diff --git a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_deployment.yaml b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_deployment.yaml index dda4051..1c8ca57 100644 --- a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_deployment.yaml +++ b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_deployment.yaml @@ -3,6 +3,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: dapr-sidecar-injector + namespace: {{ .Release.Namespace }} labels: app: dapr-sidecar-injector {{- range $key, $value := .Values.global.k8sLabels }} @@ -27,11 +28,15 @@ spec: {{- with .Values.global.labels }} {{- toYaml . | nindent 8 }} {{- end }} -{{- if eq .Values.global.prometheus.enabled true }} annotations: + dapr.io/control-plane: injector +{{- if eq .Values.global.prometheus.enabled true }} prometheus.io/scrape: "{{ .Values.global.prometheus.enabled }}" prometheus.io/port: "{{ .Values.global.prometheus.port }}" prometheus.io/path: "/" +{{- end }} +{{- if .Values.deploymentAnnotations }} +{{ toYaml .Values.deploymentAnnotations | indent 4}} {{- end }} spec: {{- if .Values.hostNetwork }} @@ -77,8 +82,15 @@ spec: {{- end }} {{- if eq .Values.debug.enabled true }} capabilities: - add: - - SYS_PTRACE + add: ["SYS_PTRACE"] + {{- else }} + readOnlyRootFilesystem: true + capabilities: + drop: ["ALL"] + {{- end }} + {{- if .Values.global.seccompProfile }} + seccompProfile: + type: {{ .Values.global.seccompProfile }} {{- end }} {{- end }} command: @@ -112,19 +124,13 @@ spec: {{- end }} - "--healthz-port" - "{{ .Values.healthzPort }}" -{{- with .Values.global.issuerFilenames }} - - "--issuer-ca-secret-key" - - "{{ .ca }}" - - "--issuer-certificate-secret-key" - - "{{ .cert }}" - - "--issuer-key-secret-key" - - "{{ .key }}" -{{- end }} env: - - name: TLS_CERT_FILE - value: /dapr/cert/tls.crt - - name: TLS_KEY_FILE - value: /dapr/cert/tls.key + - name: DAPR_TRUST_ANCHORS_FILE + value: /var/run/secrets/dapr.io/tls/ca.crt + - name: DAPR_CONTROL_PLANE_TRUST_DOMAIN + value: {{ .Values.global.mtls.controlPlaneTrustDomain }} + - name: DAPR_SENTRY_ADDRESS + value: {{ if .Values.global.mtls.sentryAddress }}{{ .Values.global.mtls.sentryAddress }}{{ else }}dapr-sentry.{{ .Release.Namespace }}.svc.cluster.local:443{{ end }} {{- if .Values.kubeClusterDomain }} - name: KUBE_CLUSTER_DOMAIN value: "{{ .Values.kubeClusterDomain }}" @@ -184,13 +190,33 @@ spec: resources: {{ toYaml .Values.resources | indent 10 }} volumeMounts: - - name: cert - mountPath: /dapr/cert + - name: dapr-trust-bundle + mountPath: /var/run/secrets/dapr.io/tls + readOnly: true + {{- if .Values.global.mtls.mountSentryVolume }} + - name: dapr-identity-token + mountPath: /var/run/secrets/dapr.io/sentrytoken readOnly: true + {{- end }} + {{- with .Values.global.extraVolumeMounts.injector }} + {{- toYaml . | nindent 8 }} + {{- end }} volumes: - - name: cert - secret: - secretName: dapr-sidecar-injector-cert + - name: dapr-trust-bundle + configMap: + name: dapr-trust-bundle + {{- if .Values.global.mtls.mountSentryVolume }} + - name: dapr-identity-token + projected: + sources: + - serviceAccountToken: + path: token + expirationSeconds: 600 + audience: "spiffe://{{ .Values.global.mtls.controlPlaneTrustDomain }}/ns/{{ .Release.Namespace }}/dapr-sentry" + {{- end }} + {{- with .Values.global.extraVolumes.injector }} + {{- toYaml . | nindent 6 }} + {{- end }} affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: @@ -221,7 +247,7 @@ spec: {{- end }} {{- if .Values.global.imagePullSecrets }} imagePullSecrets: - - name: {{ .Values.global.imagePullSecrets }} + {{- include "dapr.imagePullSecrets" (dict "imagePullSecrets" .Values.global.imagePullSecrets) | nindent 8 }} {{- end }} {{- if .Values.global.nodeSelector }} nodeSelector: diff --git a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_poddisruptionbudget.yaml b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_poddisruptionbudget.yaml index 4b6f8ee..9ae8ad8 100644 --- a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_poddisruptionbudget.yaml +++ b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_poddisruptionbudget.yaml @@ -8,6 +8,7 @@ apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: dapr-sidecar-injector-disruption-budget + namespace: {{ .Release.Namespace }} labels: app: dapr-sidecar-injector {{- range $key, $value := .Values.global.k8sLabels }} diff --git a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_service.yaml b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_service.yaml index 837c3a1..b31018f 100644 --- a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_service.yaml +++ b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_service.yaml @@ -3,6 +3,7 @@ apiVersion: v1 kind: Service metadata: name: dapr-sidecar-injector + namespace: {{ .Release.Namespace }} labels: {{- range $key, $value := .Values.global.k8sLabels }} {{ $key }}: {{ tpl $value $ }} diff --git a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_webhook_config.yaml b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_webhook_config.yaml index 8253020..67e123b 100644 --- a/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_webhook_config.yaml +++ b/helm-charts/dapr/charts/dapr_sidecar_injector/templates/dapr_sidecar_injector_webhook_config.yaml @@ -1,31 +1,4 @@ {{- if eq .Values.enabled true }} -{{- $existingSecret := lookup "v1" "Secret" .Release.Namespace "dapr-sidecar-injector-cert"}} -{{- $existingWebHookConfig := lookup "admissionregistration.k8s.io/v1" "MutatingWebhookConfiguration" .Release.Namespace "dapr-sidecar-injector"}} -{{- $ca := genCA "dapr-sidecar-injector-ca" 3650 }} -{{- $cn := printf "dapr-sidecar-injector" }} -{{- $altName1 := printf "dapr-sidecar-injector.%s" .Release.Namespace }} -{{- $altName2 := printf "dapr-sidecar-injector.%s.svc" .Release.Namespace }} -{{- $altName3 := printf "dapr-sidecar-injector.%s.svc.cluster" .Release.Namespace }} -{{- $altName4 := printf "dapr-sidecar-injector.%s.svc.cluster.local" .Release.Namespace }} -{{- $cert := genSignedCert $cn nil (list $altName1 $altName2 $altName3 $altName4) 3650 $ca }} -apiVersion: v1 -kind: Secret -metadata: - name: dapr-sidecar-injector-cert - labels: - app: dapr-sidecar-injector - {{- range $key, $value := .Values.global.k8sLabels }} - {{ $key }}: {{ tpl $value $ }} - {{- end }} -data: - {{ if $existingSecret }}tls.crt: {{ index $existingSecret.data "tls.crt" }} - {{ else }}tls.crt: {{ b64enc $cert.Cert }} - {{ end }} - - {{ if $existingSecret }}tls.key: {{ index $existingSecret.data "tls.key" }} - {{ else }}tls.key: {{ b64enc $cert.Key }} - {{ end }} ---- apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: @@ -43,7 +16,6 @@ webhooks: namespace: {{ .Release.Namespace }} name: dapr-sidecar-injector path: "/mutate" - caBundle: {{ if $existingWebHookConfig }}{{ (index $existingWebHookConfig.webhooks 0).clientConfig.caBundle }}{{ else }}{{ b64enc $ca.Cert }}{{ end }} rules: - apiGroups: - "" diff --git a/helm-charts/dapr/charts/dapr_sidecar_injector/values.yaml b/helm-charts/dapr/charts/dapr_sidecar_injector/values.yaml index 67fbaf4..8ffb2e0 100644 --- a/helm-charts/dapr/charts/dapr_sidecar_injector/values.yaml +++ b/helm-charts/dapr/charts/dapr_sidecar_injector/values.yaml @@ -15,6 +15,7 @@ image: injectorImage: name: "injector" +deploymentAnnotations: {} nameOverride: "" fullnameOverride: "" webhookFailurePolicy: Ignore diff --git a/helm-charts/dapr/templates/_helpers.tpl b/helm-charts/dapr/templates/_helpers.tpl index 93e6b50..2f4043f 100644 --- a/helm-charts/dapr/templates/_helpers.tpl +++ b/helm-charts/dapr/templates/_helpers.tpl @@ -30,3 +30,20 @@ Create chart name and version as used by the chart label. {{- define "k8s_operator.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} {{- end -}} + +{{/* +Formats imagePullSecrets. Input is dict( "imagePullSecrets" .{specific imagePullSecrets}). +*/}} +{{- define "dapr.imagePullSecrets" -}} +{{- if eq (typeOf .imagePullSecrets) "string" }} +- name: {{ .imagePullSecrets }} +{{- else }} +{{- range .imagePullSecrets }} +{{- if eq (typeOf .) "map[string]interface {}" }} +- {{ toYaml (dict "name" .name) | trim }} +{{- else }} +- name: {{ . }} +{{- end }} +{{- end }} +{{- end }} +{{- end }} diff --git a/helm-charts/dapr/values.yaml b/helm-charts/dapr/values.yaml index 41919e4..0a9e040 100644 --- a/helm-charts/dapr/values.yaml +++ b/helm-charts/dapr/values.yaml @@ -1,10 +1,26 @@ global: registry: docker.io/daprio - tag: '1.11.3' + tag: '1.12.0' dnsSuffix: ".cluster.local" logAsJson: false imagePullPolicy: IfNotPresent + + # To help compatibility with other charts which use global.imagePullSecrets. + # Allow either a string with single imagepullsecret or an array of {name: pullSecret} maps (k8s-style) or an array of strings (more common helm-style). + # global: + # imagePullSecrets: "pullSecret" + # or + # global: + # imagePullSecrets: + # - name: pullSecret1 + # - name: pullSecret2 + # or + # global: + # imagePullSecrets: + # - pullSecret1 + # - pullSecret2 imagePullSecrets: "" + nodeSelector: {} tolerations: [] rbac: @@ -22,10 +38,30 @@ global: enabled: true workloadCertTTL: 24h allowedClockSkew: 15m + controlPlaneTrustDomain: "cluster.local" + # If set to true, a bound service account token will be mounted and used to + # authenticate to Sentry. + mountSentryVolume: true + # Used to override `dapr-sentry.{{ .Release.Namespace }}.svc.cluster.local:443` + #sentryAddress: + # extraVolumes and extraVolumeMounts are used to mount additional volumes to + # the Dapr control plane pods. Useful for using alternative authentication + # credentials to sentry. + extraVolumes: {} + # sentry: + # placement: + # operator: + # injector: + extraVolumeMounts: {} + # sentry: + # placement: + # operator: + # injector: actors: enabled: true daprControlPlaneOs: linux labels: {} + seccompProfile: "" k8sLabels: app.kubernetes.io/name: "{{ .Release.Name }}" app.kubernetes.io/version: "{{ .Values.global.tag }}"