这个是ack官方的图,由于他文章有部分,有时候说得我头晕眼花了,于是抽出来记录一下。
需求
需要一个不暴露公网的ingess
此处目标是部署多一个slb私网负载ingress,因为公网slb的ingress 默认就部署了。
1、手动申请私网SLB实例,获取实例id
2、新建Intranet Nginx Ingress Controller服务。请注意,这个是Service的服务,注意yaml脚本的kind类型。
# intranet nginx ingress slb service
apiVersion: v1
kind: Service
metadata:
# 这里服务取名为nginx-ingress-lb-intranet。
name: nginx-ingress-lb-intranet
namespace: kube-system
labels:
app: nginx-ingress-lb-intranet
annotations:
# 指明SLB实例地址类型为私网类型。
service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
# 修改为您的私网SLB实例ID。
service.beta.kubernetes.io/alicloud-loadbalancer-id: <YOUR_INTRANET_SLB_ID>
# 是否自动创建SLB端口监听(会覆写已有端口监听),也可手动创建端口监听。
service.beta.kubernetes.io/alicloud-loadbalancer-force-override-listeners: 'true'
spec:
type: LoadBalancer
# route traffic to other nodes
externalTrafficPolicy: "Cluster"
ports:
- port: 80
name: http
targetPort: 80
- port: 443
name: https
targetPort: 443
selector:
# select app=ingress-nginx pods
app: ingress-nginx
验证
#一个配置的是公网SLB实例,一个是VPC私网SLB实例。
$ kubectl -n kube-system get svc | grep nginx-ingress-lb
nginx-ingress-lb LoadBalancer 172.1*.*.** 47.96.2**.** 80:31456/TCP,443:30016/TCP 5h
nginx-ingress-lb-intranet LoadBalancer 172.19.*.*** 192.16*.*.** 80:32394/TCP,443:31000/TCP 7m
使用
直接把域名直接解析到内网SLB地址(这里 192.16*..** )即可。
ping 一下你域名应该返回192.16.*.** ,确保ping有数据返回以及telnet 端口可以通讯。