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
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐