Kustomize补丁OpenShift Ingress报错:数字无法反序列化为ServiceBackendPort
解决Kustomize Ingress补丁的反序列化错误
错误根源
你的报错核心在于:Ingress v1版本中,spec.defaultBackend.service.port是v1.ServiceBackendPort结构体类型,而非单纯的数字。你在补丁里直接把port替换为数字31434,导致K8s无法将数字反序列化为结构体,从而触发报错。
从你的base配置也能验证这一点,port本身是嵌套的结构体:
port: number: 31433
正确的补丁写法
你需要针对结构体里的number字段做替换,或者替换整个port结构体,两种方案都可行:
方案1:直接替换port的number字段
修改overlays/nprd-dev/patch-ingress.yaml为:
--- - op: replace path: /metadata/name value: mssql-example-ingress-dev - op: replace path: /spec/defaultBackend/service/port/number value: 31434
方案2:替换整个port结构体
如果后续需要通过端口名(而非端口号)配置,可采用这种方式:
--- - op: replace path: /metadata/name value: mssql-example-ingress-dev - op: replace path: /spec/defaultBackend/service/port value: number: 31434
额外说明
你之前尝试的/spec/defaultBackend/0/service/port等带数组索引的路径是错误的,因为defaultBackend是单个对象(而非数组),不需要添加数组索引。
内容的提问来源于stack exchange,提问作者Daryl
相关产品推荐
相关产品推荐

