Pod 看不到秘密
Pod does not see secrets
在相同的 default
命名空间中创建的 pod 看不到它的值。
Secret 的文件包含以下内容:
apiVersion: v1
kind: Secret
metadata:
name: backend-secret
data:
SECRET_KEY: <base64 of value>
DEBUG: <base64 of value>
通过 kubectl create -f backend-secret.yaml
创建此机密后,我将使用以下配置启动 pod:
apiVersion: v1
kind: Pod
metadata:
name: backend
spec:
containers:
- image: backend
name: backend
ports:
- containerPort: 8000
imagePullSecrets:
- name: dockerhub-credentials
volumes:
- name: secret
secret:
secretName: backend-secret
但是 pod 在尝试通过 python 的 os.environ['DEBUG']
行提取此环境变量后崩溃。
如何让它发挥作用?
如果您将 secret 安装为卷,它将安装在定义的目录中,其中键名将是文件名。例如点击 here
如果您想从环境中访问秘密到您的 pod 中,那么您需要在环境变量中使用秘密,如下所示。
apiVersion: v1
kind: Pod
metadata:
name: backend
spec:
containers:
- image: backend
name: backend
ports:
- containerPort: 8000
env:
- name: DEBUG
valueFrom:
secretKeyRef:
name: backend-secret
key: DEBUG
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: backend-secret
key: SECRET_KEY
imagePullSecrets:
- name: dockerhub-credentials
参考:https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables
最后,我在 Deployment.spec.template.spec.containers
:
使用了这些行
containers:
- name: backend
image: zuber93/wts_backend
imagePullPolicy: Always
envFrom:
- secretRef:
name: backend-secret
ports:
- containerPort: 8000
在相同的 default
命名空间中创建的 pod 看不到它的值。
Secret 的文件包含以下内容:
apiVersion: v1
kind: Secret
metadata:
name: backend-secret
data:
SECRET_KEY: <base64 of value>
DEBUG: <base64 of value>
通过 kubectl create -f backend-secret.yaml
创建此机密后,我将使用以下配置启动 pod:
apiVersion: v1
kind: Pod
metadata:
name: backend
spec:
containers:
- image: backend
name: backend
ports:
- containerPort: 8000
imagePullSecrets:
- name: dockerhub-credentials
volumes:
- name: secret
secret:
secretName: backend-secret
但是 pod 在尝试通过 python 的 os.environ['DEBUG']
行提取此环境变量后崩溃。
如何让它发挥作用?
如果您将 secret 安装为卷,它将安装在定义的目录中,其中键名将是文件名。例如点击 here
如果您想从环境中访问秘密到您的 pod 中,那么您需要在环境变量中使用秘密,如下所示。
apiVersion: v1
kind: Pod
metadata:
name: backend
spec:
containers:
- image: backend
name: backend
ports:
- containerPort: 8000
env:
- name: DEBUG
valueFrom:
secretKeyRef:
name: backend-secret
key: DEBUG
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: backend-secret
key: SECRET_KEY
imagePullSecrets:
- name: dockerhub-credentials
参考:https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables
最后,我在 Deployment.spec.template.spec.containers
:
containers:
- name: backend
image: zuber93/wts_backend
imagePullPolicy: Always
envFrom:
- secretRef:
name: backend-secret
ports:
- containerPort: 8000