Kustomize - opis¶
Jest to narzędzie do zarządzania manifestami Kubernetes bez ich duplikowania. Możemy podzielić na różne warianty konfiguracji manifesty (np. prod, dev, staging) na bazie tych samych plików bazowych, bez używania szablonów Helmowych.
Dodajemy Overlay (nakładki) na bazowe manifesty.
W nakładkach dodajemy tylko manifesty z polami które chcemy zmienić (możemy na przykład dodać tylko pole replicas).
Info
Ważne jest to, że w ramach różnych środowisk możemy także dokładać nowe manifesty, nie muszą być brane tylko z tego bazowego!
Przykład działania¶
Tworzymy manifest Deploymentu nginx, w katalogu base/deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
Aby następnie tworzyć nowe overlay'e:
plik overlays/dev/deployment.yaml
plik overlays/prod/deployment.yaml
Przykładowa struktura katalogu projektu¶
Najlepiej rozbijać na poszczególne projekty (np. właśnie overlaye), do każdego z nich dokładać kustomization.yaml a w nim podawać info o tym jakie resources są utworzone.
W głównym kustomization.yaml podajemy info o wszystkich katalogach jakie używamy, np.
a następnie w każdym z kustomization.yaml w osobnym katalogu, np. dla overlays/dev/kustomization.yaml:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- patch-deployment.yaml
- configmap-dev.yaml
k8s-cluster/
│
├── base/
│ ├── deployment.yaml
│ ├── service.yaml
│ ├── ingress.yaml
│ ├── configmap.yaml
│ └── kustomization.yaml
│
├── overlays/
│ ├── dev/
│ │ ├── kustomization.yaml
│ │ ├── patch-deployment.yaml
│ │ └── configmap-dev.yaml
│ │
│ ├── staging/
│ │ ├── kustomization.yaml
│ │ └── patch-deployment.yaml
│ │
│ └── prod/
│ ├── kustomization.yaml
│ └── patch-deployment.yaml
│
└── README.md