目录
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-public
annotations:
kubernetes.io/ingress.class: nginx # 或使用的其他Ingress Controller
spec:
rules:
- host: a.lmzf.com # 互联网允许访问的域名
http:
paths:
- path: /
pathType: Prefix
backend:
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-restricted
annotations:
kubernetes.io/ingress.class: nginx
nginx.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: Prefix
backend:
service:
name: your-service-b
port:
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
或连接失败)。