AWS Load Balancer Controller 企业入口

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。
本文缩写(英文全称与中文含义)
缩写 英文全称/名称 中文含义
ACM AWS Certificate Manager AWS 证书管理服务
ALB Application Load Balancer 应用负载均衡器
API Application Programming Interface 应用程序编程接口
AWS Amazon Web Services 亚马逊云服务
AZ Availability Zone 可用区
CIDR Classless Inter-Domain Routing 无类别域间路由,用于表示网段
CRD Custom Resource Definition Kubernetes 自定义资源定义
DNS Domain Name System 域名系统
EKS Elastic Kubernetes Service AWS 托管 Kubernetes 服务
IAM Identity and Access Management 身份与访问管理
IMDS Instance Metadata Service 实例元数据服务
IP Internet Protocol 网际协议;IP 地址是网络寻址标识
IRSA IAM Roles for Service Accounts 通过 Kubernetes 服务账号关联 AWS IAM 角色
LB Load Balancer 负载均衡器
PDB Pod Disruption Budget Pod 中断预算,约束自愿驱逐
VPC Virtual Private Cloud 虚拟私有云网络
VPN Virtual Private Network 虚拟专用网络
WAF Web Application Firewall Web 应用防火墙

场景:EKS 的订单 API 使用 ALB + ACM,控制器创建/协调云 LB;这里的 ALB Ingress 与已退休的社区 ingress-nginx 是不同实现。前置:基线、IRSA、跨 AZ 子网、ACM 证书、预生产域名。EKS Auto Mode 使用其托管机制,不能按本例重复接管同一资源。

IAM 与安装#

锁定 controller release 与 Chart,下载相同 release 的官方 IAM policy,收窄允许的资源/tag 条件后通过身份篇创建角色;不要从 main 拉策略配旧镜像。

export LBC_RELEASE='vREPLACE_CONTROLLER_VERSION'
curl -fsSL "https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/$LBC_RELEASE/docs/install/iam_policy.json" -o permissions.json
helm repo add eks https://aws.github.io/eks-charts
helm repo update
helm search repo eks/aws-load-balancer-controller --versions
export LBC_CHART_VERSION='REPLACE_CHART_VERSION'
helm show chart eks/aws-load-balancer-controller --version "$LBC_CHART_VERSION"

保存 lbc-values.yaml,避免依赖 IMDS 自动猜区域/VPC:

clusterName: REPLACE_CLUSTER
region: REPLACE_REGION
vpcId: vpc-REPLACE_VPC
replicaCount: 2
serviceAccount:
  create: true
  name: aws-load-balancer-controller
  annotations:
    eks.amazonaws.com/role-arn: REPLACE_LBC_ROLE_ARN
helm upgrade --install aws-load-balancer-controller eks/aws-load-balancer-controller -n kube-system --version "$LBC_CHART_VERSION" -f lbc-values.yaml --wait --timeout 10m
kubectl -n kube-system rollout status deployment/aws-load-balancer-controller

增加跨节点放置/资源/PDB;检查 API Server 到 webhook、节点/Pod 到 AWS API 的连通。升级时 CRD 不一定随 Helm upgrade 更新,按 release 指南独立处理。AWS 安装说明

Hands-on:内网 ALB 到真实 API#

保存 orders-alb.yaml,替换子网/证书;基线 Service 是 ClusterIP,使用 IP targets。客户端需从 VPC/企业 VPN 访问内网 ALB。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: orders
  namespace: orders
  annotations:
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/subnets: subnet-REPLACE_A,subnet-REPLACE_B
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
    alb.ingress.kubernetes.io/certificate-arn: REPLACE_ACM_CERTIFICATE_ARN
    alb.ingress.kubernetes.io/healthcheck-path: /readyz
    alb.ingress.kubernetes.io/success-codes: "200"
    alb.ingress.kubernetes.io/target-group-attributes: deregistration_delay.timeout_seconds=30
spec:
  ingressClassName: alb
  rules:
    - host: orders.internal.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service: {name: orders-api, port: {number: 80}}

确认 alb IngressClass 存在;明确设置企业允许的 inbound CIDR/安全组,避免默认内网可达范围过宽。要做公网入口时单独审核 WAF、限流、鉴权、日志和安全组,不直接改 scheme。

kubectl apply -f orders-alb.yaml
kubectl -n orders describe ingress orders
kubectl -n orders get targetgroupbindings

查 AWS TargetGroup 每个 Pod target 健康,再配置私有 DNS,验证证书和真实业务。用 pod readiness gate 时先按官方要求标记 namespace、确保目标资源存在,再重建业务 Pod;不能给已创建 Pod 期待自动补注入。注解与流量行为

验收与恢复#

持续请求中滚动发布/排空一台节点,记录 ALB 5xx、target response time、连接排空及业务成功率;应用退出宽限应覆盖 deregistration 和在途请求。演练 readiness 失败只摘除相应 target,其他副本继续接流。

IngressGroup 可以合并 LB,但同组租户可能影响路由优先级,跨不信任团队不共享 group。故障恢复旧 Service/Ingress 路由并观察 target;删除 Ingress 可能删除 LB,不能当普通配置回滚。卸载控制器前处理 finalizer 和云资源,防止遗留收费 LB 或无法删除的资源。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭