关于 darkmatter-gitops-conventions
为通过 `darkmatter/gitops` 仓库管理 Darkmatter k3s 集群定义 GitOps 规则,强调以提交和可复现的更改为准,通过 ArgoCD 协调,并加密保存仓库内密钥。
主要功能
- 01以 Git 作为集群事实来源
- 02通过 ArgoCD 清单管理更改
- 03提交前验证清单
- 04按提交或摘要固定容器镜像
- 05使用 SOPS 加密保存基础设施密钥
- 06在 beads 中跟踪后续事项
适用场景
- 01通过已提交的清单更新 k3s 集群
- 02使用 git revert 回滚集群更改
- 03提交前检查清单语法和模式
- 04安全编辑加密的基础设施密钥
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ darkmatter/ skills --skill darkmatter-gitops-conventions安装后在 Claude Code 中输入/darkmatter-gitops-conventions确认已加载。
详细介绍
Darkmatter gitops 约定
darkmatter/gitops 是 k3s 集群的唯一真实来源:ArgoCD 应用集合、Helm 值、KSOPS 密钥、网络策略、cloudflared 路由。
只有提交到这里的更改才算数——其他一切都是配置漂移。
首要规则
绝不以命令式方式修改集群。不要使用 kubectl apply/edit/patch、helm upgrade,也不要命令式地重启。如果线上对象与仓库不一致,以仓库为准,对象才是有问题的一方。
- 重新加载部署:在清单中更新其 pod-template config-rev 注解并提交,而不是运行
kubectl rollout restart。 - 立即强制 ArgoCD 协调:在清单中设置
arc.darkmatter.io/reconcile-at: "<current UTC timestamp>"注解。 - 回滚:
git revert有问题的提交并推送。ArgoCD 会自动收敛。绝不要在线上“向前修复”。
每次提交前都要验证
运行以下三项;CI 也会运行它们,主分支变红比提交慢更糟:
kubeconform -strict -ignore-missing-schemas -summary <changed manifests>
yq eval '.' <changed file> > /dev/null # syntax parse
git diff --check # whitespace damage
对于 Helm 值位于块标量中的 ArgoCD apps/*.yaml,也要验证其中嵌入的 YAML:
yq eval '.spec.sources[0].helm.values | from_yaml' apps/<app>.yaml > /dev/null
断言脚本不得掩盖失败:不要使用 || true;当管道的退出代码很重要时,使用 set +e 并显式捕获 PIPESTATUS[0]。
镜像
使用完整提交标签(sha-<40-hex>)或摘要固定镜像版本——绝不使用 latest,也绝不使用分支标签。升级镜像时,应只产生一行差异,并在消息中注明所部署的提交。ArgoCD 会在同步时应用更改(约 3 分钟);沙箱或 Pod 规格哈希变化会自动触发相关预热池更新。
密钥(KSOPS/SOPS)
- 密钥以加密的 JSON(
*.sops.json)形式存放在仓库中,由 KSOPS 渲染。参见 ADR-0011。不要新增*.sops.yaml/.env.sops。修改现有 YAML SOPS 文件时,将其转换为 JSON。Kubernetes Secret JSON 对 API 有效。 - 编辑方式:解密到权限为
0600的临时文件,编辑后重新加密,然后通过结构验证(对解密后的内容运行jq empty)并仅比较键名来验证——绝不打印值。清理临时文件。普通的非密钥清单仍使用 YAML;继续用yq处理这些文件。 - 其他所有地方都通过名称引用密钥;任何清单或日志中出现内联密钥值都属于安全事件。
- Agent/运行时密钥遵循经过强化的流程(Centaur vault + console PUTs),不放入 git——本仓库只存放基础设施密钥。
ArgoCD 预期行为
- 同步周期约为 3 分钟;请在 ArgoCD 中检查应用,而不是再次推送。
- 同步重试过期时:从 Application 中移除
/operation字段并执行硬刷新。 - 必须在修剪时保留的关键资源带有
IgnoreExtraneous/Prune=false注解——编辑附近内容时应保留现有注解。
任务
在 beads 中跟踪后续事项(bd create),不要写 TODO 注释。可复现性是衡量标准:必须能够仅凭本仓库重建集群。
评论
支持 Markdown