Wener Notes

sealed-secrets

约 2 分钟阅读
标签:credential
  • bitnami-labs/sealed-secretsGitHubbitnami-labs/sealed-secretsbitnami-labs/sealed-secrets · Apache-2.0, Go · one-way encrypted Secrets · 加密 Secret 对象为 SealedSecret,用于安全提交到 git 仓库 · 集群内的 controller 会将 SealedSecret 解密为 Secret笔记:sealed-secrets
    • Apache-2.0, Go
    • one-way encrypted Secrets
    • 加密 Secret 对象为 SealedSecret,用于安全提交到 git 仓库
    • 集群内的 controller 会将 SealedSecret 解密为 Secret
  • 模式
    • strict - 默认 - 名字和 namespace 匹配
    • namespace-wide - 相同 namespace 内可修改 name
    • cluster-wide - 可修改 namespace 和 name
  • SealdSecret 是绑定 namespace,kubeseal 的时候指定或原 secret 包含,不可修改
    • 或者指定 sealedsecrets.bitnami.com/cluster-wide": "true" 集群内可用
  • 如果一个 yaml 包含多个 secret 只有第一个会 seal - #114GitHub Issuebitnami-labs/sealed-secrets#114
  • 删除 secret 不会重建 - bitnami-labs/sealed-secrets#224GitHub Issuebitnami-labs/sealed-secrets#224bitnami-labs/sealed-secrets · Apache-2.0, Go · one-way encrypted Secrets · 加密 Secret 对象为 SealedSecret,用于安全提交到 git 仓库 · 集群内的 controller 会将 SealedSecret 解密为 Secret笔记:sealed-secrets
bash
# 集群安装
# 查看版本 https://github.com/bitnami-labs/sealed-secrets/releases
kubectl apply -f https://github.com/bitnami-labs/sealed-secrets/releases/download/v0.13.1/controller.yaml

brew install kubeseal

# 正常 secret
echo -n bar | kubectl create secret generic mysecret --dry-run=client --from-file=foo=/dev/stdin -o json > mysecret.json
# seal
kubeseal < mysecret.json > mysealedsecret.json
# 创建 seal
kubectl create -f mysealedsecret.json
# 生成 secret
kubectl get secret mysecret

# 限定范围
kubeseal --scope cluster-wide < secret.yaml > sealed-secret.json

# 备份 master.key - 恢复则可以使得之前的加密数据生效
kubectl get secret -n kube-system -l sealedsecrets.bitnami.com/sealed-secrets-key -o yaml > master.key

# 恢复 master.key
kubectl apply -f master.key
# 生效
kubectl delete pod -n kube-system -l name=sealed-secrets-controller

# 离线解密
kubeseal --recovery-unseal --recovery-private-key file1.key
yaml
annotations:
  # 集群内可解密 - 不绑定 namespace
  sealedsecrets.bitnami.com/cluster-wide": 'true'
  # 不绑定 name
  sealedsecrets.bitnami.com/namespace-wide: 'true'

FAQ

already exists and is not managed by SealedSecret

存在于将 secret 迁移为 sealed-secrets 的情况

yaml
annotations:
  # 识别方式
  sealedsecrets.bitnami.com/managed: 'true'

删除 secret 重建

  • 目前不支持
  • 重启 controller 可以 - 但是 sealedsecrets 多的时候非常慢
    • 单个一般 0.7 - 1.2s
  • bitnami-labs/sealed-secrets#224GitHub Issuebitnami-labs/sealed-secrets#224bitnami-labs/sealed-secrets · Apache-2.0, Go · one-way encrypted Secrets · 加密 Secret 对象为 SealedSecret,用于安全提交到 git 仓库 · 集群内的 controller 会将 SealedSecret 解密为 Secret笔记:sealed-secrets

关联信息

反向链接、本文链接的其他页面和外部资料。

反向链接

  • DevOps 常见问题
    笔记 · sealed-secret

    ClickOps · Jenkins · AWX, SemaphoreUI · Gitlab CI manual trigger · Github Action manual trigger · | - | DevOps | OPS | · | 范围 | 覆盖开发、测试、运维等全生命周期 | 负责系统运营与维护 |

  • Secrets
    笔记 · Sealed Secrets

    Sealed Secrets 最简单,但有时候用不了 · 例如 secret 写在 value.yaml 的时候 · 建议配合 age, SOPS · Bitnami Sealed Secrets · External Secrets Operator

References

GitHub4 条
最近更新commit 40ad671Edit

On this page