SuperAPI AI 工具集

secrets

部署与运维

查看项目

更新于 10-15 22:38

技能介绍

用途:为 Kubernetes 家庭实验室平台提供密钥(Secret)供给的选型与操作规范,覆盖随机生成、外部同步、持久化生成和跨命名空间复制四类场景。

主要能力:

  1. secret-generator:mittwald/kubernetes-secret-generator 控制器监听带注解的 Secret 并自动填充随机值,适合无需跨集群重建保留的密钥(如会话密钥、内部 API 密钥);数据库凭据可用 type: kubernetes.io/basic-auth。
  2. ExternalSecret:由 ESO 通过 aws-ssm ClusterSecretStore(区域 us-east-2)从 AWS SSM Parameter Store 拉取值,路径约定为 /homelab/kubernetes/${cluster_name}/<app-or-secret-name>,适合必须匹配外部值的场景(OAuth、云 API、webhook URL)。
  3. app-secrets Terragrunt 模块:用 OpenTofu 生成随机值并以 JSON SecureString 存入 AWS SSM,再由 ExternalSecret 拉取单个键;适合既需随机生成又需跨集群重建保留的密钥。使用 lifecycle.prevent_destroy = true 保护 SSM 参数,lifecycle.ignore_changes = [value] 防止重复 apply 时重新生成,本地备份写入 ~/.secrets/homelab/<app>-secrets.json。流程为:创建 unit → 加入 stack → apply → 按多键 JSON 模式创建 ExternalSecret,示例见 infrastructure/units/lldap-secrets/terragrunt.hcl。
  4. kubernetes-replicator:将 Secret 从一个命名空间复制到另一个,用于共享资源生成的密钥(如数据库超级用户、Dragonfly 密码);在源 Secret 加复制注解,再创建引用它的空消费者 Secret,并将两个文件分别加入各自的 kustomization.yaml。

使用方式:按决策树选择机制——可随机生成且需跨重建保留用 app-secrets 模块 + ExternalSecret;可随机生成但无需保留用 secret-generator;数据库凭据用 secret-generator 的 basic-auth 类型;必须匹配外部值用 ExternalSecret → AWS SSM;跨命名空间共享用 kubernetes-replicator 注解;不明确时向用户确认密钥能否随机生成。Authelia 示例(kubernetes/clusters/live/config/authelia-prereqs/)同时演示三类机制。

排障:运行 scripts/check-secret-sync.sh <name> <namespace> 执行完整状态检查;验证 SSM 参数可用 aws ssm get-parameter --name "/homelab/kubernetes/<cluster>/<secret>" --with-decryption。

限制:具体模板、机制对比表、注解参考、常见失败原因与告警定义见 reference.md,本资料未提供其内容;未说明支持的集群版本、权限要求或成本信息。