This commit is contained in:
2026-01-19 16:24:02 +01:00
commit ce8bd8d64e
8 changed files with 130 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
secrets.txt

7
ENVDB Normal file
View File

@@ -0,0 +1,7 @@
DBNAMESPACE=database1
DEPLOYNAME=database
PGUSER=`kubectl get secret -n $DBNAMESPACE $DEPLOYNAME -o jsonpath="{.data.superuser-username}" | base64 --decode`
PGHOST=`kubectl get services $DEPLOYNAME -n $DBNAMESPACE -o jsonpath="{.status.loadBalancer.ingress[0].ip}"`
PGPASSWORD=`kubectl get secret -n $DBNAMESPACE $DEPLOYNAME -o jsonpath="{.data.superuser-password}" | base64 --decode`
PGSSLMODE=require
export PGUSER PGHOST PGPASSWORD PGSSLMODE

4
encrypt-secrets.sh Executable file
View File

@@ -0,0 +1,4 @@
#!/bin/bash
gpg --pinentry-mode=loopback --symmetric --cipher-algo AES256 --armor --output secrets.asc secrets.txt

25
install.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/bash
VERSION=0.13.0
NAMESPACE=$(cat namespace)
. ./ENVDB
kubectl create namespace $NAMESPACE || echo "namespace already exists"
SECRETS_PLAINTEXT=$(mktemp)
gpg --pinentry-mode=loopback --decrypt --output $SECRETS_PLAINTEXT secrets.asc
kubectl create secret generic keycloak-secrets \
--from-env-file=$SECRETS_PLAINTEXT \
--dry-run=client -o yaml | \
kubectl apply -f - -n $NAMESPACE
rm $SECRETS_PLAINTEXT
./roll-db-credential.sh
helm upgrade --install keycloak2 -f values.yml oci://registry-1.docker.io/cloudpirates/keycloak --version $VERSION --namespace=$NAMESPACE

1
namespace Normal file
View File

@@ -0,0 +1 @@
keycloak2

32
roll-db-credential.sh Executable file
View File

@@ -0,0 +1,32 @@
#!/bin/bash
DBNAMESPACE=database1
DEPLOYNAME=database
PGUSER=`kubectl get secret -n $DBNAMESPACE $DEPLOYNAME -o jsonpath="{.data.superuser-username}" | base64 --decode`
PGHOST=`kubectl get services $DEPLOYNAME -n $DBNAMESPACE -o jsonpath="{.status.loadBalancer.ingress[0].ip}"`
PGPASSWORD=`kubectl get secret -n $DBNAMESPACE $DEPLOYNAME -o jsonpath="{.data.superuser-password}" | base64 --decode`
PGSSLMODE=require
export PGUSER PGHOST PGPASSWORD PGSSLMODE
DB_USER=keycloak2
DB_PASSWD=$(openssl rand -base64 24)
NAMESPACE=$(cat namespace)
psql <<EOF
ALTER USER $DB_USER WITH PASSWORD '$DB_PASSWD';
COMMIT;
EOF
kubectl create secret generic keycloak-database-secrets \
--dry-run=client \
-o yaml \
--save-config \
--from-literal=DB_USER="$DB_USER" \
--from-literal=DB_PASSWD="$DB_PASSWD" | \
kubectl apply -f - -n $NAMESPACE

8
secrets.asc Normal file
View File

@@ -0,0 +1,8 @@
-----BEGIN PGP MESSAGE-----
jA0ECQMI/JoRd9hK84Py0pABGay2SogOsfkuNf8tcVVrP+ububBWB/ecdrmfHwQ0
PhXDzjgDwW8kCWuXYyGlp6aQ4vmcHvAt0mJDLrCfoS118S9SLEhJVbwlttrVCfEv
45AlaI6pn+xtd+Qw4icqI+13L4v5D36H4ZI9qybU5eELZm5dqcoedt5oGrm+jESr
kNTGwdeywqWDRczw/p60nWg=
=u8NB
-----END PGP MESSAGE-----

51
values.yml Normal file
View File

@@ -0,0 +1,51 @@
database:
type: postgres
host: database.database1.svc.cluster.local
name: keycloak2
existingSecret: keycloak-database-secrets
secretKeys:
passwordKey: DB_PASSWD
usernameKey: DB_USER
keycloak:
production: true
hostname: auth.hottis.de
adminUser: admin
existingSecret: keycloak-secrets
secretKeys:
adminPasswordKey: ADMIN_PASSWORD
httpEnabled: true
httpsEnabled: false
proxyHeaders: xforwarded
commonAnnotations:
secret.reloader.stakater.com/reload: "keycloak-secrets, keycloak-database-secrets"
ingress:
enabled: true
className: "traefik"
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-staging-http"
hosts:
- host: auth.hottis.de
paths:
- path: /
pathType: Prefix
tls:
- secretName: keycloak-tls
hosts:
- auth.hottis.de
persistence:
enabled: true
storageClass: nfs-client
tls:
enabled: false
postgres:
enabled: false