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

AWS EKS中配置Ingress、ClusterIP及启用TLS的技术问询

AWS EKS配置ALB Ingress及Let's Encrypt TLS指南(新手向)

先修正你当前清单中的错误

  1. Service配置里的type: LoadBalancer.多了个英文句点,若改用ClusterIP需修正为type: ClusterIP
  2. Ingress的健康检查路径/usermgmt/health-status不符合nginx默认配置,会导致健康检查失败,需改为/

问题1:如何自动配置七层应用负载均衡(ALB)而非经典负载均衡

要创建七层ALB,核心是通过ALB Ingress Controller实现,而非依赖LoadBalancer类型的Service:

  • 先确认EKS集群已部署ALB Ingress Controller(这是关键前提,没有它Ingress的ALB注解不会生效)
  • 在Ingress资源中保留kubernetes.io/ingress.class: "alb"注解,该注解会触发ALB Ingress Controller创建七层ALB,而非经典LB
  • 你的Ingress已配置alb.ingress.kubernetes.io/scheme: internet-facing,这会生成面向公网的ALB,天然支持七层HTTP/HTTPS转发规则

问题2:能否改用ClusterIP服务,通过Ingress自动创建负载均衡

完全可以,这还是EKS中暴露服务的最佳实践:

  • LoadBalancer类型的Service会创建四层经典LB,功能单一;而ClusterIP服务仅在集群内部暴露,配合Ingress由ALB Ingress Controller创建七层ALB,支持路径转发、TLS加密、规则匹配等更灵活的能力

修正后的完整清单示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service-clusterip
spec:
  type: ClusterIP
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80        
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: "alb"
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/healthcheck-path: /
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/healthcheck-port: traffic-port
spec:
  rules:
  - http:
      paths:
      - path: /*
        pathType: Prefix
        backend:
          service:
            name: nginx-service-clusterip
            port:
              number: 80              

额外:通过Let's Encrypt启用TLS加密

  1. 在AWS Certificate Manager(ACM)中申请免费的Let's Encrypt证书(需验证域名所有权,建议用Route53自动验证)
  2. 在Ingress中添加以下注解,绑定ACM证书并强制HTTPS访问:
    alb.ingress.kubernetes.io/certificate-arn: "你的ACM证书ARN"
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
    alb.ingress.kubernetes.io/ssl-redirect: "443"
    
  3. 将你的域名解析到ALB的DNS名称(Ingress创建后,可通过kubectl get ingress查看ADDRESS字段获取)

注意:ALB Ingress Controller需要绑定具备创建ALB、操作ACM等权限的IAM角色,且ACM证书需与ALB在同一AWS区域

内容的提问来源于stack exchange,提问作者Jananath Banuka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:25:29