在解决了容器基础、存储、网络之后就需要考虑服务的暴露问题,一般来说Loadbalance是够用了,但是总不可能所有服务都通过LB暴露出去,况且一般也不会准备那么大的IP池,所以必然有一些服务需要通过Ingress或者NodePort的方式暴露出去。
Ingress的方式可以通过Ingress-Nginx来做,如果需要合法的证书则可以去买一个域名,建议不要申请国内的域名,因为认证比较麻烦,可以申请国外的域名,然后把DNS转到阿里云上。
在阿里云上弄个泛域名解析,解析地址弄成自己的内网,然后把泛域名证书挂到ingress上面,这样就能使用合法的证书访问内网的服务了,再也不会跳不安全的访问了。
使用Ingress-Nginx的话也可以通过LoadBalance单独进行暴露,域名就解析到LB上;或者弄个Keepalive做个VIP,然后域名解析到这个VIP上,不过VIP的话就没有负载均衡的效果了,所有 流量只会从一个节点进去。
我们公司没有使用ingress-nginx,而是使用了apisix来做服务的暴露,apisix其实就是基于nginx的封装,提供了很多好用的插件,包括prometheus插件、skywalking插件、限流插件等,使用起来十分方便。
apisix可以通过helm直接安装,通过loadbalance暴露apisix的https端口,在dns解析上把泛域名直接解析到这个LB的IP上,然后使用CroneJob来运行acme.sh配合脚本可以定期自动的从阿里云更新证书到apisix,基本上就一劳永逸了。具体脚本可以参考这篇文章:https://juejin.cn/post/6965778290619449351
有需要的话还是建议大家申请一个域名,然后做个泛域名解析,弄个泛域名证书,使用合法的https访问不仅安全,而且可以避免一些服务强制要求访问是https的问题。像.xyz那种域名总共花十几块钱就能搞定,遇上活动还能更优惠一点,真的没必要为了那么点小钱去折腾,毕竟时间更值钱。光是看着那绿色的小锁,心里就很舒服。