- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在集群上运行了一些服务,并且 ALB 工作正常。但是我有一个 CloudFront 分布,由于一些内部因素,我想使用集群作为入口点。因此,我正在尝试添加一个入口,以根据默认规则或命名主机将请求重定向到 CloudFront 分配,两者都可以工作。
我尝试了两种不同的方法,但没有骰子:
创建外部名称和入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
namespace: default
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: "internet-facing"
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]'
alb.ingress.kubernetes.io/certificate-arn: <my-cert-arn>
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": {
"Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
alb.ingress.kubernetes.io/group.name: <my-group-name>
spec:
rules:
- host: test.my-host.net
HTTP:
paths:
- backend:
serviceName: test
servicePort: use-annotation
path: /
---
apiVersion: v1
kind: Service
metadata:
name: test
spec:
type: ExternalName
externalName: test.my-host.net
我还尝试使用 ALB Ingress v2 上的注释创建带有重定向的入口,就像文档一样:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: "internet-facing"
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]'
alb.ingress.kubernetes.io/certificate-arn: <my-cert-arn>
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": {
"Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
alb.ingress.kubernetes.io/actions.redirect-to-eks: >
{"type":"redirect","redirectConfig":{"host":"my-
dist.cloudfront.net","path":"/","port":"443",
"protocol":"HTTPS","query":"k=v","statusCode":"HTTP_302"}}
alb.ingress.kubernetes.io/group.name: <my-group-name>
spec:
rules:
- host: <my-host-name>
HTTP:
paths:
- backend:
serviceName: ssl-redirect
servicePort: use-annotation
最佳答案
无法使用 ExternalName
的原因服务类型是因为它没有端点。 ALB 只能将目标设置为 instance
或 ip
( documentation ) 所以 ExternalName
不是这里的选择。
您可以使用注释创建重定向,但这有点棘手。 第一 ,您至少需要两个具有公共(public)访问权限的子网 alb.ingress.kubernetes.io/subnets
注解。可以自动发现子网,但我不知道它是否可以从分配给 EKS 集群的所有子网中选择公共(public)子网,所以最好明确设置。 第二 , 你需要使用 alb.ingress.kubernetes.io/actions.<ACTION NAME>
注释 ( documentation ),其中 <ACTION NAME>
必须匹配 serviceName
从入口规则。 第三 ,您需要指定Host
在重定向配置中,否则它将是 host
来自入口 spec
.
这是一个工作示例:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: test-alb
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: "internet-facing"
alb.ingress.kubernetes.io/subnets: "public-subnet-id1,public-subnet-id2"
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80,"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Host":"example.com", "port":"443", "StatusCode": "HTTP_301"}}'
spec:
rules:
- host: alb-test.host.name
http:
paths:
- backend:
serviceName: redirect
servicePort: use-annotation
您的
ssl-redirect
注释几乎是正确的,只是它重定向到
<my-host-name>
.我建议您使用 Web 控制台(在链接中更改区域)
https://console.aws.amazon.com/ec2/v2/home?region=eu-central-1#LoadBalancers:sort=loadBalancerName查看生成的重定向规则并调试其他选项。
nginx
的专用部署例如。或者您可以使用
nginx ingress controller ,根据我的经验,使用它设置重定向要容易得多。
关于kubernetes - 使用 ALB 重定向到外部资源的入口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64742390/
最初,我认为每个 ALB 监听器具有不同路径模式的多个服务以适本地分发 API 调用是显而易见的选择。不过,就健康检查而言(如果其中一项服务出现故障),我不知道有一种聪明的方法可以将该服务的流量转移到
我正在为 2 个服务创建一个 ALB,并带有注释:merged。这行不通。我在日志中也看不到太多 Action 。我究竟做错了什么?工作节点具有 AWS 文档中提到的 ALB 入口策略(也添加了下面的
如果我们需要 AWS 中的静态 IP 地址用于负载均衡器,那么我们必须让网络负载均衡器将请求转发到应用程序负载均衡器。 现在由于ALB只支持HTTP和HTTPS协议(protocol)和NLB只支持T
我在集群上运行了一些服务,并且 ALB 工作正常。但是我有一个 CloudFront 分布,由于一些内部因素,我想使用集群作为入口点。因此,我正在尝试添加一个入口,以根据默认规则或命名主机将请求重定向
我们正在使用 Amazon Webservices ECS 和 Application Load Balancer (ALB) 开发微服务架构。 ALB 每个域都有一个规则,它将路径模式耦合到一个目标
我的 Apache 服务器在 ALB/ELB 后面。我正在负载平衡器上终止 SSL。负载均衡器同时监听 80 和 443。我想将所有 http 请求重定向到 https。 我在 vhost 配置中有这
鉴于 Cloudformation 目前不支持 ALB Lambda 集成,我正在尝试编写一个简单的脚本来创建目标组,将 lambda 注册到目标组,然后将监听器规则指向该目标组。 当我通过用户界面执
我有 ALB 的时间序列数据,我想对其应用异常预测,以便它告诉我 ALB 哪个将出现故障。我已经收集了 ALB 的所有 cloudwatch 指标。谁能指导我如何继续? 最佳答案 如果您引用的是 AW
我正在尝试通过 Python 的 ALB 进行授权。据我了解,ALB 在让您访问该网站之前会查找“AWSELBAuthSessionCookie”cookie。我自己登录应用程序时(使用用户名和密码)
我已经部署了一个 AWS ALB Controller ,并在 EKS 集群中创建了具有入口资源的监听器。 我遵循的步骤如下: 我有一个名为 first-test-api 的服务入口,一切正常 我部署
我在容器中部署了微服务,它们运行良好,我们可以使用 ALBendpoint/microservice 进行访问。 但是我附加到 ALB 的目标组显示“不健康”状态。 AWS 控制台中的错误:这些可用区
我想创建一个 ALB,它应该根据到不同网站的路径来路由我的流量。例如。 example.com/apple/应该转到 8080 example.com/grapes/应该转到 8180 example
我正在尝试找到一种方法来阻止主机 header 攻击发生在我的 ALB 上。我的负载均衡器负责将端口 80 重定向到 443,这就是攻击可能发生的地方。现在我能看到的唯一方法是手动添加我的每个域,然后
我们有很多互联网服务,什么是注意事项 使用指向目标 🎯 组的监听器规则,是对每个服务使用 alb 还是对所有服务使用单个 alb。 这些服务有自己的集群/目标组,具有不同的功能和不同的 url。 一
我以这种方式配置了一个AWS ALB,它应该将IRID_a *重新请求(302)请求到另一个区域。 但是,事实证明,AWS ALB的REDIRECT功能正在将所有http:方法(POST,PUT等)更
背景 : 我有一个 VPC与 3 个公共(public) subnets (子网可以访问互联网网关) 我在这个 VPC 中有一个 EKS 集群,EKS 集群是从控制台创建的,而不是使用 eksctl
我在 ALB 后面有一个 lambda 目标。我的 lambda 是一个 python lambda。 def handler(event, context): response = { "s
对于 ALB -“您必须从至少两个可用区指定子网。” 对于 NLB -“您可以从一个或多个可用区指定子网。” 强制执行 2 个可用区作为 ALB 的 MUST 要求而不是 NLB 的原因是什么? 最佳
我们正在启动 ALB 来访问 EMR 服务的各种 UI。但是,当我们启用启动 3 个主节点的 EMR 的高可用性时,alb 将如何自动指出处于事件状态的新主节点。 ALB 不应将流量分配给辅助实例。它
我尝试使用 cloudformation 部署带有 ALB 的 ECS 堆栈,但在创建服务时出现错误,这似乎缺少访问负载均衡器的权限。 错误如下:无法承担角色并验证指定的 targetGroupArn
我是一名优秀的程序员,十分优秀!