mirror of
https://github.com/pomerium/pomerium.git
synced 2025-06-01 02:12:50 +02:00
Merge pull request #124 from desimone/docs/update-helm-and-aws-script
deployment: remove helm from main repo
This commit is contained in:
commit
2dc88d44ee
21 changed files with 72 additions and 1205 deletions
|
@ -58,7 +58,6 @@ Customize for your identity provider run `docker-compose up -f nginx.docker-comp
|
|||
|
||||
## Helm
|
||||
|
||||
- Uses Google Kubernetes Engine's built-in ingress to do [HTTPS load balancing]
|
||||
- HTTPS (TLS) between client, load balancer, and services
|
||||
- gRPC requests are routed behind the load balancer
|
||||
- Routes default to hosted version of httpbin.org
|
||||
|
@ -66,8 +65,16 @@ Customize for your identity provider run `docker-compose up -f nginx.docker-comp
|
|||
|
||||
#### helm_gke.sh
|
||||
|
||||
- Uses Google Kubernetes Engine's built-in ingress to do [HTTPS load balancing]
|
||||
|
||||
<<< @/scripts/helm_gke.sh
|
||||
|
||||
#### helm_aws.sh
|
||||
|
||||
- Uses Amazon Elastic Container Service
|
||||
|
||||
<<< @/scripts/helm_aws.sh
|
||||
|
||||
## Kubernetes
|
||||
|
||||
- Uses Google Kubernetes Engine's built-in ingress to do [HTTPS load balancing]
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
# Patterns to ignore when building packages.
|
||||
# This supports shell glob matching, relative path matching, and
|
||||
# negation (prefixed with !). Only one pattern per line.
|
||||
.DS_Store
|
||||
# Common VCS dirs
|
||||
.git/
|
||||
.gitignore
|
||||
.bzr/
|
||||
.bzrignore
|
||||
.hg/
|
||||
.hgignore
|
||||
.svn/
|
||||
# Common backup files
|
||||
*.swp
|
||||
*.bak
|
||||
*.tmp
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
|
@ -1,26 +0,0 @@
|
|||
apiVersion: v1
|
||||
name: pomerium
|
||||
version: 1.0.0
|
||||
appVersion: 0.0.3
|
||||
home: http://www.pomerium.io/
|
||||
icon: https://www.pomerium.io/logo.svg
|
||||
description: Pomerium is an identity-aware access proxy.
|
||||
keywords:
|
||||
- proxy
|
||||
- access-proxy
|
||||
- reverse-proxy
|
||||
- sso
|
||||
- openid connect
|
||||
- oauth2
|
||||
- authorization
|
||||
- authentication
|
||||
- google
|
||||
- okta
|
||||
- azure
|
||||
sources:
|
||||
- https://github.com/pomerium/pomerium
|
||||
engine: gotpl
|
||||
|
||||
maintainers:
|
||||
- name: desimone
|
||||
email: bobby.desimone@gmail.com
|
|
@ -1,5 +0,0 @@
|
|||
approvers:
|
||||
- desimone
|
||||
reviewers:
|
||||
- desimone
|
||||
- victornoel
|
|
@ -1,71 +0,0 @@
|
|||
# Pomerium
|
||||
|
||||
[Pomerium](https://pomerium.io) is an [open-source](https://github.com/pomerium/pomerium) tool for managing secure access to internal applications and resources.
|
||||
|
||||
## TL;DR;
|
||||
|
||||
```console
|
||||
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 specifiying 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:
|
||||
|
||||
```sh
|
||||
helm install --name my-release \
|
||||
--set config.rootDomain="corp.example.com" \
|
||||
--set ingress.tls.certificate=$(base64 -i "*.corp.example.com.cer") \
|
||||
--set ingress.tls.key=$(base64 -i "*.corp.example.com.key") \
|
||||
--set config.policy=$(base64 -i "policy.yaml") \
|
||||
--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:
|
||||
|
||||
```console
|
||||
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](https://www.pomerium.io/docs/config-reference.html).
|
||||
|
||||
Parameter | Description | Default
|
||||
--------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------
|
||||
`config.rootDomain` | Root Domain specifies the sub-domain handled by pomerium. [See more](https://www.pomerium.io/docs/config-reference.html#proxy-root-domains). | `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](https://www.pomerium.io/docs/config-reference.html#shared-secret). | 32 [random ascii chars](http://masterminds.github.io/sprig/strings.html)
|
||||
`config.cookieSecret` | Cookie secret is a 32 byte key used to encrypt user sessions. | 32 [random ascii chars](http://masterminds.github.io/sprig/strings.html)
|
||||
`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](https://www.pomerium.io/docs/config-reference.html#policy) in values
|
||||
`authenticate.name` | Name of the authenticate service. | `authenticate`
|
||||
`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://www.pomerium.io/docs/config-reference.html#redirect-url). | `https://{{authenticate.name}}.{{config.rootDomain}}/oauth2/callback`
|
||||
`authenticate.idp.provider` | Identity [Provider Name](https://www.pomerium.io/docs/config-reference.html#identity-provider-name). | `google`
|
||||
`authenticate.idp.clientID` | Identity Provider oauth [client ID](https://www.pomerium.io/docs/config-reference.html#identity-provider-client-id). | Required
|
||||
`authenticate.idp.clientSecret` | Identity Provider oauth [client secret](https://www.pomerium.io/docs/config-reference.html#identity-provider-client-secret). | Required
|
||||
`authenticate.idp.url` | Identity [Provider URL](https://www.pomerium.io/docs/config-reference.html#identity-provider-url). | Optional
|
||||
`authenticate.idp.serviceAccount` | Identity Provider [service account](https://www.pomerium.io/docs/config-reference.html#identity-provider-service-account). | Optional
|
||||
`proxy.name` | Name of the proxy service. | `proxy`
|
||||
`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.name` | Name of the authorize service. | `authorize`
|
||||
`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 | `[]`
|
|
@ -1,67 +0,0 @@
|
|||
{{- if eq (include "pomerium.providerOK" .) "true" }}
|
||||
{{- if .Values.ingress.enabled }}
|
||||
From outside the cluster, the server URL(s) are:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
{{ $.Values.server.protocol }}://{{ . }}
|
||||
{{- end }}
|
||||
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
|
||||
Get the Pomerium URL by running:
|
||||
export NODE_PORT=$(kubectl get -o jsonpath="{.spec.ports[0].nodePort}" services {{ template "pomerium.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT/
|
||||
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
Watch the status with: 'kubectl get svc -w {{ template "pomerium.fullname" . }}'
|
||||
|
||||
Get the Pomerium URL by running:
|
||||
export SERVICE_IP=$(kubectl get svc {{ template "pomerium.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
|
||||
echo http://$SERVICE_IP/
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
|
||||
Get the Pomerium URL by running:
|
||||
export POD_NAME=$(kubectl get pods -n {{ .Release.Namespace }} -l "component=server,app={{ template "pomerium.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo http://127.0.0.1:8000/
|
||||
kubectl -n {{ .Release.Namespace }} port-forward $POD_NAME 8000:8000
|
||||
{{- end }}
|
||||
{{- else -}}
|
||||
##############################################################################
|
||||
#### ERROR: You did not set a valid identity provider ####
|
||||
##############################################################################
|
||||
|
||||
This deployment will be incomplete until you configure a valid version
|
||||
control provider:
|
||||
|
||||
helm upgrade {{ .Release.Name }} \
|
||||
--reuse-values \
|
||||
--set config.sharedSecret=$(head -c32 /dev/urandom | base64) \
|
||||
--set config.cookieSecret=$(head -c32 /dev/urandom | base64) \
|
||||
--set config.cert=$(base64 -i cert.pem) \
|
||||
--set config.key=$(base64 -i privkey.pem) \
|
||||
--set config.policy="$(cat policy.example.yaml | base64)" \
|
||||
--set authenticate.idp.provider="google" \
|
||||
--set config.rootDomain="corp.pomerium.io" \
|
||||
--set authenticate.redirectUrl="https://auth.corp.pomerium.io/oauth2/callback" \
|
||||
--set authenticate.idp.clientID="REPLACE_ME" \
|
||||
--set authenticate.idp.clientSecret="REPLACE_ME" \
|
||||
--set proxy.authenticateServiceUrl="https://auth.corp.pomerium.io" \
|
||||
--set proxy.authorizeServiceUrl="https://access.corp.pomerium.io"
|
||||
stable/pomerium
|
||||
|
||||
Currently supported providers:
|
||||
|
||||
- Okta
|
||||
- Google
|
||||
- Azure Active Directory
|
||||
- OneLogin
|
||||
|
||||
See the values.yaml file to see what values are required for each provider.
|
||||
|
||||
If you are having trouble with the configuration of a provider please visit
|
||||
the official documentation:
|
||||
|
||||
https://www.pomerium.io/docs/identity-providers.html
|
||||
{{- end }}
|
|
@ -1,58 +0,0 @@
|
|||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*Expand the name of the chart.*/}}
|
||||
{{- define "pomerium.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "pomerium.fullname" -}}
|
||||
{{- if .Values.fullnameOverride -}}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||
{{- if contains $name .Release.Name -}}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- else -}}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{/*Create chart name and version as used by the chart label.*/}}
|
||||
{{- define "pomerium.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- define "pomerium.routestring" -}}
|
||||
{{- $routes := dict "routes" (list) -}}
|
||||
{{- range $key, $val := .Values.proxy.routes -}}
|
||||
{{- $noop := printf "%s=%s" $key $val | append $routes.routes | set $routes "routes" -}}
|
||||
{{- end -}}
|
||||
{{- join "," $routes.routes | default "none=none" | quote -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
{{/*
|
||||
Check if a valid source control provider has been set
|
||||
Adapted from : https://github.com/helm/charts/blob/master/stable/drone/templates/_provider-envs.yaml
|
||||
*/}}
|
||||
{{- define "pomerium.providerOK" -}}
|
||||
{{- if .Values.authenticate.idp -}}
|
||||
{{- if eq .Values.authenticate.idp.clientID "" -}}
|
||||
false
|
||||
{{- else if eq .Values.authenticate.idp.clientSecret "" -}}
|
||||
false
|
||||
{{- else if eq .Values.authenticate.idp.clientID "REPLACE_ME" -}}
|
||||
false
|
||||
{{- else if eq .Values.authenticate.idp.clientSecret "REPLACE_ME" -}}
|
||||
false
|
||||
{{- else -}}
|
||||
true
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
|
@ -1,167 +0,0 @@
|
|||
{{- if .Values.omnibusMode -}}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
{{- if .Values.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
{{- range $key, $value := .Values.extraArgs }}
|
||||
{{- if $value }}
|
||||
- --{{ $key }}={{ $value }}
|
||||
{{- else }}
|
||||
- --{{ $key }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: SERVICES
|
||||
value: all
|
||||
- name: COOKIE_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
key: cookie-secret
|
||||
- name: SHARED_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
key: shared-secret
|
||||
- name: AUTHENTICATE_SERVICE_URL
|
||||
value: {{ .Values.proxy.authenticateServiceUrl }}
|
||||
- name: AUTHORIZE_SERVICE_URL
|
||||
value: {{ .Values.proxy.authorizeServiceUrl }}
|
||||
- name: REDIRECT_URL
|
||||
value: {{ .Values.authenticate.redirectUrl }}
|
||||
- name: PROXY_ROOT_DOMAIN
|
||||
value: {{ .Values.authenticate.proxyRootDomains }}
|
||||
- name: IDP_PROVIDER
|
||||
value: {{ .Values.authenticate.idp.provider }}
|
||||
- name: IDP_CLIENT_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
key: idp-client-id
|
||||
- name: IDP_CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
key: idp-client-secret
|
||||
{{- if .Values.authenticate.idp.url }}
|
||||
- name: IDP_PROVIDER_URL
|
||||
value: {{ .Values.authenticate.idp.url }}
|
||||
{{- end }}
|
||||
{{- if .Values.config.policyFile }}
|
||||
- name: POLICY_FILE
|
||||
value: /etc/pomerium/policy.yaml
|
||||
{{- end }}
|
||||
{{- if .Values.config.policy}}
|
||||
- name: POLICY
|
||||
value: {{ .Values.config.policy }}
|
||||
{{- end }}
|
||||
{{- if .Values.config.cert }}
|
||||
- name: CERTIFICATE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
key: certificate
|
||||
{{- end }}
|
||||
{{- if .Values.config.key }}
|
||||
- name: CERTIFICATE_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
key: certificate-key
|
||||
{{- end }}
|
||||
{{- if .Values.config.ca }}
|
||||
- name: CERTIFICATE_AUTHORITY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
key: certificate-authority
|
||||
{{- end }}
|
||||
{{- range $name, $value := .Values.extraEnv }}
|
||||
- name: {{ $name }}
|
||||
value: {{ quote $value }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- containerPort: 443
|
||||
name: https
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
|
||||
volumeMounts:
|
||||
- mountPath: /etc/pomerium/
|
||||
name: {{ template "pomerium.fullname" . }}-policy
|
||||
|
||||
volumes:
|
||||
- name: {{ template "pomerium.fullname" . }}-policy
|
||||
configMap:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 10 }}
|
||||
{{- if .Values.extraVolumes }}
|
||||
volumes:
|
||||
{{- toYaml .Values.extraVolumes | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml .Values.tolerations | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml .Values.affinity | indent 8 }}
|
||||
{{- end }}
|
||||
{{- end -}}
|
|
@ -1,31 +0,0 @@
|
|||
{{- if .Values.omnibusMode -}}
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.service.labels }}
|
||||
{{ toYaml .Values.service.labels | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.externalPort }}
|
||||
targetPort: https
|
||||
protocol: TCP
|
||||
name: http
|
||||
{{- if hasKey .Values.service "nodePort" }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- end -}}
|
|
@ -1,141 +0,0 @@
|
|||
{{- $secretName := default (include "pomerium.fullname" .) .Values.config.existingSecret }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authenticate.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "pomerium.fullname" . }}-{{ .Values.authenticate.name }}
|
||||
{{- if .Values.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authenticate.name }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authenticate.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
{{- range $key, $value := .Values.extraArgs }}
|
||||
{{- if $value }}
|
||||
- --{{ $key }}={{ $value }}
|
||||
{{- else }}
|
||||
- --{{ $key }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: SERVICES
|
||||
value: authenticate
|
||||
- name: COOKIE_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: cookie-secret
|
||||
- name: SHARED_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: shared-secret
|
||||
- name: REDIRECT_URL
|
||||
value: {{ default (printf "https://%s.%s/oauth2/callback" .Values.authenticate.name .Values.config.rootDomain ) .Values.authenticate.redirectUrl }}
|
||||
- name: PROXY_ROOT_DOMAIN
|
||||
value: {{ .Values.config.rootDomain }}
|
||||
- name: IDP_PROVIDER
|
||||
value: {{ .Values.authenticate.idp.provider }}
|
||||
- name: IDP_CLIENT_ID
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: idp-client-id
|
||||
- name: IDP_CLIENT_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: idp-client-secret
|
||||
- name: IDP_PROVIDER_URL
|
||||
value: {{ .Values.authenticate.idp.url }}
|
||||
- name: IDP_SERVICE_ACCOUNT
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: idp-service-account
|
||||
- name: CERTIFICATE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: authenticate-cert
|
||||
- name: CERTIFICATE_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: authenticate-key
|
||||
- name: CERTIFICATE_AUTHORITY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: ca-cert
|
||||
{{- range $name, $value := .Values.extraEnv }}
|
||||
- name: {{ $name }}
|
||||
value: {{ quote $value }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- containerPort: 443
|
||||
name: https
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 10 }}
|
||||
{{- if .Values.extraVolumes }}
|
||||
volumes:
|
||||
{{- toYaml .Values.extraVolumes | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml .Values.tolerations | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml .Values.affinity | indent 8 }}
|
||||
{{- end }}
|
|
@ -1,30 +0,0 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "pomerium.fullname" . }}-{{ .Values.authenticate.name }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authenticate.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.service.labels }}
|
||||
{{ toYaml .Values.service.labels | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.externalPort }}
|
||||
targetPort: https
|
||||
protocol: TCP
|
||||
name: https
|
||||
|
||||
{{- if hasKey .Values.service "nodePort" }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authenticate.name }}
|
||||
release: {{ .Release.Name }}
|
|
@ -1,131 +0,0 @@
|
|||
{{- $configName := default (include "pomerium.fullname" .) .Values.config.existingConfig }}
|
||||
{{- $secretName := default (include "pomerium.fullname" .) .Values.config.existingSecret }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authorize.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "pomerium.fullname" . }}-{{ .Values.authorize.name }}
|
||||
{{- if .Values.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authorize.name }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authorize.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
{{- range $key, $value := .Values.extraArgs }}
|
||||
{{- if $value }}
|
||||
- --{{ $key }}={{ $value }}
|
||||
{{- else }}
|
||||
- --{{ $key }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: SERVICES
|
||||
value: authorize
|
||||
- name: SHARED_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: shared-secret
|
||||
{{- if or .Values.config.existingConfig .Values.config.policyFile}}
|
||||
- name: POLICY_FILE
|
||||
value: /etc/pomerium/policy.yaml
|
||||
{{- end }}
|
||||
{{- if .Values.config.policy}}
|
||||
- name: POLICY
|
||||
value: {{ .Values.config.policy }}
|
||||
{{- end }}
|
||||
- name: CERTIFICATE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: authorize-cert
|
||||
- name: CERTIFICATE_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: authorize-key
|
||||
- name: CERTIFICATE_AUTHORITY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: ca-cert
|
||||
{{- range $name, $value := .Values.extraEnv }}
|
||||
- name: {{ $name }}
|
||||
value: {{ quote $value }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- containerPort: 443
|
||||
name: https
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
{{- if or .Values.config.existingConfig .Values.config.policyFile}}
|
||||
volumeMounts:
|
||||
- mountPath: /etc/pomerium/
|
||||
name: policy
|
||||
volumes:
|
||||
- name: policy
|
||||
configMap:
|
||||
name: {{ $configName }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 10 }}
|
||||
{{- if .Values.extraVolumes }}
|
||||
volumes:
|
||||
{{- toYaml .Values.extraVolumes | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml .Values.tolerations | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml .Values.affinity | indent 8 }}
|
||||
{{- end }}
|
|
@ -1,30 +0,0 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "pomerium.fullname" . }}-{{ .Values.authorize.name }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authorize.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.service.labels }}
|
||||
{{ toYaml .Values.service.labels | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.externalPort }}
|
||||
targetPort: https
|
||||
protocol: TCP
|
||||
name: https
|
||||
|
||||
{{- if hasKey .Values.service "nodePort" }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.authorize.name }}
|
||||
release: {{ .Release.Name }}
|
|
@ -1,13 +0,0 @@
|
|||
{{- if not .Values.config.existingConfig }}
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
data:
|
||||
policy.yaml: {{toYaml .Values.config.policyFile | indent 4}}
|
||||
{{- end }}
|
|
@ -1,44 +0,0 @@
|
|||
{{- if .Values.ingress.enabled -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ include "pomerium.fullname" . }}
|
||||
labels:
|
||||
app.kubernetes.io/name: {{ include "pomerium.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
helm.sh/chart: {{ include "pomerium.chart" . }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{ toYaml . | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
tls:
|
||||
- secretName: {{ default .Values.ingress.secretName .Values.ingress.secret.name}}
|
||||
hosts:
|
||||
- '*.{{ .Values.config.rootDomain }}'
|
||||
- {{ .Values.authorize.name }}.{{ .Values.config.rootDomain }}
|
||||
- {{ .Values.authenticate.name }}.{{ .Values.config.rootDomain }}
|
||||
rules:
|
||||
- host: '*.{{ .Values.config.rootDomain }}'
|
||||
http:
|
||||
paths:
|
||||
- paths:
|
||||
backend:
|
||||
serviceName: {{ include "pomerium.fullname" .}}-{{ .Values.proxy.name }}
|
||||
servicePort: https
|
||||
- host: {{ .Values.authorize.name }}.{{ .Values.config.rootDomain }}
|
||||
http:
|
||||
paths:
|
||||
- paths:
|
||||
backend:
|
||||
serviceName: {{ include "pomerium.fullname" .}}-{{ .Values.authorize.name }}
|
||||
servicePort: https
|
||||
- host: {{ .Values.authenticate.name }}.{{ .Values.config.rootDomain }}
|
||||
http:
|
||||
paths:
|
||||
- paths:
|
||||
backend:
|
||||
serviceName: {{ include "pomerium.fullname" .}}-{{ .Values.authenticate.name }}
|
||||
servicePort: https
|
||||
{{- end }}
|
|
@ -1,144 +0,0 @@
|
|||
{{- $configName := default (include "pomerium.fullname" .) .Values.config.existingConfig }}
|
||||
{{- $secretName := default (include "pomerium.fullname" .) .Values.config.existingSecret }}
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.proxy.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "pomerium.fullname" . }}-{{ .Values.proxy.name }}
|
||||
{{- if .Values.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
selector:
|
||||
matchLabels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.proxy.name }}
|
||||
release: {{ .Release.Name }}
|
||||
template:
|
||||
metadata:
|
||||
{{- if .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.podAnnotations | indent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.proxy.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
{{- if .Values.podLabels }}
|
||||
{{ toYaml .Values.podLabels | indent 8 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.priorityClassName }}
|
||||
priorityClassName: {{ .Values.priorityClassName }}
|
||||
{{- end }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
image: {{ .Values.image.repository }}:{{ .Values.image.tag }}
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
args:
|
||||
{{- range $key, $value := .Values.extraArgs }}
|
||||
{{- if $value }}
|
||||
- --{{ $key }}={{ $value }}
|
||||
{{- else }}
|
||||
- --{{ $key }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
env:
|
||||
- name: SERVICES
|
||||
value: proxy
|
||||
- name: COOKIE_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: cookie-secret
|
||||
- name: SHARED_SECRET
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: shared-secret
|
||||
- name: AUTHENTICATE_SERVICE_URL
|
||||
value: {{ default (printf "https://%s.%s" .Values.authenticate.name .Values.config.rootDomain ) .Values.proxy.authenticateServiceUrl }}
|
||||
- name: AUTHORIZE_SERVICE_URL
|
||||
value: {{ default (printf "https://%s.%s" .Values.authorize.name .Values.config.rootDomain ) .Values.proxy.authorizeServiceUrl }}
|
||||
- name: AUTHENTICATE_INTERNAL_URL
|
||||
value: {{ default (printf "%s-%s.%s.svc.cluster.local" (include "pomerium.fullname" .) .Values.authenticate.name .Release.Namespace ) .Values.proxy.authenticateInternalUrl}}
|
||||
- name: AUTHORIZE_INTERNAL_URL
|
||||
value: {{ default (printf "%s-%s.%s.svc.cluster.local" (include "pomerium.fullname" .) .Values.authorize.name .Release.Namespace ) .Values.proxy.authorizeInternalUrl}}
|
||||
{{- if or .Values.config.existingConfig .Values.config.policyFile}}
|
||||
- name: POLICY_FILE
|
||||
value: /etc/pomerium/policy.yaml
|
||||
{{- end }}
|
||||
{{- if .Values.config.policy}}
|
||||
- name: POLICY
|
||||
value: {{ .Values.config.policy }}
|
||||
{{- end }}
|
||||
- name: CERTIFICATE
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: proxy-cert
|
||||
- name: CERTIFICATE_KEY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: proxy-key
|
||||
- name: CERTIFICATE_AUTHORITY
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: {{ $secretName }}
|
||||
key: ca-cert
|
||||
{{- range $name, $value := .Values.extraEnv }}
|
||||
- name: {{ $name }}
|
||||
value: {{ quote $value }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- containerPort: 443
|
||||
name: https
|
||||
protocol: TCP
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /ping
|
||||
port: https
|
||||
scheme: HTTPS
|
||||
{{- if or .Values.config.existingConfig .Values.config.policyFile}}
|
||||
volumeMounts:
|
||||
- mountPath: /etc/pomerium/
|
||||
name: policy
|
||||
volumes:
|
||||
- name: policy
|
||||
configMap:
|
||||
name: {{ $configName }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{ toYaml .Values.resources | indent 10 }}
|
||||
{{- if .Values.extraVolumes }}
|
||||
volumes:
|
||||
{{- toYaml .Values.extraVolumes | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{ toYaml .Values.imagePullSecrets | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{ toYaml .Values.nodeSelector | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.tolerations }}
|
||||
tolerations:
|
||||
{{ toYaml .Values.tolerations | indent 8 }}
|
||||
{{- end }}
|
||||
{{- if .Values.affinity }}
|
||||
affinity:
|
||||
{{ toYaml .Values.affinity | indent 8 }}
|
||||
{{- end }}
|
|
@ -1,30 +0,0 @@
|
|||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ template "pomerium.fullname" . }}-{{ .Values.proxy.name }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.proxy.name }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
release: {{ .Release.Name }}
|
||||
heritage: {{ .Release.Service }}
|
||||
{{- if .Values.service.labels }}
|
||||
{{ toYaml .Values.service.labels | indent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
ports:
|
||||
- port: {{ .Values.service.externalPort }}
|
||||
targetPort: https
|
||||
protocol: TCP
|
||||
name: https
|
||||
|
||||
{{- if hasKey .Values.service "nodePort" }}
|
||||
nodePort: {{ .Values.service.nodePort }}
|
||||
{{- end }}
|
||||
selector:
|
||||
app: {{ template "pomerium.name" . }}-{{ .Values.proxy.name }}
|
||||
release: {{ .Release.Name }}
|
|
@ -1,44 +0,0 @@
|
|||
{{- if not .Values.config.existingSecret }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
heritage: {{ .Release.Service }}
|
||||
release: {{ .Release.Name }}
|
||||
name: {{ template "pomerium.fullname" . }}
|
||||
namespace: {{ .Release.Namespace }}
|
||||
type: Opaque
|
||||
data:
|
||||
cookie-secret: {{ default (randAscii 32 | b64enc | b64enc) (.Values.config.cookieSecret | b64enc )}}
|
||||
shared-secret: {{ default (randAscii 32 | b64enc | b64enc) (.Values.config.sharedSecret | b64enc )}}
|
||||
idp-client-id: {{ .Values.authenticate.idp.clientID | b64enc }}
|
||||
idp-client-secret: {{ .Values.authenticate.idp.clientSecret | b64enc }}
|
||||
idp-service-account: {{ .Values.authenticate.idp.serviceAccount | b64enc }}
|
||||
{{- if .Values.config.generateTLS }}
|
||||
{{- $ca := genCA "default-ca" 3650 }}
|
||||
{{$authenticateSN:= list (printf "%s.%s" .Values.authenticate.name .Values.config.rootDomain) (printf "%s-%s.%s.svc.cluster.local" (include "pomerium.fullname" .) .Values.authenticate.name .Release.Namespace )}}
|
||||
{{$authorizeSN:= list (printf "%s.%s" .Values.authorize.name .Values.config.rootDomain) (printf "%s-%s.%s.svc.cluster.local" (include "pomerium.fullname" .) .Values.authorize.name .Release.Namespace )}}
|
||||
{{- $cn := default "example.com" .Values.config.rootDomain }}
|
||||
ca-cert: {{ $ca.Cert | b64enc | b64enc }}
|
||||
ca-key: {{ $ca.Key | b64enc | b64enc }}
|
||||
{{- $kp := genSignedCert $cn ( default nil .Values.authenticate.tls.defaultIPList ) ( default $authenticateSN .Values.authenticate.tls.defaultSANList ) 3650 $ca }}
|
||||
authenticate-cert: {{ $kp.Cert | b64enc | b64enc }}
|
||||
authenticate-key: {{ $kp.Key | b64enc | b64enc }}
|
||||
{{- $kp := genSignedCert $cn ( default nil .Values.authorize.tls.defaultIPList ) ( default $authorizeSN .Values.authorize.tls.defaultSANList ) 3650 $ca }}
|
||||
authorize-cert: {{ $kp.Cert | b64enc | b64enc }}
|
||||
authorize-key: {{ $kp.Key | b64enc | b64enc }}
|
||||
{{- $kp := genSignedCert $cn ( default nil .Values.proxy.tls.defaultIPList ) ( default nil .Values.proxy.tls.defaultSANList ) 3650 $ca }}
|
||||
proxy-cert: {{ $kp.Cert | b64enc | b64enc }}
|
||||
proxy-key: {{ $kp.Key | b64enc | b64enc }}
|
||||
{{- else -}}
|
||||
ca-cert: {{ .Values.config.ca | b64enc }}
|
||||
proxy-cert: {{ .Values.proxy.tls.cert | b64enc }}
|
||||
proxy-key: {{ .Values.proxy.tls.key | b64enc }}
|
||||
authenticate-cert: {{ .Values.authenticate.tls.cert | b64enc }}
|
||||
authenticate-key: {{ .Values.authenticate.tls.key | b64enc }}
|
||||
authorize-cert: {{ .Values.authorize.tls.cert | b64enc }}
|
||||
authorize-key: {{ .Values.authorize.tls.key | b64enc }}
|
||||
{{- end }}
|
||||
{{- end }}
|
|
@ -1,18 +0,0 @@
|
|||
{{- if .Values.ingress.enabled }}
|
||||
{{- if not .Values.ingress.secretName }}
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: {{ default "pomerium-tls" .Values.ingress.secret.name }}
|
||||
labels:
|
||||
app: {{ template "pomerium.name" . }}
|
||||
chart: {{ template "pomerium.chart" . }}
|
||||
release: {{ .Release.Name | quote }}
|
||||
heritage: {{ .Release.Service | quote }}
|
||||
type: kubernetes.io/tls
|
||||
data:
|
||||
tls.crt: {{ .Values.ingress.secret.cert }}
|
||||
tls.key: {{ .Values.ingress.secret.key }}
|
||||
---
|
||||
{{- end }}
|
||||
{{- end }}
|
133
helm/values.yaml
133
helm/values.yaml
|
@ -1,133 +0,0 @@
|
|||
# For detailed explanation of each of the configuration settings see
|
||||
# https://www.pomerium.io/docs/config-reference.htmls
|
||||
|
||||
# settings that are shared by all services
|
||||
config:
|
||||
# routes under this wildcard domain are handled by pomerium
|
||||
rootDomain: corp.pomerium.io
|
||||
# existingSecret:
|
||||
# existingConfig:
|
||||
sharedSecret: ""
|
||||
cookieSecret: ""
|
||||
generateTLS: true
|
||||
policyFile: |-
|
||||
- from: httpbin.corp.pomerium.io
|
||||
to: http://httpbin
|
||||
allowed_domains:
|
||||
- pomerium.io
|
||||
- from: external-httpbin.corp.pomerium.io
|
||||
to: httpbin.org
|
||||
allowed_domains:
|
||||
- gmail.com
|
||||
- from: weirdlyssl.corp.pomerium.io
|
||||
to: http://neverssl.com
|
||||
allowed_users:
|
||||
- bdd@pomerium.io
|
||||
allowed_groups:
|
||||
- admins
|
||||
- developers
|
||||
- from: hello.corp.pomerium.io
|
||||
to: http://hello:8080
|
||||
allowed_groups:
|
||||
- admins
|
||||
|
||||
authenticate:
|
||||
name: authenticate
|
||||
redirectUrl: ""
|
||||
# see https://www.pomerium.io/docs/identity-providers.html
|
||||
idp:
|
||||
provider: google
|
||||
clientID: "REPLACE_ME"
|
||||
clientSecret: "REPLACE_ME"
|
||||
url: ""
|
||||
serviceAccount: ""
|
||||
tls:
|
||||
cert: ""
|
||||
key: ""
|
||||
defaultSANList: []
|
||||
defaultIPList: []
|
||||
|
||||
authorize:
|
||||
name: authorize
|
||||
tls:
|
||||
cert: ""
|
||||
key: ""
|
||||
defaultSANList: []
|
||||
defaultIPList: []
|
||||
|
||||
proxy:
|
||||
name: proxy
|
||||
tls:
|
||||
cert: ""
|
||||
key: ""
|
||||
defaultSANList: []
|
||||
defaultIPList: []
|
||||
authenticateServiceUrl: ""
|
||||
authorizeServiceUrl: ""
|
||||
authorizeInternalUrl: ""
|
||||
authenticateInternalUrl: ""
|
||||
|
||||
service:
|
||||
# Service type can be set to ClusterIP, NodePort or LoadBalancer.
|
||||
type: ClusterIP
|
||||
externalPort: 443
|
||||
annotations:
|
||||
{}
|
||||
# === GKE load balancer tweaks
|
||||
# cloud.google.com/app-protocols: '{"https":"HTTPS"}'
|
||||
# kubernetes.io/ingress.allow-http: "false"
|
||||
labels: {}
|
||||
|
||||
ingress:
|
||||
secretName: ""
|
||||
secret:
|
||||
name: ""
|
||||
cert: ""
|
||||
key: ""
|
||||
enabled: true
|
||||
annotations:
|
||||
{}
|
||||
# === nginx tweaks
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
|
||||
# nginx.ingress.kubernetes.io/proxy-buffer-size: "16k"
|
||||
# === GKE load balancer tweaks ==
|
||||
# cloud.google.com/app-protocols: '{"https":"HTTPS"}'
|
||||
# kubernetes.io/ingress.allow-http: "false"
|
||||
resources:
|
||||
{}
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 300Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 300Mi
|
||||
|
||||
priorityClassName: ""
|
||||
|
||||
# Affinity for pod assignment
|
||||
# Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
|
||||
# affinity: {}
|
||||
|
||||
# Tolerations for pod assignment
|
||||
# Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
|
||||
# tolerations: []
|
||||
|
||||
# Node labels for pod assignment
|
||||
# Ref: https://kubernetes.io/docs/user-guide/node-selection/
|
||||
# nodeSelector: {}
|
||||
|
||||
podAnnotations: {}
|
||||
podLabels: {}
|
||||
replicaCount: 1
|
||||
|
||||
# For any other settings that are optional. for a complete listing see:
|
||||
# https://www.pomerium.io/docs/config-reference.html
|
||||
extraEnv: {}
|
||||
extraArgs: {}
|
||||
extraVolumes: {}
|
||||
|
||||
image:
|
||||
repository: "pomerium/pomerium"
|
||||
tag: "latest"
|
||||
pullPolicy: "Always"
|
64
scripts/helm_aws.sh
Normal file
64
scripts/helm_aws.sh
Normal file
|
@ -0,0 +1,64 @@
|
|||
#!/bin/bash
|
||||
# PRE-REQ:
|
||||
# 1) Install Helm : You should verify the content of this script before running.
|
||||
# curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get | bash
|
||||
# 2) Install https://eksctl.io/
|
||||
# For more information see:
|
||||
# - https://eksworkshop.com/helm_root/helm_intro/install/
|
||||
|
||||
echo "=> [AWS] creating cluster"
|
||||
eksctl create cluster --name=pomerium --nodes=1 --region=us-west-2
|
||||
|
||||
echo "=> [AWS] get cluster credentials so we can use kubctl locally"
|
||||
eksctl utils write-kubeconfig --name=pomerium
|
||||
|
||||
echo "=> [AWS] configure Helm access with RBAC"
|
||||
cat <<EOF >.helm-rbac.yaml
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: tiller
|
||||
namespace: kube-system
|
||||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||
kind: ClusterRoleBinding
|
||||
metadata:
|
||||
name: tiller
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: cluster-admin
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: tiller
|
||||
namespace: kube-system
|
||||
EOF
|
||||
|
||||
kubectl apply -f .helm-rbac.yaml
|
||||
# cleanup
|
||||
rm .helm-rbac.yaml
|
||||
|
||||
echo "=> initialize Helm to install Tiller in your cluster"
|
||||
helm init --service-account=tiller
|
||||
helm repo update
|
||||
|
||||
echo "=> install pomerium with helm substituting configuration values as required; be sure to change these"
|
||||
helm install $HOME/charts/stable/pomerium/ \
|
||||
--name pomerium \
|
||||
--set config.sharedSecret=$(head -c32 /dev/urandom | base64) \
|
||||
--set config.cookieSecret=$(head -c32 /dev/urandom | base64) \
|
||||
--set config.cert=$(base64 -i cert.pem) \
|
||||
--set config.key=$(base64 -i privkey.pem) \
|
||||
--set config.policy="$(cat policy.example.yaml | base64)" \
|
||||
--set authenticate.idp.provider="google" \
|
||||
--set authenticate.proxyRootDomains="pomerium.io" \
|
||||
--set authenticate.redirectUrl="https://auth.corp.pomerium.io/oauth2/callback" \
|
||||
--set authenticate.idp.clientID="REPLACE_ME" \
|
||||
--set authenticate.idp.clientSecret="REPLACE_ME" \
|
||||
--set proxy.authenticateServiceUrl="https://auth.corp.pomerium.io" \
|
||||
--set proxy.authorizeServiceUrl="https://access.corp.pomerium.io"
|
||||
|
||||
# When done, clean up by deleting the cluster!
|
||||
#
|
||||
# helm del $(helm ls --all --short) --purge #!!! DELETES ALL YOUR HELM INSTANCES!
|
Loading…
Add table
Add a link
Reference in a new issue