Druid AWS 部署中的 Ingress 与 Route53 问题

Druid AWS 部署中的 Ingress 与 Route53 问题

背景

在 AWS 上使用 Kubernetes 部署 Druid 时,通常会使用 AWS ALB(Application Load Balancer)来做流量路由与负载均衡。通过配置 Kubernetes 的 Ingress 资源,ALB 可以将流量路由到不同的服务。与此同时,还需要配置 Route 53 来处理 DNS 域名解析,使应用能够通过域名访问。

本配置示例展示了如何将 AWS ALB Ingress Controller 与 Kubernetes Ingress 资源进行关联设置。

调试

  1. 获取 ALB 证书 ARN:如果需要为 ALB 配置 SSL/TLS 证书,可以通过 AWS ACM(AWS Certificate Manager)获取证书 ARN,该证书 ARN 需要向 SRE 团队申请。该证书用于 HTTPS 配置。以下是示例配置:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    ingress:
    name: alb-ingress-route
    domain: druid-1.net
    enabled: true

    ingress2:
    name: alb-ingress2-route
    domain: druid-2.net
    enabled: true

    ingressClass:
    enable: true
    name: alb
    annotations:
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:xxx
    alb.ingress.kubernetes.io/subnets: sub-xxx
    alb.ingress.kubernetes.io/group.name: druid
    alb.ingress.kubernetes.io/healthcheck-path: /status/health
    alb.ingress.kubernetes.io/healthcheck-port: "8888"
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
    alb.ingress.kubernetes.io/manage-backend-security-group-rules: "true"
    alb.ingress.kubernetes.io/scheme: internal
    alb.ingress.kubernetes.io/success-codes: "200"
    alb.ingress.kubernetes.io/tags: Owner=Gary
    alb.ingress.kubernetes.io/target-type: ip

  2. 获取 Kubernetes Ingress 地址:通过 kubectl 查询 Kubernetes 中的 Ingress 资源,获取 ALB 地址。以下是命令与输出示例:

    1
    2
    3
    4
    bwdev get ingress
    NAME CLASS HOSTS ADDRESS PORTS AGE
    alb-ingress-route alb druid-1.net internal-k8s-druid-xxx.elb.amazonaws.com 80 31d
    alb-ingress2-route alb druid-2.net internal-k8s-druid-xxx.elb.amazonaws.com 80 31d

    其中 ADDRESS 字段即为 AWS ALB 的 DNS 地址,可将其作为配置 Route 53 时的记录值。

  3. 修改 AWS Route 53 资源:在 AWS Route 53 中为域名配置相应的 A 记录或 CNAME 记录,确保 druid-1.net 与 druid-2.net 域名指向 ALB 的 DNS 地址(例如:internal-k8s-druid-xxx.elb.amazonaws.com )。

    在 AWS Route 53 控制台中执行以下步骤:

    • 创建或更新 A 记录,使其指向 ALB 的 DNS 地址。
    • 按需确认域名解析配置为 Public 或 Private。

    示例记录:

    1
    2
    druid-1.net   A   internal-k8s-druid-xxx.elb.amazonaws.com
    druid-2.net A internal-k8s-druid-xxx.elb.amazonaws.com
  4. 验证配置:完成 ALB 与 Route 53 配置后,可通过访问 druid-1.net 与 druid-2.net 等域名来验证 ALB 是否能正常路由流量。

结论

通过正确配置 ALB Ingress Controller 与 Route 53,可以将流量路由到 Kubernetes 中的服务,并使用 AWS 提供的证书进行 HTTPS 加密。关键步骤包括:获取证书 ARN、查询 Ingress 地址以及更新 Route 53 配置。请确保所有资源与域名配置正确,以便能够顺利访问应用。


Druid AWS 部署中的 Ingress 与 Route53 问题
https://garychow-lgtm.github.io/zh-CN/2025/03/19/ingress-and-route53-issues-with-druid-aws-deployments/
作者
Gary Chow (Yimin Cao)
发布于
2025年3月19日
许可协议