如何将EKS Ingress与部分私有的ALB配合使用?

0

【以下的问题经过翻译处理】 Kubernetes 版本:1.23

大家好,

我有几个服务运行在 AWS EKS 中,并通过一个 Ingress(AWS 负载均衡器控制器)公开。我的 Ingress 文件如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.class: alb
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}, {"HTTP":80}]'
    alb.ingress.kubernetes.io/certificate-arn: arn-of-certificate
    alb.ingress.kubernetes.io/healthcheck-path: /healthcheck
    alb.ingress.kubernetes.io/ssl-redirect: '443'
  name: app-ingress
  namespace: namespace
spec:
  rules:
  - host: my-domain.com
    http:
      paths:
      - path: /app1
        pathType: Prefix
        backend:
          service:
            name: app1-service
            port:
              name: app1-port
      - path: /app2
        pathType: Prefix
        backend:
          service:
            name: app2-service
            port:
              name: app2-port
      - path: /app3
        pathType: Prefix
        backend:
          service:
            name: app3-service
            port:
              name: app3-port
...
  tls:
  - hosts:
    - my-domain.com

一切都正常工作,但是我想,例如,使 app3 更加私密。我希望能够设置指定的 IP 地址才能访问该应用程序。我没有找到任何有用的信息。

例如,如果随机人员尝试访问 app1,他/她应该能够使用 https://my-domain.com/app1。 但是,如果他/她尝试使用https://my-domain.com/app3,并且他/她的 IP 地址未在允许的 IP 地址中,则将拒绝访问。

事实是,我想要为几个应用程序使用一个 ALB。

任何帮助都会很有用,比如一些链接或者应该寻找什么。我在想这是否可能?

或者唯一的解决方案是制作多个 ALB,然后对于 app3 更改网络配置以允许选择的 IP?

profile picture
专家
已提问 5 个月前10 查看次数
1 回答
0

【以下的回答经过翻译处理】 可以通过CIDR范围在AWS安全组外部或通过NetworkPolicy资源在Kubernetes内部进行L3(IP)入口控制。

由于您正在使用一个Ingress和一个ALB,因此在ALB上创建一个安全组并不理想,因为它将影响所有目标。您的选择是:

  • 创建另一个Ingress/ALB并将app3移至该配置,然后通过ALB安全组限制源IP。
  • 在您的Kubernetes集群中添加网络策略,并为由app3服务前端的Pod创建网络策略。用户体验应该相同。
  • 您还可以查看Pod的安全组。但是,对于简单的L3入口控制,我建议使用ALB安全组或Kubernetes网络策略。

可以根据您使用的CNI将网络策略添加到Amazon EKS。对于AWS VPC CNI,您可以使用Calico项目。还有其他备选CNI供Amazon EKS使用。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则