所以我的项目中有这个清单:
apiVersion: v1
kind: Secret
metadata:
name: cambiotoday-secret-key
namespace: default
type: Opaque
stringData:
ct-key: <my_third_party_service_key>
---
# The rest of it, deployment and service.
...
我正在寻找一种方法,可以将该清单推送到我的git存储库中,但不发布其中的实际密钥。
我正在使用Skaffold构建我的kubernetes应用程序。
根据K8S文档:
如果您的应用程序使用以下配置文件:
apiUrl: "https://my.api.com/api/v1" username: "user" password: "password"
您可以使用以下方法将其存储在Secret中:
apiVersion: v1 kind: Secret metadata: name: mysecret type: Opaque stringData: config.yaml: |- apiUrl: "https://my.api.com/api/v1" username: {{username}} password: {{password}}
然后,您的部署工具可以在运行kubectl apply之前替换{{username}}和{{password}}模板变量。
哪些部署工具?看起来正是我需要的东西,但我不知道如何设置它。
答案 0 :(得分:3)
看看sealed-secrets,它允许您将加密的机密版本放入Git。
关于允许您使用YAML模板化的部署工具,请查看Helm,Kustomize或许多其他类似工具。如果那对您不起作用,也可以使用一些脚本来达到目的。
答案 1 :(得分:2)
有一些流行的技术可以完成此任务:
密封机密:More examples here实际上,您可以将完整的秘密YAML加密为密封机密,然后使用kubeseal工具在Kubernetes集群级别再次解密。您可以在git或任何SCM中提交密封的秘密。
它还具有许多其他功能,可提高安全性,例如“秘密轮换”,“尽早更新密钥(以防万一)”
保险柜:Check here该工具在社区和企业版中均可用。它包括许多其他功能。
Kamus :Check here
和其他工具。
如果您的要求不是很大,那么 Sealed Secrets 将为您服务。
#import "module_name-Swift.h"
通过这种方式可以部署您的秘密。然后将加密的JSON存储在git中。
答案 2 :(得分:0)
我认为一种很整洁的方法是将您的凭据(用户名/密码/密钥等)存储在诸如lastpass之类的文件库中,该文件库是CLI附带的,并且在k8s上非常有效。它还使在团队中管理共享凭据变得容易:) https://engineering.upside.com/synchronizing-kubernetes-secrets-with-lastpass-584d564ba176
答案 3 :(得分:0)
您可以将加密的PWD保存在secrets.yaml中,并将其推送到GIT中。 https://github.com/mozilla/sops 与加密相关的主密钥的范围可以从AWS KMS,Azure KMS,GCP KMS等等。这可以帮助您轻松地在适当的云提供商内部进行部署。