关于Kubernetes中Consul Ingress-Gateway的问题

问题描述

我想在我的 Kubernetes 集群中设置 consul 服务网格,并且需要启用 ingress-gateway。我的计划是将 ingress-gateway 作为 ClusterIP 服务和 Kubernetes Ingress(Nginx 入口)运行,以将流量定向到该入口。我一直在阅读 Consul.io 上的 Ingress Gateway 教程,但对某些事情感到困惑。掌舵图有一个带有名称gateways: 列表。

  • helm chart 构建的服务名称是否必须与 ingress 的 consul 配置相匹配(减去 helm 应用的前缀)?

  • 如果不需要匹配,我可以在同一个端口上设置多个 consul ingress gateway 吗?

示例:

$ cat myingress.hcl
Kind = "ingress-gateway"
# does the following Name need to match kubernetes service
Name = "ingress-gateway"
Listeners = [
  Port = 8080
  ......
]

$ kubectl get services
NAME                          TYPE               CLUSTER-IP      EXTERNAL-IP   PORT(S) 
consul-ingress-gateway        ClusterIP          <blah>          <blah>        8080/TCP,8443/TCP
......

解决方法

配置条目中的 Name 字段必须与 Consul 中注册的服务名称相匹配。默认情况下,Helm 图表使用名称“ingress-gateway”(https://www.consul.io/docs/k8s/helm#v-ingressgateways-gateways-name)。

您可以使用 name 字段对此进行自定义,该字段必须为 Helm 图表值文件中 ingressGateways.gateways 数组下列出的每个入口网关定义。例如:

---
ingressGateways:
  gateways:
    - name: ingress-gateway
      service: LoadBalancer
      ports:
        - 8080
    - name: nonprod-gateway
      service: LoadBalancer
      ports:
        - 9000

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...