jmc*_*n92 5 kubernetes nginx-ingress kustomize
我有这个 ingress.yaml 基本配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
sia: aza
app: asap-ingress-internal
name: asap-ingress-internal
annotations:
kubernetes.io/ingress.class: "nginx-external"
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:
- host: the-host-value
http:
paths:
- path: /asap-srv-template/(.*)
backend:
serviceName: asap-srv-template
servicePort: 8080
Run Code Online (Sandbox Code Playgroud)
并且只想替换 spoec.rules.host 值(并保持所有 http.paths 原样。
所以我创建了一个这样的 env-var.yaml :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: asap-ingress-internal
spec:
rules:
- host: the.real.hostname
Run Code Online (Sandbox Code Playgroud)
但结果如下:
$ kustomize build
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx-external
nginx.ingress.kubernetes.io/use-regex: "true"
labels:
app: asap-ingress-internal
env: dev
sia: aza
name: asap-ingress-internal
namespace: aza-72461-dev
spec:
rules:
- host: the.real.hostname
Run Code Online (Sandbox Code Playgroud)
我丢失了所有 http.paths 配置,我不知道该怎么做。
我尝试使用 patch: 或 kustomization.yaml 中的 patchStrategicMerge 但结果始终相同。
任何帮助将不胜感激
Che*_* A. 17
另一种选择是进行内联补丁。这与 mroma 提供的方法相同,但没有文件。我觉得更简单。
# kustomization.yaml
resources:
- ingress.yaml
patches:
- target:
kind: Ingress
name: asap-ingress-internal
patch: |-
- op: replace
path: /spec/rules/0/host
value: the.real.hostname
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以为此使用 json 补丁,下面是一个示例。
这是一个例子kustomization.yaml。它将在该patches部分中调用一个补丁:
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- ../../base/app1
patches:
- target:
kind: Ingress
name: my-ingress
path: ingress-patch.json
Run Code Online (Sandbox Code Playgroud)
这是一个例子ingress-patch.json:
[
{
"op": "replace",
"path": "/spec/rules/0/host",
"value": "the.real.hostname"
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1518 次 |
| 最近记录: |