gpt4 book ai didi

kubernetes - 在带有命名空间的 YML 中指定一个 secret

转载 作者:行者123 更新时间:2023-12-02 11:31:32 25 4
gpt4 key购买 nike

例子有:

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/

我创建了一个这样的 secret :

kubectl --namespace=mycustomnamespace create secret generic mysecret --from-literal=passwordkey="abc123" --from-literal=usernamekey="mememe"

我了解上述 secret 存在于命名空间下。

但如果我尝试这样做:

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

(注意我在元数据下添加了命名空间声明)

我收到这个错误:

Error validating data: [ValidationError(Pod.spec.containers[1].env[2].valueFrom.secretKeyRef): unknown field "namespace" in io.k8s.api.core.v1.SecretKeySelector, ValidationError(Pod.spec.containers[1].env[6].valueFrom.secretKeyRef): unknown field "namespace" in io.k8s.api.core.v1.SecretKeySelector];

如果我取出命名空间(在 secretKeyRef 下)....pod 失败...

Warning Failed 2s (x8 over 1m) kubelet, minikube Error: secret "mysecret" not found

是的,我的 secret 在命名空间中:

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) 的命名空间(也就是设置命名空间的范围)....

(如果您是这个问题的 future 读者,请仔细检查您的所有内容是否都在正确的命名空间下。所有正常的“get”语句都需要使用 -n(又名 --namespace)作为一部分。

例子

kubectl get pods

以上只会在“默认”下获取 pod。

你必须做

kubectl get pods --namespace mycustomnamespace

最佳答案

只需从 pod secretKeyRef 定义中删除 namespace: mycustomnamespace

你的 secret 创建命令也应该是这样的:

kubectl --namespace=mycustomnamespace create secret generic mysecret --from-literal=passwordkey="abc123" --from-literal=usernamekey="mememe"

关于kubernetes - 在带有命名空间的 YML 中指定一个 secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56041778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com