1. 在当前项目中,左侧菜单选择 项目设置 → 外网访问,点击 设置网关,即应用路由的网关入口,每个项目都有一个独立的网关入口。

外网访问 - 图1

  1. 在弹出的窗口选择网关的类型,支持以下两种访问方式:
  • NodePort: 此方式网关可以通过工作节点对应的端口来访问服务。
  • LoadBalancer: 此方式网关可以通过统一的一个外网 IP 来访问。
  • 应用治理: 通过 Istio 提供完整的非入侵式的微服务治理解决方案,可以有效的解决云原生应用的网络治理问题,提供熔断、限流及灰度发布等功能。

注意:由于使用 Load Balancer 需要在安装前配置与安装与云服务商对接的 cloud-controller-manage 插件,参考 安装负载均衡器插件 来安装和使用负载均衡器插件。

外网访问 - 图2

  1. 点击 保存 来创建网关。

通过 NodePort 暴露网关

如下图选择的是 NodePort 的方式,左边节点端口生成的两个端口,分别是 HTTP 协议的端口和 HTTPS 协议的端口,外网可通过 EIP:NodePort 或 Hostname:NodePort 来访问服务,如:

  • 通过 EIP 访问:

    • http://139.198.0.20:30798
    • https://139.198.0.20:31279
  • 通过在应用路由规则中设置的 Hostname 访问:

    • http://demo.kubesphere.io:30798
    • https://demo.kubesphere.io:31279

外网访问 - 图3

通过 LoadBalancer 暴露网关

前提条件:若 KubeSphere 部署在 QingCloud 云平台,确保已安装了 QingCloud LB 插件

若选择的是 LoadBalancer,负载均衡器插件将自动在云平台创建负载均衡器并绑定公网 IP 至网关,提供内部服务和应用路由的快速访问,最终可通过公网 IP 或域名的方式访问应用路由和服务。

在「项目设置」→「外网访问」下,点击「设置网关」,选择 LoadBalancer。

LB 插件可通过添加 Annotation 来配置使用,目前支持以下三种配置方式,参考 公网 IP 配置

  • 手动配置 EIP:添加一条 Annotation 的 key 是 service.beta.kubernetes.io/qingcloud-load-balancer-eip-ids,值是 公网IP 的 ID
  • 自动获取 EIP:需添加一条 Annotation 的 key service.beta.kubernetes.io/qingcloud-load-balancer-eip-source,注意自动获取 EIP 支持以下三种方式 (对应不同的值):
    • 自动获取当前账户下处于可用的 EIP,如果找不到返回错误,值设置为 use-available
    • 自动获取当前账户下处于可用的 EIP,如果找不到则申请一个新的,值设置为 auto
    • 不管账户下有没有可用的 EIP,申请一个新 EIP,值设置为 allocate
  • 配置多个服务 (Service) 共享一个公网 IP:由于 EIP 是稀缺资源,QingCloud-LB 插件提供了多个 Service 共享一个 EIP 的模式,使用这个模式有一定限制,详见 配置多个Service共享一个EIP

以下仅以其中一种配置方式 “自动获取当前账户下处于可用的 EIP,如果找不到则申请一个新的,值设置为 auto” 演示如何在 KubeSphere 配置使用。

注意,示例中的这种方式可能会造成同一账号下其他用户空闲的公网 IP 被使用。

外网访问 - 图4

1、如图在示例中添加一条注解,保存后即可允许 LB 插件自动为网关创建和绑定公网 IP,同时在 QingCloud 云平台创建负载均衡器。您在创建和使用应用路由、服务时即可为其自动生成公网 IP。

  1. service.beta.kubernetes.io/qingcloud-load-balancer-eip-source : auto

2、等待 2 分钟左右负载均衡器将在云平台自动创建完毕并自动绑定公网 IP 至网关。

外网访问 - 图5

3、在部署应用或创建应用路由、服务后,即可自动使用该公网 IP 或域名来暴露服务,方便用户快速访问。

外网访问 - 图6