【clickhouse系列】使用operator-sdk快速开发clickhouse-operator
ch-operator是一个基于operator-sdk框架的实验性的clickhouse operator项目,目的是为了熟悉operator-sdk框架的使用以及clickhouse集群怎样适配k8s。operator-sdk安装安装最新版本brew install operator-sdk指定版本安装export RELEASE_VERSION=v0.13.0curl -LO https:/
·
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
主要功能
- 支持创建任意节点的zookeeper集群及任意分片任意副本节点的clickhouse集群
- 支持clickhouse集群的分片和副本的扩缩容,期间不影响其他节点的正常运行
- 集成clickhouse-metrics-exporter,可以直接对接prometheus和grafana
更多推荐
已为社区贡献2条内容
所有评论(0)