Поскольку varsустарела из Kustomize 5.0.0, я начинаю переход на replacements, следуя официальной рекомендации.
Но я не могу понять, как заменить HTTPRoute/backendRefs.name на replacements.
Мой код следующий. Эти 2 ямла находятся в одном каталоге.
main.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: foooooooooooooooo
name: service
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
labels:
app: WANT_TO_REPLACE_THIS
name: route
spec:
hostnames:
- "*"
rules:
- backendRefs:
- name: WANT_TO_REPLACE_THIS
port: 3000
matches:
- path:
type: PathPrefix
value: /path
настройка.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- main.yaml
replacements:
- source:
kind: Service
name: service
fieldPath: metadata.labels.app
targets:
- select:
kind: HTTPRoute
name: route
fieldPaths:
- metadata.labels.app
- spec.rules.[backendRefs.name=WANT_TO_REPLACE_THIS].backendRefs.[name=WANT_TO_REPLACE_THIS].name
Затем запустите команду kustomize build, и результат будет следующим.
apiVersion: v1
kind: Service
metadata:
labels:
app: foooooooooooooooo
name: service
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
labels:
app: foooooooooooooooo
name: route
spec:
hostnames:
- '*'
rules:
- backendRefs:
- name: WANT_TO_REPLACE_THIS
port: 3000
matches:
- path:
type: PathPrefix
value: /path
medtadata.labels.app заменяется, а spec.rules.backendRefs.name нет. Есть ли способ заменить spec.rules.backendRefs.name?
Спасибо за ваш ответ, он кажется очень полезным! Я получил ответ от официальной проблемы github, поэтому я опубликую ее и отмечу как решенную.

Из официального выпуска GitLab я получил ответ по этому поводу.
Чтобы заменить его, я должен заменить
spec.rules.[backendRefs.name=WANT_TO_REPLACE_THIS].backendRefs.[name=WANT_TO_REPLACE_THIS].name
к
spec.rules.*.backendRefs.[name=WANT_TO_REPLACE_THIS].name
Вы можете проверить эту ссылку[1]. Было показано, что вы можете использовать патч для этого. [1]stackoverflow.com/questions/66568194/…