如何在kubernetes中为现有的Ingress添加新主机?

mas*_*dak 5 kubernetes

正如我可以看到下面的页面,我可以在一个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)

Lea*_*dro 6

我个人更喜欢使用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