bkeadm:基于 Kubernetes 的容器编排工具项目

bke⼆进制⼯具,是bke部署工具的起点

分支21Tags5

介绍

bkeadm是一款基于Kubernetes的容器编排工具,旨在为用户提供便捷、高效的容器编排和应用部署能力。

镜像构建

构建参数

  • GOPRIVATE:配置Go语言私有仓库,相当于GOPRIVATE环境变量。
  • COMMIT:当前git commit的哈希值。
  • VERSION:组件版本。
  • SOURCE_DATE_EPOCH:镜像rootfs的时间戳。

构建命令

  • 构建并推送到指定OCI仓库。

    使用docker
    docker buildx build . -f <path/to/dockerfile> \
        -o type=image,name=<oci/repository>:<tag>,oci-mediatypes=true,rewrite-timestamp=true,push=true \
        --platform=linux/amd64,linux/arm64 \
        --provenance=false \
        --build-arg=GOPRIVATE=gopkg.openfuyao.cn \
        --build-arg=COMMIT=$(git rev-parse HEAD) \
        --build-arg=VERSION=0.0.0-latest \
        --build-arg=SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)
    
    使用nerdctl
    nerdctl build . -f <path/to/dockerfile> \
        -o type=image,name=<oci/repository>:<tag>,oci-mediatypes=true,rewrite-timestamp=true,push=true \
        --platform=linux/amd64,linux/arm64 \
        --provenance=false \
        --build-arg=GOPRIVATE=gopkg.openfuyao.cn \
        --build-arg=COMMIT=$(git rev-parse HEAD) \
        --build-arg=VERSION=0.0.0-latest \
        --build-arg=SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)
    

    其中,<path/to/dockerfile>为Dockerfile路径,<oci/repository>为镜像地址,<tag>为镜像tag。

  • 构建并导出OCI Layout到本地tarball。

    使用docker
    docker buildx build . -f <path/to/dockerfile> \
        -o type=oci,name=<oci/repository>:<tag>,dest=<path/to/oci-layout.tar>,rewrite-timestamp=true \
        --platform=linux/amd64,linux/arm64 \
        --provenance=false \
        --build-arg=GOPRIVATE=gopkg.openfuyao.cn \
        --build-arg=COMMIT=$(git rev-parse HEAD) \
        --build-arg=VERSION=0.0.0-latest \
        --build-arg=SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)
    
    使用nerdctl
    nerdctl build . -f <path/to/dockerfile> \
        -o type=oci,name=<oci/repository>:<tag>,dest=<path/to/oci-layout.tar>,rewrite-timestamp=true \
        --platform=linux/amd64,linux/arm64 \
        --provenance=false \
        --build-arg=GOPRIVATE=gopkg.openfuyao.cn \
        --build-arg=COMMIT=$(git rev-parse HEAD) \
        --build-arg=VERSION=0.0.0-latest \
        --build-arg=SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)
    

    其中,<path/to/dockerfile>为Dockerfile路径,<oci/repository>为镜像地址,<tag>为镜像tag,path/to/oci-layout.tar为tar包路径。

  • 构建并导出镜像rootfs到本地目录。

    使用docker
    docker buildx build . -f <path/to/dockerfile> \
        -o type=local,dest=<path/to/output>,platform-split=true \
        --platform=linux/amd64,linux/arm64 \
        --provenance=false \
        --build-arg=GOPRIVATE=gopkg.openfuyao.cn \
        --build-arg=COMMIT=$(git rev-parse HEAD) \
        --build-arg=VERSION=0.0.0-latest
    
    使用nerdctl
    nerdctl build . -f <path/to/dockerfile> \
        -o type=local,dest=<path/to/output>,platform-split=true \
        --platform=linux/amd64,linux/arm64 \
        --provenance=false \
        --build-arg=GOPRIVATE=gopkg.openfuyao.cn \
        --build-arg=COMMIT=$(git rev-parse HEAD) \
        --build-arg=VERSION=0.0.0-latest
    

    其中,<path/to/dockerfile>为Dockerfile路径,path/to/output为本地目录路径。

安装集群

在线安装

  1. 下载并自动安装bkeadm。

    # 方式1:快捷下载
    curl -sfL https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/bkeadm/releases/download/latest/download.sh | bash
    
    # 方式2:校验下载文件的完整下载
    ## 下载download.sh脚本文件
    curl -LO https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/bkeadm/releases/download/latest/download.sh
    ## 下载download.sh文件的校验文件并进行校验(可选),校验成功会输出-: OK,校验失败就需要联系openFuyao社区维护人员定位原因
    curl -LO https://openfuyao.obs.cn-north-4.myhuaweicloud.com/openFuyao/bkeadm/releases/download/latest/download.sh.sha256
    sha256sum -c <(cat download.sh.sha256) < download.sh
    ## 运行download.sh文件下载bke安装工具,执行过程中会校验安装工具的sha256sum
    chmod +x download.sh && ./download.sh
    
  2. 初始化引导节点。

    • 该功能会在引导节点上部署一个轻量级的K3s集群,集群会部署cluster-api、provider-bke以及openFuyao安装部署相关的Pod。
    bke init --otherRepo cr.openfuyao.cn/openfuyao/bke-online-installed:latest
    

离线安装

  1. 构建离线安装部署包,参考构建部署包。

  2. 将部署包复制到离线环境引导节点。

  3. 解压部署包到根目录。

    rm -rf /bke && tar zxvf <部署包名字 eg: bke.tar.gz> -C /
    

    要求解压后根目录存储空间大于29GB,否则不能初始化成功。

  4. 修改bke安装工具名字并初始化引导节点。

    • 要求引导节点干净,未提前安装docker、containerd等组件。
    # 修改安装工具名字
    ARCH=$(uname -m)
    case $ARCH in
    x86_64) ARCH="amd64";;
    aarch64) ARCH="arm64";;
    esac
    mv /usr/local/bin/bkeadm_linux_$ARCH /usr/local/bin/bke
    
    # 初始化引导节点
    bke init 
    

构建部署包

  • 要求构建机器已安装tar、pigz工具与bkeadm。

  • 要求构建在线部署依赖环境提前安装好docker与buildx,可参考docker官方文档安装。

  • 要求构建离线部署制品环境提前安装好docker。

  • 完成docker安装后需要在docker配置文件中增加如下配置:

    • 编辑/etc/docker/daemon.json,在docker配置文件中增加以下配置。
    "insecure-registries": [
    "deploy.bocloud.k8s:40443",
    "0.0.0.0/0"
    ],
    
    • 修改后重启docker。
    systemctl restart docker
    

构建在线部署依赖

  • 收集二进制文件、rpm包、chart包等最后生成一个镜像。

    rm -rf /bke && bke build online-image -f online-artifacts.yaml --arch amd64,arm64 -t cr.openfuyao.cn/openfuyao/bke-online-installed:latest
    

构建离线部署制品

其他指令

  • 镜像同步命令参考如下:
bke registry sync --dest-tls-verify --src-tls-verify  --multi-arch --source  deploy.bocloud.k8s:40443/openfuyao/cluster-api-provider-bke:latest    --target deploy.bocloud.k8s:40443/kubernetes/cluster-api-provider-bke:latest

项目介绍

bke⼆进制⼯具,是bke部署工具的起点

定制我的领域