转自: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 中的部署