容器服务ACK alb ingress要同时使用 http转https 和 路由路径重写 功能,有办法同时实现么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
是的,容器服务ACK中的ALB Ingress控制器支持同时使用HTTP转HTTPS和路由路径重写功能。
HTTP转HTTPS功能可以通过在Ingress规则中指定tls部分来实现。您可以为每个Ingress规则配置相应的TLS证书,并将tls部分添加到您的Ingress定义中。这样,当请求到达时,ALB Ingress控制器将自动将HTTP流量重定向到HTTPS。
路由路径重写功能可以通过在Ingress规则的path字段中定义所需的路径重写规则来实现。您可以使用正则表达式或通配符来匹配特定的URL路径,并将其重写为目标路径。
下面是一个示例Ingress规则,演示了如何同时使用HTTP转HTTPS和路由路径重写功能:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  tls:
  - hosts:
    - example.com
    secretName: my-tls-secret
  rules:
  - host: example.com
    http:
      paths:
      - path: /old-path
        pathType: Prefix
        backend:
          service:
            name: my-service
            port:
              number: 80
上述示例中,通过在tls部分配置了主机名和TLS证书,实现了HTTP重定向到HTTPS。同时,在rules部分的paths字段中定义了路径重写,将来自example.com/old-path的请求重定向到后端服务my-service。
ACK的ALB Ingress可以同时实现HTTP转HTTPS和路由路径重写两个功能。
具体配置如下:
yaml
Copy
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{
        "Type": "redirect",
        "RedirectConfig": {
           "Protocol": "HTTPS",
           "Port": "443",
           "StatusCode": "HTTP_301"
        }
      }'
spec:
  rules:
alb.ingress.kubernetes.io/listen-ports:指定ALB监听80和443端口
alb.ingress.kubernetes.io/scheme:指定为公网型ALB
alb.ingress.kubernetes.io/actions.ssl-redirect:配置HTTP请求自动转HTTPS
path:指定路由路径为/testpath
servicePort:分别指定80和443端口后端服务
这样就可以实现:
访问test.example.com/testpath,ALB会转发至80端口服务
访问test.example.com/ ,ALB会转发至443端口服务
80端口请求会自动重定向至HTTPS