Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes EKS ALB入口路由(按端口)_Kubernetes_Kubernetes Ingress_Amazon Eks - Fatal编程技术网

Kubernetes EKS ALB入口路由(按端口)

Kubernetes EKS ALB入口路由(按端口),kubernetes,kubernetes-ingress,amazon-eks,Kubernetes,Kubernetes Ingress,Amazon Eks,我们要求通过端口提供应用程序。 例如http://example.com:8180和http://example.com:8181应解析为应用程序。 使用侦听端口注释打开端口: alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}, {"HTTP":8180}, {"HTTP":8181}]' 我尝试了以下规则: rules:

我们要求通过端口提供应用程序。 例如
http://example.com:8180
http://example.com:8181
应解析为应用程序。
使用
侦听端口
注释打开端口:

alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}, {"HTTP":8180}, {"HTTP":8181}]'
我尝试了以下规则:

rules:
    - host: example.com
      http:
        paths:
          - path: /*
            backend:
              serviceName: ssl-redirect
              servicePort: use-annotation
          - path: /1.0/*
            backend:
              serviceName: some-server-side-app
              servicePort: 8080
          - path: /*
            backend:
              serviceName: some-webpage
              servicePort: 80
      8180:
        paths:
          - path: /*
            backend:
              serviceName: app-reachable-via-port
              servicePort: 8180
      8181:
        paths:
          - path: /*
            backend:
              serviceName: app-reachable-via-port
              servicePort: 8181
由于入口配置的格式不正确,这会引发错误

我还在github上找到了这本针对ingress nginx的指南,并试图模仿它,但迄今为止运气不佳


有人知道如何通过ALB入口实现这一点吗?

如果我了解您的想法,您希望根据您的入站流量进入的端口区分入站流量并发送到服务

您可能可以使用来完成此任务。我没有在这个配置中使用http头测试下面的对象,但我自己也使用了非常类似的东西。我认为这可能是值得测试的基础上。不过你需要尝试一下。本例还假设集群中的每个服务都在侦听您用来引导流量的同一端口——这可以很容易地更改为您的服务实际侦听的任何端口

apiVersion:extensions/v1beta1
种类:入口
元数据:
名称:示例入口
注释:
kubernetes.io/ingres.class:alb
alb.ingres.kubernetes.io/group.name:示例
alb.ingres.kubernetes.io/scheme:面向互联网
alb.ingress.kubernetes.io/security-groups:sg-01234567898765432
alb.ingres.kubernetes.io/ip地址类型:ipv4
alb.ingres.kubernetes.io/listen-ports:“[{”HTTP:80},{”HTTPS:443},{”HTTP:8180},{”HTTP:8181}”
alb.ingres.kubernetes.io/actions.response-503:>
{“type”:“fixed response”,“fixedResponseConfig”:{“contentType”:“text/plain”,“statusCode”:“503”,“messageBody”:“未知主机”}
alb.ingres.kubernetes.io/actions.some-webpage:>
{“type”:“forward”,“forwardConfig”:{“targetGroups”:[{“serviceName”:“some webpage”,“servicePort”:80,“weight”:100}]}
alb.ingres.kubernetes.io/conditions.some-webpage:>
[{“字段”:“http头”,“HttpHeaderConfig”:{“HttpHeaderName”:“主机”,“值”:[“example.com:80”]}]
alb.ingres.kubernetes.io/actions.app1-reachable-via-port:>
{“type”:“forward”,“forwardConfig”:{“targetGroups”:[{“serviceName”:“app1可通过端口访问”,“servicePort”:8180,“weight”:100}]}
alb.ingres.kubernetes.io/conditions.app1-reachable-via-port:>
[{“字段”:“http头”,“HttpHeaderConfig”:{“HttpHeaderName”:“主机”,“值”:[“example.com:8180”]}]
alb.ingres.kubernetes.io/actions.app2-reachable-via-port:>
{“type”:“forward”,“forwardConfig”:{“targetGroups”:[{“serviceName”:“app2可通过端口访问”,“servicePort”:8181,“weight”:100}]}
alb.ingres.kubernetes.io/conditions.app2-reachable-via-port:>
[{“字段”:“http头”,“HttpHeaderConfig”:{“HttpHeaderName”:“主机”,“值”:[“example.com:8181”]}]
alb.ingres.kubernetes.io/target-type:实例
alb.ingres.kubernetes.io/load-balancer-attributes:routing.http2.enabled=true,idle\u timeout.timeout\u seconds=600
alb.ingress.kubernetes.io/certificate-arn:arn:aws:acm:us-east-2:9999999999:certificate/11111111-1111-1111-111111111111,arn:aws:acm:us-east-2:999999999:certificate/22222-2222-2222-2222-2222-2222-2222-2222-2222-2222
alb.ingress.kubernetes.io/ssl-policy:ELBSecurityPolicy-2016-08
规格:
后端:
服务名称:response-503
servicePort:使用注释
规则:
-http:
路径:
-后端:
serviceName:ssl重定向
servicePort:使用注释
-后端:
serviceName:一些网页
servicePort:使用注释
-后端:
serviceName:app1可通过端口访问
servicePort:使用注释
-后端:
serviceName:app2可通过端口访问
servicePort:使用注释
另一种解决方案可能是ALB TargetGroupBinding。您失去了允许EKS代表您调配和管理您的ALB和目标组的一些优势,但您仍然完全控制您的ALB和目标组配置。使用TargetGroupBinding,您仍然需要集群中的,但您可以自己创建ALB和目标组,然后使用TargetGroupBinding对象将集群中的服务映射到特定的目标组ARN:

apiVersion:elbv2.k8s.aws/v1beta1 种类:TargetGroupBinding 元数据: 名称:demo1 tgb 规格: 服务参考: 名称:demo1服务 港口:80 目标组arn:arn:aws:ElasticLoadBalancement:us-east-2:12121212:targetgroup/my target group/cbc9f05b05caea6b
祝你好运-一旦你让它按要求工作,请再次更新。

如果我了解你在看什么,你想区分你的入站流量并根据你的入站流量进入的端口发送到服务吗

您可能可以使用来完成此任务。我没有在这个配置中使用http头测试下面的对象,但我自己也使用了非常类似的东西。我认为这可能是值得测试的基础上。不过你需要尝试一下。本例还假设集群中的每个服务都在侦听您用来引导流量的同一端口——这可以很容易地更改为您的服务实际侦听的任何端口

apiVersion:extensions/v1beta1
种类:入口
元数据:
名称:示例入口
注释:
kubernetes.io/ingres.class:alb
alb.ingres.kubernetes.io/group.name:示例
alb.ingres.kubernetes.io/scheme:面向互联网
alb.ingress.kubernetes.io/security-groups:sg-01234567898765432
alb.ingres.kubernetes.io/ip地址类型:ipv4
alb.ingres.kubernetes.io/listen-ports:“[{”HTTP:80},{”HTTPS:443},{”HTTP:8180},{”HTTP:8181}”
alb.ingres.kubernetes.io/actions.response-503:>