正如我可以看到下面的页面,我可以在一个Ingress中设置两个或三个主机. https://kubernetes.io/docs/concepts/services-networking/ingress/#name-based-virtual-hosting
但是如何向现有入口添加新主机?我尝试了像apply或patch这样的命令,但它没有用.
有谁知道这个解决方案?
kubectl patch -f sample-ingress.yml -p '
{"metadata": {"name": "sample-ingress"}, "spec": [{
"host": "39500000.sample.com",
"http": {"paths": [{
"backend": {"serviceName": "39500000", "servicePort": 8080}
}]
}}]
}'
The Ingress "sample-ingress" is invalid: spec.backend.serviceName: Required value
Run Code Online (Sandbox Code Playgroud)
我个人更喜欢使用PATCH作为向现有 kubernetes 入口添加新主机的首选方法。
该命令将如下所示:
kubectl patch ingress my-ingress --type json --patch "$(cat patch.json)"
patch.json 是哪里
[
{
"op" : "add" ,
"path" : "/spec/rules/-" ,
"value" : {
"host": "evil.facebook.com",
"http": {
"paths": [
{
"backend": {
"serviceName": "tracker-app",
"servicePort": 80
}
}
]
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
一些注意事项: - my-ingress 是集群中部署的 ingress 的名称 - 可以只粘贴 json 而不是使用这个技巧“$(cat patch.json)”
另外,这个解决方案最主要的一点是,它利用了kubernetes自身的能力,根据这些规则来合并json 。
可以在此处找到来自官方来源的更多修补信息。
Sim*_*n I -1
您可以使用 so 编辑资源,kubectl edit这样kubectl edit ing sample-ingress您就可以更改当前的 Ingress。
或者您可以尝试kubectl get ing sample-ingress -o json,这将为您提供 json 格式的当前状态sample-ingress,将其粘贴到您的文本编辑器中将为您创建一个清单提供良好的基础,然后您就可以使用它kubectl replace -f。