PKG 项目主要是用于存放 Nautes 中可重用的 CRD(Custom Resource Definition) 和 CRD Webhook 的源文件,这些 CRD 会被 Nautes 中多个组件依赖,除此之外,PKG 还包含一些可以被其他组件使用的公共库:
-
全局配置
-
Logger
-
Kubeconfig 序列化
PKG 中的 CRD Webhook 主要是提供校验资源有效性的功能,包括:
资源类型 | 校验逻辑 |
---|---|
Cluster | 有虚拟集群的宿主集群无法被删除 有运行时环境的运行时集群无法被删除 有运行时环境的运行时集群无法变更用途 有虚拟集群的宿主集群无法变更用途 宿主集群必须是物理集群 虚拟集群的 hostCluster 为必填项 物理集群的 hostCluster 必须为空 |
Deployment Runtime | 已经部署过的运行时不可以切换目标环境 不允许在同一个环境中创建两个指向相同源的部署运行时 |
Environment | 被运行时引用的环境无法被删除 |
Product Provider | 被产品引用的产品提供者无法被删除 |
Code Repo | 代码仓库地址是否存在且有效 |
安装以下工具,并配置 GOBIN 环境变量:
准备一个 kubernetes 实例,复制 kubeconfig 文件到 {$HOME}/.kube/config
go mod tidy
go build -o manager main.go
./manager
安装 Ginkgo
go install github.com/onsi/ginkgo/v2/ginkgo@v2.10.0
执行单元测试
make test