在 Kubernetes 集群中设置环境变量

set env variable in Kubernetes clusters

我是 Kubernetes 新手。

我在使用 google-cloud-storage 时发现了一些错误。

问题是, 当我直接在 .yaml 文件中指定 GCLOUD_PRIVATE_KEY 时, 我工作很好

 - name: GCLOUD_PRIVATE_KEY
   value: "-----BEGIN PRIVATE KEY-----\n(...)\n-----END PRIVATE KEY-----\n"

但是,当我将变量注入集群时。

AT终端

kubectl create secret generic gcloud-private-key --from-literal=GCLOUD_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n(...)\n-----END PRIVATE KEY-----\n"

AT.yaml

- name: GCLOUD_PRIVATE_KEY
  valueFrom: 
    secretKeyRef:
       name: gcloud-private-key
       key: GCLOUD_PRIVATE_KEY

发生与密钥相关的错误。 为了以防万一,我什至尝试了转义符号,

AT终端

kubectl create secret generic gcloud-private-key --from-literal=GCLOUD_PRIVATE_KEY='"-----BEGIN PRIVATE KEY-----\n(...)\n-----END PRIVATE KEY-----\n"'

然而,它并没有那么好用!你能告诉我如何解决吗??

kubectl create secret generic gcloud-private-key --from-literal=GCLOUD_PRIVATE_KEY='"...\n...

'\n', '"' 是从文字创建时 TLS 密钥的无效字符。您可以直接从原始文件加载密钥 as-is:

kubectl create secret generic gcloud-private-key --from-literal GCLOUD_PRIVATE_KEY="$(cat <file>)"

根据gohm'c给出的提示,我解决了这个问题。

AT终端

echo -n  "-----BEGIN PRIVATE KEY-----\n(...)\n-----END PRIVATE KEY-----\n" > ./gcloud-private-key.txt

kubectl create secret generic gcloud-private-key --from-file=GCLOUD_PRIVATE_KEY=./gcloud-private-key.txt

AT.yaml

- name: GCLOUD_PRIVATE_KEY
  valueFrom: 
    secretKeyRef:
       name: gcloud-private-key
       key: GCLOUD_PRIVATE_KEY