Files
deprecated-helm-charts/stable/pomerium
Travis GrothandKubernetes Prow Robot 60f7936f62 [stable/pomerium] Chart updates for pomerium v0.1.0 (#15320)
* [stable/pomerium] bugfixes

fix config checksum: based on file and only for pods
deployment: fix missing resources field

Signed-off-by: Travis Groth <tgroth@gmail.com>

* [stable/pomerium] v0.1.0 release

- Expose metrics port and update documentation

- Bump chart and app version for v0.1.0 release

Signed-off-by: Travis Groth <tgroth@gmail.com>

* Fix lint error

Signed-off-by: Travis Groth <tgroth@gmail.com>

* Fix CI test policy

Signed-off-by: Travis Groth <tgroth@gmail.com>
2019-07-08 16:56:02 -07:00
..

Pomerium

Pomerium is an open-source tool for managing secure access to internal applications and resources.

TL;DR;

helm install --name my-release stable/pomerium

Note: Pomerium depends on being configured with a third party identity providers to function properly. If you run pomerium without specifying default values, you will need to change those configuration variables following setup.

Install the chart

An example of a minimal, but complete installation of pomerium with identity provider settings, random secrets, certificates, and external URLs is as follows:

kubectl create configmap config --from-file="config.yaml"="$HOME/pomerium/docs/docs/examples/config/config.example.yaml"

helm install $HOME/pomerium-helm \
	--set service.type="NodePort" \
	--set config.rootDomain="corp.beyondperimeter.com" \
	--set config.existingConfig="config" \
	--set config.sharedSecret=$(head -c32 /dev/urandom | base64) \
	--set config.cookieSecret=$(head -c32 /dev/urandom | base64) \
	--set ingress.secret.name="pomerium-tls" \
	--set ingress.secret.cert=$(base64 -i "$HOME/.acme.sh/*.corp.beyondperimeter.com_ecc/fullchain.cer") \
	--set ingress.secret.key=$(base64 -i "$HOME/.acme.sh/*.corp.beyondperimeter.com_ecc/*.corp.beyondperimeter.com.key") \
	--set authenticate.idp.provider="google" \
	--set authenticate.idp.clientID="REPLACE_ME" \
	--set authenticate.idp.clientSecret="REPLACE_ME" \
	stable/pomerium

Uninstalling the Chart

To uninstall/delete the my-release deployment:

helm delete --purge my-release

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

Configuration

A full listing of Pomerium's configuration variables can be found on the config reference page.

Parameter Description Default
config.rootDomain Root Domain specifies the sub-domain handled by pomerium. See more. corp.pomerium.io
config.generateTLS Generate a dummy Certificate Authority and certs for service communication. Manual CA and certs can be set in values. true
config.sharedSecret 256 bit key to secure service communication. See more. 32 random ascii chars
config.cookieSecret Cookie secret is a 32 byte key used to encrypt user sessions. 32 random ascii chars
config.policy Base64 encoded string containing the routes, and their access policies.
config.policyFile Relative file location of the policy file which contains the routes, and their access policies. See example in values
authenticate.nameOverride Name of the authenticate service.
authenticate.fullnameOverride Full name of the authenticate service.
authenticate.redirectUrl Redirect URL is the url the user will be redirected to following authentication with the third-party identity provider (IdP). See more. https://{{authenticate.name}}.{{config.rootDomain}}/oauth2/callback
authenticate.idp.provider Identity Provider Name. google
authenticate.idp.clientID Identity Provider oauth client ID. Required
authenticate.idp.clientSecret Identity Provider oauth client secret. Required
authenticate.idp.url Identity Provider URL. Optional
authenticate.idp.serviceAccount Identity Provider service account. Optional
proxy.nameOverride Name of the proxy service.
proxy.fullnameOverride Full name of the proxy service.
proxy.authenticateServiceUrl The externally accessible url for the authenticate service. https://{{authenticate.name}}.{{config.rootDomain}}
proxy.authorizeServiceUrl The externally accessible url for the authorize service. https://{{authorize.name}}.{{config.rootDomain}}
authorize.nameOverride Name of the authorize service.
authorize.fullnameOverride Full name of the authorize service.
images.server.repository Pomerium image pomerium/pomerium
images.server.tag Pomerium image tag latest
images.server.pullPolicy Pomerium image pull policy Always
service.annotations Service annotations {}
service.externalPort Pomerium's port 443
service.type Service type (ClusterIP, NodePort or LoadBalancer) ClusterIP
ingress.enabled Enables Ingress for pomerium false
ingress.annotations Ingress annotations {}
ingress.hosts Ingress accepted hostnames nil
ingress.tls Ingress TLS configuration []
metrics.enabled Enable prometheus metrics endpoint false
metrics.port Prometheus metrics endpoint port 9090

Metrics Discovery Configuration

Prometheus kubernetes_sd_configs

Example chart values:

metrics:
  enabled: true
  port: 9090 # default
service:
  annotations:
    prometheus.io/scrape: "true"
    prometheus.io/port: "9090"

Example prometheus discovery config:

- job_name: 'pomerium'
metrics_path: /metrics
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
  action: keep
  regex: true
- source_labels: [__meta_kubernetes_service_label_app_kubernetes_io_instance]
  action: keep
  regex: pomerium
- action: labelmap
  regex: __meta_kubernetes_service_label_(.+)
- source_labels: [__meta_kubernetes_namespace]
  action: replace
  target_label: kubernetes_namespace
- source_labels: [__meta_kubernetes_service_name]
  action: replace
  target_label: kubernetes_name
- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
  action: replace
  regex: ([^:]+)(?::\d+)?;(\d+)
  replacement: $1:$2
  target_label: __address__