手把手带你玩转ArgoCD --- 部署 Zookeeper

1,221 阅读1分钟

我们的微服务使用Dubbo来作为rpc通信框架,Dubbo需要一个注册中心作为register。本文介绍如何使用ArgoCD在K8S集群中部署Zookeeper注册中心。

一、环境

  1. 已经搭建了多个K8S集群,一个集群对应一个环境
  2. 集群中安装了ArgoCD

二、部署

github上找到如下可以直接通过Helm Charts进行安装的资源

github.com/pravega/zoo…

image.png

这里有两个文件夹,分别对应两种安装方式。

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

文章参考