aboutsummaryrefslogtreecommitdiffstats
path: root/kubernetes/authentication/components/oauth2-proxy
diff options
context:
space:
mode:
Diffstat (limited to 'kubernetes/authentication/components/oauth2-proxy')
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/Chart.yaml14
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/README.md319
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/ci/horizontal-pod-autoscaling-values.yaml5
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml41
-rwxr-xr-x[-rw-r--r--]kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh11
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/configmap-authenticated-emails-file.yaml4
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/configmap.yaml4
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/deployment.yaml44
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/hpa.yaml38
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/ingress.yaml2
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml5
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/secret-authenticated-emails-file.yaml4
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/secret.yaml4
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/service.yaml10
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml2
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml2
-rw-r--r--kubernetes/authentication/components/oauth2-proxy/values.yaml15
17 files changed, 336 insertions, 188 deletions
diff --git a/kubernetes/authentication/components/oauth2-proxy/Chart.yaml b/kubernetes/authentication/components/oauth2-proxy/Chart.yaml
index 3bcf687241..300ed0964b 100644
--- a/kubernetes/authentication/components/oauth2-proxy/Chart.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/Chart.yaml
@@ -1,7 +1,7 @@
name: onap-oauth2-proxy
-version: 7.5.4
+version: 7.8.0
apiVersion: v2
-appVersion: 7.6.0
+appVersion: 7.7.1
home: https://oauth2-proxy.github.io/oauth2-proxy/
description: A reverse proxy that provides authentication with Google, Github or other providers
keywords:
@@ -14,7 +14,7 @@ keywords:
- redis
dependencies:
- name: redis
- version: 19.1.0
+ version: 20.3.0
repository: https://charts.bitnami.com/bitnami
alias: redis
condition: redis.enabled
@@ -38,11 +38,11 @@ maintainers:
email: joel.speed@hotmail.co.uk
- name: pierluigilenoci
email: pierluigi.lenoci@gmail.com
-kubeVersion: ">=1.9.0-0"
+kubeVersion: ">=1.16.0-0"
annotations:
artifacthub.io/changes: |
- - kind: changed
- description: Wait for redis script fixes for cluster and sentinel
+ - kind: added
+ description: allow templates in annotations
links:
- name: Github PR
- url: https://github.com/oauth2-proxy/manifests/issues/205
+ url: https://github.com/oauth2-proxy/manifests/pull/256
diff --git a/kubernetes/authentication/components/oauth2-proxy/README.md b/kubernetes/authentication/components/oauth2-proxy/README.md
index 55a5e44429..0dc6c13962 100644
--- a/kubernetes/authentication/components/oauth2-proxy/README.md
+++ b/kubernetes/authentication/components/oauth2-proxy/README.md
@@ -1,6 +1,6 @@
# oauth2-proxy
-[oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy) is a reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group.
+[oauth2-proxy](https://github.com/oauth2-proxy/oauth2-proxy) is a reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by e-mail, domain, or group.
## TL;DR;
@@ -21,7 +21,8 @@ To install the chart with the release name `my-release`:
$ helm install my-release oauth2-proxy/oauth2-proxy
```
-The command deploys oauth2-proxy on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation.
+The command deploys oauth2-proxy on the Kubernetes cluster in the default configuration.
+The [configuration](#configuration) section lists the parameters that can be configured during installation.
## Uninstalling the Chart
@@ -35,34 +36,37 @@ The command removes all the Kubernetes components associated with the chart and
## Upgrading an existing Release to a new major version
-A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an
-incompatible breaking change needing manual actions.
+A major chart version change (like v1.2.3 -> v2.0.0) indicates an incompatible breaking change needing manual actions.
### To 1.0.0
-This version upgrades oauth2-proxy to v4.0.0. Please see the [changelog](https://github.com/oauth2-proxy/oauth2-proxy/blob/v4.0.0/CHANGELOG.md#v400) in order to upgrade.
+This version upgrades oauth2-proxy to v4.0.0. To upgrade, please see the [changelog](https://github.com/oauth2-proxy/oauth2-proxy/blob/v4.0.0/CHANGELOG.md#v400).
### To 2.0.0
-Version 2.0.0 of this chart introduces support for Kubernetes v1.16.x by way of addressing the deprecation of the Deployment object apiVersion `apps/v1beta2`. See [the v1.16 API deprecations page](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for more information.
+Version 2.0.0 of this chart introduces support for Kubernetes v1.16.x by addressing the Deployment object apiVersion `apps/v1beta2` deprecation.
+See [the v1.16 API deprecations page](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for more information.
-Due to [this issue](https://github.com/helm/helm/issues/6583) there may be errors performing a `helm upgrade` of this chart from versions earlier than 2.0.0.
+Due to [this issue](https://github.com/helm/helm/issues/6583), errors may occur when performing a `helm upgrade` of this chart from versions earlier than 2.0.0.
### To 3.0.0
-Version 3.0.0 introduces support for [EKS IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) by adding a managed service account to the chart. This is a breaking change since the service account is enabled by default. To disable this behaviour set `serviceAccount.enabled` to `false`
+Version 3.0.0 introduces support for [EKS IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) by adding a managed service account to the chart.
+This is a breaking change since the service account is enabled by default.
+To disable this behaviour set `serviceAccount.enabled` to `false`
### To 4.0.0
Version 4.0.0 adds support for the new Ingress apiVersion **networking.k8s.io/v1**.
-Therefore the `ingress.extraPaths` parameter needs to be updated to the new format.
+Therefore, the `ingress.extraPaths` parameter must be updated to the new format.
See the [v1.22 API deprecations guide](https://kubernetes.io/docs/reference/using-api/deprecation-guide/#ingress-v122) for more information.
For the same reason `service.port` was renamed to `service.portNumber`.
### To 5.0.0
-Version 5.0.0 introduces support for custom labels and refactor [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/). This is a breaking change because many labels of all resources need to be updated to stay consistent.
+Version 5.0.0 introduces support for custom labels and refactor [Kubernetes recommended labels](https://kubernetes.io/docs/concepts/overview/working-with-objects/common-labels/).
+This is a breaking change because many labels of all resources need to be updated to stay consistent.
In order to upgrade, delete the Deployment before upgrading:
@@ -80,140 +84,157 @@ For users who don't want downtime, you can perform these actions:
### To 6.0.0
-Version 6.0.0 bumps the version of the redis subchart from ~10.6.0 to ~16.4.0. You probably need to adjust your redis config. See [here](https://github.com/bitnami/charts/tree/master/bitnami/redis#upgrading) for detailed upgrade instructions.
+Version 6.0.0 bumps the version of the Redis subchart from ~10.6.0 to ~16.4.0.
+You probably need to adjust your Redis configuration.
+See [here](https://github.com/bitnami/charts/tree/master/bitnami/redis#upgrading) for detailed upgrade instructions.
+
+### To 7.0.0
+
+Version 7.0.0 introduces a new implementation to support multiple hostAliases.
+You probably need to adjust your hostAliases config.
+See [here](https://github.com/oauth2-proxy/manifests/pull/164/) for detailed information.
## Configuration
The following table lists the configurable parameters of the oauth2-proxy chart and their default values.
-Parameter | Description | Default
---- | --- | ---
-`affinity` | node/pod affinities | None
-`authenticatedEmailsFile.enabled` | Enables authorize individual email addresses | `false`
-`authenticatedEmailsFile.persistence` | Defines how the email addresses file will be projected, via a configmap or secret | `configmap`
-`authenticatedEmailsFile.template` | Name of the configmap or secret that is handled outside of that chart | `""`
-`authenticatedEmailsFile.restrictedUserAccessKey` | The key of the configmap or secret that holds the email addresses list | `""`
-`authenticatedEmailsFile.restricted_access` | [email addresses](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/oauth_provider#email-authentication) list config | `""`
-`authenticatedEmailsFile.annotations` | configmap or secret annotations | `nil`
-`config.clientID` | oauth client ID | `""`
-`config.clientSecret` | oauth client secret | `""`
-`config.cookieSecret` | server specific cookie for the secret; create a new one with `openssl rand -base64 32 \| head -c 32 \| base64` | `""`
-`config.existingSecret` | existing Kubernetes secret to use for OAuth2 credentials. See [oauth2-proxy.secrets helper](https://github.com/oauth2-proxy/manifests/blob/main/helm/oauth2-proxy/templates/_helpers.tpl#L157C13-L157C33) for the required values | `nil`
-`config.configFile` | custom [oauth2_proxy.cfg](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/contrib/oauth2-proxy.cfg.example) contents for settings not overridable via environment nor command line | `""`
-`config.existingConfig` | existing Kubernetes configmap to use for the configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/configmap.yaml) for the required values | `nil`
-`config.cookieName` | The name of the cookie that oauth2-proxy will create. | `""`
-`alphaConfig.enabled` | Flag to toggle any alpha config related logic | `false`
-`alphaConfig.annotations` | Configmap annotations | `{}`
-`alphaConfig.serverConfigData` | Arbitrary configuration data to append to the server section | `{}`
-`alphaConfig.metricsConfigData` | Arbitrary configuration data to append to the metrics section | `{}`
-`alphaConfig.configData` | Arbitrary configuration data to append | `{}`
-`alphaConfig.configFile` | Arbitrary configuration to append, treated as a Go template and rendered with the root context | `""`
-`alphaConfig.existingConfig` | existing Kubernetes configmap to use for the alpha configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/secret-alpha.yaml) for the required values | `nil`
-`alphaConfig.existingSecret` | existing Kubernetes secret to use for the alpha configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/secret-alpha.yaml) for the required values | `nil`
-`customLabels` | Custom labels to add into metadata | `{}` |
-`config.google.adminEmail` | user impersonated by the google service account | `""`
-`config.google.useApplicationDefaultCredentials` | use the application-default credentials (i.e. Workload Identity on GKE) instead of providing a service account json | `false`
-`config.google.targetPrincipal` | service account to use/impersonate | `""`
-`config.google.serviceAccountJson` | google service account json contents | `""`
-`config.google.existingConfig` | existing Kubernetes configmap to use for the service account file. See [google secret template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/google-secret.yaml) for the required values | `nil`
-`config.google.groups` | restrict logins to members of these google groups | `[]`
-`containerPort` | used to customise port on the deployment | `""`
-`extraArgs` | Extra arguments to give the binary. Either as a map with key:value pairs or as a list type, which allows to configure the same flag multiple times. (e.g. `["--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_A", "--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_B"]`). | `{}` or `[]`
-`extraContainers` | List of extra containers to be added to the pod | `[]`
-`extraEnv` | key:value list of extra environment variables to give the binary | `[]`
-`extraVolumes` | list of extra volumes | `[]`
-`extraVolumeMounts` | list of extra volumeMounts | `[]`
-`hostAliases` | hostAliases is a list of aliases to be added to /etc/hosts for network name resolution.
-`htpasswdFile.enabled` | enable htpasswd-file option | `false`
-`htpasswdFile.entries` | list of [encrypted user:passwords](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/overview#command-line-options) | `{}`
-`htpasswdFile.existingSecret` | existing Kubernetes secret to use for OAuth2 htpasswd file | `""`
-`httpScheme` | `http` or `https`. `name` used for port on the deployment. `httpGet` port `name` and `scheme` used for `liveness`- and `readinessProbes`. `name` and `targetPort` used for the service. | `http`
-`image.pullPolicy` | Image pull policy | `IfNotPresent`
-`image.repository` | Image repository | `quay.io/oauth2-proxy/oauth2-proxy`
-`image.tag` | Image tag | `""` (defaults to appVersion)
-`imagePullSecrets` | Specify image pull secrets | `nil` (does not add image pull secrets to deployed pods)
-`ingress.enabled` | Enable Ingress | `false`
-`ingress.className` | name referencing IngressClass | `nil`
-`ingress.path` | Ingress accepted path | `/`
-`ingress.pathType` | Ingress [path type](https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types) | `ImplementationSpecific`
-`ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]`
-`ingress.labels` | Ingress extra labels | `{}`
-`ingress.annotations` | Ingress annotations | `nil`
-`ingress.hosts` | Ingress accepted hostnames | `nil`
-`ingress.tls` | Ingress TLS configuration | `nil`
-`initContainers.waitForRedis.enabled` | if `redis.enabled` is true, use an init container to wait for the redis master pod to be ready. If `serviceAccount.enabled` is true, create additionally a role/binding to get, list and watch the redis master pod | `true`
-`initContainers.waitForRedis.image.pullPolicy` | kubectl image pull policy | `IfNotPresent`
-`initContainers.waitForRedis.image.repository` | kubectl image repository | `docker.io/bitnami/kubectl`
-`initContainers.waitForRedis.kubectlVersion` | kubectl version to use for the init container | `printf "%s.%s" .Capabilities.KubeVersion.Major (.Capabilities.KubeVersion.Minor | replace "+" "")`
-`initContainers.waitForRedis.securityContext.enabled` | enable Kubernetes security context on container | `true`
-`initContainers.waitForRedis.timeout` | number of seconds | 180
-`initContainers.waitForRedis.resources` | pod resource requests & limits | `{}`
-`livenessProbe.enabled` | enable Kubernetes livenessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true`
-`livenessProbe.initialDelaySeconds` | number of seconds | 0
-`livenessProbe.timeoutSeconds` | number of seconds | 1
-`namespaceOverride` | Override the deployment namespace | `""`
-`nodeSelector` | node labels for pod assignment | `{}`
-`deploymentAnnotations` | annotations to add to the deployment | `{}`
-`podAnnotations` | annotations to add to each pod | `{}`
-`podLabels` | additional labesl to add to each pod | `{}`
-`podDisruptionBudget.enabled`| Enabled creation of PodDisruptionBudget (only if replicaCount > 1) | true
-`podDisruptionBudget.minAvailable`| minAvailable parameter for PodDisruptionBudget | 1
-`podSecurityContext` | Kubernetes security context to apply to pod | `{}`
-`priorityClassName` | priorityClassName | `nil`
-`readinessProbe.enabled` | enable Kubernetes readinessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true`
-`readinessProbe.initialDelaySeconds` | number of seconds | 0
-`readinessProbe.timeoutSeconds` | number of seconds | 5
-`readinessProbe.periodSeconds` | number of seconds | 10
-`readinessProbe.successThreshold` | number of successes | 1
-`replicaCount` | desired number of pods | `1`
-`resources` | pod resource requests & limits | `{}`
-`revisionHistoryLimit` | maximum number of revisions maintained | 10
-`service.portNumber` | port number for the service | `80`
-`service.appProtocol` | application protocol on the port of the service | `http`
-`service.type` | type of service | `ClusterIP`
-`service.clusterIP` | cluster ip address | `nil`
-`service.loadBalancerIP` | ip of load balancer | `nil`
-`service.loadBalancerSourceRanges` | allowed source ranges in load balancer | `nil`
-`service.nodePort` | external port number for the service when service.type is `NodePort` | `nil`
-`serviceAccount.enabled` | create a service account | `true`
-`serviceAccount.name` | the service account name | ``
-`serviceAccount.annotations` | (optional) annotations for the service account | `{}`
-`strategy` | configure deployment strategy | `{}`
-`tolerations` | list of node taints to tolerate | `[]`
-`securityContext.enabled` | enable Kubernetes security context on container | `true`
-`proxyVarsAsSecrets` | choose between environment values or secrets for setting up OAUTH2_PROXY variables. When set to false, remember to add the variables OAUTH2_PROXY_CLIENT_ID, OAUTH2_PROXY_CLIENT_SECRET, OAUTH2_PROXY_COOKIE_SECRET in extraEnv | `true`
-`sessionStorage.type` | Session storage type which can be one of the following: cookie or redis | `cookie`
-`sessionStorage.redis.existingSecret` | Name of the Kubernetes secret containing the redis & redis sentinel password values (see also `sessionStorage.redis.passwordKey`) | `""`
-`sessionStorage.redis.password` | Redis password. Applicable for all Redis configurations. Taken from redis subchart secret if not set. sessionStorage.redis.existingSecret takes precedence | `nil`
-`sessionStorage.redis.passwordKey` | Key of the Kubernetes secret data containing the redis password value | `redis-password`
-`sessionStorage.redis.clientType` | Allows the user to select which type of client will be used for redis instance. Possible options are: `sentinel`, `cluster` or `standalone` | `standalone`
-`sessionStorage.redis.standalone.connectionUrl` | URL of redis standalone server for redis session storage (e.g. `redis://HOST[:PORT]`). Automatically generated if not set. | `""`
-`sessionStorage.redis.cluster.connectionUrls` | List of Redis cluster connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`) | `[]`
-`sessionStorage.redis.sentinel.existingSecret` | Name of the Kubernetes secret containing the redis sentinel password value (see also `sessionStorage.redis.sentinel.passwordKey`). Default: `sessionStorage.redis.existingSecret` | `""`
-`sessionStorage.redis.sentinel.password` | Redis sentinel password. Used only for sentinel connection; any redis node passwords need to use `sessionStorage.redis.password` | `nil`
-`sessionStorage.redis.sentinel.passwordKey` | Key of the Kubernetes secret data containing the redis sentinel password value | `redis-sentinel-password`
-`sessionStorage.redis.sentinel.masterName` | Redis sentinel master name | `nil`
-`sessionStorage.redis.sentinel.connectionUrls` | List of Redis sentinel connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`) | `[]`
-`topologySpreadConstraints` | List of pod topology spread constraints | `[]`
-`redis.enabled` | Enable the redis subchart deployment | `false`
-`checkDeprecation` | Enable deprecation checks | `true`
-`metrics.enabled` | Enable Prometheus metrics endpoint | `true`
-`metrics.port` | Serve Prometheus metrics on this port | `44180`
-`metrics.nodePort` | External port for the metrics when service.type is `NodePort` | `nil`
-`metrics.service.appProtocol` | application protocol of the metrics port in the service | `http`
-`metrics.serviceMonitor.enabled` | Enable Prometheus Operator ServiceMonitor | `false`
-`metrics.serviceMonitor.namespace` | Define the namespace where to deploy the ServiceMonitor resource | `""`
-`metrics.serviceMonitor.prometheusInstance` | Prometheus Instance definition | `default`
-`metrics.serviceMonitor.interval` | Prometheus scrape interval | `60s`
-`metrics.serviceMonitor.scrapeTimeout` | Prometheus scrape timeout | `30s`
-`metrics.serviceMonitor.labels` | Add custom labels to the ServiceMonitor resource| `{}`
-`metrics.serviceMonitor.scheme` | HTTP scheme to use for scraping. Can be used with `tlsConfig` for example if using istio mTLS.| `""`
-`metrics.serviceMonitor.tlsConfig` | TLS configuration to use when scraping the endpoint. For example if using istio mTLS.| `{}`
-`metrics.serviceMonitor.bearerTokenFile` | Path to bearer token file.| `""`
-`metrics.serviceMonitor.annotations` | Used to pass annotations that are used by the Prometheus installed in your cluster| `{}`
-`metrics.serviceMonitor.metricRelabelings` | Metric relabel configs to apply to samples before ingestion.| `[]`
-`metrics.serviceMonitor.relabelings` | Relabel configs to apply to samples before ingestion.| `[]`
-`extraObjects` | Extra K8s manifests to deploy | `[]`
+| Parameter | Description | Default |
+|-------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|
+| `affinity` | node/pod affinities | None |
+| `authenticatedEmailsFile.enabled` | Enables authorize individual e-mail addresses | `false` |
+| `authenticatedEmailsFile.persistence` | Defines how the e-mail addresses file will be projected, via a configmap or secret | `configmap` |
+| `authenticatedEmailsFile.template` | Name of the configmap or secret that is handled outside of that chart | `""` |
+| `authenticatedEmailsFile.restrictedUserAccessKey` | The key of the configmap or secret that holds the e-mail addresses list | `""` |
+| `authenticatedEmailsFile.restricted_access` | [e-mail addresses](https://oauth2-proxy.github.io/oauth2-proxy/configuration/providers/#email-authentication) list config | `""` |
+| `authenticatedEmailsFile.annotations` | configmap or secret annotations | `nil` |
+| `config.clientID` | oauth client ID | `""` |
+| `config.clientSecret` | oauth client secret | `""` |
+| `config.cookieSecret` | server specific cookie for the secret; create a new one with `openssl rand -base64 32 \| head -c 32 \| base64` | `""` |
+| `config.existingSecret` | existing Kubernetes secret to use for OAuth2 credentials. See [oauth2-proxy.secrets helper](https://github.com/oauth2-proxy/manifests/blob/main/helm/oauth2-proxy/templates/_helpers.tpl#L157C13-L157C33) for the required values | `nil` |
+| `config.configFile` | custom [oauth2_proxy.cfg](https://github.com/oauth2-proxy/oauth2-proxy/blob/master/contrib/oauth2-proxy.cfg.example) contents for settings not overridable via environment nor command line | `""` |
+| `config.existingConfig` | existing Kubernetes configmap to use for the configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/configmap.yaml) for the required values | `nil` |
+| `config.cookieName` | The name of the cookie that oauth2-proxy will create. | `""` |
+| `autoscaling.enabled` | Deploy a Horizontal Pod Autoscaler. | `false` |
+| `autoscaling.minReplicas` | Minimum replicas for the Horizontal Pod Autoscaler. | `1` |
+| `autoscaling.maxReplicas` | Maximum replicas for the Horizontal Pod Autoscaler. | `10` |
+| `autoscaling.targetCPUUtilizationPercentage` | Horizontal Pod Autoscaler setting. | `80` |
+| `autoscaling.targetMemoryUtilizationPercentage` | Horizontal Pod Autoscaler setting. | `` |
+| `autoscaling.annotations` | Horizontal Pod Autoscaler annotations. | `{}` |
+| `alphaConfig.enabled` | Flag to toggle any alpha config-related logic | `false` |
+| `alphaConfig.annotations` | Configmap annotations | `{}` |
+| `alphaConfig.serverConfigData` | Arbitrary configuration data to append to the server section | `{}` |
+| `alphaConfig.metricsConfigData` | Arbitrary configuration data to append to the metrics section | `{}` |
+| `alphaConfig.configData` | Arbitrary configuration data to append | `{}` |
+| `alphaConfig.configFile` | Arbitrary configuration to append, treated as a Go template and rendered with the root context | `""` |
+| `alphaConfig.existingConfig` | existing Kubernetes configmap to use for the alpha configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/secret-alpha.yaml) for the required values | `nil` |
+| `alphaConfig.existingSecret` | existing Kubernetes secret to use for the alpha configuration file. See [config template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/secret-alpha.yaml) for the required values | `nil` |
+| `customLabels` | Custom labels to add into metadata | `{}` |
+| `config.google.adminEmail` | user impersonated by the Google service account | `""` |
+| `config.google.useApplicationDefaultCredentials` | use the application-default credentials (i.e. Workload Identity on GKE) instead of providing a service account JSON | `false` |
+| `config.google.targetPrincipal` | service account to use/impersonate | `""` |
+| `config.google.serviceAccountJson` | Google service account JSON contents | `""` |
+| `config.google.existingConfig` | existing Kubernetes configmap to use for the service account file. See [Google secret template](https://github.com/oauth2-proxy/manifests/blob/master/helm/oauth2-proxy/templates/google-secret.yaml) for the required values | `nil` |
+| `config.google.groups` | restrict logins to members of these Google groups | `[]` |
+| `containerPort` | used to customize port on the deployment | `""` |
+| `extraArgs` | Extra arguments to give the binary. Either as a map with key:value pairs or as a list type, which allows the same flag to be configured multiple times. (e.g. `["--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_A", "--allowed-role=CLIENT_ID:CLIENT_ROLE_NAME_B"]`). | `{}` or `[]` |
+| `extraContainers` | List of extra containers to be added to the pod | `[]` |
+| `extraEnv` | key:value list of extra environment variables to give the binary | `[]` |
+| `extraVolumes` | list of extra volumes | `[]` |
+| `extraVolumeMounts` | list of extra volumeMounts | `[]` |
+| `hostAliases` | hostAliases is a list of aliases to be added to /etc/hosts for network name resolution. | |
+| `htpasswdFile.enabled` | enable htpasswd-file option | `false` |
+| `htpasswdFile.entries` | list of [encrypted user:passwords](https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#command-line-options) | `{}` |
+| `htpasswdFile.existingSecret` | existing Kubernetes secret to use for OAuth2 htpasswd file | `""` |
+| `httpScheme` | `http` or `https`. `name` used for the port on the deployment. `httpGet` port `name` and `scheme` used for `liveness`- and `readinessProbes`. `name` and `targetPort` used for the service. | `http` |
+| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
+| `image.command` | Define command to be executed by container at startup | `[]` |
+| `image.repository` | Image repository | `quay.io/oauth2-proxy/oauth2-proxy` |
+| `image.tag` | Image tag | `""` (defaults to appVersion) |
+| `imagePullSecrets` | Specify image pull secrets | `nil` (does not add image pull secrets to deployed pods) |
+| `ingress.enabled` | Enable Ingress | `false` |
+| `ingress.className` | name referencing IngressClass | `nil` |
+| `ingress.path` | Ingress accepted path | `/` |
+| `ingress.pathType` | Ingress [path type](https://kubernetes.io/docs/concepts/services-networking/ingress/#path-types) | `ImplementationSpecific` |
+| `ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.8/guide/ingress/annotations/). | `[]` |
+| `ingress.labels` | Ingress extra labels | `{}` |
+| `ingress.annotations` | Ingress annotations | `nil` |
+| `ingress.hosts` | Ingress accepted hostnames | `nil` |
+| `ingress.tls` | Ingress TLS configuration | `nil` |
+| `initContainers.waitForRedis.enabled` | If `redis.enabled` is true, use an init container to wait for the Redis master pod to be ready. If `serviceAccount.enabled` is true, create additionally a role/binding to get, list, and watch the Redis master pod | `true` |
+| `initContainers.waitForRedis.image.pullPolicy` | kubectl image pull policy | `IfNotPresent` |
+| `initContainers.waitForRedis.image.repository` | kubectl image repository | `docker.io/bitnami/kubectl` |
+| `initContainers.waitForRedis.kubectlVersion` | kubectl version to use for the init container | `printf "%s.%s" .Capabilities.KubeVersion.Major (.Capabilities.KubeVersion.Minor | replace "+" "")`
+| `initContainers.waitForRedis.securityContext.enabled` | enable Kubernetes security context on container | `true` |
+| `initContainers.waitForRedis.timeout` | number of seconds | 180 |
+| `initContainers.waitForRedis.resources` | pod resource requests & limits | `{}` |
+| `livenessProbe.enabled` | enable Kubernetes livenessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true` |
+| `livenessProbe.initialDelaySeconds` | number of seconds | 0 |
+| `livenessProbe.timeoutSeconds` | number of seconds | 1 |
+| `namespaceOverride` | Override the deployment namespace | `""` |
+| `nodeSelector` | node labels for pod assignment | `{}` |
+| `deploymentAnnotations` | annotations to add to the deployment | `{}` |
+| `podAnnotations` | annotations to add to each pod | `{}` |
+| `podLabels` | additional labels to add to each pod | `{}` |
+| `podDisruptionBudget.enabled` | Enabled creation of PodDisruptionBudget (only if replicaCount > 1) | true |
+| `podDisruptionBudget.minAvailable` | minAvailable parameter for PodDisruptionBudget | 1 |
+| `podSecurityContext` | Kubernetes security context to apply to pod | `{}` |
+| `priorityClassName` | priorityClassName | `nil` |
+| `readinessProbe.enabled` | enable Kubernetes readinessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true` |
+| `readinessProbe.initialDelaySeconds` | number of seconds | 0 |
+| `readinessProbe.timeoutSeconds` | number of seconds | 5 |
+| `readinessProbe.periodSeconds` | number of seconds | 10 |
+| `readinessProbe.successThreshold` | number of successes | 1 |
+| `replicaCount` | desired number of pods | `1` |
+| `resources` | pod resource requests & limits | `{}` |
+| `revisionHistoryLimit` | maximum number of revisions maintained | 10 |
+| `service.portNumber` | port number for the service | `80` |
+| `service.appProtocol` | application protocol on the port of the service | `http` |
+| `service.externalTrafficPolicy` | denotes if the service desires to route external traffic to node-local or cluster-wide endpoints | `Cluster` |
+| `service.internalTrafficPolicy` | denotes if the service desires to route internal traffic to node-local or cluster-wide endpoints | `Cluster` |
+| `service.type` | type of service | `ClusterIP` |
+| `service.clusterIP` | cluster ip address | `nil` |
+| `service.loadBalancerIP` | ip of load balancer | `nil` |
+| `service.loadBalancerSourceRanges` | allowed source ranges in load balancer | `nil` |
+| `service.nodePort` | external port number for the service when service.type is `NodePort` | `nil` |
+| `serviceAccount.enabled` | create a service account | `true` |
+| `serviceAccount.name` | the service account name | `` |
+| `serviceAccount.annotations` | (optional) annotations for the service account | `{}` |
+| `strategy` | configure deployment strategy | `{}` |
+| `tolerations` | list of node taints to tolerate | `[]` |
+| `securityContext.enabled` | enable Kubernetes security context on container | `true` |
+| `proxyVarsAsSecrets` | Choose between environment values or secrets for setting up OAUTH2_PROXY variables. When set to false, remember to add the variables OAUTH2_PROXY_CLIENT_ID, OAUTH2_PROXY_CLIENT_SECRET, OAUTH2_PROXY_COOKIE_SECRET in extraEnv | `true` |
+| `sessionStorage.type` | Session storage type which can be one of the following: cookie or Redis | `cookie` |
+| `sessionStorage.redis.existingSecret` | Name of the Kubernetes secret containing the Redis & Redis sentinel password values (see also `sessionStorage.redis.passwordKey`) | `""` |
+| `sessionStorage.redis.password` | Redis password. Applicable for all Redis configurations. Taken from Redis subchart secret if not set. `sessionStorage.redis.existingSecret` takes precedence | `nil` |
+| `sessionStorage.redis.passwordKey` | Key of the Kubernetes secret data containing the Redis password value | `redis-password` |
+| `sessionStorage.redis.clientType` | Allows the user to select which type of client will be used for the Redis instance. Possible options are: `sentinel`, `cluster` or `standalone` | `standalone` |
+| `sessionStorage.redis.standalone.connectionUrl` | URL of Redis standalone server for Redis session storage (e.g., `redis://HOST[:PORT]`). Automatically generated if not set. | `""` |
+| `sessionStorage.redis.cluster.connectionUrls` | List of Redis cluster connection URLs (e.g., `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`) | `[]` |
+| `sessionStorage.redis.sentinel.existingSecret` | Name of the Kubernetes secret containing the Redis sentinel password value (see also `sessionStorage.redis.sentinel.passwordKey`). Default: `sessionStorage.redis.existingSecret` | `""` |
+| `sessionStorage.redis.sentinel.password` | Redis sentinel password. Used only for sentinel connection; any Redis node passwords need to use `sessionStorage.redis.password` | `nil` |
+| `sessionStorage.redis.sentinel.passwordKey` | Key of the Kubernetes secret data containing the Redis sentinel password value | `redis-sentinel-password` |
+| `sessionStorage.redis.sentinel.masterName` | Redis sentinel master name | `nil` |
+| `sessionStorage.redis.sentinel.connectionUrls` | List of Redis sentinel connection URLs (e.g. `["redis://127.0.0.1:8000", "redis://127.0.0.1:8000"]`) | `[]` |
+| `topologySpreadConstraints` | List of pod topology spread constraints | `[]` |
+| `redis.enabled` | Enable the Redis subchart deployment | `false` |
+| `checkDeprecation` | Enable deprecation checks | `true` |
+| `metrics.enabled` | Enable Prometheus metrics endpoint | `true` |
+| `metrics.port` | Serve Prometheus metrics on this port | `44180` |
+| `metrics.nodePort` | External port for the metrics when service.type is `NodePort` | `nil` |
+| `metrics.service.appProtocol` | application protocol of the metrics port in the service | `http` |
+| `metrics.serviceMonitor.enabled` | Enable Prometheus Operator ServiceMonitor | `false` |
+| `metrics.serviceMonitor.namespace` | Define the namespace where to deploy the ServiceMonitor resource | `""` |
+| `metrics.serviceMonitor.prometheusInstance` | Prometheus Instance definition | `default` |
+| `metrics.serviceMonitor.interval` | Prometheus scrape interval | `60s` |
+| `metrics.serviceMonitor.scrapeTimeout` | Prometheus scrape timeout | `30s` |
+| `metrics.serviceMonitor.labels` | Add custom labels to the ServiceMonitor resource | `{}` |
+| `metrics.serviceMonitor.scheme` | HTTP scheme for scraping. It can be used with `tlsConfig` for example, if using Istio mTLS. | `""` |
+| `metrics.serviceMonitor.tlsConfig` | TLS configuration when scraping the endpoint. For example, if using Istio mTLS. | `{}` |
+| `metrics.serviceMonitor.bearerTokenFile` | Path to bearer token file. | `""` |
+| `metrics.serviceMonitor.annotations` | Used to pass annotations that are used by the Prometheus installed in your cluster | `{}` |
+| `metrics.serviceMonitor.metricRelabelings` | Metric relabel configs to apply to samples before ingestion. | `[]` |
+| `metrics.serviceMonitor.relabelings` | Relabel configs to apply to samples before ingestion. | `[]` |
+| `extraObjects` | Extra K8s manifests to deploy | `[]` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
@@ -232,7 +253,7 @@ $ helm install my-release oauth2-proxy/oauth2-proxy -f values.yaml
## TLS Configuration
-See: [TLS Configuration](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/tls).
+See: [TLS Configuration](https://oauth2-proxy.github.io/oauth2-proxy/configuration/tls/).
Use ```values.yaml``` like:
```yaml
@@ -262,9 +283,8 @@ data:
```
## Extra environment variable templating
-The extraEnv value supports the tpl function which evaluate strings as templates inside the deployment template.
-This is useful to pass a template string as a value to the chart's extra environment variables and to render external configuration environment values
-
+The extraEnv value supports the tpl function, which evaluates strings as templates inside the deployment template.
+This is useful for passing a template string as a value to the chart's extra environment variables and rendering external configuration environment values.
```yaml
...
@@ -315,13 +335,14 @@ extraObjects:
</body>
</html>
```
+
## Multi whitelist-domain configuration
-For using multi whitelist-domain configuration for one Oauth2-proxy instance, you have to use the config.configFile section.
+You must use the config.configFile section for a multi-whitelist-domain configuration for one Oauth2-proxy instance.
-It will be overwriting the `/etc/oauth2_proxy/oauth2_proxy.cfg` configuration file.
-In this example, Google provider is used, but you can find all other provider configuration here [oauth_provider](https://oauth2-proxy.github.io/oauth2-proxy/docs/configuration/oauth_provider/)
+It will be overwriting the `/etc/oauth2_proxy/oauth2_proxy.cfg` [configuration file](https://oauth2-proxy.github.io/oauth2-proxy/configuration/overview#config-file).
+In this example, Google provider is used, but you can find all other provider configurations here [oauth_provider](https://oauth2-proxy.github.io/oauth2-proxy/configuration/providers/).
-```yaml
+```
config:
...
clientID="$YOUR_GOOGLE_CLIENT_ID"
@@ -332,7 +353,7 @@ config:
email_domains = [ "*" ]
upstreams = [ "file:///dev/null" ]
cookie_secure = "false"
- cookie_domains = [ ".domain.com", ".otherdomain.io" ]
- whitelist_domains = [ ".domain.com", ".otherdomain.io"]
+ cookie_domains = [ ".domain.com", ".example.io" ]
+ whitelist_domains = [ ".domain.com", ".example.io"]
provider = "google"
```
diff --git a/kubernetes/authentication/components/oauth2-proxy/ci/horizontal-pod-autoscaling-values.yaml b/kubernetes/authentication/components/oauth2-proxy/ci/horizontal-pod-autoscaling-values.yaml
new file mode 100644
index 0000000000..fd1a0060fe
--- /dev/null
+++ b/kubernetes/authentication/components/oauth2-proxy/ci/horizontal-pod-autoscaling-values.yaml
@@ -0,0 +1,5 @@
+# Enables Horizontal Pod Autoscaler and removes replica count in deployment
+autoscaling:
+ enabled: true
+ annotations:
+ test-annotations/test: "true"
diff --git a/kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml b/kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml
index 65977d921b..d217653086 100644
--- a/kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/ci/tpl-values.yaml
@@ -8,6 +8,8 @@ ingress:
tls:
- hosts:
- "{{ $.Release.Name }}.local"
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
oauth2-proxy:
checkDeprecation: false
config:
@@ -19,3 +21,42 @@ pass_authorization_header: "true"
extraArgs:
pass-authorization-header: "{{ $.Values.pass_authorization_header }}"
+
+extraVolumes:
+ - name: "{{ $.Release.Name }}-secret"
+ secret:
+ secretName: "{{ .Release.Name }}-secret"
+ items:
+ - key: secret
+ path: secret
+
+authenticatedEmailsFile:
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
+
+config:
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
+
+deploymentAnnotations:
+ test-annotations/test: "{{ $.Release.Name }}"
+
+autoscaling:
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
+
+alphaConfig:
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
+
+service:
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
+
+serviceAccount:
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
+
+serviceMonitor:
+ annotations:
+ test-annotations/test: "{{ $.Release.Name }}"
diff --git a/kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh b/kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh
index 24e628f426..62dd9b684f 100644..100755
--- a/kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh
+++ b/kubernetes/authentication/components/oauth2-proxy/scripts/check-redis.sh
@@ -24,7 +24,16 @@ check_redis() {
# For parsing and checking connections
parse_and_check() {
url=$1
- clean_url=${url#redis://}
+
+ # Strip either redis:// or rediss://
+ if [ $url = "rediss://*" ]; then
+ clean_url=${url#rediss://}
+ echo "Using secure Rediss connection..."
+ else
+ clean_url=${url#redis://}
+ echo "Using standard Redis connection..."
+ fi
+
host=$(echo $clean_url | cut -d':' -f1)
port=$(echo $clean_url | cut -d':' -f2)
check_redis $host $port
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/configmap-authenticated-emails-file.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/configmap-authenticated-emails-file.yaml
index d9f9cffef7..68c9d76629 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/configmap-authenticated-emails-file.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/configmap-authenticated-emails-file.yaml
@@ -6,9 +6,9 @@ metadata:
labels:
app: {{ template "oauth2-proxy.name" . }}
{{- include "oauth2-proxy.labels" . | indent 4 }}
-{{- if .Values.authenticatedEmailsFile.annotations }}
+{{- with .Values.authenticatedEmailsFile.annotations }}
annotations:
-{{ toYaml .Values.authenticatedEmailsFile.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
name: {{ template "oauth2-proxy.fullname" . }}-accesslist
namespace: {{ template "oauth2-proxy.namespace" $ }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/configmap.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/configmap.yaml
index 94d7806d2e..0f164d230c 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/configmap.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/configmap.yaml
@@ -3,9 +3,9 @@
apiVersion: v1
kind: ConfigMap
metadata:
-{{- if .Values.config.annotations }}
+{{- with .Values.config.annotations }}
annotations:
-{{ toYaml .Values.config.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
labels:
app: {{ template "oauth2-proxy.name" . }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/deployment.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/deployment.yaml
index 1a626d1ab8..bd5c2c923d 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/deployment.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/deployment.yaml
@@ -4,14 +4,16 @@ metadata:
labels:
app: {{ template "oauth2-proxy.name" . }}
{{- include "oauth2-proxy.labels" . | indent 4 }}
- {{- if .Values.deploymentAnnotations }}
+ {{- with .Values.deploymentAnnotations }}
annotations:
-{{ toYaml .Values.deploymentAnnotations | indent 8 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
name: {{ template "oauth2-proxy.fullname" . }}
namespace: {{ template "oauth2-proxy.namespace" $ }}
spec:
+ {{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
+ {{- end }}
revisionHistoryLimit: {{ .Values.revisionHistoryLimit }}
{{- with .Values.strategy }}
strategy:
@@ -23,7 +25,9 @@ spec:
template:
metadata:
annotations:
+ {{- if .Values.config.configFile }}
checksum/config: {{ tpl .Values.config.configFile $ | sha256sum }}
+ {{- end }}
{{- if .Values.alphaConfig.enabled }}
checksum/alpha-config: {{ include "oauth2-proxy.alpha-config" . | sha256sum }}
{{- end }}
@@ -102,6 +106,12 @@ spec:
image: "{{ include "repositoryGenerator.quayRepository" . }}/{{ .Values.image.repository }}:{{ include "oauth2-proxy.version" . }}"
#image: "{{ .Values.image.repository }}:{{ include "oauth2-proxy.version" . }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
+ {{- if .Values.image.command }}
+ command:
+ {{- range .Values.image.command }}
+ - {{ . | quote }}
+ {{- end }}
+ {{- end }}
args:
{{- if .Values.alphaConfig.enabled }}
- --alpha-config=/etc/oauth2_proxy/oauth2_proxy.yml
@@ -136,7 +146,7 @@ spec:
{{- if .Values.authenticatedEmailsFile.template }}
- --authenticated-emails-file=/etc/oauth2-proxy/{{ .Values.authenticatedEmailsFile.template }}
{{- else }}
- - --authenticated-emails-file=/etc/oauth2-proxy/authenticated-emails-list
+ - --authenticated-emails-file=/etc/oauth2-proxy/{{ template "oauth2-proxy.fullname" . }}-accesslist
{{- end }}
{{- end }}
{{- with .Values.config.google }}
@@ -333,7 +343,7 @@ spec:
{{- if .Values.authenticatedEmailsFile.template }}
path: {{ .Values.authenticatedEmailsFile.template }}
{{- else }}
- path: authenticated-emails-list
+ path: {{ template "oauth2-proxy.fullname" . }}-accesslist
{{- end }}
{{- if .Values.authenticatedEmailsFile.template }}
secretName: {{ .Values.authenticatedEmailsFile.template }}
@@ -367,7 +377,7 @@ spec:
{{- end }}
{{- end }}
{{- if ne (len .Values.extraVolumes) 0 }}
-{{ toYaml .Values.extraVolumes | indent 6 }}
+{{ tpl (toYaml .Values.extraVolumes) . | indent 6 }}
{{- end }}
{{- if and (.Values.authenticatedEmailsFile.enabled) (eq .Values.authenticatedEmailsFile.persistence "configmap") }}
- configMap:
@@ -381,26 +391,28 @@ spec:
{{- if .Values.authenticatedEmailsFile.template }}
path: {{ .Values.authenticatedEmailsFile.template }}
{{- else }}
- path: authenticated-emails-list
+ path: {{ template "oauth2-proxy.fullname" . }}-accesslist
{{- end }}
name: configaccesslist
{{- end }}
- {{- if .Values.imagePullSecrets }}
+ {{- with (.Values.imagePullSecrets | default .Values.global.imagePullSecrets) }}
imagePullSecrets:
-{{ toYaml .Values.imagePullSecrets | indent 8 }}
- {{- end }}
- {{- if .Values.affinity }}
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.affinity }}
affinity:
-{{ toYaml .Values.affinity | indent 8 }}
+ {{- toYaml . | nindent 8 }}
{{- end }}
- {{- if .Values.nodeSelector }}
+ {{- with .Values.nodeSelector }}
nodeSelector:
-{{ toYaml .Values.nodeSelector | indent 8 }}
+ {{ toYaml . | nindent 8 }}
{{- end }}
+ {{- with .Values.tolerations }}
tolerations:
-{{ toYaml .Values.tolerations | indent 8 }}
- {{- with .Values.topologySpreadConstraints }}
+ {{- toYaml . | nindent 8 }}
+ {{- end }}
+ {{- with .Values.topologySpreadConstraints }}
topologySpreadConstraints:
{{- toYaml . | nindent 8 }}
- {{- end }}
+ {{- end }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/hpa.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/hpa.yaml
new file mode 100644
index 0000000000..a6d7461797
--- /dev/null
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/hpa.yaml
@@ -0,0 +1,38 @@
+{{- if .Values.autoscaling.enabled }}
+apiVersion: autoscaling/v2
+kind: HorizontalPodAutoscaler
+metadata:
+ labels:
+ app: {{ template "oauth2-proxy.name" . }}
+{{- include "oauth2-proxy.labels" . | indent 4 }}
+ {{- with .Values.autoscaling.annotations }}
+ annotations:
+{{ tpl ( toYaml . ) $ | indent 8 }}
+ {{- end }}
+ name: {{ template "oauth2-proxy.fullname" . }}
+ namespace: {{ template "oauth2-proxy.namespace" $ }}
+spec:
+ scaleTargetRef:
+ apiVersion: apps/v1
+ kind: Deployment
+ name: {{ template "oauth2-proxy.fullname" . }}
+ minReplicas: {{ .Values.autoscaling.minReplicas }}
+ maxReplicas: {{ .Values.autoscaling.maxReplicas }}
+ metrics:
+ {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
+ - type: Resource
+ resource:
+ name: memory
+ target:
+ type: Utilization
+ averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
+ {{- end }}
+ {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
+ - type: Resource
+ resource:
+ name: cpu
+ target:
+ type: Utilization
+ averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
+ {{- end }}
+{{- end }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/ingress.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/ingress.yaml
index 5323820487..8cc7953ee9 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/ingress.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/ingress.yaml
@@ -17,7 +17,7 @@ metadata:
namespace: {{ template "oauth2-proxy.namespace" $ }}
{{- with .Values.ingress.annotations }}
annotations:
-{{ toYaml . | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
spec:
{{- if and .Values.ingress.className ( eq "true" ( include "ingress.supportsIngressClassName" . ) ) }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml
index 15bb89338e..ba2c02d5aa 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/secret-alpha.yaml
@@ -7,8 +7,9 @@
apiVersion: v1
kind: Secret
metadata:
-{{- if .Values.alphaConfig.annotations }}
- annotations: {{- toYaml .Values.alphaConfig.annotations | nindent 4 }}
+{{- with .Values.alphaConfig.annotations }}
+ annotations:
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
labels:
app: {{ template "oauth2-proxy.name" . }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/secret-authenticated-emails-file.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/secret-authenticated-emails-file.yaml
index 95f85a8006..9b607dd34a 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/secret-authenticated-emails-file.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/secret-authenticated-emails-file.yaml
@@ -7,9 +7,9 @@ metadata:
labels:
app: {{ template "oauth2-proxy.name" . }}
{{- include "oauth2-proxy.labels" . | indent 4 }}
-{{- if .Values.authenticatedEmailsFile.annotations }}
+{{- with .Values.authenticatedEmailsFile.annotations }}
annotations:
-{{ toYaml .Values.authenticatedEmailsFile.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
name: {{ template "oauth2-proxy.fullname" . }}-accesslist
namespace: {{ template "oauth2-proxy.namespace" $ }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/secret.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/secret.yaml
index f3364e95a9..a041843484 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/secret.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/secret.yaml
@@ -2,9 +2,9 @@
apiVersion: v1
kind: Secret
metadata:
-{{- if .Values.config.annotations }}
+{{- with .Values.config.annotations }}
annotations:
-{{ toYaml .Values.config.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
labels:
app: {{ template "oauth2-proxy.name" . }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/service.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/service.yaml
index d16120ee91..e8d02aeba8 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/service.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/service.yaml
@@ -6,9 +6,9 @@ metadata:
{{- include "oauth2-proxy.labels" . | indent 4 }}
name: {{ template "oauth2-proxy.fullname" . }}
namespace: {{ template "oauth2-proxy.namespace" $ }}
-{{- if .Values.service.annotations }}
+{{- with .Values.service.annotations }}
annotations:
-{{ toYaml .Values.service.annotations | indent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
spec:
{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
@@ -28,6 +28,12 @@ spec:
{{- else }}
type: {{ .Values.service.type }}
{{- end }}
+{{- if .Values.service.externalTrafficPolicy }}
+ externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
+{{- end }}
+{{- if .Values.service.internalTrafficPolicy }}
+ internalTrafficPolicy: {{ .Values.service.internalTrafficPolicy }}
+{{- end }}
ports:
- port: {{ .Values.service.portNumber }}
targetPort: {{ .Values.httpScheme }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml
index 2a89c4b9e3..e38cd7a7a6 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/serviceaccount.yaml
@@ -10,7 +10,7 @@ kind: ServiceAccount
metadata:
{{- with .Values.serviceAccount.annotations }}
annotations:
- {{- toYaml . | nindent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
labels:
app: {{ $name }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml b/kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml
index 3802666be0..99d62fd4ad 100644
--- a/kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/templates/servicemonitor.yaml
@@ -4,7 +4,7 @@ kind: ServiceMonitor
metadata:
{{- with .Values.metrics.serviceMonitor.annotations }}
annotations:
- {{- toYaml . | nindent 4 }}
+{{ tpl ( toYaml . ) $ | indent 4 }}
{{- end }}
name: {{ template "oauth2-proxy.fullname" . }}
{{- if .Values.metrics.serviceMonitor.namespace }}
diff --git a/kubernetes/authentication/components/oauth2-proxy/values.yaml b/kubernetes/authentication/components/oauth2-proxy/values.yaml
index f49cb638fa..14ea469fa8 100644
--- a/kubernetes/authentication/components/oauth2-proxy/values.yaml
+++ b/kubernetes/authentication/components/oauth2-proxy/values.yaml
@@ -83,6 +83,7 @@ image:
# appVersion is used by default
tag: ""
pullPolicy: "IfNotPresent"
+ command: []
# Optionally specify an array of imagePullSecrets.
# Secrets must be manually created in the namespace.
@@ -153,6 +154,10 @@ service:
appProtocol: http
annotations: {}
# foo.io/bar: "true"
+ # configure externalTrafficPolicy
+ externalTrafficPolicy: ""
+ # configure internalTrafficPolicy
+ internalTrafficPolicy: ""
## Create or use ServiceAccount
serviceAccount:
@@ -289,6 +294,16 @@ podDisruptionBudget:
enabled: true
minAvailable: 1
+## Horizontal Pod Autoscaling
+## ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
+autoscaling:
+ enabled: false
+ minReplicas: 1
+ maxReplicas: 10
+ targetCPUUtilizationPercentage: 80
+# targetMemoryUtilizationPercentage: 80
+ annotations: {}
+
# Configure Kubernetes security context for pod
# Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
podSecurityContext: {}