我们的微服务使用Dubbo来作为rpc通信框架,Dubbo需要一个注册中心作为register。本文介绍如何使用ArgoCD在K8S集群中部署Zookeeper注册中心。
一、环境
- 已经搭建了多个K8S集群,一个集群对应一个环境
- 集群中安装了ArgoCD
二、部署
github上找到如下可以直接通过Helm Charts进行安装的资源
这里有两个文件夹,分别对应两种安装方式。
zookeeper-operator 是一个K8S自定义资源来方便安装zookeeper集群,我们可以通过ArgoCD将zookeeper-operator纳管,然后通过编写一个CR来迅速安装一套zookeeper集群。
CR样例如下:
apiVersion: zookeeper.pravega.io/v1beta1
kind: ZookeeperCluster
metadata:
name: zookeeper
spec:
replicas: 3
image:
repository: pravega/zookeeper
tag: 0.2.13
storageType: persistence
persistence:
reclaimPolicy: Delete
spec:
storageClassName: "rbd"
resources:
requests:
storage: 8Gi
下面介绍使用zookeeper文件夹来安装一套zookeeper集群。
下载代码拷贝到配置仓
git clone https://github.com/pravega/zookeeper-operator.git
拷贝zookeeper文件夹下的内容到配置仓
创建Application进行纳管
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: zookeeper
namespace: argocd
spec:
destination:
namespace: zk
server: https://kubernetes.default.svc
project: devops
source:
path: zookeeper
repoURL: https://xxxxxx.git
targetRevision: HEAD
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
selfHeal: false
prune: false
修改values进行zookeeper配置修改
adminServerService:
# annotations: {}
external: true
clientService: {}
# annotations: {}
headlessService: {}
# annotations: {}
我发现只有adminServerService支持对外暴露访问,clientService并不支持。不知道是怎么回事?
本地连接
- 使用端口转发来访问集群中的应用
kubectl port-forward -n zk zookeeper-0 2181:2181
-
获取客户端连接脚本 下载zookeeper的安装包, 我们找到 apache-zookeeper-3.7.0-bin/bin/zkCli.sh 这个客户端连接脚本。
-
客户端脚本连接
apache-zookeeper-3.7.0-bin/bin/zkCli.sh -server localhost:2181