Kubernetes pod 规范需要与引用的秘密不匹配的 imagePullSecrets?

Kubernetes pod spec requires imagePullSecrets that does NOT match referenced secret?

尝试按照官方 Kubernetes 文档中给出的使用秘密作为环境变量的用例示例(参考 here ),我制作了我的秘密和我的部署 yaml(其中包括一个 pod 规范)如下:

秘密 yaml:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  LOCAL_UID: dsdgvreRBRBBsdd=
  LOCAL_PWD: MmSDkfKDODbOU4NCg==

通过执行以下操作将其写入命名空间: kubectl apply -f my-secret.yaml

同样,这是部署 Yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    app: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      terminationGracePeriodSeconds: 30
      containers:
        - name: my-app
          env:
            - name: REPO_APP_URL
              value: https://repo.myco.com/project.tar.gz
          envFrom:
            - secretRef:
                name: my-secret
          image: repo.myco.com/images/node-alpine:0.1.6
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          readinessProbe:
            httpGet:
              path: /
              port: 8080
            initialDelaySeconds: 15
            periodSeconds: 15
          securityContext:
            runAsUser: 1000
      imagePullSecrets:
        - name: regcredepg

这是 运行 通过执行以下操作

kubectl apply -f my-app.yaml

鉴于以下情况,这实际上非常有效:

  1. 部署 YAML 中包含 imagePullSecrets 指令。

  2. imagePullSecrets 部分中给出的 name 值是 而不是 envFrom: - secretRef: 中使用的实际秘密部分。

如果我尝试将 imagePullSecrets 名称字段的名称设置为 my-secret,广告连播将无法加载(显示 Error from server (BadRequest): container "my-app" in pod "my-app-597bb6c9b4-lh8rg" is waiting to start: image can't be pulled)。

此外,它不允许我简单地删除 pod 规范中 YAML 的 imagePullSecrets 部分,即使文档声称它是可选的。

因此,唯一可行的方法是,如果我在我的 envFrom: - secretRef: 中包含对我 使用的有效秘密的 imagePullSecrets 引用部分。我确定我在这里遗漏了一些逻辑上明显的问题。任何人都可以阐明这一点吗?

imagePullSecrets 的格式与 ID 和密码不同。您需要指定注册表 FQDN 以及用户名和密码。您可以在 Pull an Image from a Private Registry.

中找到更多信息