在公用同一公网IP和端口的K8S环境中,不同域名实现不同访问需求的解决方案
目录
1. 访问需求
2. 解决方案
3. 具体配置
3.1 允许互联网访问的域名(a.lmzf.com)
3.2 需IP白名单访问的域名(b.lmzf.com)
3.3 关键参数说明
3.4 测试验证
1. 访问需求
在腾讯云TKE环境中,多个域名解析到同一负载均衡器(CLB),域名共用一端口(443),对域名A(a.lmzf.com
)允许互联网访问,对域名B(b.lmzf.com
)限制指定IP访问。
2. 解决方案
- 配置点:域名访问控制 (应用层)
- 实现方式:Ingress Annotations
3. 具体配置
为需要不同访问策略的域名创建独立的Ingress资源。
3.1 允许互联网访问的域名(a.lmzf.com)
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-publicannotations:kubernetes.io/ingress.class: nginx # 或使用的其他Ingress Controller
spec:rules:- host: a.lmzf.com # 互联网允许访问的域名http:paths:- path: /pathType: Prefixbackend:service:name: your-service-a port:number: 443
3.2 需IP白名单访问的域名(b.lmzf.com)
创建另一个Ingress,并使用白名单注解。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-restrictedannotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/whitelist-source-range: "5.6.7.8/32, 192.168.1.100/24" # 允许的IP段
spec:rules:- host: b.lmzf.com # 需加白访问的域名http:paths:- path: /pathType: Prefixbackend:service:name: your-service-bport:number: 443
3.3 关键参数说明
-
nginx.ingress.kubernetes.io/whitelist-source-range
:此注解用于设置允许访问的源IP地址段(CIDR格式),多个IP段用英文逗号隔开。 -
kubernetes.io/ingress.class
:指定处理此Ingress规则的Controller,例如nginx
、qcloud
(本文腾讯云CLB)等。
3.4 测试验证
配置完成后,务必进行验证:
从白名单IP访问:
访问
a.lmzf.com
应成功。访问
b.lmzf.com
应成功。从非白名单IP访问:
访问
a.lmzf.com
应成功。访问
b.lmzf.com
应被拒绝(返回403 Forbidden
或连接失败)。