Kustomize для k8s обратной цепочки?
README для кастомизе говорит, что
Это как make, в том, что он делает, объявлено в файле, и как sed, в том смысле, что он выдает отредактированный текст.
Эта аналогия выходит за рамки того факта, что файлы используются для объявления того, что нужно?
Или, является ли настройка пользовательских обратных цепочек, как make, в том, что она читает все вводимые команды перед тем, как выяснить, что нужно делать, а не работает последовательно, и пошагово выполняет ввод команд, например bash, через скрипт оболочки?
РЕДАКТИРОВАТЬ: Джефф Риган (Jeff Regan) из команды Kustomize в Google объясняет модель того, как kustomize работает в начале своего выступления. Kustomize: Настройка конфигурации Kubernetes. Он также показывает, как kustomize может быть соединен последовательно, поэтому выходные данные одного kustomize могут служить входными данными для другого kustomize. Кажется, что, как указывает ITChap ниже, kustomize начинается со сбора всех ресурсов, указанных в файле kustomization.yml, в базовом каталоге. Он выполняется последовательно в серии шагов для интерактивного выполнения необходимых замен и преобразований. Повторять этап замещения / преобразования так часто, как это необходимо для завершения. Затем он выплевывает сгенерированный YAML на стандартный вывод. Поэтому я бы сказал, что это не обратная цепочка, как make, а скорее где-то посередине. НТН.
1 ответ
До сих пор я заметил, что kustomize сначала накапливает содержимое всех базовых ресурсов, а затем применяет преобразования из вашего kustomization.yml
файлы. Если у вас есть несколько уровней оверлеев, кажется, что результат не передается с одного уровня на другой.
Давайте рассмотрим следующее:
./base/pod.yml
:
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: test
image: busybox
./base/kustomization.yml
:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../pod.yml
./overlays/l1/kustomization.yml
:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../base
nameSuffix: "-l1"
./overlays/l2/kustomization.yml
:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
- ../l1
nameSuffix: "-l2"
При беге kustomize build overlays/l2
вы собираетесь получить стручок по имени test-l1-l2
как и ожидалось.
Но если вы попытаетесь исправить базовый модуль, вам придется ссылаться на модуль, используя:
patchesJson6902:
- target:
version: v1
kind: Pod
name: test
path: patch.yml
в вашей ./overlays/l1/kustomization.yml
но и в ./overlays/l2/kustomization.yml
, Во время применения исправления l2 указанный ресурс по-прежнему test
и нет test-l1
,
Я не знаю, как правильно настраивать, чтобы понять смысл этого, но это мои наблюдения. Надеюсь, что это отвечает на ваш вопрос.
PS: это может измениться с https://github.com/kubernetes-sigs/kustomize/issues/1036