当我使用 secret 在 kubernetes 中部署 pods 时发现 CreateContainerConfigError

CreateContainerConfigError found when I deploy pods in kubernetes with secret

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  DB_URL: "BASE64"
---
apiVersion: v1
kind: Namespace
metadata:
  name: my-ns
---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: my-ns
  name: my-api
spec:
  selector:
    matchLabels:
      app: my-api
  replicas: 1
  revisionHistoryLimit: 5
  template:
    metadata:
      labels:
        app: my-api
    spec:
      containers:
        - name: my-api
          image: myimage:latest
          ports:
            - containerPort: 5000
          env:
            - name: DB_URL
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: DB_URL

在我的 kubernetes 集群中部署上述 yaml 文件后,我遇到了 CreateContainerConfigError

这是因为部署正在使用一个秘密 mysecret,它需要存在于创建部署的命名空间中。部署的命名空间是 my-ns 但秘密在 default 命名空间中,因为在秘密中你没有提到任何命名空间。

按如下所示更改秘密 yaml 应该可以解决这个问题。

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
  namespace: my-ns
type: Opaque
data:
  DB_URL: "BASE64"