我正在尝试“模板化”我当前用于在 GKE 上生成 Google 托管证书的 K8s 清单。当我运行 kustomize build 时,它会成功运行,但无论我使用哪种修补类型,返回的 yaml 都只显示基本配置,任何修补的值都不会反映在构建输出中。 我尝试过战略合并修补和 JSON6902 修补。 我尝试过包含补丁文件的路径,并使用
patches:
和 patchesJson6902:
直接在 kustomization.yaml 中执行此操作,以及应用 kustomize 编辑修复,结果都是相同的。 下面的文件是我最近使用 patchesJson6902:
和 kustomization.yaml 内联补丁的尝试。
Kustomize v5.5.0 和 v5.0.4-0.20230601165947-6ce0bf390ce3 (与包含 kustomize 版本的 kubectl 的结果相同)
我有以下文件布局:
base
|--managed-cert.yaml
|--kustomization.yaml
overlays
|--newenv
|--kustomization.yaml
文件内容:
托管证书.yaml
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: some-managed-cert
namespace: ""
spec:
domains:
- ""
kustomization.yaml(基础)
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- managed-cert.yaml
kustomization.yaml(覆盖)
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base
namespace: new-env
patchesJson6902:
- target:
group: networking.gke.io/v1
version: v1beta1
kind: ManagedCertificate
name: managed-cert
patch: |-
- op: replace
path: /metadata/name
value: new-cert-name
- op: replace
path: /spec/domains/-
value: new.domain.name
自定义构建输出:
# Warning: 'patchesJson6902' is deprecated. Please use 'patches' instead. Run 'kustomize edit fix' to update your Kustomization automatically.
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: some-managed-cert
namespace: new-env
spec:
domains:
- ""
正如您所看到的,命名空间转换正在发生,但没有其他任何事情发生。
您的补丁不匹配,因为您指定了版本 v1beta1,而 ManagedCertificate 是使用版本 v1 定义的。