在公用同一公网IP和端口的K8S环境中,不同域名实现不同访问需求的解决方案

发布于:2025-09-09 ⋅ 阅读:(23) ⋅ 点赞:(0)

目录

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-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,例如nginxqcloud(本文腾讯云CLB)等。

3.4 测试验证

配置完成后,务必进行验证:

  1. 从白名单IP访问:

    • 访问 a.lmzf.com 应成功。

    • 访问 b.lmzf.com 应成功。

  2. 从非白名单IP访问:

    • 访问 a.lmzf.com 应成功。

    • 访问 b.lmzf.com 应被拒绝(返回 403 Forbidden 或连接失败)。


网站公告

今日签到

点亮在社区的每一天
去签到