kustomize の commonLabels が Headless Service のセレクタに干渉してしまうのを回避する

2022/04/15に公開

何が問題なのか

Headless Service は selector の有無により、自動的に対応する Endpoints を構成するかどうかの挙動が違うが、kustormize の commonLabels を使っていると selector が挿入されて意図しない挙動になることがある。

つまり、こういうパターンのように自前で Endpoints を作って渡してあげたいのに、selector が挿入されることでその selector に基づいたセットで上書きされてしまう。

https://github.com/kubernetes-sigs/kustomize/issues/249 などに問題として挙げられている

対応策

前述の issue にもあるように、multiple base でやるか、jsonPatch6902 で挿入される selector を削除すればいい

kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

commonLabels:
  app.kubernetes.io/name: myapp

#...(中略)

patchesJson6902:
- target:
    version: v1
    kind: Service
    name: myservice
  # prevent to add selector to headless service without selector
  patch: |-
    - op: remove
      path: /spec/selector
GitHubで編集を提案

Discussion