gpt4 book ai didi

kubernetes - 使用 kustomize 覆盖替换多个 gke 入口主机

转载 作者:行者123 更新时间:2023-12-04 16:24:44 27 4
gpt4 key购买 nike

我有一个 GKE/GCE 入口文件,它有 2 个主机。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: myfirstdomain # <-------- override this via kustomize
http:
paths:
- path: /abc
backend:
serviceName: abc
servicePort: abc
- path: /def
backend:
serviceName: def
servicePort: def
- path: /ghi
backend:
serviceName: ghi
servicePort: ghi
- host: myseconddomain # <-------- override this via kustomize
http:
paths:
- backend:
serviceName: xyz
servicePort: xyz
我要申报 host通过 kustomize 设置值,以便我可以指定不同的 host不同环境的值。
我的开发环境覆盖补丁文件如下所示:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: dev1.example.com
- host: dev2.example.com
但是,运行 kustomize build overlays/dev 的输出看起来像这样:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- host: dev1.example.com
- host: dev2.example.com

所有其他规范都丢失了。
它最终取代了 整个 host块而不是仅替换 host线。
我该如何解决这个问题?我在用:
  • 自定义 版本v4.1.2
  • kubectl 版本v1.21.0
  • 最佳答案

    您不能使用 来做到这一点strategic merge spec.rules是一个项目数组。您必须使用 json merge 通过提供受影响的确切路径。
    您可以为 json 合并创建一个单独的补丁文件,如下所示:

    # overlays/dev/ingress-json-patch.yaml

    - op: replace
    path: /spec/rules/0/host
    value: dev1.example.com
    - op: replace
    path: /spec/rules/1/host
    value: dev2.example.com
    然后通过将以下内容添加到您的 kustomization.yaml 中来引用该补丁文件:
    # overlays/dev/kustomization.yaml

    patchesJson6902:
    - target:
    group: extensions
    version: v1beta1
    kind: Ingress
    name: my-ingress
    path: overlays/dev/ingress-json-patch.yaml

    关于kubernetes - 使用 kustomize 覆盖替换多个 gke 入口主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67332865/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com