From 7abc8ddaf01ef84207c63a6fa41db379b8e6e536 Mon Sep 17 00:00:00 2001 From: Jens Langhammer Date: Fri, 8 Feb 2019 14:57:16 +0100 Subject: [PATCH] add helm chart --- .dockerignore | 3 + Dockerfile | 17 +++ helm/passbook/.helmignore | 21 +++ helm/passbook/Chart.yaml | 6 + helm/passbook/charts/postgresql-3.10.1.tgz | Bin 0 -> 17291 bytes helm/passbook/charts/redis-5.1.0.tgz | Bin 0 -> 18157 bytes helm/passbook/requirements.lock | 9 ++ helm/passbook/requirements.yaml | 7 + helm/passbook/templates/NOTES.txt | 19 +++ helm/passbook/templates/_helpers.tpl | 32 ++++ .../templates/passbook-configmap.yaml | 138 ++++++++++++++++++ .../templates/passbook-web-deployment.yaml | 66 +++++++++ .../templates/passbook-web-ingress.yaml | 38 +++++ .../templates/passbook-web-service.yaml | 19 +++ .../templates/passbook-worker-deployment.yaml | 51 +++++++ helm/passbook/values.yaml | 57 ++++++++ 16 files changed, 483 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 helm/passbook/.helmignore create mode 100644 helm/passbook/Chart.yaml create mode 100644 helm/passbook/charts/postgresql-3.10.1.tgz create mode 100644 helm/passbook/charts/redis-5.1.0.tgz create mode 100644 helm/passbook/requirements.lock create mode 100644 helm/passbook/requirements.yaml create mode 100644 helm/passbook/templates/NOTES.txt create mode 100644 helm/passbook/templates/_helpers.tpl create mode 100644 helm/passbook/templates/passbook-configmap.yaml create mode 100644 helm/passbook/templates/passbook-web-deployment.yaml create mode 100644 helm/passbook/templates/passbook-web-ingress.yaml create mode 100644 helm/passbook/templates/passbook-web-service.yaml create mode 100644 helm/passbook/templates/passbook-worker-deployment.yaml create mode 100644 helm/passbook/values.yaml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..87a336e06 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +env +helm +passbook-ui diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..d51d5af73 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +FROM python:3.6-slim-stretch +# LABEL version="1.8.8" + +COPY ./passbook/ /app/passbook +COPY ./static/ /app/static +COPY ./manage.py /app/ +COPY ./requirements.txt /app/ + +WORKDIR /app/ + +#RUN apk add --no-cache libffi-dev build-base py2-pip python2-dev libxml-dev && \ +RUN pip install -r requirements.txt && \ + pip install psycopg2 && \ + adduser --system --home /app/ passbook && \ + chown -R passbook /app/ + +USER passbook diff --git a/helm/passbook/.helmignore b/helm/passbook/.helmignore new file mode 100644 index 000000000..f0c131944 --- /dev/null +++ b/helm/passbook/.helmignore @@ -0,0 +1,21 @@ +# 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 diff --git a/helm/passbook/Chart.yaml b/helm/passbook/Chart.yaml new file mode 100644 index 000000000..3cac5c5df --- /dev/null +++ b/helm/passbook/Chart.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +appVersion: "1.0.0" +description: A Helm chart for passbook. +name: passbook +version: 1.0.0 +icon: https://passbook.beryju.org/images/logo.png diff --git a/helm/passbook/charts/postgresql-3.10.1.tgz b/helm/passbook/charts/postgresql-3.10.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..04e30b263e6e9c9a6bc45abc66cc855e8f92a818 GIT binary patch literal 17291 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
V&n@%+wui=k%C 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 IJpi5o00I$GTL1t6 literal 0 HcmV?d00001 diff --git a/helm/passbook/charts/redis-5.1.0.tgz b/helm/passbook/charts/redis-5.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..71237425a5f53c88b1a4b0b0861432278301d24b GIT binary patch literal 18157 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 literal 0 HcmV?d00001 diff --git a/helm/passbook/requirements.lock b/helm/passbook/requirements.lock new file mode 100644 index 000000000..8457a7c56 --- /dev/null +++ b/helm/passbook/requirements.lock @@ -0,0 +1,9 @@ +dependencies: +- name: redis + repository: https://kubernetes-charts.storage.googleapis.com/ + version: 5.1.0 +- name: postgresql + repository: https://kubernetes-charts.storage.googleapis.com/ + version: 3.10.1 +digest: sha256:04bd136761f070e94a2ff32ff48ff87f5e07fbd451e5fd7f65551e3bd4680e5e +generated: 2019-02-08T12:08:49.090666+01:00 diff --git a/helm/passbook/requirements.yaml b/helm/passbook/requirements.yaml new file mode 100644 index 000000000..0d5a7feea --- /dev/null +++ b/helm/passbook/requirements.yaml @@ -0,0 +1,7 @@ +dependencies: +- name: redis + version: 5.1.0 + repository: https://kubernetes-charts.storage.googleapis.com/ +- name: postgresql + version: 3.10.1 + repository: https://kubernetes-charts.storage.googleapis.com/ diff --git a/helm/passbook/templates/NOTES.txt b/helm/passbook/templates/NOTES.txt new file mode 100644 index 000000000..99ea21d12 --- /dev/null +++ b/helm/passbook/templates/NOTES.txt @@ -0,0 +1,19 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range .Values.ingress.hosts }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.ingress.path }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "passbook.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -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. + You can watch the status of by running 'kubectl get svc -w {{ include "passbook.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "passbook.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "passbook.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl port-forward $POD_NAME 8080:8000 +{{- end }} diff --git a/helm/passbook/templates/_helpers.tpl b/helm/passbook/templates/_helpers.tpl new file mode 100644 index 000000000..e07a252d0 --- /dev/null +++ b/helm/passbook/templates/_helpers.tpl @@ -0,0 +1,32 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "passbook.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 "passbook.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 "passbook.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/helm/passbook/templates/passbook-configmap.yaml b/helm/passbook/templates/passbook-configmap.yaml new file mode 100644 index 000000000..314e31f0d --- /dev/null +++ b/helm/passbook/templates/passbook-configmap.yaml @@ -0,0 +1,138 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "passbook.fullname" . }}-config +data: + config.yml: | + # Env for Docker images + databases: + default: + engine: django.db.backends.postgresql + name: {{ .Values.postgresql.postgresqlDatabase }} + user: postgres + password: {{ .Values.postgresql.postgresqlPassword }} + host: {{ .Release.Name }}-postgresql + port: '' + log: + level: + console: DEBUG + file: DEBUG + file: /dev/null + syslog: + host: 127.0.0.1 + port: 514 + email: + host: localhost + port: 25 + user: '' + password: '' + use_tls: false + use_ssl: false + from: passbook + web: + listen: 0.0.0.0 + port: 8000 + threads: 30 + debug: false + secure_proxy_header: + HTTP_X_FORWARDED_PROTO: https + redis: {{ .Release.Name }}-redis + # Error reporting, sends stacktrace to sentry.services.beryju.org + error_report_enabled: {{ .Values.config.error_reporting }} + + {{- if .Values.config.secret_key }} + secret_key: {{ .Values.config.secret_key }} + {{- else }} + secret_key: {{ randAlphaNum 50 }} + {{- end }} + + domains: + {{- range .Values.ingress.hosts }} + - {{ . | quote }} + {{- end }} + + passbook: + sign_up: + # Enables signup, created users are stored in internal Database and created in LDAP if ldap.create_users is true + enabled: true + password_reset: + # Enable password reset, passwords are reset in internal Database and in LDAP if ldap.reset_password is true + enabled: true + # Verification the user has to provide in order to be able to reset passwords. Can be any combination of `email`, `2fa`, `security_questions` + verification: + - email + # Text used in title, on login page and multiple other places + branding: passbook + login: + # Override URL used for logo + logo_url: null + # Override URL used for Background on Login page + bg_url: null + # Optionally add a subtext, placed below logo on the login page + subtext: null + footer: + links: + # Optionally add links to the footer on the login page + # - name: test + # href: https://test + # Specify which fields can be used to authenticate. Can be any combination of `username` and `email` + uid_fields: + - username + - email + session: + remember_age: 2592000 # 60 * 60 * 24 * 30, one month + # Provider-specific settings + ldap: + # # Completely enable or disable LDAP provider + # enabled: false + # # AD Domain, used to generate `userPrincipalName` + # domain: corp.contoso.com + # # Base DN in which passbook should look for users + # base_dn: dn=corp,dn=contoso,dn=com + # # LDAP field which is used to set the django username + # username_field: sAMAccountName + # # LDAP server to connect to, can be set to `` + # server: + # name: corp.contoso.com + # use_tls: false + # # Bind credentials, used for account creation + # bind: + # username: Administraotr@corp.contoso.com + # password: VerySecurePassword! + # Which field from `uid_fields` maps to which LDAP Attribute + login_field_map: + username: sAMAccountName + email: mail # or userPrincipalName + user_attribute_map: + active_directory: + sAMAccountName: username + mail: email + given_name: first_name + name: last_name + # # Create new users in LDAP upon sign-up + # create_users: true + # # Reset LDAP password when user reset their password + # reset_password: true + oauth_client: + # List of python packages with sources types to load. + types: + - passbook.oauth_client.source_types.discord + - passbook.oauth_client.source_types.facebook + - passbook.oauth_client.source_types.github + - passbook.oauth_client.source_types.google + - passbook.oauth_client.source_types.reddit + - passbook.oauth_client.source_types.supervisr + - passbook.oauth_client.source_types.twitter + saml_idp: + signing: true + autosubmit: false + issuer: passbook + assertion_valid_for: 86400 + # List of python packages with provider types to load. + types: + - passbook.saml_idp.processors.generic + - passbook.saml_idp.processors.gitlab + - passbook.saml_idp.processors.nextcloud + - passbook.saml_idp.processors.salesforce + - passbook.saml_idp.processors.shibboleth + - passbook.saml_idp.processors.wordpress_orange diff --git a/helm/passbook/templates/passbook-web-deployment.yaml b/helm/passbook/templates/passbook-web-deployment.yaml new file mode 100644 index 000000000..78830221d --- /dev/null +++ b/helm/passbook/templates/passbook-web-deployment.yaml @@ -0,0 +1,66 @@ +apiVersion: apps/v1beta2 +kind: Deployment +metadata: + name: {{ include "passbook.fullname" . }}-web + labels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + helm.sh/chart: {{ include "passbook.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + volumes: + - name: config-volume + configMap: + name: {{ include "passbook.fullname" . }}-config + containers: + - name: {{ .Chart.Name }} + image: "docker.pkg.beryju.org/passbook:{{ .Values.image.tag }}" + imagePullPolicy: IfNotPresent + command: ["/bin/sh","-c"] + args: ["./manage.py migrate && ./manage.py web"] + ports: + - name: http + containerPort: 8000 + protocol: TCP + volumeMounts: + - mountPath: /etc/passbook + name: config-volume + livenessProbe: + httpGet: + path: / + port: http + httpHeaders: + - name: Host + value: kubernetes-healthcheck-host + readinessProbe: + httpGet: + path: / + port: http + httpHeaders: + - name: Host + value: kubernetes-healthcheck-host + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} diff --git a/helm/passbook/templates/passbook-web-ingress.yaml b/helm/passbook/templates/passbook-web-ingress.yaml new file mode 100644 index 000000000..0ff329cce --- /dev/null +++ b/helm/passbook/templates/passbook-web-ingress.yaml @@ -0,0 +1,38 @@ +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "passbook.fullname" . -}} +{{- $ingressPath := .Values.ingress.path -}} +apiVersion: extensions/v1beta1 +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + helm.sh/chart: {{ include "passbook.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- with .Values.ingress.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} +spec: +{{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} +{{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ . | quote }} + http: + paths: + - path: {{ $ingressPath }} + backend: + serviceName: {{ $fullName }} + servicePort: http + {{- end }} +{{- end }} diff --git a/helm/passbook/templates/passbook-web-service.yaml b/helm/passbook/templates/passbook-web-service.yaml new file mode 100644 index 000000000..1cbb65de6 --- /dev/null +++ b/helm/passbook/templates/passbook-web-service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "passbook.fullname" . }} + labels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + helm.sh/chart: {{ include "passbook.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: {{ include "passbook.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} diff --git a/helm/passbook/templates/passbook-worker-deployment.yaml b/helm/passbook/templates/passbook-worker-deployment.yaml new file mode 100644 index 000000000..f4b6c8513 --- /dev/null +++ b/helm/passbook/templates/passbook-worker-deployment.yaml @@ -0,0 +1,51 @@ +apiVersion: apps/v1beta2 +kind: Deployment +metadata: + name: {{ include "passbook.fullname" . }}-worker + labels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + helm.sh/chart: {{ include "passbook.chart" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + app.kubernetes.io/managed-by: {{ .Release.Service }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + template: + metadata: + labels: + app.kubernetes.io/name: {{ include "passbook.name" . }} + app.kubernetes.io/instance: {{ .Release.Name }} + spec: + volumes: + - name: config-volume + configMap: + name: {{ include "passbook.fullname" . }}-config + containers: + - name: {{ .Chart.Name }} + image: "docker.pkg.beryju.org/passbook:{{ .Values.image.tag }}" + imagePullPolicy: IfNotPresent + command: ["./manage.py", "worker"] + ports: + - name: http + containerPort: 8000 + protocol: TCP + volumeMounts: + - mountPath: /etc/passbook + name: config-volume + resources: +{{ toYaml .Values.resources | indent 12 }} + {{- with .Values.nodeSelector }} + nodeSelector: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: +{{ toYaml . | indent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: +{{ toYaml . | indent 8 }} + {{- end }} diff --git a/helm/passbook/values.yaml b/helm/passbook/values.yaml new file mode 100644 index 000000000..ef8f52287 --- /dev/null +++ b/helm/passbook/values.yaml @@ -0,0 +1,57 @@ +# Default values for passbook. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +replicaCount: 1 + +image: + tag: latest + +nameOverride: "" + +config: + # Optionally specify fixed secret_key, otherwise generated automatically + # secret_key: _k*@6h2u2@q-dku57hhgzb7tnx*ba9wodcb^s9g0j59@=y(@_o + # Enable error reporting + error_reporting: true + +postgresql: + postgresqlDatabase: passbook + postgresqlPassword: foo + +service: + type: ClusterIP + port: 80 + +ingress: + enabled: false + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + path: / + hosts: + - passbook.k8s.local + - kubernetes-healthcheck-host + defaultHost: passbook.k8s.local + tls: [] + # - secretName: chart-example-tls + # hosts: + # - passbook.k8s.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +nodeSelector: {} + +tolerations: [] + +affinity: {}