首页 > 解决方案 > 如何为多个微服务设置 AWS EKS 应用程序负载均衡器(ALB)的入口?

问题描述

我有 5 个微服务,我希望允许外部流量进入。这些微服务将托管在不同的子域上。我在 EKS 上使用 K8s 集群并运行集群和其他服务。说到 Ingress,似乎有很多困惑。我已经按照eksworkshop上的本教程配置了 ALB 入口控制器。这对我有用,我可以按照教程的说明部署 2048 游戏。

现在我希望开发一个 Ingress 资源,如下所示:

# apiVersion: networking.k8s.io/v1beta1
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
    name: cluster-ingress
    annotations:
        kubernetes.io/ingress.class: alb
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/target-type: ip
spec:
    rules:
        - host: app.my-domain.com
          http:
              paths:
                  - path: /*
                    backend:
                        serviceName: app-cluster-ip-service
                        servicePort: 3000

        - host: ms1.my-domain.com
          http:
              paths:
                  - path: /*
                    backend:
                        serviceName: ms1-cluster-ip-service
                        servicePort: 8000
        - host: ms2.my-domain.com
          http:
              paths:
                  - path: /*
                    backend:
                        serviceName: ms2-cluster-ip-service
                        servicePort: 2000
        - host: ms3.my-domain.com
          http:
              paths:
                  - path: /*
                    backend:
                        serviceName: ms3-cluster-ip-service
                        servicePort: 4000
        - host: website.my-domain.com
          http:
              paths:
                  - path: /*
                    backend:
                        serviceName: website-cluster-ip-service
                        servicePort: 3333

所以这是我的疑问

  1. 如何配置入口以根据域重定向到不同的端口?(当我使用 Nginx 时,有一项规定是设置上游,然后 Nginx 相应地路由流量)
  2. 将其链接到我的注册域的程序是什么?(带有证书管理器的 TLS 证书 Lets Encrypt)
  3. 我应该在我的所有子域的 DNS 记录中添加什么?(ALB 的记录/CNAME)所有 5 个子域是否都具有相同的记录/配置?

如果有帮助,我会使用 Cloudflare 进行 DNS 管理。

标签: kubernetesmicroserviceskubernetes-ingressamazon-eks

解决方案


  1. 应用程序负载均衡器使用规则有条件地将请求路由到不同的主机/路径。因此AWS 负载均衡器控制器通过注释支持该功能,请参阅文档了解详细信息。
  2. 您可以通过 cert manager 来管理您的域的证书。如果您使用通配符证书, AWS 负载均衡器还支持指定存储在 ACM 中的证书。
  3. 是的,无论您使用什么入口控制器,您都必须为您的域创建多个 DNS 记录。您可以查看external-dns以使其自动生成。

推荐阅读