【clickhouse系列】使用operator-sdk快速开发clickhouse-operator

本文档介绍了如何利用operator-sdk框架创建名为ch-operator的实验性clickhouseoperator项目,旨在熟悉operator-sdk的使用,并实现ClickHouse集群在Kubernetes上的部署和管理。操作包括operator-sdk的安装、项目的目录结构解析、CRD定义以及 Helm 安装方式。ch-operator支持动态创建Zookeeper和ClickHouse集群,以及集群的弹性伸缩,同时集成了clickhouse-metrics-exporter以便监控。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ch-operator是一个基于operator-sdk框架的实验性的clickhouse operator项目,目的是为了熟悉operator-sdk框架的使用以及clickhouse集群怎样适配k8s。

operator-sdk安装

安装最新版本

brew install operator-sdk

指定版本安装

export RELEASE_VERSION=v0.13.0
curl -LO https://github.com/operator-framework/operator-sdk/releases/download/${RELEASE_VERSION}/operator-sdk-${RELEASE_VERSION}-x86_64-apple-darwin
chmod +x operator-sdk-${RELEASE_VERSION}-x86_64-apple-darwin && \
sudo cp operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu /usr/local/bin/operator-sdk && \
rm operator-sdk-${RELEASE_VERSION}-x86_64-linux-gnu

本次开发使用的是v0.13.0

具体创建工程及命令使用方法可以参考:operator-sdk教程

ch-operator目录结构

具体详见:ch-operator代码地址

总目录
.
├── README.md
├── build     
├── charts    --ch-operator chart包
├── cmd       
├── deploy    -- cr及crds等yaml文件
├── docker    -- 编译脚本及构建脚本
├── go.mod
├── go.sum
├── pkg
├── tools.go
├── vendor
└── version
pkg目录
.
├── apis
│   ├── addtoscheme_clickhouse_v1.go
│   ├── apis.go
│   └── clickhouse
│       ├── group.go
│       └── v1beta1
│           ├── clickhousecluster_types.go
│           ├── defaut_config.go              -- 填补cr的缺省值
│           ├── doc.go
│           ├── register.go                   
│           ├── status.go                     -- crd状态相关结构体
│           └── zz_generated.deepcopy.go
├── common                                    -- 共享基础文件夹
│   ├── constrant.go
│   └── util.go
├── config
│   ├── clickhouse_config.go                  -- clickhouse配置文件生成
│   └── clickhouse_config_test.go
└── controller
    ├── add_clickhousecluster.go
    ├── clickhousecluster
    │   ├── clickhouse_controller.go          -- clickhouse相关逻辑控制
    │   ├── clickhousecluster_controller.go   -- 整个集群的总逻辑控制
    │   └── zookeeper_controller.go           -- zookeeper相关的逻辑控制
    └── controller.go
charts目录
.
└── ch-operator
    ├── Chart.yaml
    ├── templates
    │   ├── operator.yaml
    │   ├── role.yaml
    │   ├── role_binding.yaml
    │   └── service_account.yaml
    └── values.yaml

进入到该目录下可以通过helm直接安装

helm install . --name-template=ch-operator -n {namespace}

cr例子

apiVersion: clickhouse.xiedeyantu.com/v1beta1
kind: ClickHouseCluster
metadata:
  name: chcluster
spec:
  zookeeper:
    name: zookeeper
    replicas: 3
    image:
      repository: zookeeper
      tag: 3.6.1
      pullPolicy: IfNotPresent
    storageType: ephemeral
    persistence:
      reclaimPolicy: Delete
      spec:
        storageClassName: "default"
        resources:
          requests:
            storage: 20Gi

  clickhouse:
    name: clickhouse
    shards: 2
    replicas: 2
    image:
      repository: xiedeyantu/clickhouse-server
      tag: 20.3.18.10
      pullPolicy: IfNotPresent
    storageType: ephemeral
    persistence:
      reclaimPolicy: Delete
      spec:
        storageClassName: "default"
        resources:
          requests:
            storage: 20Gi

主要功能

  1. 支持创建任意节点的zookeeper集群及任意分片任意副本节点的clickhouse集群
  2. 支持clickhouse集群的分片和副本的扩缩容,期间不影响其他节点的正常运行
  3. 集成clickhouse-metrics-exporter,可以直接对接prometheus和grafana
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只努力的微服务

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值