Kubernetes SOPS 秘密操作器使用指南
项目介绍
Kubernetes SOPS 秘密操作器 是一个灵感来源于 Bitnami SealedSecrets 和 SOPS 的 Kubernetes 控制器。它专门用于管理由用户定义的 SopsSecrets
自定义资源(CRs)创建的 Kubernetes Secret 资源。通过这个工具,你可以方便地在 Kubernetes 集群中使用加密的秘密,并且这些秘密可以被妥善存储于版本控制系统中,如 Git。支持 AWS、GCP、Azure 以及本地托管的 Kubernetes 集群中的 KMS 加密,并且与 Jenkins 之类的 CI/CD 工具集成友好。
项目快速启动
安装前提
确保你的环境中已配置好 Kubernetes,并安装了 kubectl
和 helm
。另外,准备 SOPS 工具以加密你的敏感数据。
添加 Helm 库
首先,添加 SOPS Secrets Operator 的 Helm 仓库到你的环境:
helm repo add sops https://isindir.github.io/sops-secrets-operator/
创建必要的基础设施(示例以 AWS KMS 为例)
-
创建 AWS KMS 密钥。
-
设置 AWS 角色以允许操作员解密,参照 SOPS 文档进行配置。
-
在集群中部署 CRD(自定义资源定义):
kubectl apply -f config/crd/bases/isindir.github.com_sopssecrets.yaml
部署操作器
创建一个命名空间并部署 Helm 图表:
kubectl create namespace sops
helm upgrade --install sops sops/sops-secrets-operator --namespace sops
应用案例和最佳实践
假设我们需要将 Jenkins 的凭证安全地存储并自动管理:
-
创建加密的 SopsSecret 文件:
假定有一个名为
jenkins-secrets.yaml
的文件,使用 SOPS 对其进行加密,指定 AWS KMS 键来加密数据:sops --encrypt \ --kms 'arn:aws:kms:<region>:<account>:alias/<key-alias-name>' \ jenkins-secrets.yaml > jenkins-secrets.enc.yaml
-
在 Kubernetes 中应用加密后的配置:
你需要先配置一个指向该加密资源的
SopsSecret
CR,然后操作员会处理解密和秘密的应用。apiVersion: isindir.github.com/v1alpha3 kind: SopsSecret metadata: name: example-jenkins-secret spec: secretTemplates: - name: jenkins-secret stringData: username: '!sops' password: '!sops'
然后使用 Kubernetes 命令应用这个配置,但实际步骤需要配合解密操作,具体步骤应参考操作员提供的详细指导。
典型生态项目
- 与 Jenkins 结合: 使用 SOPS Secrets Operator,你可以轻松将加密的 Jenkins 凭证作为 Kubernetes Secrets 管理,实现自动化部署过程中的安全认证。
- GitOps 流程: 结合 FluxCD 或其他 GitOps 工具,可以实现在每次更改时自动更新和部署秘钥,无需人工干预解密或手动复制秘钥。
- 多云策略: 因为支持 AWS、GCP、Azure 多个平台的 KMS,这使得跨云或者混合云环境下的秘密管理变得更为灵活和统一。
请注意,上述步骤是简化的概述,每个环节可能需要更详细的配置,务必参照 官方文档 获取完整和最新的指令。