CRD 概述¶
Cluster¶
Kubean 允许通过 custom resource definitions (CRDs) 来声明(唯一标识)一个 Kubernetes 集群。所有对集群的操作都基于此 CRD 里声明的内容。
下面是一份示例,帮助理解下文的配置项说明:
apiVersion: kubean.io/v1alpha1
kind: Cluster
metadata:
name: cluster1-offline-demo
spec:
hostsConfRef:
namespace: kubean-system
name: cluster1-offline-demo-hosts-conf
varsConfRef:
namespace: kubean-system
name: cluster1-offline-demo-vars-conf
配置项¶
元数据¶
name
:name 用于声明一个集群,全局唯一
属性关联¶
hostConfRef
:hostConfRef 是一个 ConfigMap 资源,它的内容应满足 ansible inventory 的格式,包含集群节点信息、类型分组信息。内容可参考 demo。name
:表示其引用的 ConfigMap 的名称-
namespace
:表示其引用的 ConfigMap 所在的命名空间 -
varsConfRef
:varsConfRef 是一个 ConfigMap 资源,用作初始化或覆盖 Kubespray 中声明的变量值。如果有离线需求,这将很有用。内容可参考 demo。 name
:表示其引用的 ConfigMap 的名称-
namespace
:表示其引用的 ConfigMap 所在的命名空间 -
sshAuthRef
:sshAuthRef 是一个 Secret 资源,仅在 SSH 私钥模式时使用。 name
:表示其引用的 Secret 名称namespace
:表示其引用的 Secret 所在的命名空间
ClusterOperation¶
Kubean 允许通过 custom resource definitions (CRDs) 来声明对一个 Kubernetes 集群的操作(部署、升级等),前提是正确关联一个已经定义的 Cluster CRD。完成操作所必要的信息从其关联的 Cluster CRD 中获取。
下面是一份示例,帮助理解下文的配置项说明:
apiVersion: kubean.io/v1alpha1
kind: ClusterOperation
metadata:
name: cluster1-demo-ops-1
spec:
cluster: cluster1-demo
image: ghcr.m.daocloud.io/kubean-io/spray-job:latest
actionType: playbook
action: cluster.yml
preHook:
- actionType: playbook
action: ping.yml
- actionType: playbook
action: disable-firewalld.yml
postHook:
- actionType: playbook
action: kubeconfig.yml
- actionType: playbook
action: cluster-info.yml
配置项¶
元数据¶
name
:name 唯一标识一个对所关联集群的操作
操作定义¶
cluster
:与此操作关联的集群名称,其值为 Cluster CRD 中声明的名称image
:kubespray 镜像地址;可以使用 Kubean 仓库构建的镜像,也可使用自行构建镜像actionType
:操作类型,目前支持指定playbook
或shell
action
:意图执行的操作,目前支持指定 playbook 文件的路径或 shell 命令preHook
:前置执行操作,可以指定多个,例如可以测试节点连通性等actionType
:同上action
:同上postHook
:后置执行操作,可以指定多个,例如可以获取集群状态等actionType
:同上action
:同上
Manifest¶
Kubean 允许通过 custom resource definitions (CRDs) 来记录和维护当前版本的 Kubean 使用和兼容的组件、包及版本;使用者不用手动编写此资源,由 Kubean 自行维护。
下面是一份示例,帮助理解下文的 spec 说明:
apiVersion: kubean.io/v1alpha1
kind: Manifest
metadata:
name: kubeaninfomanifest-v0-4-0-rc2
spec:
components:
- defaultVersion: v1.1.1
name: cni
versionRange:
- v1.0.1
- v1.1.1
- defaultVersion: 1.6.9
name: containerd
versionRange:
.......
- 1.6.7
- 1.6.8
- 1.6.9
- defaultVersion: ""
name: kube
versionRange:
- v1.25.3
- v1.25.2
- v1.25.1
........
- defaultVersion: v3.23.3
name: calico
versionRange:
- v3.23.3
- v3.22.4
- v3.21.6
- defaultVersion: v1.12.1
name: cilium
versionRange: []
- defaultVersion: "null"
name: etcd
versionRange:
- v3.5.3
- v3.5.4
- v3.5.5
docker:
- defaultVersion: "20.10"
os: redhat-7
versionRange:
- latest
- "18.09"
- "19.03"
- "20.10"
- stable
- edge
- defaultVersion: "20.10"
os: debian
versionRange:
- latest
- "18.09"
- "19.03"
- "20.10"
- stable
- edge
- defaultVersion: "20.10"
os: ubuntu
versionRange:
- latest
- "18.09"
- "19.03"
- "20.10"
- stable
- edge
kubeanVersion: v0.4.0-rc2
kubesprayVersion: c788620
spec 说明¶
components
:镜像或二进制文件的版本声明name
:组件名称defaultVersion
:使用的默认版本versionRange
:受支持的版本列表docker
:Docker 的版本管理os
:受支持的操作系统defaultVersion
:使用的默认版本versionRange
:受支持的版本列表kubeanVersion
:Kubean 版本号kubesprayVersion
:当前 Kubean 依赖的 Kubespray 版本号
LocalArtifact¶
Kubean 允许通过 custom resource definitions (CRDs) 来记录离线包支持的组件及版本信息;使用者不用手动编写此资源,由 Kubean 自行维护。
下面是一份示例,帮助理解下文的 spec 说明:
apiVersion: kubean.io/v1alpha1
kind: LocalArtifactSet
metadata:
name: "localartifactset-1709796014"
labels:
kubean.io/sprayRelease: master
spec:
kubespray: "989ba207e9da2e1364f375450561d08af80c8535"
items:
- name: cilium
versionRange:
- "v1.13.4"
- name: flannel
versionRange:
- "v0.22.0"
- name: kube_ovn
versionRange:
- "v1.11.5"
- name: runc
versionRange:
- "v1.1.12"
- name: kube
versionRange:
- "v1.1.12"
- name: cni
versionRange:
- "v1.3.0"
- name: calico
versionRange:
- "v3.26.4"
- name: containerd
versionRange:
- "1.7.13"
spec 说明¶
arch
:受支持的 CPU 指令集架构列表kubespray
:使用的 Kubespray 版本docker
:Docker 版本管理os
:Docker 受支持的操作系统类型versionRange
:受支持的 Docker 版本列表items
:其他组件版本管理name
:组件名称versionRange
:该组件受支持的版本列表