Кластер высокой доступности Kubernetes Keycloak - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь развернуть Keycloak в Kubernetes с несколькими репликами. Я использую диаграммы Helm 3.0 с последними версиями Kubernetes. Он отлично развертывается, когда у меня есть одна реплика в моем наборе с отслеживанием состояния, но мне нужна высокая доступность и, следовательно, как минимум две реплики. Пока работает только с одной репликой. С двумя репликами я не могу войти в систему как администратор или как обычный пользователь.

Может ли кто-нибудь предоставить мне рабочую версию развертывания Keycloak (желательно Helm), которая поддерживает несколько реплик?

  jgroups:
    discoveryProtocol: dns.DNS_PING
  jgroups:
    discoveryProtocol: Kubernetes.KUBE_PING
  jgroups:
    discoveryProtocol: JDBC_PING

Фрагмент набора с отслеживанием состояния

  apiVersion: v1
  items:
    - apiVersion: apps/v1
      kind: StatefulSet
      metadata:
       ...
        labels:
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/name: keycloak
          helm.sh/chart: keycloak-7.5.0
        name: ...
        namespace: default

      spec:
        podManagementPolicy: Parallel
        replicas: 2
        revisionHistoryLimit: 10
        ...
            containers:
              - command:
                  - /scripts/keycloak.sh
                env:
                  ...
                livenessProbe:
                  failureThreshold: 3
                  httpGet:
                    path: /auth/
                    port: http
                    scheme: HTTP
                  initialDelaySeconds: 300
                  periodSeconds: 10
                  successThreshold: 1
                  timeoutSeconds: 5
                name: keycloak
                ports:
                 ...
                readinessProbe:
                  failureThreshold: 3
                  httpGet:
                    path: /auth/realms/master
                    port: http
                    scheme: HTTP
                  initialDelaySeconds: 30
                  periodSeconds: 10
                  successThreshold: 1
                  timeoutSeconds: 1

                  - name: POSTGRES_DB
                    value: keycloak
                  - name: POSTGRESQL_ENABLE_LDAP
                    value: "no"
                image: docker.io/bitnami/postgresql:12.2.0-debian-10-r91
                imagePullPolicy: IfNotPresent
                livenessProbe:
                  exec:
                    command:
                      - /bin/sh
                      - -c
                      - exec pg_isready -U "keycloak" -d "keycloak" -h 127.0.0.1 -p 5432
                  failureThreshold: 6
                  initialDelaySeconds: 30
                  periodSeconds: 10
                  successThreshold: 1
                  timeoutSeconds: 5
                name: bizmall-postgresql
                ports:
                  - containerPort: 5432
                    name: tcp-postgresql
                    protocol: TCP
                readinessProbe:
                  exec:
                    command:
                      - /bin/sh
                      - -c
                      - -e
                      - |
                        exec pg_isready -U "keycloak" -d "keycloak" -h 127.0.0.1 -p 5432
                        [ -f /opt/bitnami/postgresql/tmp/.initialized ] || [ -f /bitnami/postgresql/.initialized ]
                  failureThreshold: 6
                  initialDelaySeconds: 5
                  periodSeconds: 10
                  successThreshold: 1
                  timeoutSeconds: 5
                resources:
                  requests:
                    cpu: 250m
                    memory: 256Mi
                securityContext:
                  runAsUser: 1001
                terminationMessagePath: /dev/termination-log
                terminationMessagePolicy: File
                volumeMounts:
                  - mountPath: /dev/shm
                    name: dshm
                  - mountPath: /bitnami/postgresql
                    name: data
            dnsPolicy: ClusterFirst
            restartPolicy: Always
            schedulerName: default-scheduler
            securityContext:
              fsGroup: 1001
            terminationGracePeriodSeconds: 30

1 Ответ

0 голосов
/ 22 мая 2020

Вот таблица руля для keycloak - https://github.com/codecentric/helm-charts/tree/master/charts/keycloak мы используем его, разворачиваем keycloak в режиме HA с 3 репликами.

...