【问题标题】:How to setup Ingress for AWS EKS Application Load Balancer(ALB) for multiple microservices?如何为多个微服务设置 AWS EKS 应用程序负载均衡器(ALB)的入口?
【发布时间】:2021-03-22 00:25:05
【问题描述】:

我有 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. 将其链接到我的注册域的过程是什么? (带有证书管理器 Lets Encrypt 的 TLS 证书)
  3. 我应该在我的所有子域的 DNS 记录中添加什么? (ALB 的记录/CNAME)所有 5 个子域是否都具有相同的记录/配置?

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

【问题讨论】:

    标签: kubernetes microservices kubernetes-ingress amazon-eks


    【解决方案1】:
    1. 应用程序负载平衡器使用规则有条件地将请求路由到不同的主机/路径。所以AWS load balancer controller 通过注解支持该功能,详情请参阅doc
    2. 您可以通过证书管理器来管理您的域的证书。如果您使用通配符证书,AWS 负载均衡器还支持 specifying the certificate stored in ACM
    3. 是的,无论您使用什么入口控制器,您都必须为您的域创建多个 DNS 记录。您可以查看external-dns 自动制作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 2017-07-14
      • 2021-03-28
      • 2020-09-27
      • 2017-10-29
      • 2020-05-27
      • 2023-01-19
      相关资源
      最近更新 更多