我正在尝试用“替换”来替换弃用的“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”时也能正常工作,但由于它们已被弃用:你现在会怎么做?
当然,这是一个简化的例子,但实际上,我会有大量的覆盖与完全相同的替换(其中许多),我不想重复的代码。
那么,有没有一种方法可以在基础和覆盖中保持这样做,只修补一个值的单一出现?
1条答案
按热度按时间xqk2d5yq1#
我想你已经遵循了“replacements“的格式参考,你可能想检查你的格式,看看你在这个link中看到的“补丁”。
希望这对你有帮助。