Home > other >  set env variable in Kubernetes clusters
set env variable in Kubernetes clusters

Time:02-07

I am new to Kubernetes.

I found some errors while using google-cloud-storage.

The problem is, when I specify GCLOUD_PRIVATE_KEY directly in .yaml file, I work nicely.

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

However, when I inject the variable to cluster.

AT terminal

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

The error related to key occurs. I even tried for escape notation just in case,

AT terminal

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

However, it doesn't work as well! Can you let me know how I can fix it??

CodePudding user response:

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

'\n', '"' are invalid character for TLS key when create from literal. You can load the key directly from the original file as-is:

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

CodePudding user response:

Based on the hint what gohm'c gives, I solved this problem.

AT terminal

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
  •  Tags:  
  • Related