用途:在当前目录初始化或运维一套单节点 K3s 项目。它通过直接固定的 colors-compute 库申请一台 VPS,开放 SSH 与 80/443 应用端口,保持 Kubernetes 6443 端口私有,安装 K3s 与 Flux,并监听 colors.yml 中 repository 指定的公开仓库。
主要能力:安装 K3s 与 Flux;Flux 从仓库拉取配置,GitHub 不接收集群凭据,6443 端口保持关闭;无主机名的 Traefik Ingress 可通过 VPS 公网 IP 提供 HTTP;当 provider-dns 为 cloudflare 时,可部署 ExternalDNS 与 cert-manager,使用 ACME DNS-01 证书,并由包安全引导其令牌 Secret。
使用方式:先在当前目录放置 green 载荷并设为可执行,参照配置参考写 colors.yml 并选唯一 profile,要求存在含 k8s/ Kustomization 的公开 HTTPS 仓库。凭据放在被 gitignore 的 .envrc.private 中,以 COLORS_PAR_* 导出;确保 .envrc.private、.colors/、.devenv/ 被忽略。常用命令:./green build、./green create --dry-run、./green create、./green kubectl get nodes、./green kubectl get pods -A、./green delete。
限制与安全规则:默认先 build 和 create --dry-run,真实 create/delete 需用户明确授权。不得把密钥、私钥、kubeconfig 或访问密钥写入 colors.yml 或示例。切勿设置 COLORS_PAR_PROFILE,包会拒绝。不要编辑生成的 .colors/。保持 compute-prevent-destroy: true,需一次性删除时用 COLORS_PAR_COMPUTE_PREVENT_DESTROY=false 授权,而非改期望状态。切勿对公网开放 TCP 6443。
依赖与凭证:Babashka 运行启动器;生命周期命令需 OpenTofu 与 Ansible;kubectl 访问需 SSH。Hetzner 用 COLORS_PAR_HCLOUD_TOKEN,R2 用 COLORS_PAR_R2_ACCESS_KEY_ID 与 COLORS_PAR_R2_SECRET_ACCESS_KEY,Cloudflare 用 COLORS_PAR_CLOUDFLARE_API_TOKEN。compute 库支持 Azure、AWS、Google、DigitalOcean、hcloud、Vultr、Yandex 与 OCI,远程状态可用 R2 或 S3。