Kubernetes(OpenShift)👉kubectl(oc-OpenShift CLI)`patc



我尝试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: {}

使用kubectlocpatch命令

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 } ] } }'

最新更新