Как я могу выдать kubectl run, который извлекает переменную среды из секретной карты конфигурации k8s?

В настоящее время у меня есть:

kubectl run oneoff -i --rm NAME --image=IMAGE --env SECRET=foo

2
Alex Flint 25 Сен 2018 в 01:44

2 ответа

Лучший ответ

Посмотрите на флаг overrides команды run ... он читается как:

Встроенное переопределение JSON для сгенерированного объекта. Если он не пуст, он используется для переопределения сгенерированного объекта. Требует, чтобы объект предоставил допустимое поле apiVersion.

https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#run

Итак, в вашем случае, я думаю, это будет примерно так:

kubectl run oneoff -i --rm --overrides='
{
  "spec": {
    "containers": [
      {
        "name": "oneoff",
        "image": "IMAGE",
        "env": [
          {
            "name": "ENV_NAME"
            "valueFrom": {
              "secretKeyRef": {
                "name": "SECRET_NAME",
                "key": "SECRET_KEY"
              }
            }
          }
        ]
      }
    ]
  }
}
'  --image= IMAGE
4
Charlino 25 Сен 2018 в 00:14

Это еще одна хитрость:

 kubectl run oneoff -i --rm NAME --image=IMAGE --env SECRET=$(kubectl get secret your-secret -o=jsonpath="{.server['secret\.yml']}")
2
Rico 25 Сен 2018 в 00:32