Tengo un archivo json con algunas claves como esta:

{
  "a":"someval"
  "b":"someval"
  .. more keys
}

¿Cómo agrego estas claves a un secreto en kubernetes?

Cuando intento $ kubectl create secret generic mysecret --from-file=file.json, devuelve un secreto que contiene el archivo, pero quiero asignar el contenido del archivo al secreto , no agregar el archivo como secreto.

Salida:

$ kubectl get secret -n staging personalbillett-auth0-login-credentials -o yaml

apiVersion: v1
data:
  file.json: #base64 encoded stuff here.
kind: Secret

Salida deseada:

$ kubectl get secret mysecret -o yaml

apiVersion: v1
data:
  a: someval
  b: someval
kind: Secret

¿Qué estoy haciendo mal?

2
Mr.Turtle 9 may. 2019 a las 16:15

3 respuestas

La mejor respuesta

Intenta estos pasos

kubectl proxy --port 8000 &  
curl localhost:8000/api/v1/namespaces/default/secrets 

curl localhost:8000/api/v1/namespaces/default/secrets \
  -X POST -H "Content-Type: application/json" \
  --data '{"metadata":{"name":"mytest"},"stringData":{"a":"test","b":"test","c":"test"}}'

master $ curl localhost:8000/api/v1/namespaces/default/secrets/mytest{
  "kind": "Secret",
  "apiVersion": "v1",
  "metadata": {
    "name": "mytest",
    "namespace": "default",
    "selfLink": "/api/v1/namespaces/default/secrets/mytest",
    "uid": "55736602-725e-11e9-b3a2-0242ac110034",
    "resourceVersion": "2948",
    "creationTimestamp": "2019-05-09T13:28:29Z"
  },
  "data": {
    "a": "dGVzdA==",
    "b": "dGVzdA==",
    "c": "dGVzdA=="
  },
  "type": "Opaque"
}
2
P Ekambaram 9 may. 2019 a las 13:30

Si tiene JSON plano (no anidado), intente esto (suponiendo que tiene jq herramienta instalada):

kubectl create secret generic test --from-env-file <(jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]" YOUR_FILE.json)
3
Vasily Angapov 9 may. 2019 a las 13:26

Crea un archivo json como este:

{ 
  "metadata": {
    "annotations": {},
    "name": "mytest",
    "namespace": "default"
  },
  "apiVersion": "v1",
  "kind": "Secret",
  "data": {
    "a": "dGVzdA==",
    "b": "dGVzdA=="
  }
}

Luego, conéctelo a kubectl create:

echo secrets-file.json | kubectl create -f -
1
toddcscar 6 sep. 2019 a las 16:42