Kubernetes 是否允许并使用多个 imagePullSecrets 从私有注册表中拉取镜像?

sce*_*eee 11 kubernetes google-kubernetes-engine kubernetes-secrets

我有一个私人注册表 (gitlab),我的 docker 图像存储在其中。对于部署,会创建一个密钥,允许 GKE 访问注册表。秘密被称为deploy-secret。密钥的登录信息在注册表中很短的时间后就会过期。

我还创建了第二个永久机密,允许访问 docker 注册表,名为permanent-secret.

是否可以用两个秘密指定 Pod?例如:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: <your-private-image>
  imagePullSecrets:
  - name: deploy-secret
  - name: permanent-secret
Run Code Online (Sandbox Code Playgroud)

Kubernetes 在稍后尝试重新拉取镜像时,是否会识别出第一个秘密不起作用(不允许对私有注册表进行身份验证),然后成功回退到第二个秘密?

coo*_*ugh 13

令人惊讶的是,这有效!我刚刚在我的集群上试过这个。我用错误的值添加了一个虚假的注册表凭据密钥。我像您一样(如下)将这两个秘密都放在了我的 yaml 中,然后创建了 pod,并创建了容器并成功运行:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
  labels:
    app: test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: test
  template:
    metadata:
      labels:
        app: test
    spec:
      nodeSelector:
      containers:
      - image: gitlab.myapp.com/my-image:tag
        name: test
        ports:
        - containerPort: 80
      imagePullSecrets:
      - name: regcred-test
      - name: regcred

Run Code Online (Sandbox Code Playgroud)

这个regcred秘密有正确的值,regcred-test只是一堆胡言乱语。所以我们可以看到它忽略了不正确的秘密。

  • dockerconfigjson 可以有多个身份验证吗? (3认同)