【kustomize】特定の環境だけbaseのリソースを削除する | amateur engineer’s blog

baseのapiVersionと一部環境だけ異なるという場合に必要となる

base/hpa.yaml

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler

overlays/stg/hpa.yaml

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler

これでkustomize build すると、v1とv2beta1両方が作られてしまう。

---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
---
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler

これを回避するため、 patch: $delete でファイルを削除する

delete-hpa-v1.yaml

$patch: delete 
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler

base/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
 
resources:
- deployment.yaml
- hpa.yaml

overlays/stg/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: app-stg
 
resources:
- ./../../base
 
patchesStrategicMerge:
  - delete-hpa-v1.yaml