kubernetes 如何正确使用kustomize替换在基地(取代旧的vars功能)?

wnrlj8wa  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(106)

我正在尝试用“替换”来替换弃用的“vars”。但是我不能让它像我想要的那样工作。
我有以下示例代码,它可以工作:
resource.yaml:

---
apiVersion: v1
kind: FooBar
metadata:
  labels:
    my.label.io/name: NAME_PLACEHOLDER
  name: NAME_PLACEHOLDER
  namespace: NAMESPACE_PLACEHOLDER
spec:
  foo: bar

kustomization.yaml:

---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- resource.yaml

replacements:
- source:
    fieldPath: metadata.name
    kind: FooBar
    name: NAME_PLACEHOLDER
  targets:
  - fieldPaths:
    - metadata.labels.[my.label.io/name]
    select:
      kind: FooBar
      name: NAME_PLACEHOLDER

namespace: my-final-namespace
patches:
- target:
    kind: FooBar
    name: NAME_PLACEHOLDER
  patch: |-
    - op: replace
      path: /metadata/name
      value: my-final-name

kubectl kustomize .的输出符合预期:

apiVersion: v1
kind: FooBar
metadata:
  labels:
    my.label.io/name: my-final-name
  name: my-final-name
  namespace: my-final-namespace
spec:
  foo: bar

如果我现在把它分成基础和覆盖,它就不再起作用了。
基础kustomization.yaml:

---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- resource.yaml

replacements:
- source:
    fieldPath: metadata.name
    kind: FooBar
    name: NAME_PLACEHOLDER
  targets:
  - fieldPaths:
    - metadata.labels.[my.label.io/name]
    select:
      kind: FooBar
      name: NAME_PLACEHOLDER

覆盖kustomization。yaml:

---
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
- ../base/

namespace: my-final-namespace
patches:
- target:
    kind: FooBar
    name: NAME_PLACEHOLDER
  patch: |-
    - op: replace
      path: /metadata/name
      value: my-final-name

kubectl kustomize .输出:

apiVersion: v1
kind: FooBar
metadata:
  labels:
    my.label.io/name: NAME_PLACEHOLDER
  name: my-final-name
  namespace: my-final-namespace
spec:
  foo: bar

同样的原则在使用“vars”时也能正常工作,但由于它们已被弃用:你现在会怎么做?
当然,这是一个简化的例子,但实际上,我会有大量的覆盖与完全相同的替换(其中许多),我不想重复的代码。
那么,有没有一种方法可以在基础和覆盖中保持这样做,只修补一个值的单一出现?

xqk2d5yq

xqk2d5yq1#

我想你已经遵循了“replacements“的格式参考,你可能想检查你的格式,看看你在这个link中看到的“补丁”。
希望这对你有帮助。

相关问题