AWS ALB 入口资源路径定义

时间:2021-07-02 11:51:56

标签: amazon-web-services kubernetes kubernetes-ingress amazon-eks aws-application-load-balancer

我正在尝试为已经配置了 nginx 入口的现有集群配置 aws alb 入口。这是我在 nginx ingress 中使用的资源文件,它工作正常。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: "stage-ingress-1"
  namespace: "teststage"
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/backend-protocol: HTTP
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
    alb.ingress.kubernetes.io/certificate-arn:  <cert_arn>
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
    alb.ingress.kubernetes.io/target-type: ip
    alb.ingress.kubernetes.io/scheme: internet-facing
  labels:
    app: test-ingress
spec:
  rules:
    - http:
        paths:
          - path: /(.*)
            backend:
              serviceName: ssl-redirect
              servicePort: use-annotation
          - path: /(.*)
            backend:
              serviceName: "test-service"
              servicePort: 80
      host: test.abc.com

但是,我收到一条错误消息

"msg"="Reconciler error" "error"="failed to reconcile listeners due to failed to reconcile rules due to failed modifying rule 2 on aws alb due to ValidationError: Condition value '/(.*)' contains a character that is not valid

我知道这与指定的路径有关,但我不知道必须如何配置。这是包含我所有数据的路径。

1 个答案:

答案 0 :(得分:0)

它不是正则表达式。它比那更简单的匹配 你想要。

spec:
  rules:
    - http:
        paths:
          - path: /*
            backend:
              serviceName: ssl-redirect
              servicePort: use-annotation
          - path: /*
            backend:
              serviceName: "test-service"
              servicePort: 80
      host: test.abc.com