apiVersion: apps/v1 kind: Deployment metadata: name: keycloak annotations: argocd.argoproj.io/sync-wave: "3" spec: replicas: 1 selector: matchLabels: app: keycloak template: metadata: labels: app: keycloak spec: serviceAccountName: keycloak securityContext: runAsNonRoot: true seccompProfile: type: RuntimeDefault containers: - name: keycloak image: quay.io/keycloak/keycloak:26.5.5@sha256:a7b0cb7a43a1235a61872883414d3f1d9a3ceac9df6e5907bd12202778a6265c args: - start-dev - --import-realm - --http-port=8080 ports: - containerPort: 8080 name: http - containerPort: 9000 name: management env: - name: KC_DB value: postgres - name: KC_DB_URL value: jdbc:postgresql://postgres:5432/keycloak - name: KC_DB_USERNAME valueFrom: configMapKeyRef: name: auth-system-config key: KEYCLOAK_DB_USER - name: KC_DB_PASSWORD valueFrom: secretKeyRef: name: postgres-keycloak-credentials key: KEYCLOAK_DB_PASSWORD - name: KC_HEALTH_ENABLED value: "true" - name: KC_BOOTSTRAP_ADMIN_USERNAME valueFrom: configMapKeyRef: name: auth-system-config key: KEYCLOAK_BOOTSTRAP_ADMIN_USERNAME - name: KC_BOOTSTRAP_ADMIN_PASSWORD valueFrom: secretKeyRef: name: keycloak-bootstrap-admin key: KEYCLOAK_BOOTSTRAP_ADMIN_PASSWORD volumeMounts: - name: keycloak-realm-import mountPath: /opt/keycloak/data/import/project-auth-realm.json subPath: project-auth-realm.json readinessProbe: httpGet: path: /health/ready port: management initialDelaySeconds: 30 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 6 livenessProbe: httpGet: path: /health/live port: management initialDelaySeconds: 60 periodSeconds: 15 timeoutSeconds: 3 failureThreshold: 6 startupProbe: httpGet: path: /health/ready port: management initialDelaySeconds: 20 periodSeconds: 10 timeoutSeconds: 3 failureThreshold: 30 resources: requests: cpu: 250m memory: 768Mi limits: cpu: 1000m memory: 1536Mi securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL volumes: - name: keycloak-realm-import configMap: name: keycloak-realm-import