Czym jest Components w Kustomize?¶
Jest to mechanizm pozwalający na wielokrotne wykorzystywanie zdefiniowanych komponentów. Przykładowo, mamy 3 środowiska: self hosted, prod, qa.
Dla środowisk self hosted i prod ma być dana funkcjonalność dostępna (np. service mesh), a dla self hosted i qa ma być inna (np. fast drives).
Możemy podzielić to w taki sposób, żeby nie powielać wielokrotnie tych samych komponentów tylko wykorzystywać raz zdefiniowany tam gdzie jest potrzebny.
Projekt możemy podzielić w taki sposób:
base/
overlays/self_hosted/
overlays/prod/
overlays/qa
components/service_mesh/
components/fast_drives/
W każdym z katalogów należy umieścić kustomize.yaml.
W katalogach:
umieszczamy także nowo zdefiniowane komponenty.Przykładowy nowy manifest:
components/service_mesh/istio-deployment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo-app
namespace: demo
spec:
replicas: 2
selector:
matchLabels:
app: demo-app
template:
metadata:
labels:
app: demo-app
spec:
containers:
- name: app
image: nginx:alpine
ports:
- containerPort: 80
Oraz definicja components/service_mesh/kustomize.yaml:
apiVersion: kustomize.config.k8s.io/v1alpha1
kind: Component
resources:
- istio-deployment.yaml # istniejący deployment
patches:
- deployment-patch.yaml # gdyby istniał patch deploymentu jakiegoś
I końcowo self hosted overlay wykorzystujący nowo zdefiniowany komponent, plik overlays/self_hosted/kustomization.yaml