能够在 -p arg 中特别提供 json 时修补 Ingress,但在通过变量提供时则不能
Able to patch Ingress when specifically provided json in -p arg but not when provided through a variable
当我像下面这样指定 json 时,我正在尝试修补入口,我能够(我知道以下所有命令都启用了 --dry-运行):
kubectl patch ing ing-routing '--type=json' '--patch=[{"op": "add","path": "/spec/rules/0/http/paths/-","value": {"path": "/path/to/patch/service", "backend": {"serviceName": "patch-svc-cip","servicePort": 8443}}}]' --dry-run -o yaml -n namespace
但如果我尝试这样做:
value="$(</tmp/ingress-route-patch.json)"
kubectl patch ing ing-routing '--type=json' '--patch=$value' --dry-run -o yaml -n namespace
我收到此错误:error: json: cannot unmarshal string into Go value of type jsonpatch.Patch
我也试过了
ingressRoute=$(cat /tmp/ingress-routing-patch.json)
kubectl patch ing ing-routing '--type=json' '--patch=$ingressRoute' --dry-run -o yaml -n namespace
&
kubectl patch ing ing-routing '--type=json' '--patch=$(cat /tmp/ingress-routing-patch.json)' --dry-run -o yaml -n namespace
&
kubectl patch ing ing-routing --type='json' -p='$(cat /tmp/ingress-routing-patch.json)' --dry-run -o yaml -n namespace
但每次都出现同样的错误。我需要从文件中修补它,因为我们需要动态添加端点。
您应该在 -p
标志中使用 "
而不是 '
。
以下对我有效
kubectl patch ing ing-routine --type='json' -p="$(cat /tmp/ingress-routing-patch.json)" --dry-run -o yaml
当我像下面这样指定 json 时,我正在尝试修补入口,我能够(我知道以下所有命令都启用了 --dry-运行):
kubectl patch ing ing-routing '--type=json' '--patch=[{"op": "add","path": "/spec/rules/0/http/paths/-","value": {"path": "/path/to/patch/service", "backend": {"serviceName": "patch-svc-cip","servicePort": 8443}}}]' --dry-run -o yaml -n namespace
但如果我尝试这样做:
value="$(</tmp/ingress-route-patch.json)"
kubectl patch ing ing-routing '--type=json' '--patch=$value' --dry-run -o yaml -n namespace
我收到此错误:error: json: cannot unmarshal string into Go value of type jsonpatch.Patch
我也试过了
ingressRoute=$(cat /tmp/ingress-routing-patch.json)
kubectl patch ing ing-routing '--type=json' '--patch=$ingressRoute' --dry-run -o yaml -n namespace
&
kubectl patch ing ing-routing '--type=json' '--patch=$(cat /tmp/ingress-routing-patch.json)' --dry-run -o yaml -n namespace
&
kubectl patch ing ing-routing --type='json' -p='$(cat /tmp/ingress-routing-patch.json)' --dry-run -o yaml -n namespace
但每次都出现同样的错误。我需要从文件中修补它,因为我们需要动态添加端点。
您应该在 -p
标志中使用 "
而不是 '
。
以下对我有效
kubectl patch ing ing-routine --type='json' -p="$(cat /tmp/ingress-routing-patch.json)" --dry-run -o yaml