我正在尝试将领事入口添加到我的项目中,并且我正在使用这个 GitHub 存储库作为 ui 和入口的文档:在这里,不幸的是,你可以看到文档中没有入口,有一个 ingressGateways 没用因为不会在 Kubernetes 内部创建入口(它可以将 URL 暴露给外部)
我搜索了很多,有两种可能的选择:
1:为入口创建额外的部署
2:创建consul helm chart添加ingress deploy
(不幸的是,我在互联网上找不到合适的解决方案)
我正在尝试将领事入口添加到我的项目中,并且我正在使用这个 GitHub 存储库作为 ui 和入口的文档:在这里,不幸的是,你可以看到文档中没有入口,有一个 ingressGateways 没用因为不会在 Kubernetes 内部创建入口(它可以将 URL 暴露给外部)
我搜索了很多,有两种可能的选择:
1:为入口创建额外的部署
2:创建consul helm chart添加ingress deploy
(不幸的是,我在互联网上找不到合适的解决方案)
ingressGateways
Helm 图表中的配置用于为 Consul 服务网格部署 Consul入口网关(由 Envoy 提供支持)。这与 Kubernetes Ingress 不同。
Consul 的 ingress 支持路由到在服务网格内运行的应用程序,并使用ingress-gateway配置条目(或将来使用Consul CRD)进行配置。它无法路由到存在于服务网格之外的端点,例如 Consul 的 API/UI 端点。
如果您需要一个可以路由到网格之外的应用程序的通用入口,我建议使用诸如 Ambassador、Traefik 或 Gloo 之类的解决方案。所有这三个还支持与 Consul 集成以进行服务发现或服务网格。
这是一个示例 Docker 组合文件,它配置 Traefik 以公开一个名为的入口点,该入口点web
侦听 TCP 端口 8000,并将 Traefik 与 Consul 的服务目录集成以进行端点发现。
# docker-compose.yaml
---
version: "3.8"
services:
consul:
image: consul:1.8.4
ports:
- "8500:8500/tcp"
traefik:
image: traefik:v2.3.1
ports:
- "8000:8000/tcp"
environment:
TRAEFIK_PROVIDERS_CONSULCATALOG_CACHE: 'true'
TRAEFIK_PROVIDERS_CONSULCATALOG_STALE: 'true'
TRAEFIK_PROVIDERS_CONSULCATALOG_ENDPOINT_ADDRESS: http://consul:8500
TRAEFIK_PROVIDERS_CONSULCATALOG_EXPOSEDBYDEFAULT: 'false'
TRAEFIK_ENTRYPOINTS_web: 'true'
TRAEFIK_ENTRYPOINTS_web_ADDRESS: ":8000"
下面是一个 Consul 服务注册文件,它注册了一个web
正在侦听端口 80 的应用程序。服务注册包括几个标签,指示 Traefiktraefik.enable=true
通过名为 的入口点向服务 ()公开流量web
,并为服务。
service {
name = "web"
port = 80
tags = [
"traefik.enable=true",
"traefik.http.routers.web.entrypoints=web",
"traefik.http.routers.web.rule=Host(`example.com`) && PathPrefix(`/myapp`)"
]
}
这可以使用 CLI ( consul service register web.hcl
) 注册到 Consul。Traefik 将通过目录集成发现这一点,并根据标签中指定的路由配置进行自我配置。
Traefik 在端口 8000 上接收到的 HTTP 请求,Host
标头为example.com
,路径为 ,/myapp
将被路由到在web
Consul 注册的服务。
示例 curl 命令。
curl --header "Host: example.com" http://127.0.0.1:8000/myapp
这是一个比较基础的例子,适合开发/测试。如果您要部署到通常由访问控制列表 (ACL) 保护的生产 Consul 环境中,则需要定义额外的 Traefik 配置参数。