KubernetesOpenShift?kubectloc-OpenShift CLI`patch`返回错误:无法将数组解组为map [string] interface类型的Go值

问题描述

我尝试patchservice(添加端口声明):

kind: Service
apiVersion: v1
metadata:
  name: istio-ingressgateway
  namespace: istio-system
  labels:
    app: istio-ingressgateway
    istio: ingressgateway
    release: istio
spec:
  ports:
    - name: status-port
      protocol: TCP
      port: 15021
      targetPort: 15021
      nodePort: 30805
    - name: http2
      protocol: TCP
      port: 80
      targetPort: 8080
      nodePort: 32130
    - name: https
      protocol: TCP
      port: 443
      targetPort: 8443
      nodePort: 30720
    - name: tls
      protocol: TCP
      port: 15443
      targetPort: 15443
      nodePort: 31202
  selector:
    app: istio-ingressgateway
    istio: ingressgateway
  clusterIP: 172.30.62.239
  type: LoadBalancer
  sessionAffinity: None
  externalTrafficPolicy: Cluster
status:
  loadBalancer: {}

使用kubectloc patch命令

kubectl patch service istio-ingressgateway -n istio-system --patch - <<EOF
spec:
  ports:
    - name: gw
      protocol: TCP
      port: 3080
      targetPort: 3080
      nodePort: 31230
EOF

,但出现错误

Error from server (BadRequest): json: cannot unmarshal array into Go value of type map[string]interface {}

??在后台,k8s/openshift使用GoLang来解析yaml?我试图在go中找到相同的解决方案-失败...

怎么了?

解决方法

尝试使用jsonpatch

oc patch service/simple-server -p \
'{ "spec": { "ports": [ { "name": "gw","protocol": "TCP","port": 1234,"targetPort": 1234 } ] } }'

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...