问题描述
我想在我的 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