使用Ingress来负载分发微服务
Demo规划
准备Demo并完成部署
创建部署(Deployment)资源
创建服务(Service)资源
创建Ingress资源并配置转发规则
NodePort Service存在太多缺陷,不适合生产环境。LoadBlancer Service则不太灵活,比如针对微服务架构,那么不同服务是否需要多个负载均衡服务呢?那么,我们还有其他选择么?那就是Ingress。
Ingress将集群外部的HTTP和HTTPS路由暴露给集群中的Service,相当于集群的入口,而入口规则则由Ingress定义的规则来控制。在使用Ingress之前,我们先需要有一个Ingress Controller(入口控制器),例如ingress-nginx。Ingress负责定义抽象的规则,而Ingress Controller负责具体实现。通常情况下,Ingress搭配负载均衡一起使用。接下来,笔者结合一个简单的微服务Demo来使用Ingress进行负载分发。由于需要使用到负载均衡服务,本教程使用腾讯云容器服务进行讲解。
Demo规划
为了便于大家理解,我们先做一个简单的规划。整体规划图如下所示:如图所示,整体步骤如下所示:
我们需要开发两个应用,分别为apidemo1和apidemo2,并提供不同的接口服务;
然后需要将两个应用分别部署到k8s集群,并且分别创建不同的Service;
接下来,我们需要创建Ingress,配置不同的转发规则;
最后,为了访问方便,我们需要配置域名映射。
准备Demo并完成部署
如上所述,接下来我们进入开发环节。为了完成我们上述的目标,我们需要提供以下两个demo(不限编程语言):
apidemo1
如下图所示,apidemo1的访问路径为https://{hostname}:{port}/api/demo1,输出JSON“["value1","value2"]”。