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
🙂
