使用命名空间引用 Kubernetes Docker 注册表秘密

Blo*_*ock 5 kubernetes google-kubernetes-engine

我拥有的

我在default命名空间中使用了 Kube secrets 进行私有 Docker 注册表身份验证。这按预期工作。例如:

$ kubectl get secret regsecret
NAME        TYPE                             DATA      AGE
regsecret   kubernetes.io/dockerconfigjson   1         30m
Run Code Online (Sandbox Code Playgroud)

在我的引用中deployment.yml,如下面的代码段所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 1
  template:
    ...
    spec:
      containers:
      - name:  bootstrap-nginx
        image: quay.io/example/nginx:latest
      ...
      imagePullSecrets:
      - name: regsecret
Run Code Online (Sandbox Code Playgroud)

这是我的问题

例如,我需要regsecret在 a 中创建上述内容namepsacemyns如下所示:

$ kubectl get secret regsecret --namespace=myns
NAME        TYPE                             DATA      AGE
regsecret   kubernetes.io/dockerconfigjson   1         30m
Run Code Online (Sandbox Code Playgroud)

有了这个,我如何regsecretmyns命名空间引用到我的部署规范?如果我使用imagePullSecrets如上所示,它会失败说 Kubernetes 无法拉取图像(regsecret无法找到秘密)。有没有办法在 中引用“完全限定”的秘密名称imagePullSecrets

Jan*_*art 5

按照设计,没有办法实现这一点。您需要regsecret在部署所在的同一命名空间中创建。

ImagePullSecrets是对同一命名空间中秘密的引用的可选列表,用于拉取此 PodSpec 使用的任何图像。如果指定,这些秘密将传递给各个拉取器实现以供他们使用。例如,对于 docker,仅尊重 DockerConfig 类型机密。

另请参阅: https: //kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod