Kubernetes
AnsibleForms aus einer ConfigMap und Secrets bereitstellen
Hängen Sie den Seed aus einer ConfigMap und seine Geheimnisse aus einem Secret ein:
apiVersion: apps/v1
kind: Deployment
metadata:
name: ansibleforms
spec:
# AF_ROLE unset : the web app and the worker in one pod. See the note below.
replicas: 1
strategy:
type: Recreate
selector:
matchLabels: { app: ansibleforms }
template:
metadata:
labels: { app: ansibleforms }
spec:
terminationGracePeriodSeconds: 120
containers:
- name: ansibleforms
image: ghcr.io/ansibleforms/ansibleforms:7
env:
- name: CONFIG_SEED_PATH
value: /seed/seed.yaml
# a ConfigMap edited in git is remounted here within about a minute and
# applied from there, so changing the seed does not roll the pod
- name: CONFIG_SEED_RELOAD_SECONDS
value: "60"
# the environment is declared here, so the settings pages must not
# write persistent/.env behind this manifest's back
- name: ALLOW_ENV_EDIT
value: "0"
envFrom:
- secretRef:
name: ansibleforms-seed-secrets # SEED_AWX_TOKEN, SEED_LDAP_PW, SEED_CHAT_API_KEY, ...
- secretRef:
name: ansibleforms-secrets # DB_PASSWORD, ENCRYPTION_SECRET, ...
volumeMounts:
- name: seed
mountPath: /seed
readOnly: true
- name: persistent
mountPath: /app/dist/persistent
livenessProbe:
# answers as long as the process runs, without asking the database
httpGet: { path: /api/v2/live, port: 8000 }
readinessProbe:
# 503 until the database answers and the schema is complete, and while stopping
httpGet: { path: /api/v2/ready, port: 8000 }
volumes:
- name: seed
configMap:
name: ansibleforms-seed
- name: persistent
persistentVolumeClaim:
claimName: ansibleforms-persistent
Ein Pod, mit nicht gesetztem
AF_ROLE. Dieser Pod führt die Web-App und den Worker in einem Prozess aus. Die Zeitpläne, das nächtliche Backup und die übrige Hintergrundarbeit laufen nur in dem Prozess, der die Worker-Sperre in der Datenbank hält, die Designer-Sperre ist eine Datenbanktabelle, und die Playbooks laufen auf einer RTE, nicht in diesem Pod. Behalten Sie trotzdemreplicas: 1mit der StrategieRecreate: Bei einem Upgrade wartet der neue Pod, bis der Worker das Schema gepatcht hat, und der alte Pod hält die Worker-Sperre, bis er anhält. Um mehrere Web-Knoten zu betreiben, teilen Sie sie inAF_ROLE=app-Knoten und einen Worker auf, wie Skalierung beschreibt.
ENCRYPTION_SECRET muss gesetzt sein, bevor Anmeldedaten eingegeben werden. Sobald die Anmeldedaten aus dem Seed kommen, ist die Datenbank im Grunde ein Cache, sodass ihr Austausch bedeutet, den Seed erneut anzuwenden, statt alles von Hand neu einzugeben.
Die beiden Probes brauchen keine Anmeldung. Unter einer BASE_URL beginnen ihre Pfade mit ihr, und Überwachung beschreibt, was jede prüft.