feat: Add full configuration

This commit is contained in:
Tanguy Herbron 2025-03-03 20:10:59 +01:00
parent 7755d71599
commit 5532fea488
8 changed files with 103 additions and 45 deletions

View File

@ -4,19 +4,7 @@ metadata:
name: zitadel-config name: zitadel-config
namespace: zitadel namespace: zitadel
data: data:
first-step.yaml: |
FirstInstance:
InstanceName: ZITADEL
Org:
Name: 'Halis'
Human:
# use the loginname root@zitadel.localhost
Username: 'admin'
Password: 'RootPassword1!'
Email:
Address: 'admin@zitadel.beta.halia.dev'
Verified: true
config.yaml: | config.yaml: |
ExternalDomain: zitadel.beta.halia.dev ExternalDomain: zitadel.halis.io
ExternalSecure: true ExternalSecure: true
ExternalPort: 443 ExternalPort: 443

View File

@ -0,0 +1,10 @@
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
name: zitadel-db-backup
namespace: zitadel
spec:
schedule: "0 0 0 * * *"
backupOwnerReference: self
cluster:
name: zitadel-db

View File

@ -5,11 +5,11 @@ metadata:
namespace: zitadel namespace: zitadel
spec: spec:
instances: 2 instances: 3
storage: storage:
size: 1Gi size: 1Gi
storageClass: redundant-storage-class storageClass: local-path
bootstrap: bootstrap:
initdb: initdb:
@ -26,6 +26,24 @@ spec:
pg_hba: pg_hba:
- host all all all md5 - host all all all md5
backup:
barmanObjectStore:
destinationPath: "s3://halis/cloudnativepg"
endpointURL: https://s3.halia.dev
s3Credentials:
accessKeyId:
name: s3-secret
key: AWS_ACCESS_KEY_ID
secretAccessKey:
name: s3-secret
key: AWS_SECRET_ACCESS_KEY
region:
name: s3-secret
key: AWS_REGION
wal:
compression: gzip
maxParallel: 8
resources: resources:
requests: requests:
cpu: 100m cpu: 100m
@ -33,3 +51,6 @@ spec:
limits: limits:
cpu: 500m cpu: 500m
memory: 500Mi memory: 500Mi
monitoring:
enablePodMonitor: true

View File

@ -1,10 +1,3 @@
# TODO
#
# Update var envs
# Create necessary secrets
# Explore volume organisation
# Test multiple replicas configuration
apiVersion: apps/v1 apiVersion: apps/v1
kind: Deployment kind: Deployment
metadata: metadata:
@ -25,7 +18,13 @@ spec:
containers: containers:
- name: zitadel - name: zitadel
image: ghcr.io/zitadel/zitadel:v2.51.3 image: ghcr.io/zitadel/zitadel:v2.51.3
command: ["/app/zitadel", "start-from-init", "--config", "/tmp/config.yaml", "--steps", "/tmp/first-step.yaml", "--masterkey", "'MasterkeyNeedsToHave32Characte'", "--tlsMode", "external"] command: [
"/app/zitadel", "start-from-init",
"--config", "/tmp/config.yaml",
"--steps", "/tmp/first-step.yaml",
"--masterkeyFromEnv",
"--tlsMode", "external"
]
ports: ports:
- containerPort: 8080 - containerPort: 8080
env: env:
@ -62,15 +61,25 @@ spec:
- name: ZITADEL_EXTERNALSECURE - name: ZITADEL_EXTERNALSECURE
value: "true" value: "true"
- name: ZITADEL_EXTERNALDOMAIN - name: ZITADEL_EXTERNALDOMAIN
value: "zitadel.beta.halia.dev" value: "zitadel.halis.io"
- name: ZITADEL_MASTERKEY
valueFrom:
secretKeyRef:
name: zitadel-masterkey
key: masterkey
- name: ZITADEL_SYSTEMDEFAULTS_PASSWORDHASHER_HASHER_COST
value: "12"
volumeMounts: volumeMounts:
- mountPath: "/tmp/config.yaml" - mountPath: "/tmp/config.yaml"
name: zitadel-config name: zitadel-config
subPath: config.yaml subPath: config.yaml
- mountPath: "/tmp/first-step.yaml" - mountPath: "/tmp/first-step.yaml"
name: zitadel-config name: zitadel-secret-config
subPath: first-step.yaml subPath: first-step.yaml
volumes: volumes:
- name: zitadel-config - name: zitadel-config
configMap: configMap:
name: zitadel-config name: zitadel-config
- name: zitadel-secret-config
secret:
secretName: zitadel-secret-config

View File

@ -1,19 +1,26 @@
apiVersion: traefik.containo.us/v1alpha1 apiVersion: networking.k8s.io/v1
kind: IngressRoute kind: Ingress
metadata: metadata:
name: zitadel-ingress name: zitadel-ingress
namespace: zitadel namespace: zitadel
annotations: annotations:
kubernetes.io/ingress.class: "traefik" cert-manager.io/cluster-issuer: letsencrypt-production
traefik.ingress.kubernetes.io/preserve-host-header: "true" kubernetes.io/ingress.class: nginx-external
acme.cert-manager.io/http01-edit-in-place: "true"
spec: spec:
entryPoints: tls:
- websecure - hosts:
routes: - zitadel.halis.io
- kind: Rule secretName: zitadel-halis-io-tls
match: Host(`zitadel.beta.halia.dev`) ingressClassName: nginx-external
services: rules:
- name: zitadel-svc - host: zitadel.halis.io
namespace: zitadel http:
port: 80 paths:
passHostHeader: true - path: /
pathType: Prefix
backend:
service:
name: zitadel-svc
port:
number: 80

View File

@ -1,13 +1,12 @@
apiVersion: kustomize.config.k8s.io/v1beta1 apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization kind: Kustomization
namespace: zitadel
resources: resources:
- namespace.yaml - namespace.yaml
- secrets.yaml
- service.yaml - service.yaml
- ingress.yaml - ingress.yaml
- database.yaml - database.yaml
- database-backup.yaml
- configmap.yaml - configmap.yaml
- deployment.yaml - deployment.yaml

View File

24
manifests/secrets.yaml Normal file
View File

@ -0,0 +1,24 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: zitadel-secrets
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
project: default
source:
repoURL: https://git.halis.io/athens-school/k3s-secrets.git
targetRevision: prod-migration
path: zitadel
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- CreateNamespace=false
- ApplyOutOfSyncOnly=true
- PruneLast=true
destination:
server: https://kubernetes.default.svc
namespace: zitadel