apiVersion: v1 kind: Secret metadata: name: keycloak-credentials namespace: keycloak type: Opaque stringData: username: admin password: ${KEYCLOAK_ADMIN_PASSWORD:-change-me} --- apiVersion: apps/v1 kind: Deployment metadata: name: keycloak namespace: keycloak spec: replicas: 1 selector: matchLabels: app: keycloak template: metadata: labels: app: keycloak spec: containers: - name: keycloak image: quay.io/keycloak/keycloak:23.0 args: - start - --optimized - --db=postgres - --db-url-host=keycloak-postgres - --db-url-port=5432 - --db-username=$(DB_USERNAME) - --db-password=$(DB_PASSWORD) - --db-url-database=keycloak - --http-relative-path=/ - --proxy-headers=xforwarded - --hostname-strict=false - --hostname-strict-https=false env: - name: KEYCLOAK_ADMIN valueFrom: secretKeyRef: name: keycloak-credentials key: username - name: KEYCLOAK_ADMIN_PASSWORD valueFrom: secretKeyRef: name: keycloak-credentials key: password - name: DB_USERNAME valueFrom: secretKeyRef: name: keycloak-db-credentials key: username - name: DB_PASSWORD valueFrom: secretKeyRef: name: keycloak-db-credentials key: password - name: KEYCLOAK_MULTI_REALM value: "true" ports: - containerPort: 8080 name: http - containerPort: 8443 name: https livenessProbe: httpGet: path: /health/live port: 8080 initialDelaySeconds: 60 periodSeconds: 30 readinessProbe: httpGet: path: /health/ready port: 8080 initialDelaySeconds: 60 periodSeconds: 30 resources: requests: memory: "512Mi" cpu: "500m" limits: memory: "1Gi" cpu: "1000m" --- apiVersion: v1 kind: Service metadata: name: keycloak namespace: keycloak spec: selector: app: keycloak ports: - port: 8080 targetPort: 8080 name: http - port: 8443 targetPort: 8443 name: https type: ClusterIP --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: keycloak namespace: keycloak annotations: cert-manager.io/cluster-issuer: letsencrypt-prod nginx.ingress.kubernetes.io/ssl-redirect: "true" spec: ingressClassName: nginx tls: - hosts: - keycloak.sankofa.nexus secretName: keycloak-tls rules: - host: keycloak.sankofa.nexus http: paths: - path: / pathType: Prefix backend: service: name: keycloak port: number: 8080