如何在库中正确使用 kustomize 替换(替换旧的 vars 功能)?

问题描述 投票:0回答:1

我正在尝试用“replacements”替换已弃用的“vars”。但是我无法让它按预期工作。

我有以下示例代码,它可以工作:

资源.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”时,同样的原理按预期工作,但由于它们已被弃用:你现在会怎么做?

当然,这是一个简化的示例,但实际上我会有大量具有完全相同替换(其中很多)的覆盖,我不想重复其代码。

那么有没有一种方法可以在基础和覆盖中继续执行此操作,仅修补单个值的出现?

kubernetes variables replace yaml kustomize
1个回答
0
投票

我认为您已经遵循了“replacements”的格式参考,您可能需要检查有关“补丁”的格式,您可以在此link中看到。

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.