Подстановка переменных в новой поддержке kubernetes kustomize (с версии 1.14.0): kubectl apply -k ./ - PullRequest
2 голосов
/ 23 апреля 2019

Мы используем kustomize для наших развертываний в kubernetes следующим образом:

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

и развертываем этот yaml, подставляя переменную IMAGE_VERSION с 1.7.9

kustomize build ./nginx/overlays/dev/ | sed -e 's|${IMAGE_VERSION}'"|1.7.9|g" | kubectl apply -f -

Поскольку kubectl 1.14 поддерживает kustomize.

теперь мы можем сделать что-то очень хорошее, как это

kubectl apply -k ./

, но как заменить переменную IMAGE_VERSION этой новой командой?

1 Ответ

2 голосов
/ 23 апреля 2019

Вы должны создать файл kustomization.yaml, содержащий настройки.

т.е:

# kustomization.yaml
bases:
- ../base
images:
  - name: nginx-pod
    newTag: 1.15
    newName: nginx-pod-2

А для шаблонов вы создаете базовую папку, содержащую kustomization.yaml со ссылкой на развертывание и зависимости, то есть:

# ../base/kustomization.yaml
resources:
- deployment.yaml

и

# ../base/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx-pod

Запустите команду:

kubectl apply -k

Приведенная выше команда скомпилирует настройку и сгенерирует следующий yaml для применения к кластеру:

# Modified Base Resource
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      # The image image tag has been changed for the container
      - name: nginx
        image: nginx-pod-2:1.15
...