Как использовать экологическую ценность файла inisde kubernetes yaml - PullRequest
0 голосов
/ 12 июня 2019

У меня есть один файл развертывания kubernetes, например:

Я хочу, чтобы image_tag передавался в командной строке при запуске команды kubectl create -f deploy.yaml. и предположим, что я выполнил экспорт IMAGE_TAG = 1.4.3 и хочу использовать это значение переменной ENV, вставленное в позицию тега изображения.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
     containers:
     - name: nginx
       image: nginx:{IMAGE_TAG}
    ports:
     - containerPort: 80

Ответы [ 3 ]

0 голосов
/ 12 июня 2019

самый элегантный способ. вам нужно установить двоичный файл envsubst

export key1=val1
export key2=val2
envsubst < deployment.yaml | kubectl apply -f -
0 голосов
/ 12 июня 2019

Kubectl не поддерживает переменные из коробки.Потому что на основе тегов.Для чего вы хотите достичь у вас есть разные варианты.Наиболее популярным вариантом является Helm, но, Kustomize , новый игрок получает большую поддержку со стороны сообщества.Вы также можете использовать другие инструменты, такие как Terraform , который я считаю очень неплохим вариантом, но, к сожалению, упускается из виду.

0 голосов
/ 12 июня 2019

Я делаю это:

sed -i "s/{IMAGE_TAG}/${IMAGE_TAG}/" deployment.yml
kubectl apply -f deployment.yml

, поскольку оно не поддерживается kubectl

...