我想运行托管在 Kubernetes 集群上的私有容器注册表中的应用程序。我按照here的说明创建了一个像这样的秘密:
kubectl create secret docker-registry regcred --docker-server=<your-registry-server> \
--docker-username=<your-name> \
--docker-password=<your-pword> \
--docker-email=<your-email>
在我的部署中使用它,如下所示:
containers:
- image: registry.gitlab.com/xxxxx/xxxx
name: dockerdemo
resources: {}
imagePullSecrets:
- name: regcred
K8s 现在可以从我的私人注册表中提取映像。无论如何,我对我的用户和密码以纯文本形式存储在集群中感到不舒服。有没有更好/更安全的方法让 K8s 集群通过令牌访问注册表?
因此我使用 Gitlab 我知道的解决方案不是将我的用户凭据存储在 Kubernetes 中。相反,我使用的是可以随时删除的部署令牌,并且只能访问容器注册表。
此处需要执行以下步骤:
read_registry
kubectl create secret docker-registry regcred --docker-server=registry.gitlab.com --docker-username=<token_username> --docker-password=<token> -n <kubernetes_namespace>
谢谢@Jonas 的链接,但这个解决方案正是我正在寻找的。
无论如何,我对我的用户和密码以纯文本形式存储在集群中感到不舒服。有没有更好/更安全的方法让 K8s 集群通过令牌访问注册表?
请参阅 加密静态秘密数据 了解如何确保您的 Secrets 在 etcd 中加密。
或者,您可以考虑使用 Vault 来存储秘密。参见例如Monzo 银行安全团队如何处理机密