从k8s ingress

时间:2018-05-09 20:27:23

标签: kubernetes google-cloud-platform google-kubernetes-engine kubernetes-ingress

我在GKE上设置k8s群集。通配符DNS *.server.com将指向Ingress控制器。在集群内部,将有Web服务器pod,每个都暴露一个独特的服务。 Ingress控制器将使用服务器名称路由到各种服务。

几乎每天都会创建和销毁服务器。我想知道是否有一种方法可以从入口控制器添加和删除命名服务器,而无需编辑整个命名服务器列表。

1 个答案:

答案 0 :(得分:0)

我找到了一种通过执行以下补丁将规则添加到入口的方法:

[
  {
    "op": "add",
    "path": "/spec/rules/-",
    "value": {
      "host": "<HOST>",
      "http": {
        "paths": [
          {
            "path": "/*",
            "backend": {
              "serviceName": "<SERVICE_NAME>",
              "servicePort": <PORT>
            }
          }
        ]
      }
    }
  }
]
kubectl patch ingress ${INGRESS_NAME} --type json -p "$(cat patch.json)"

但是我找不到删除它的解决方案。我尝试过的是以下补丁;

[
  {
    "op": "remove",
    "path": '{.spec.rules[?(@.host=="<HOST>")]}'
  }
]

但是我刚刚从kubectl中得到了错误“ The”无效”

这有什么问题? 我遵循了https://kubernetes.io/docs/reference/kubectl/jsonpath/

的jsonPath语法