feat: update kanidm replicaiton (#169)
- split to per-server configs - remove init containers that attempted to automate the replication config - add README.md Reviewed-on: #169
This commit was merged in pull request #169.
This commit is contained in:
@@ -36,24 +36,10 @@ spec:
|
||||
fsGroup: 1000
|
||||
initContainers:
|
||||
- name: config-init
|
||||
image: kanidm/server:1.10.3
|
||||
image: busybox:1.36
|
||||
command: ["/bin/sh", "-c"]
|
||||
args:
|
||||
- |
|
||||
set -e
|
||||
REPL_ORIGIN="repl://${POD_NAME}.kanidm-headless.kanidm.svc.cluster.local:8444"
|
||||
sed "s|__REPL_ORIGIN__|${REPL_ORIGIN}|g" /config-template/server.toml > /config/server.toml
|
||||
for peer in kanidm-0 kanidm-1 kanidm-2; do
|
||||
if [ "${peer}" = "${POD_NAME}" ]; then
|
||||
continue
|
||||
fi
|
||||
cert_file="/repl-certs/${peer}"
|
||||
if [ -s "${cert_file}" ]; then
|
||||
fqdn="${peer}.kanidm-headless.kanidm.svc.cluster.local"
|
||||
printf '\n[replication."repl://%s:8444"]\ntype = "mutual-pull"\npartner_cert = "%s"\n' \
|
||||
"${fqdn}" "$(cat ${cert_file})" >> /config/server.toml
|
||||
fi
|
||||
done
|
||||
- cp "/config-template/server-${POD_NAME##*-}.toml" /config/server.toml
|
||||
env:
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
@@ -62,41 +48,12 @@ spec:
|
||||
volumeMounts:
|
||||
- name: config-template
|
||||
mountPath: /config-template
|
||||
readOnly: true
|
||||
- name: config
|
||||
mountPath: /config
|
||||
- name: repl-certs
|
||||
mountPath: /repl-certs
|
||||
readOnly: true
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: true
|
||||
- name: repl-cert-publisher
|
||||
image: bitnami/kubectl:1.33
|
||||
restartPolicy: Always
|
||||
command: ["/bin/sh", "-c"]
|
||||
args:
|
||||
- |
|
||||
until kubectl exec "${POD_NAME}" -c kanidm -- /sbin/kanidmd renew-replication-certificate 2>/dev/null | grep -q '^# certificate:'; do
|
||||
sleep 30
|
||||
done
|
||||
while true; do
|
||||
cert=$(kubectl exec "${POD_NAME}" -c kanidm -- /sbin/kanidmd renew-replication-certificate 2>/dev/null \
|
||||
| grep '^# certificate:' | sed 's/^# certificate: "\(.*\)"$/\1/')
|
||||
if [ -n "${cert}" ]; then
|
||||
kubectl patch configmap kanidm-repl-certs \
|
||||
--type=merge \
|
||||
-p "{\"data\":{\"${POD_NAME}\":\"${cert}\"}}"
|
||||
fi
|
||||
sleep 3600
|
||||
done
|
||||
env:
|
||||
- name: POD_NAME
|
||||
valueFrom:
|
||||
fieldRef:
|
||||
fieldPath: metadata.name
|
||||
securityContext:
|
||||
allowPrivilegeEscalation: false
|
||||
readOnlyRootFilesystem: false
|
||||
containers:
|
||||
- name: kanidm
|
||||
image: kanidm/server:1.10.3
|
||||
@@ -144,9 +101,6 @@ spec:
|
||||
name: kanidm-config
|
||||
- name: config
|
||||
emptyDir: {}
|
||||
- name: repl-certs
|
||||
configMap:
|
||||
name: kanidm-repl-certs
|
||||
- name: tls
|
||||
secret:
|
||||
secretName: kanidm-tls
|
||||
|
||||
Reference in New Issue
Block a user