kubernetes 领事如何暴露入口

x7yiwoj4  于 2023-01-04  发布在  Kubernetes
关注(0)|答案(2)|浏览(117)

我正在尝试将consulentrance添加到我的项目中,我正在使用这个GitHub repo作为ui和entrance的文档:在这里,正如您所看到,不幸的是,Doc中没有入口,有一个ingressGateways,它没有用,因为它不会在Kubernetes内部创建入口(它只能将URL暴露给外部)
我已经搜索了很多,有2个可能的选项:
1:为入口创建额外展开
2:创建consulhelm图表以添加入口部署
(不幸的是,我在网上找不到合适的解决方案)

rhfm7lfc

rhfm7lfc1#

下面是一个示例Docker组合文件,它配置Traefik以公开一个名为web的入口点,该入口点侦听TCP端口8000,并将Traefik与领事的服务目录集成以进行端点发现。

# 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。服务注册包括两个标记,指示Traefik通过名为web的入口点向服务(traefik.enable=true)公开流量,并为服务创建关联的路由配置。

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)将被路由到向Consul注册的web服务。
curl命令示例。

curl --header "Host: example.com" http://127.0.0.1:8000/myapp

这是一个相对基本的示例,适合于开发/测试。如果您要部署到通常由访问控制列表(ACL)保护的生产领事环境中,则需要定义额外的Traefik配置参数。

8tntrjer

8tntrjer2#

Helm图表中的ingressGateways配置用于部署领事服务网格的领事ingress gateway(由Envoy提供支持)。这与Kubernetes入口不同。
Consul的入口允许路由到在服务网格内部运行的应用程序,并使用ingress-gateway配置条目(或将来使用Consul CRDs)进行配置。它不能路由到服务网格外部的端点,如Consul的API/UI端点。
如果您需要一个可以路由到网格之外的应用程序的通用入口,我建议使用诸如Ambassador、Traefik或Gloo之类的解决方案,这三种解决方案都支持与Consul集成以实现服务发现或服务网格。

相关问题