私信运维笔谈,回复 “阿里云k8s” 可以获取 《阿里云Kubernetes项目实战手册.pdf》”。
Kubernetes 使用 Secret 来保存需要加密的敏感信息,然而 Secret 只是base64 编码而已,并不安全。尤其是需要 GitOps 的时候,直接把Secret保存在 Git 上似乎不是一个很安全的方式。
这里推荐一款工具 sealed-secrets 可以解决我们这个烦恼,这里只做一个简单的介绍,具体安装使用待后续。
Sealed-secrets是 Bitnami 实验室推出的一个用于Kubernetes中 Secrets 单向加密的工具,旨在解决如何安全地存储和管理 Kubernetes 集群中的敏感秘钥(Secrets)问题。可以方便地将加密后的SealedSecret资源存储在 Git 仓库中,与GitOps工作流无缝集成。
GitHub地址:https://github.com/bitnami-labs/sealed-secrets
官方地址:https://sealed-secrets.netlify.app/
Sealed-secrets的核心机制基于非对称加密,包含一个客户端工具 kubeseal 和一个集群内的控制器。kubeseal 使用公钥加密 Secret,生成 SealedSecret 资源;控制器则持有私钥,负责解密 SealedSecret 并生成实际的 Secret资源。
Sealed-secrets的组成部分kubeseal:命令行工具,用于将普通的Secret资源加密为SealedSecret资源。我们可以通过 kubeseal 命令,将 secret.yaml 配置清单加密为SealedSecret 类型的资源清单。
控制器:运行在 Kubernetes 集群中的资源控制器,负责监控SealedSecret 资源,并将其解密为 Kubernetes 可以识别的 Secret 资源。控制器部署在 kube-system 命名空间下,并会检查该命名空间下是否有用于加解密的秘钥对,如果没有则会自动创建。
Sealed-secrets的工作流程简介加密Secret:Kubernetes 系统运维人员使用 kubeseal 命令行工具,将普通的 Secret 资源(如数据库密码、API密钥等)加密为 SealedSecret 资源。加密过程中,kubeseal 会从集群中的控制器获取公钥,并使用该公钥对Secret 进行加密。存储SealedSecret:加密后的 SealedSecret 资源可以安全地存储在版本控制系统中,如 Git 仓库。由于 SealedSecret 是加密的,因此即使存储在公共仓库中,敏感信息也不会泄露。解密SealedSecret:当需要使用加密的 Secret 时,Kubernetes 集群中的sealed-secrets 控制器会自动将 SealedSecret 资源解密为普通的Secret资源。这个过程是自动的,不需要人工干预。官网主页截图
如果您在日常运维工作中遇到了任何问题或挑战,无论是关于系统配置、性能优化、故障排除还是其他方面,都欢迎您随时留言或私信我。我会尽我所能为您提供解决方法或建议。相互学习,积累更多的经验和知识