SuperAPI AI 工具集

cumulus-infra

部署与运维

查看项目

更新于 10-16 09:03

技能介绍

用途

Cumulus 基础设施技能用于在 cumulus k3s 集群上执行运维与开发任务,包括 kubectl 操作、Pod 与 Deployment 管理、GitOps 与 Flux 变更、Ingress、DNS、证书、存储与备份等。该技能记录的是“因为这个集群是这样构建的,所以为真”的内容,而非通用 Kubernetes 知识,假定使用者已掌握其余部分。

集群架构

Cumulus 是运行在一台租用独立服务器上的单节点 k3s。Cilium 作为 CNI,并通过 Gateway API 提供入口,Gateway 的 Envoy 运行在主机网络上。FluxCD 驱动 GitOps 与镜像自动化。状态保存在节点 RAID1 根分区的 local-path 卷上,通过每晚逻辑转储到 S3 兼容对象存储进行保护,而非通过复制。External Secrets Operator 从配置的密钥提供方拉取密钥。cert-manager 与 external-dns 自动处理 TLS 与记录。镜像来自自托管 registry,CI 通过 OIDC 认证。

单机箱决定了以下多数设计:无高可用、一个公网地址、对象存储是唯一在节点丢失后仍存活的东西。域名、命名空间与版本被有意省略,它们位于仓库的 CLAUDE.md 中,或可通过以下命令发现:

kubectl get gateway -A -o wide
kubectl get ns

规则零:使用正确的密钥技能

当任务涉及 BWS、Bitwarden 或提供方侧凭据的检索、创建或轮换时,先使用 bws-secrets 技能。它负责凭据访问与处理;不要在此处复制其命令或策略。对于 Kubernetes Secret 对象、ExternalSecrets 或密钥同步行为,请阅读 references/secrets.md。切勿显示集群管理的密钥值。

规则一:API 仅通过 tailnet 可达

API 服务器不暴露到互联网。主机防火墙仅允许来自 10.0.0.0/8 和 100.64.0.0/10 的 6443 端口,因此节点的 tailnet 地址是进入方式,无需隧道。

kubectl config use-context polaris-k3s   # 已是默认
kubectl get nodes

该 context 指向节点在 6443 端口上的 MagicDNS 名称。在任何写入操作前检查 context。此机器上的其他 context 是不相关的集群,其中一个是已退役主机,因此在他人切换 context 后直接运行 kubectl 是真实风险:

kubectl config current-context

SSH 通过同一 tailnet 到达主机,命令为 ssh polaris,因此 tailnet 中断会同时切断两条路径。没有可用的公网回退:公网地址上 22 端口关闭,6443 从未开放。取而代之的是主机上的看门狗,在 tailnet 中断约十分钟后重新向互联网开放 22 端口,此时 ssh polaris-direct 可用并可承载转发:

ssh -M -S /private/tmp/polaris-tunnel.sock -f -N -L 16443:127.0.0.1:6443 polaris-direct
# 将 kubeconfig 副本指向 127.0.0.1:16443
ssh -S /private/tmp/polaris-tunnel.sock -O exit polaris-direct

控制套接字路径保持在 104 字节以下,因此不要放在临时目录中,并且只关闭自己的套接字。切勿将 kubeconfig 指向公网地址的 6443 端口;防火墙会丢弃它,超时看起来像故障。

ssh polaris 按设计是交互式的。Tailscale SSH 在 tailnet 上应答,ACL 使用 action: check,因此它会打印一个 login.tailscale.com URL 并等待浏览器确认。因此通过 tailnet 的脚本化 SSH 会挂起而非失败,容易被误读为主机宕机。对于自动化,打开一个多路复用 master 并复用;已建立的连接即使在防火墙关闭 22 端口后仍能存活。

参考文档

任务 加载
Kubernetes 密钥与 ExternalSecrets secrets.md
路由、DNS、TLS、网络策略 platform.md
清单、集群 overlay、镜像自动化、添加应用 gitops.md
构建流水线、dev 与 prod 镜像、registry 认证 ci-cd.md
存储、备份、恢复、升级、加固 operations.md
服务器本身:磁盘、防火墙、邮件、k3s 配置 host.md
通过 Cairn 数据库的日志、指标、追踪 observability.md
调试 troubleshooting.md

注意事项

  • Flux 不监视 main。它监视一个单独的部署分支,并将镜像版本提升提交回该分支。
  • 任何地方都没有安装 flux CLI。通过注解资源来驱动协调;参见 gitops.md 了解顺序,这并不明显。
  • Kustomize 的 commonLabels 已弃用但到处都在使用。保留它;要么一次性批量迁移,要么完全不迁移。
  • Dockerfile 中的 EXPOSE 会撒谎。检查运行时配置以获取真实端口。
  • 单节点意味着无高可用。任何节点级操作都是停机;开始前请说明。