I’ve introduced Kustomize
in this earlier post, now I feel even happier because Kustomize
can be even more customized for some CRDs(Custom Resource Definition). For instance, Kustomize
doesn’t know how to handle Istio’s VirtualService object, but with some simple YAML style configurations it ‘learns’ to handle that easily.
# k8s service, ie. service.yaml apiVersion: v1 kind: Service metadata: name: wordpress-svc spec: selector: app: wordpress ports: - name: http port: 80 targetPort: 8080 type: NodePort
# istio virtual service. ie. virtual-service.yaml apiVersion: networking.istio.io/v1alpha3 kind: VirtualService metadata: name: wordpress-vs spec: hosts: - wordpress http: - match: - uri: / route: - destination: host: wordpress-svc port: number: 80
# kustomize name reference, ie. name-reference.yaml nameReference: - kind: Service version: v1 fieldSpecs: - path: spec/http/route/destination/host kind: VirtualService
# main kustomize entry, ie. kustomization.yaml apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization configurations: - name-reference.yaml namespace: wordpress nameSuffix: -raynix
So in name-reference.yaml, kustomize
will learn the host
property in VirtualService
will be linked to the metadata.name
of a service. When the name suffix -raynix
is applied to the Service
, it will also be applied to the VirtualService
, eg.
kind: Service metadata: name: wordpress-svc-raynix ... kind: VirtualService spec: http: - route: - destination: host: wordpress-svc-raynix ...
For more information: transformer configs
🙂