keycloak - Kubernetes Keycloak 高可用集群
问题描述
我正在尝试在具有多个副本的 Kubernetes 中部署 Keycloak。我正在使用带有最新 Kubernetes 的 Helm 3.0 图表。当我的状态集中有一个副本时,它部署得很好——但我需要高可用性,因此至少需要两个副本。到目前为止,它只适用于一个副本。使用两个副本,我无法以管理员或普通用户身份登录。
有人可以为我提供支持多个副本的 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
解决方案
这是 keycloak 的掌舵图 - https://github.com/codecentric/helm-charts/tree/master/charts/keycloak我们正在使用它部署具有 3 个副本的 HA 模式 keycloak。
推荐阅读
- node.js - 如何将 swift 应用程序连接到套接字 io 服务器
- android - overScrollMode - PreferenceScreen 中没有
- apache - Apache 是否可以在运行 PHP/Perl 脚本时向客户端发送“暂停”或“等待”响应?
- angular - 如何在 localhost 中使用 Angular 和 Cloud Firebase 功能
- php - PHP随机数不重复
- javascript - 即使我使用了 PROMISE 和 ASYNC/AWAIT 结构,我也无法访问数据
- spring - 在百里香中发送图像
- angular - 工具栏或 Ckeditor 5 的任何其他部分的配置未反映在 UI 中
- python - 如何查找url多个参数并更改值?
- reactjs - 用多个上下文包装组件的更好方法