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

时间:2019-02-15 21:13:11

标签: kubernetes google-kubernetes-engine kubernetes-secrets

我有一个私有注册表(gitlab),用于存储我的docker映像。 为了进行部署,会创建一个秘密,允许GKE访问注册表。该秘密称为deploy-secret。 机密信息的登录信息在注册表中短时间后会过期。

我还创建了第二个永久机密,该机密可以访问名为permanent-secret的Docker注册表。

是否可以用两个秘密指定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

当Kubernetes稍后尝试重新拉动映像时,会认识到第一个秘密不起作用(不允许对私有注册表进行身份验证),然后成功回退到第二个秘密吗?

1 个答案:

答案 0 :(得分:2)

这令人惊讶!我只是在集群上尝试过。我添加了带有错误值的虚假注册表凭据机密。我像下面一样,将两个秘密都放入了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

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