【问题标题】:block url path patterns with alb ingress rules使用 alb 入口规则阻止 url 路径模式
【发布时间】:2021-09-12 10:37:17
【问题描述】:

我有一个 alb 入口控制器,我不想允许从外部访问某些路径。安装在内部监控服务的执行器之类的示例路径。

我看到每个入口规则路由请求都在后台服务。如何从 ingress 本身返回 403?

【问题讨论】:

    标签: kubernetes kubernetes-ingress amazon-eks


    【解决方案1】:

    这可以通过使用注解来实现。

    例如如下:

    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      annotations:
        alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig":
          { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
        alb.ingress.kubernetes.io/group.name: my-example-com-alb
        alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
        alb.ingress.kubernetes.io/scheme: internet-facing
        alb.ingress.kubernetes.io/security-groups: my-security-group
        alb.ingress.kubernetes.io/target-type: ip
        alb.ingress.kubernetes.io/ssl-policy : "ELBSecurityPolicy-TLS-1-2-Ext-2018-06"
        external-dns.alpha.kubernetes.io/hostname: myhost.example.com
        alb.ingress.kubernetes.io/healthcheck-path: "/mycustomhealthpath/"
        alb.ingress.kubernetes.io/healthcheck-protocol: "HTTP"
        alb.ingress.kubernetes.io/healthcheck-interval-seconds: "15"
        alb.ingress.kubernetes.io/healthcheck-port: "http"
        alb.ingress.kubernetes.io/unhealthy-threshold-count: "3"
        kubernetes.io/ingress.class: alb
        alb.ingress.kubernetes.io/actions.response-403: >
          {"type":"fixed-response","fixedResponseConfig":{"contentType":"text/plain","statusCode":"403","messageBody":"403 External access to endpoint not allowed"}}
      name: login
    spec:
      rules:
      - host: myhost.example.com
        http:
          paths:
          - path: /block/access/to/this/path
            backend:
              serviceName: response-403
              servicePort: use-annotation
          - backend:
              serviceName: ssl-redirect
              servicePort: use-annotation
            path: /
            pathType: ImplementationSpecific
          - backend:
              serviceName: myapp
              servicePort: http
            path: /
            pathType: Prefix
      tls:
      - hosts:
        - myhost.example.com
    

    请注意,在此示例中,URI 和 URL 是虚构的。

    参考:https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.2/guide/ingress/annotations/#traffic-routing

    在本例中,Kubernetes 入口清单的apiVersion 使用extentions/v1beta1 API 组;该示例可以适应稳定的 API 组,约定不会改变。

    最后但并非最不重要的一点是,我没有检查支持此约定的入口控制器的最低版本是什么。在这个例子中,我依赖于 2.2 版本。

    【讨论】:

    • 感谢分享。这种方法对我有用。
    • 不客气,很高兴它帮助了你:D
    猜你喜欢
    • 2020-11-23
    • 1970-01-01
    • 2018-07-14
    • 2019-07-24
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2019-11-28
    • 2020-10-21
    相关资源
    最近更新 更多