Skip to content

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:

components/service_mesh/
components/fast_drives/
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

bases:
    - ../../base

components:
    - ../../components/service_mesh