You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AWS单ALB实现Kubernetes多Namespace服务自动Ingress暴露方案咨询

解决方案:自动子域名路由到K8s服务(单AWS ALB)及KodeKloud无Ingress访问原理

一、AWS单ALB实现自动子域名路由方案

要实现无需手动编写Ingress YAML,自动按www.<service-name>.<namespace>.saireddy.com路由到对应服务,且仅用一个ALB,可通过以下组合方案实现:

1. 部署AWS Load Balancer Controller

这是AWS官方维护的K8s控制器,负责管理ALB/NLB资源。先确保集群已配置好IAM权限,让控制器能操作AWS的负载均衡、安全组等资源,再将控制器部署到集群中。

2. 配置共享ALB的IngressClass

创建一个默认IngressClass,让所有自动生成的Ingress都绑定到同一个ALB。示例YAML如下:

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: alb-shared
  annotations:
    ingressclass.kubernetes.io/is-default-class: "true"
spec:
  controller: ingress.k8s.aws/alb
  parameters:
    apiGroup: elbv2.k8s.aws
    kind: IngressParams
    name: shared-alb-config
---
apiVersion: elbv2.k8s.aws/v1beta1
kind: IngressParams
metadata:
  name: shared-alb-config
spec:
  group: saireddy-shared-alb # 同组Ingress会复用同一个ALB

3. 自动生成Ingress资源

可以用以下两种方式自动生成对应Ingress:

  • 自定义K8s控制器:监听集群中Service的创建/更新事件,一旦有新Service上线,自动生成匹配www.<service-name>.<namespace>.saireddy.com的Ingress资源,同时指定Service的对应端口(比如tomcat的8080)。
  • Helm Chart+模板:用Helm部署服务时,通过模板自动生成对应的Ingress,无需手动编写YAML。

4. DNS通配符解析

在Route53(或你的DNS服务商)中配置通配符解析:将*.saireddy.com指向共享ALB的DNS名称。这样所有子域名请求都会打到这个ALB,再由ALB根据Host头匹配Ingress规则路由到对应服务。

注意事项

  • 确保ALB安全组允许80/443端口的公网流量,K8s节点安全组允许ALB访问Service对应的NodePort或Pod端口。
  • 若需HTTPS,可结合cert-manager自动生成通配符证书,绑定到Ingress上。

二、KodeKloud实验室无需配置Ingress访问服务的实现方式

KodeKloud的无Ingress即时访问,核心是两种临时暴露方式的封装:

  • NodePort+反向代理:实验室平台会自动检测Service的NodePort,然后通过部署在节点前端的反向代理,生成临时访问URL(比如https://<lab-id>-<node-port>.k8s.labs.kodekloud.com),用户访问时,反向代理直接将请求转发到对应节点的NodePort。
  • 自动端口转发:后台自动执行kubectl port-forward命令,把Pod或Service的端口映射到实验室网关服务器,再对外提供访问链接,绕过了集群的Ingress控制器。

这种模式只适合临时测试,因为NodePort端口范围有限、端口转发稳定性差,不适合生产环境。

内容的提问来源于stack exchange,提问作者saireddy bonthu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:05:25