使用kube_ping进行Keycloak群集设置 - DZone Cloud
转自:https://www.jdon.com/51501
看看如何使用kube_ping和Keycloak实现自动发现?
Keycloak是一个开源软件,提供身份管理和访问管理的单点登录。Keycoak使用不同类型的ping来发现群集的其他成员。我们将使用kube_ping作为发现(JGROUPS_DISCOVERY_PROTOCOL)。
kube_ping如何运作
假设我们在默认的命名空间中在Kubernetes中启动了3个pod的集群。当发现开始时,kube_ping要求提供来自Kubernetes的所有pod的IP地址列表。
Kubernetes返回IP地址列表。kube_ping使用IP地址和端口范围向成员发送发现请求。
先决条件:
1.工作Kubernetes集群
2.正在运行的MySQL实例。
在K8s群集中创建部署对象
apiVersion: v1 items: - apiVersion: extensions/v1beta1 kind: Deployment spec: replicas: 3 template: metadata: labels: app: keycloak name: keycloak spec: containers: - env: - name: KEYCLOAK_HOSTNAME value: {{keycloak host name}} - name: KEYCLOAK_LOGLEVEL value: DEBUG - name: ROOT_LOGLEVEL value: DEBUG - name: KEYCLOAK_USER value: {{keyclock admin user}} - name: DB_VENDOR value: mysql - name: DB_ADDR value: {{mysql host}} - name: DB_USER value: {{mysql user}} - name: DB_PASSWORD value: {{mysql password}} - name: JGROUPS_DISCOVERY_PROTOCOL value: kubernetes.KUBE_PING - name: JGROUPS_DISCOVERY_PROPERTIES value: port_range=0,dump_requests=true - name: connectTimeout value: "600000" - name: KEYCLOAK_PASSWORD value: {{keyclock admin password}} - name: remoteTimeout value: "600000" image: jboss/keycloak:4.5.0 imagePullPolicy: Never name: keycloak ports: - containerPort: 8080 name: http protocol: TCP - containerPort: 8443 name: https protocol: TCP |
在K8s集群中创建服务对象:
apiVersion: v1 kind: Service metadata: name: keycloak labels: app: keycloak name: keycloak spec: type: NodePort ports: - name: http protocol: TCP port: 8080 nodePort: 30000 selector: app: keycloak name: keycloak |
这将创建Keycloak的端点。现在,Keycloak管理控制台将在http:// {{hostip}}:30000上提供。
说明: kube_ping 实际上是一个基于jgroups 开发的一个扩展,主要是方便k8s 集群内部jgroups 的使用
,更多的是方便jboss 系列基于jgroups 的应用软件在k8s 中的部署