charts/charts/oauth2-proxy
Jack Maloney bd76ee081d [oauth2-proxy] update appVersion and image tag
Signed-off-by: Jack Maloney <jmmaloney4@gmail.com>
2021-02-23 16:55:33 -06:00
..
ci [oauth2-proxy] migrate oauth2-proxy chart (#179) 2020-11-17 17:03:15 -05:00
templates [oauth2-proxy] add support for ingressClassName (#592) 2021-02-15 18:17:57 -05:00
.helmignore [oauth2-proxy] migrate oauth2-proxy chart (#179) 2020-11-17 17:03:15 -05:00
Chart.yaml [oauth2-proxy] update appVersion and image tag 2021-02-23 16:55:33 -06:00
default-values.yaml [oauth2-proxy] migrate oauth2-proxy chart (#179) 2020-11-17 17:03:15 -05:00
pdb-values.yaml [oauth2-proxy] migrate oauth2-proxy chart (#179) 2020-11-17 17:03:15 -05:00
README.md [oauth2-proxy] update oauth2-proxy to v7.0.1 2021-02-23 16:46:03 -06:00
values.yaml [oauth2-proxy] update appVersion and image tag 2021-02-23 16:55:33 -06:00

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.

TL;DR;

$ helm install stable/oauth2-proxy

Introduction

This chart bootstraps an oauth2-proxy deployment on a Kubernetes cluster using the Helm package manager.

Installing the Chart

To install the chart with the release name my-release:

$ helm install stable/oauth2-proxy --name my-release

The command deploys oauth2-proxy on the Kubernetes cluster in the default configuration. The configuration section lists the parameters that can be configured during installation.

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm delete my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

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.

To 1.0.0

This version upgrade oauth2-proxy to v4.0.0. Please see the changelog in order to upgrade.

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 for more information.

Due to this issue there may be errors performing a helm upgradeof 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 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

This is a breaking change as the chart was moved to k8s-at-home. No other change on top of the 3.x.x branch.

To 5.0.0

Not many breaking changes. See the changelog for oauth2-proxy, specifically the section "Breaking Changes" for a few configuration changes, particularly to do with the Azure provider.

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.template Name of the configmap that is handled outside of that chart ""
authenticatedEmailsFile.restricted_access email addresses list config ""
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
config.existingSecret existing Kubernetes secret to use for OAuth2 credentials. See secret template for the required values nil
config.configFile custom oauth2_proxy.cfg contents for settings not overridable via environment nor command line ""
config.existingConfig existing Kubernetes configmap to use for the configuration file. See config template for the required values nil
config.google.adminEmail user impersonated by the google service account ""
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 for the required values nil
extraArgs key:value list of extra arguments to give the binary {}
extraEnv key:value list of extra environment variables to give the binary []
extraVolumes list of extra volumes []
extraVolumeMounts list of extra volumeMounts []
htpasswdFile.enabled enable htpasswd-file option false
htpasswdFile.entries list of SHA encrypted user:passwords {}
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/pusher/oauth2_proxy
image.tag Image tag v5.1.0
imagePullSecrets Specify image pull secrets nil (does not add image pull secrets to deployed pods)
ingress.enabled Enable Ingress false
ingress.ingressClassName Set ingressClassName nil
ingress.path Ingress accepted path /
ingress.extraPaths Ingress extra paths to prepend to every host configuration. Useful when configuring custom actions with AWS ALB Ingress Controller. []
ingress.annotations Ingress annotations nil
ingress.hosts Ingress accepted hostnames nil
ingress.tls Ingress TLS configuration nil
initContainers pod init containers []
livenessProbe.enabled enable Kubernetes livenessProbe. Disable to use oauth2-proxy with Istio mTLS. See Istio FAQ true
livenessProbe.initialDelaySeconds number of seconds 0
livenessProbe.timeoutSeconds number of seconds 1
nodeSelector node labels for pod assignment {}
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 true
readinessProbe.initialDelaySeconds number of seconds 0
readinessProbe.timeoutSeconds number of seconds 1
readinessProbe.periodSeconds number of seconds 10
readinessProbe.successThreshold number of successes 1
replicaCount desired number of pods 1
resources pod resource requests & limits {}
service.port port for the service 80
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
serviceAccount.enabled create a service account true
serviceAccount.name the service account name ``
serviceAccount.annotations (optional) annotations for the service account {}
tolerations list of node taints to tolerate []
topologySpreadConstraints.enabled enable Kubernetes topologySpreadConstraints false
topologySpreadConstraints.maxSkew the degree to which Pods may be unevenly distributed 1
topologySpreadConstraints.topologyKey the key of node labels topology.kubernetes.io/zone
topologySpreadConstraints.whenUnsatisfiable how to deal with a Pod if it doesn't satisfy the spread constraint (DoNotSchedule, ScheduleAnyway) DoNotSchedule
securityContext.enabled enable Kubernetes security context on container false
securityContext.runAsNonRoot make sure that the container runs as a non-root user 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

Specify each parameter using the --set key=value[,key=value] argument to helm install. For example,

$ helm install stable/oauth2-proxy --name my-release \
  --set=image.tag=v0.0.2,resources.limits.cpu=200m

Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,

$ helm install stable/oauth2-proxy --name my-release -f values.yaml

Tip

: You can use the default values.yaml

SSL Configuration

See: SSL Configuration. Use values.yaml like:

...
extraArgs:
  tls-cert: /path/to/cert.pem
  tls-key: /path/to/cert.key

extraVolumes:
  - name: ssl-cert
    secret:
      secretName: my-ssl-secret

extraVolumeMounts:
  - mountPath: /path/to/
    name: ssl-cert
...

With a secret called my-ssl-secret:

...
data:
  cert.pem: AB..==
  cert.key: CD..==