Kubernetes 和 Gitlab:如何存储私有注册表的密码?

问题描述 投票:0回答:2

我想运行托管在 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 集群通过令牌访问注册表?

docker kubernetes gitlab
2个回答
7
投票

因此我使用 Gitlab 我知道的解决方案不是将我的用户凭据存储在 Kubernetes 中。相反,我使用的是可以随时删除的部署令牌,并且只能访问容器注册表。

此处需要执行以下步骤:

  • 打开 Gitlab 并转到您的项目
  • 设置 > 访问令牌 > 添加新令牌
  • 创建具有范围的令牌
    read_registry
  • 在K8S中创建秘密:
    kubectl create secret docker-registry regcred --docker-server=registry.gitlab.com --docker-username=<token_username> --docker-password=<token> -n <kubernetes_namespace>

谢谢@Jonas 的链接,但这个解决方案正是我正在寻找的。


2
投票

无论如何,我对我的用户和密码以纯文本形式存储在集群中感到不舒服。有没有更好/更安全的方法让 K8s 集群通过令牌访问注册表?

请参阅 加密静态秘密数据 了解如何确保您的 Secrets 在 etcd 中加密。

或者,您可以考虑使用 Vault 来存储秘密。参见例如Monzo 银行安全团队如何处理机密

© www.soinside.com 2019 - 2024. All rights reserved.