feat(mycloud-core): init
This commit is contained in:
parent
c1e6c0c063
commit
ba54f31783
18 changed files with 654 additions and 0 deletions
37
base-values/mycloud-core.yaml
Normal file
37
base-values/mycloud-core.yaml
Normal file
|
@ -0,0 +1,37 @@
|
|||
commons:
|
||||
# -- needed, but could be set with componentCommons.helm.release.valuesFrom
|
||||
# masterPassword:
|
||||
|
||||
theme:
|
||||
title:
|
||||
logo:
|
||||
favicon:
|
||||
|
||||
persistence:
|
||||
storageClass:
|
||||
hostPath:
|
||||
enabled: false
|
||||
prefix: "/var/lib/mycloud"
|
||||
|
||||
mail:
|
||||
host:
|
||||
username:
|
||||
password:
|
||||
from:
|
||||
use_tls: false
|
||||
use_ssl: false
|
||||
|
||||
components:
|
||||
mycloud-services:
|
||||
enabled: true
|
||||
# current namespace
|
||||
namespace:
|
||||
values:
|
||||
databases:
|
||||
authentik:
|
||||
type: postgresql
|
||||
|
||||
mycloud-authentik:
|
||||
enabled: true
|
||||
# current namespace
|
||||
namespace:
|
23
mycloud-authentik/.helmignore
Normal file
23
mycloud-authentik/.helmignore
Normal file
|
@ -0,0 +1,23 @@
|
|||
# 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
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
6
mycloud-authentik/Chart.yaml
Normal file
6
mycloud-authentik/Chart.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
apiVersion: v2
|
||||
name: mycloud-authentik
|
||||
description: A mycloud components using authentik (for central authentification using SSO)
|
||||
|
||||
type: application
|
||||
version: 0.1.0
|
|
@ -0,0 +1,161 @@
|
|||
# https://raw.githubusercontent.com/goauthentik/authentik/583c5e3ba7acd88d31444c2faabf80040319286a/blueprints/example/flows-recovery-email-verification.yaml
|
||||
version: 1
|
||||
metadata:
|
||||
name: myCloud - Recovery with email verification
|
||||
entries:
|
||||
- identifiers:
|
||||
slug: default-recovery-flow
|
||||
id: flow
|
||||
model: authentik_flows.flow
|
||||
attrs:
|
||||
name: Default recovery flow
|
||||
title: Reset your password
|
||||
designation: recovery
|
||||
authentication: require_unauthenticated
|
||||
- identifiers:
|
||||
name: default-recovery-field-password
|
||||
id: prompt-field-password
|
||||
model: authentik_stages_prompt.prompt
|
||||
attrs:
|
||||
field_key: password
|
||||
label: Password
|
||||
type: password
|
||||
required: true
|
||||
placeholder: Password
|
||||
order: 0
|
||||
placeholder_expression: false
|
||||
- identifiers:
|
||||
name: default-recovery-field-password-repeat
|
||||
id: prompt-field-password-repeat
|
||||
model: authentik_stages_prompt.prompt
|
||||
attrs:
|
||||
field_key: password_repeat
|
||||
label: Password (repeat)
|
||||
type: password
|
||||
required: true
|
||||
placeholder: Password (repeat)
|
||||
order: 1
|
||||
placeholder_expression: false
|
||||
- identifiers:
|
||||
name: default-recovery-skip-if-restored
|
||||
id: default-recovery-skip-if-restored
|
||||
model: authentik_policies_expression.expressionpolicy
|
||||
attrs:
|
||||
expression: |
|
||||
return bool(request.context.get('is_restored', True))
|
||||
- identifiers:
|
||||
name: default-recovery-email
|
||||
id: default-recovery-email
|
||||
model: authentik_stages_email.emailstage
|
||||
attrs:
|
||||
use_global_settings: true
|
||||
host: localhost
|
||||
port: 25
|
||||
username: ""
|
||||
use_tls: false
|
||||
use_ssl: false
|
||||
timeout: 10
|
||||
from_address: system@authentik.local
|
||||
token_expiry: 30
|
||||
subject: authentik
|
||||
template: email/password_reset.html
|
||||
activate_user_on_success: true
|
||||
- identifiers:
|
||||
name: default-recovery-user-write
|
||||
id: default-recovery-user-write
|
||||
model: authentik_stages_user_write.userwritestage
|
||||
attrs:
|
||||
user_creation_mode: never_create
|
||||
- identifiers:
|
||||
name: default-recovery-identification
|
||||
id: default-recovery-identification
|
||||
model: authentik_stages_identification.identificationstage
|
||||
attrs:
|
||||
user_fields:
|
||||
- email
|
||||
- username
|
||||
- identifiers:
|
||||
name: default-recovery-user-login
|
||||
id: default-recovery-user-login
|
||||
model: authentik_stages_user_login.userloginstage
|
||||
- identifiers:
|
||||
name: Change your password
|
||||
id: stages-prompt-password
|
||||
model: authentik_stages_prompt.promptstage
|
||||
attrs:
|
||||
fields:
|
||||
- !KeyOf prompt-field-password
|
||||
- !KeyOf prompt-field-password-repeat
|
||||
validation_policies: []
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf default-recovery-identification
|
||||
order: 10
|
||||
model: authentik_flows.flowstagebinding
|
||||
id: flow-binding-identification
|
||||
attrs:
|
||||
evaluate_on_plan: true
|
||||
re_evaluate_policies: true
|
||||
policy_engine_mode: any
|
||||
invalid_response_action: retry
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf default-recovery-email
|
||||
order: 20
|
||||
model: authentik_flows.flowstagebinding
|
||||
id: flow-binding-email
|
||||
attrs:
|
||||
evaluate_on_plan: true
|
||||
re_evaluate_policies: true
|
||||
policy_engine_mode: any
|
||||
invalid_response_action: retry
|
||||
- identifiers:
|
||||
pk: 1219d06e-2c06-4c5b-a162-78e3959c6cf0
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf stages-prompt-password
|
||||
order: 30
|
||||
model: authentik_flows.flowstagebinding
|
||||
attrs:
|
||||
evaluate_on_plan: true
|
||||
re_evaluate_policies: false
|
||||
policy_engine_mode: any
|
||||
invalid_response_action: retry
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf default-recovery-user-write
|
||||
order: 40
|
||||
model: authentik_flows.flowstagebinding
|
||||
attrs:
|
||||
evaluate_on_plan: true
|
||||
re_evaluate_policies: false
|
||||
policy_engine_mode: any
|
||||
invalid_response_action: retry
|
||||
- identifiers:
|
||||
target: !KeyOf flow
|
||||
stage: !KeyOf default-recovery-user-login
|
||||
order: 100
|
||||
model: authentik_flows.flowstagebinding
|
||||
attrs:
|
||||
evaluate_on_plan: true
|
||||
re_evaluate_policies: false
|
||||
policy_engine_mode: any
|
||||
invalid_response_action: retry
|
||||
- identifiers:
|
||||
policy: !KeyOf default-recovery-skip-if-restored
|
||||
target: !KeyOf flow-binding-identification
|
||||
order: 0
|
||||
model: authentik_policies.policybinding
|
||||
attrs:
|
||||
negate: false
|
||||
enabled: true
|
||||
timeout: 30
|
||||
- identifiers:
|
||||
policy: !KeyOf default-recovery-skip-if-restored
|
||||
target: !KeyOf flow-binding-email
|
||||
order: 0
|
||||
state: absent
|
||||
model: authentik_policies.policybinding
|
||||
attrs:
|
||||
negate: false
|
||||
enabled: true
|
||||
timeout: 30
|
20
mycloud-authentik/blueprints/tenant.gotmpl
Normal file
20
mycloud-authentik/blueprints/tenant.gotmpl
Normal file
|
@ -0,0 +1,20 @@
|
|||
version: 1
|
||||
metadata:
|
||||
name: myCloud - tenant
|
||||
entries:
|
||||
- model: authentik_tenants.tenant
|
||||
identifiers:
|
||||
domain: "authentik-default"
|
||||
state: present
|
||||
attrs:
|
||||
{{- with .Values.commons.theme }}
|
||||
branding_title: {{ .title }}
|
||||
branding_logo: {{ .logo }}
|
||||
branding_favicon: {{ .favicon }}
|
||||
{{- end }}
|
||||
{{- with .Values.theme.background }}
|
||||
attributes:
|
||||
settings:
|
||||
theme:
|
||||
background: {{ . | quote }}
|
||||
{{- end }}
|
11
mycloud-authentik/templates/configmap_blueprints.yaml
Normal file
11
mycloud-authentik/templates/configmap_blueprints.yaml
Normal file
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-provisioning-blueprints
|
||||
labels:
|
||||
goauthentik_blueprint: "1"
|
||||
data:
|
||||
tenant.yaml: |
|
||||
{{- tpl (.Files.Get "blueprints/tenant.gotmpl") . | nindent 4 }}
|
||||
{{- (.Files.Glob "blueprints/*.yaml").AsConfig | nindent 2 }}
|
14
mycloud-authentik/templates/configmap_init_crd.yaml
Normal file
14
mycloud-authentik/templates/configmap_init_crd.yaml
Normal file
|
@ -0,0 +1,14 @@
|
|||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-init
|
||||
namespace: "{{ .Values.init.namespace }}"
|
||||
data:
|
||||
{{- if and
|
||||
(.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/PrometheusRule")
|
||||
(.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/ServiceMonitor")
|
||||
}}
|
||||
init: "-1"
|
||||
{{- else }}
|
||||
init: "{{ add1 .Values.init.version }}"
|
||||
{{- end }}
|
22
mycloud-authentik/templates/middleware-outposts.yaml
Normal file
22
mycloud-authentik/templates/middleware-outposts.yaml
Normal file
|
@ -0,0 +1,22 @@
|
|||
{{- if (.Capabilities.APIVersions.Has "traefik.containo.us/v1alpha1/Middleware") }}
|
||||
apiVersion: traefik.containo.us/v1alpha1
|
||||
kind: Middleware
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-outpost
|
||||
spec:
|
||||
forwardAuth:
|
||||
address: http://{{ .Release.Name }}.{{ .Release.Namespace}}.svc/outpost.goauthentik.io/auth/traefik
|
||||
trustForwardHeader: true
|
||||
authResponseHeaders:
|
||||
- X-authentik-username
|
||||
- X-authentik-groups
|
||||
- X-authentik-email
|
||||
- X-authentik-name
|
||||
- X-authentik-uid
|
||||
- X-authentik-jwt
|
||||
- X-authentik-meta-jwks
|
||||
- X-authentik-meta-outpost
|
||||
- X-authentik-meta-provider
|
||||
- X-authentik-meta-app
|
||||
- X-authentik-meta-version
|
||||
{{- end }}
|
128
mycloud-authentik/templates/release.yaml
Normal file
128
mycloud-authentik/templates/release.yaml
Normal file
|
@ -0,0 +1,128 @@
|
|||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: "{{ .Release.Name }}-hr"
|
||||
spec:
|
||||
chart:
|
||||
spec:
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: "authentik"
|
||||
chart: "authentik"
|
||||
interval: 10m
|
||||
install:
|
||||
{{- toYaml .Values.commons.helm.release.install | nindent 4 }}
|
||||
test:
|
||||
{{- toYaml .Values.commons.helm.release.test | nindent 4 }}
|
||||
upgrade:
|
||||
{{- toYaml .Values.commons.helm.release.upgrade | nindent 4 }}
|
||||
interval: 10m
|
||||
values:
|
||||
authentik:
|
||||
secret_key: {{ .Values.secret_key | default (derivePassword 1 "long" .Values.commons.masterPassword "authentik" "secret_key") | quote }}
|
||||
avatars: "none"
|
||||
postgresql:
|
||||
host: {{ .Values.database.host | quote }}
|
||||
name: {{ .Values.database.name | quote }}
|
||||
user: {{ .Values.database.username | quote }}
|
||||
password: {{ .Values.database.password | default (derivePassword 1 "long" .Values.commons.masterPassword "authentik" "database_password") | quote }}
|
||||
email:
|
||||
host: {{ .Values.commons.mail.host | quote }}
|
||||
username: {{ .Values.commons.mail.username | quote }}
|
||||
password: {{ .Values.commons.mail.password | quote }}
|
||||
use_tls: {{ .Values.commons.mail.use_tls }}
|
||||
use_ssl: {{ .Values.commons.mail.use_ssl }}
|
||||
from: {{ .Values.mail.from | default (printf "[%s] %s <%s>" .Values.commons.theme.title "authentik" .Values.commons.mail.from) | quote }}
|
||||
|
||||
redis:
|
||||
enabled: true
|
||||
architecture: replication
|
||||
replica:
|
||||
replicaCount: 1
|
||||
metrics:
|
||||
enabled: true
|
||||
serviceMonitor:
|
||||
enabled: {{ (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/ServiceMonitor") }}
|
||||
additionalLabels:
|
||||
{{- toYaml .Values.commons.prometheus.monitor.labels | nindent 12 }}
|
||||
prometheusRule:
|
||||
# empty rules
|
||||
enabled: false
|
||||
# {{ (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/PrometheusRule") }}
|
||||
additionalLabels:
|
||||
{{- toYaml .Values.commons.prometheus.rules.labels | nindent 12 }}
|
||||
rules: []
|
||||
|
||||
postgresql:
|
||||
enabled: false
|
||||
|
||||
prometheus:
|
||||
serviceMonitor:
|
||||
create: {{ (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/ServiceMonitor") }}
|
||||
labels:
|
||||
{{- toYaml .Values.commons.prometheus.monitor.labels | nindent 10 }}
|
||||
rules:
|
||||
create: {{ (.Capabilities.APIVersions.Has "monitoring.coreos.com/v1/PrometheusRule") }}
|
||||
labels:
|
||||
{{- toYaml .Values.commons.prometheus.rules.labels | nindent 10 }}
|
||||
|
||||
{{- $host := .Values.ingress.host | default (printf "auth.%s" .Values.commons.ingress.domain) }}
|
||||
ingress:
|
||||
enabled: true
|
||||
annotations:
|
||||
{{- with .Values.commons.ingress.annotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
hosts:
|
||||
- host: "{{ $host }}"
|
||||
paths:
|
||||
- path: "/"
|
||||
pathType: "Prefix"
|
||||
{{- if .Values.commons.ingress.tls.enabled }}
|
||||
tls:
|
||||
{{- with .Values.commons.ingress.tls.override }}
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- else }}
|
||||
- secretName: "mycloud-authentik-cert"
|
||||
hosts:
|
||||
- "{{ $host }}"
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
#
|
||||
# https://github.com/goauthentik/helm/pull/146
|
||||
#
|
||||
serviceAccount:
|
||||
create: true
|
||||
|
||||
additionalContainers:
|
||||
- name: sidecar-blueprints
|
||||
image: "ghcr.io/kiwigrid/k8s-sidecar:1.25.1"
|
||||
env:
|
||||
- name: "FOLDER"
|
||||
value: "/blueprints/sidecar"
|
||||
- name: "LABEL"
|
||||
value: "goauthentik_blueprint"
|
||||
- name: "LABEL_VALUE"
|
||||
value: "1"
|
||||
# - name: "NAMESPACE"
|
||||
# value: "ALL"
|
||||
- name: "RESOURCE"
|
||||
value: "both"
|
||||
- name: "UNIQUE_FILENAMES"
|
||||
value: "true"
|
||||
volumeMounts:
|
||||
- name: sidecar-blueprints
|
||||
mountPath: /blueprints/sidecar
|
||||
|
||||
volumeMounts:
|
||||
- name: sidecar-blueprints
|
||||
mountPath: /blueprints/sidecar
|
||||
|
||||
volumes:
|
||||
- name: sidecar-blueprints
|
||||
emptyDir: {}
|
8
mycloud-authentik/templates/repo.yaml
Normal file
8
mycloud-authentik/templates/repo.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
apiVersion: source.toolkit.fluxcd.io/v1beta2
|
||||
kind: HelmRepository
|
||||
metadata:
|
||||
name: authentik
|
||||
spec:
|
||||
url: https://charts.goauthentik.io
|
||||
interval: 10m0s
|
11
mycloud-authentik/templates/role-binding.yaml
Normal file
11
mycloud-authentik/templates/role-binding.yaml
Normal file
|
@ -0,0 +1,11 @@
|
|||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: RoleBinding
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-blueprint-sidecar
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: Role
|
||||
name: {{ .Release.Name }}-blueprint-sidecar
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: {{ .Release.Name }}-hr
|
9
mycloud-authentik/templates/role.yaml
Normal file
9
mycloud-authentik/templates/role.yaml
Normal file
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
kind: Role
|
||||
metadata:
|
||||
name: {{ .Release.Name }}-blueprint-sidecar
|
||||
rules:
|
||||
- apiGroups: [""]
|
||||
resources: ["configmaps", "secrets"]
|
||||
verbs: ["get", "watch", "list"]
|
65
mycloud-authentik/values.yaml
Normal file
65
mycloud-authentik/values.yaml
Normal file
|
@ -0,0 +1,65 @@
|
|||
init:
|
||||
version: 0
|
||||
namespace: "bases"
|
||||
|
||||
commons:
|
||||
masterPassword: "CHANGEME"
|
||||
theme:
|
||||
title: myCloud
|
||||
logo: /static/dist/assets/icons/icon_left_brand.svg
|
||||
favicon: /static/dist/assets/icons/icon.png
|
||||
|
||||
mail:
|
||||
host:
|
||||
username:
|
||||
password:
|
||||
from:
|
||||
use_tls: false
|
||||
use_ssl: false
|
||||
|
||||
helm:
|
||||
release:
|
||||
install: {}
|
||||
test: {}
|
||||
upgrade: {}
|
||||
|
||||
ingress:
|
||||
domain: "wrenix.eu"
|
||||
annotations:
|
||||
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||
tls:
|
||||
# -- tls on every ingress
|
||||
enabled: true
|
||||
# -- use own definition of tls (e.g. for own or wildcard certificate)
|
||||
override:
|
||||
|
||||
prometheus:
|
||||
monitor:
|
||||
labels: {}
|
||||
rules:
|
||||
labels: {}
|
||||
|
||||
|
||||
# -- generated by .Values.commons.masterPassword
|
||||
secret_key:
|
||||
|
||||
ingress:
|
||||
# -- default: auth.(Values.commons.ingress.domain)
|
||||
host:
|
||||
annotations:
|
||||
|
||||
database:
|
||||
# -- default is from mysql-services
|
||||
host: mycloud-services-postgresql
|
||||
name: authentik
|
||||
username: authentik
|
||||
# -- generated by .Values.commons.masterPassword (equal to mycloud-services)
|
||||
password:
|
||||
|
||||
mail:
|
||||
# -- generade by Values.commons.mail.from
|
||||
from:
|
||||
# other settings are taken from commons
|
||||
|
||||
theme:
|
||||
background:
|
23
mycloud-services/.helmignore
Normal file
23
mycloud-services/.helmignore
Normal file
|
@ -0,0 +1,23 @@
|
|||
# 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
|
||||
*.orig
|
||||
*~
|
||||
# Various IDEs
|
||||
.project
|
||||
.idea/
|
||||
*.tmproj
|
||||
.vscode/
|
24
mycloud-services/Chart.yaml
Normal file
24
mycloud-services/Chart.yaml
Normal file
|
@ -0,0 +1,24 @@
|
|||
apiVersion: v2
|
||||
name: mycloud-services
|
||||
description: A Helm chart for Kubernetes
|
||||
|
||||
# A chart can be either an 'application' or a 'library' chart.
|
||||
#
|
||||
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||
# to be deployed.
|
||||
#
|
||||
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||
type: application
|
||||
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 0.1.0
|
||||
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
# It is recommended to use it with quotes.
|
||||
appVersion: "1.16.0"
|
47
mycloud-services/templates/postgresql/release.yaml
Normal file
47
mycloud-services/templates/postgresql/release.yaml
Normal file
|
@ -0,0 +1,47 @@
|
|||
---
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: mycloud-services-postgresql
|
||||
spec:
|
||||
chart:
|
||||
spec:
|
||||
sourceRef:
|
||||
kind: GitRepository
|
||||
name: "wrenix-helm-charts"
|
||||
namespace: "flux-system"
|
||||
chart: "./postgresql"
|
||||
reconcileStrategy: "Revision"
|
||||
interval: 10m
|
||||
releaseName: mycloud-services-postgresql
|
||||
install:
|
||||
{{- toYaml .Values.commons.helm.release.install | nindent 4 }}
|
||||
test:
|
||||
{{- toYaml .Values.commons.helm.release.test | nindent 4 }}
|
||||
upgrade:
|
||||
{{- toYaml .Values.commons.helm.release.upgrade | nindent 4 }}
|
||||
interval: 10m
|
||||
valuesFrom:
|
||||
- kind: Secret
|
||||
name: mycloud-services-postgresql
|
||||
values:
|
||||
persistence:
|
||||
size: {{ .Values.postgresql.persistence.size }}
|
||||
{{- with .Values.postgresql.persistence.storageClass | default .Values.commons.persistence.storageClass }}
|
||||
storageClass: {{ . }}
|
||||
{{- end }}
|
||||
{{- if .Values.commons.persistence.hostPath.enabled }}
|
||||
hostPath: "{{ .Values.commons.persistence.hostPath.prefix }}/services/postgresql"
|
||||
{{- end }}
|
||||
|
||||
postgres:
|
||||
password: {{ .Values.postgresql.password | default (derivePassword 1 "long" .Values.commons.masterPassword "services" "postgresql_password") | quote }}
|
||||
|
||||
job:
|
||||
databases:
|
||||
{{- range $database, $config := .Values.databases }}
|
||||
{{- if (eq $config.type "postgresql") }}
|
||||
{{ $database }}:
|
||||
owner: {{ $config.username | default $database }}
|
||||
{{- end }}
|
||||
{{- end }}
|
14
mycloud-services/templates/postgresql/secrets.yaml
Normal file
14
mycloud-services/templates/postgresql/secrets.yaml
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
apiVersion: v1
|
||||
kind: Secret
|
||||
metadata:
|
||||
name: mycloud-services-postgresql
|
||||
stringData:
|
||||
values.yaml: |
|
||||
job:
|
||||
users:
|
||||
{{- range $database, $config := .Values.databases }}
|
||||
{{- if (eq $config.type "postgresql") }}
|
||||
{{ $config.username | default $database }}: {{ $config.password | default (derivePassword 1 "long" $.Values.commons.masterPassword $database "database_password") | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
31
mycloud-services/values.yaml
Normal file
31
mycloud-services/values.yaml
Normal file
|
@ -0,0 +1,31 @@
|
|||
commons:
|
||||
masterPassword: "CHANGEME"
|
||||
|
||||
persistence:
|
||||
storageClass:
|
||||
hostPath:
|
||||
enabled: false
|
||||
prefix: "/var/lib/mycloud"
|
||||
|
||||
helm:
|
||||
release:
|
||||
install: {}
|
||||
test: {}
|
||||
upgrade: {}
|
||||
|
||||
postgresql:
|
||||
persistence:
|
||||
storageClass:
|
||||
size: "10G"
|
||||
# -- root
|
||||
password:
|
||||
|
||||
# -- create databases
|
||||
databases:
|
||||
example:
|
||||
# -- database type (current only "postgresql" is supported)
|
||||
type: none
|
||||
# -- username default like database
|
||||
username: example-password
|
||||
# -- if not set generated by .Values.commons.masterPassword and databasename
|
||||
password:
|
Loading…
Add table
Reference in a new issue