initial
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
secrets.txt
|
||||||
|
|
||||||
7
ENVDB
Normal file
7
ENVDB
Normal 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
4
encrypt-secrets.sh
Executable 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
25
install.sh
Executable 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
|
||||||
|
|
||||||
|
|
||||||
32
roll-db-credential.sh
Executable file
32
roll-db-credential.sh
Executable 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
8
secrets.asc
Normal 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
51
values.yml
Normal 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user