【发布时间】:2020-03-23 20:51:03
【问题描述】:
例子有:
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: redis
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: usernamekey
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: passwordkey
restartPolicy: Never
以上来自:
https://kubernetes.io/docs/concepts/configuration/secret/
我创建了一个这样的秘密:
kubectl --namespace=mycustomnamespace create secret generic mysecret --from-literal=passwordkey="abc123" --from-literal=usernamekey="mememe"
我了解以上秘密存在于命名空间下。
但如果我试试这个:
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
namespace: mycustomnamespace
spec:
containers:
- name: mycontainer
image: redis
env:
- name: SECRET_USERNAME
valueFrom:
secretKeyRef:
name: mysecret
key: usernamekey
namespace: mycustomnamespace
- name: SECRET_PASSWORD
valueFrom:
secretKeyRef:
name: mysecret
key: passwordkey
namespace: mycustomnamespace
restartPolicy: Never
(注意我在元数据下添加了命名空间声明)
我收到此错误:
验证数据时出错: [验证错误(Pod.spec.containers[1].env[2].valueFrom.secretKeyRef): io.k8s.api.core.v1.SecretKeySelector 中的未知字段“命名空间”, 验证错误(Pod.spec.containers[1].env[6].valueFrom.secretKeyRef): io.k8s.api.core.v1.SecretKeySelector]中的未知字段“命名空间”;
如果我取出命名空间(在 secretKeyRef(s) 下).. pod 失败..with
警告 Failed 2s (x8 over 1m) kubelet, minikube 错误: 未找到秘密“mysecret”
是的,我的秘密在命名空间中:
kubectl get secrets --namespace mycustomnamespace
NAME TYPE DATA AGE
default-token-55bzp kubernetes.io/service-account-token 3 10m
mysecret Opaque 2 10m
追加:(分辨率)
这是我的错误。在 Vasily 的回答下查看我的评论。
但基本上,神奇的是下面的 yml....
metadata:
name: secret-env-pod
namespace: mycustomnamespace
上面的 yml 应该为其余的配置(yml)“驱动”命名空间(也就是设置命名空间的范围)......
(如果您是这个问题的未来读者,请仔细检查您是否在正确的命名空间下拥有所有内容。所有正常的“get”语句都需要使用 -n(又名 --namespace)作为一部分。
例子
kubectl get pods
以上只会获取“默认”下的 pod。
你必须这样做
kubectl get pods --namespace mycustomnamespace
【问题讨论】:
标签: kubernetes kubectl