当我使用 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"
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"