Ali Ingres Controller安装及路由配置浅析
前言
本文主要讲述阿里云ACK上安装ingress controller,对外网、内网的slb或者同时对内对外的配置详情及注意事项。
Ingress controller安装配置及注意事项
安装ack时选择安装
此种方式最简单,根据需求即可安装对外或者对内的ingress controller,默认公网访问,安装好即可,如下图所示:
应用市场手动安装
点击查看官方文档安装方式,官方文档介绍的不在赘述,下面只讲述注意事项。
-
1.20及以上集群选中ack-ingress-nginx-v1,选择所需要安装的集群和命名空间,这里发布名称比较关键,命名过长会重复加上ack生成的字符串会报错,这里只写一个和自己项目关联的关键字名称即可,后面会自动补齐,如下所示 下一步官方文档有关controller.ingressClass描述:同一个集群中不同套Ingress Controller监听的Ingress Class标识必须唯一,且不能设置为nginx关键字(nginx是集群默认Ingress Controller的监听标识)。但是默认的ingress class的值包含nginx,如下图所示,所以此处要手动修改成不包含关键字的额名字,如test-internal-ingressclass,不改的话,后续ingress controller将无法使用
Ingress对内对外路由配置及注意事项
只有对外服务Ingress配置
默认上面安装好都是对外的ingress,所以假设ack环境中只有一套对外ingress controller,在配置好对应的service、deployment服务之后,即可配置对外的ingress,此处需要注意的地方是annotations里面要指定上面强调容易出错的ingressclass名字,关于ingressclass的更多详情,可以参考
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: kubernetes.io/ingress.class: vccp-internal-ingressclass
对内对外同时存在时ingress配置
同时存在对内外的ingress配置分为如下两种情况:
同一个服务同时需要对内对外
不同服务各自对内对外
比如A服务只需要对公网暴露,B服务只需要对私网暴露;此时需要部署两个ingress controller,一个对外一个对内,上面已经部署了一个对外网访问的controller,接下来只需要应用市场里面部署一个对内即可,部署完成,此时有两个ingressclass,ingressclass的作用是指定ingress使用哪一个controller,创建ingress时,annotations里面如上述所示,指定对应ingressclass。 需要额外说明的是对内暴露的服务可以通过上述在创建ack时指定负载均衡类型为私网类型即可,或者应用市场里面再创建一个,创建好之后删除之前的service和对公的SLB,同时按照上述创建对内的slb和service即可,详情可以点击看官方文章。
注意事项
用helm安装的k8s服务,需要通过helm卸载安装,不然有些服务删除不掉,会有各种报错。
-
可以在ack控制台 应用–云原生–helm里面找到对应服务卸载掉 通过 helm delete --purge chartname删除