ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-04-05 12:29:10  阅读:176  来源: 互联网

标签:ch yaml -- go operator clickhouse sdk


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目录结构

具体详见:https://github.com/xiedeyantu/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

标签:ch,yaml,--,go,operator,clickhouse,sdk
来源: https://blog.csdn.net/weixin_39992480/article/details/115440571

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有