kubernetes - 如何为多个微服务设置 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
所以这是我的疑问
- 如何配置入口以根据域重定向到不同的端口?(当我使用 Nginx 时,有一项规定是设置上游,然后 Nginx 相应地路由流量)
- 将其链接到我的注册域的程序是什么?(带有证书管理器的 TLS 证书 Lets Encrypt)
- 我应该在我的所有子域的 DNS 记录中添加什么?(ALB 的记录/CNAME)所有 5 个子域是否都具有相同的记录/配置?
如果有帮助,我会使用 Cloudflare 进行 DNS 管理。
解决方案
- 应用程序负载均衡器使用规则有条件地将请求路由到不同的主机/路径。因此AWS 负载均衡器控制器通过注释支持该功能,请参阅文档了解详细信息。
- 您可以通过 cert manager 来管理您的域的证书。如果您使用通配符证书, AWS 负载均衡器还支持指定存储在 ACM 中的证书。
- 是的,无论您使用什么入口控制器,您都必须为您的域创建多个 DNS 记录。您可以查看external-dns以使其自动生成。
推荐阅读
- c++ - Red Hat 7.2 GCC版本支持编译C++14代码?
- c++ - 如何在 C++ 中创建任意类型的指针常量?
- vue.js - 如何在 Vuex 中使用突变来被动地创建或删除对象属性?
- android - 安装失败,原因是:“关闭”错误 | 安卓工作室 4.0.2
- python-3.x - 无余除法
- java - Java 垃圾收集器跨虚拟机的不同行为
- sql - SQL 中的 Powershell 漏洞评估
- php - 在 PHP 中计算一年中的最后一周以跳到明年
- ios - 无法将“String”类型的值转换为预期的参数类型“AnyObject?”
- ansible - ansible从变量逗号分隔创建字符串