【问题标题】:ALB Ingress - Redirect Traffic from HTTP to HTTPS not workingALB 入口 - 将流量从 HTTP 重定向到 HTTPS 不起作用
【发布时间】:2020-02-26 11:02:24
【问题描述】:

我正在尝试将所有 HTTP 流量路由到 HTTPS。我有一个 ALB 入口资源并遵循此处的指南 https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/tasks/ssl_redirect/#how-it-works 但它不起作用。当我尝试访问http://www.myhost.in 时,它会使用http,但不会重定向到https

下面是我的入口资源文件

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: eks-learning-ingress
  namespace: production
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/certificate-arn: arn878ef678df
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
  labels:
    app: eks-learning-ingress
spec:
  rules:
  - host: www.myhost.in
    http:
      paths:
        - path: /*
          backend:
            serviceName: eks-learning-service
            servicePort: 80

在这方面的任何帮助都会非常棒,谢谢。

【问题讨论】:

    标签: amazon-web-services kubernetes kubernetes-ingress


    【解决方案1】:

    对于任何偶然发现这篇文章的人。我错过了将其添加为我的 http 路径。请记住,这必须是第一个指定路径。

            - path: /*
              backend:
                serviceName: ssl-redirect
                servicePort: use-annotation
     
    

    一旦我添加了这个重定向就开始工作了。

    所以最终的配置应该是这样的:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: eks-learning-ingress
      namespace: production
      annotations:
        kubernetes.io/ingress.class: alb
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/certificate-arn: arn878ef678df
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
        alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
      labels:
        app: eks-learning-ingress
    spec:
      rules:
      - host: www.myhost.in
        http:
          paths:
            - path: /*
              backend:
                serviceName: ssl-redirect
                servicePort: use-annotation
            - path: /*
              backend:
                serviceName: eks-learning-service
                servicePort: 80
    

    【讨论】:

    【解决方案2】:

    如果其他人正在使用更新的 API 版本设置集群; apiVersion: networking.k8s.io/v1,语法不同的地方,是这样的:

      - path: /
        pathType: Prefix
        backend:
          service:
            name: ssl-redirect
            port:
              name: use-annotation
    

    注意:path 不能包含通配符,因为您使用的 pathType: Prefix 将无法配置 ALB。

    【讨论】:

      猜你喜欢
      • 2019-08-26
      • 2018-03-27
      • 1970-01-01
      • 2018-05-02
      • 2018-09-08
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      相关资源
      最近更新 更多