#kubernetes #customization #kubectl #declarative #kustomize
#kubernetes #настройка #kubectl #декларативный
Вопрос:
Таким образом, мы используем 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:
Вам необходимо создать kustomization.yaml
файл, содержащий настройки.
т.е.:
# kustomization.yaml
bases:
- ../base
images:
- name: nginx-pod
newTag: 1.15
newName: nginx-pod-2
А для шаблонов вы создаете базовую папку, содержащую настройку.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
Комментарии:
1. спасибо за быстрый ответ. в наших вариантах использования нам нужны эти переменные в разных местах: например, в кластере-автоскалере
spec:template:spec:containers:command:- --node-group-auto-discovery=asg:tag=k8s.io/cluster-autoscaler/enabled,k8s.io/cluster-autoscaler/${CLUSTER_NAME}
. Другая проблема заключается в том, что эта версия меняется очень часто каждый день. Изменять настройку не так удобно. yaml как передать его во время развертывания2. Извините, я не понял, в чем проблема с автоматическим масштабированием и переменными