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

目录

[1. 访问需求](#1. 访问需求)

[2. 解决方案](#2. 解决方案)

[3. 具体配置](#3. 具体配置)

[3.1 允许互联网访问的域名(a.lmzf.com)](#3.1 允许互联网访问的域名(a.lmzf.com))

[3.2 需IP白名单访问的域名(b.lmzf.com)](#3.2 需IP白名单访问的域名(b.lmzf.com))

[3.3 关键参数说明](#3.3 关键参数说明)

[3.4 测试验证](#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 或连接失败)。

相关推荐
安当加密5 小时前
如何安全地在 Kubernetes 中管理凭据?——基于 SMS 凭据管理系统的实践探索
安全·容器·kubernetes
bestcxx13 小时前
(二十六)、Kuboard 部署网络问题 &k8s 使用本地镜像 & k8s使用 register本地镜像站 综合应用
网络·容器·kubernetes
霖.2419 小时前
四种常用SVC(service)及其与Ingress协作方式
linux·服务器·云原生·kubernetes·k8s
Coco_淳20 小时前
K8s平台部署Grafana + Loki + Promtail日志收集系统
kubernetes·grafana·日志·loki
liweiweili1261 天前
K8S中关于容器对外提供服务网络类型
容器·kubernetes
小白不想白a1 天前
【ansible/K8s】K8s的自动化部署源码分享
kubernetes·自动化·ansible
云道轩1 天前
初次尝试在kubernetes 1.31 上安装 人工智能模型运行平台 llm-d
人工智能·kubernetes·llm-d
缘的猿1 天前
Kubernetes 安全管理:认证、授权与准入控制全面解析
java·安全·kubernetes
幻灭行度1 天前
CKAD-CN 考试知识点分享(16) 修改 container 名称
kubernetes
走上未曾设想的道路1 天前
k8s集群与gitlab registry连接
容器·kubernetes·gitlab