Kubernetes Ingress修改Host及TLS Host报错求助
解决Kubernetes Ingress Patch命令报错问题
你的kubectl patch命令报错,核心原因是JSON Patch语法错误——replace操作必须用path字段指定要修改的资源路径,而不是你写的host字段。另外Ingress里的host和tls.hosts是两个不同的位置,需要分别定位路径。
错误命令的问题点
原命令里的JSON Patch结构不符合规范,正确的JSON Patch格式需要包含op(操作类型)、path(目标字段路径)、value(新值)三个字段,你错误地把path写成了host,导致K8s API无法识别请求。
正确的Patch命令示例
1. 修改Ingress规则中的host(单个规则)
如果要修改第一个规则的host,命令如下:
kubectl patch ing/test-ingress --type=json -p='[{"op": "replace", "path": "/spec/rules/0/host", "value": "test.com"}]' -n test
/spec/rules/0/host:0代表第一个规则,如果你要修改其他规则,把0换成对应索引。
2. 修改TLS配置中的hosts(单个host)
如果要修改TLS配置里的第一个host,命令如下:
kubectl patch ing/test-ingress --type=json -p='[{"op": "replace", "path": "/spec/tls/0/hosts/0", "value": "test.com"}]' -n test
/spec/tls/0/hosts/0:第一个0是TLS配置的索引,第二个0是hosts列表里的第一个元素。
3. 同时修改规则host和TLS hosts
如果需要一次性修改这两个字段,把两个replace操作放到数组里:
kubectl patch ing/test-ingress --type=json -p='[{"op": "replace", "path": "/spec/rules/0/host", "value": "test.com"}, {"op": "replace", "path": "/spec/tls/0/hosts/0", "value": "test.com"}]' -n test
验证修改结果
执行完patch命令后,用以下命令确认修改是否生效:
kubectl get ing/test-ingress -n test -o yaml
内容的提问来源于stack exchange,提问作者crazyboy0007
相关产品推荐
相关产品推荐

