kubernetes 如何仅使用AWS API Gateway访问通过ingress暴露的EKS服务?

bnlyeluc  于 2023-04-05  发布在  Kubernetes
关注(0)|答案(1)|浏览(146)

我有一个正在运行的AWS EKS集群,我有一个通过ingress向外部公开的应用程序,其中有许多端点。我想集成一个AWS API Gateway来从外部访问我的服务,而不是在清单文件(Kubernetes yaml文件)中定义的ingress主机url。因此,只有从AWS API Gateway才能访问我的应用程序。我如何才能实现这一点?

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  namespace: namespace
  name: example-service-api
  annotations:
    nginx.ingress.kubernetes.io/whitelist-source-range: "XX.XX.XX.XX/32"
spec:
  rules:
    - host: example.io
      http:
        paths:
          - path: /path/read
            backend:
              serviceName: example-service-api-service
              servicePort: 80
          - path: /path/create
            backend:
              serviceName: example-service-api-service
              servicePort: 80

我尝试配置区域AWS API网关,并选择集成类型为http,并输入在Kubernetes的yaml文件中定义的ingress主机url。在此步骤中,我可以从AWS API网关和ingress主机url访问我的应用程序。但我想拒绝从ingress主机url访问。因此,尝试了注解白名单源范围,以仅允许从API网关访问,但这导致AWS API网关和Ingress主机URL都出现错误“503服务暂时不可用”。我认为这是因为AWS API Gateway代理了入口主机URL,该URL被阻止了。即使没有被阻止,AWS API Gateway的IP地址也会不断变化,所以这不是一个可靠的解决方案。有人能指导我吗?我不太擅长AWS或Kubernetes?

wrrgggsh

wrrgggsh1#

这是一个相当复杂的体系结构,首先要问的问题是使用AWS API Gateway而不是标准ingress对您有什么好处?
如果真的需要,我会为你创建k8sInternal NLB。然后你可以在API GatewayNLBdoc)之间创建VPC link。从那里你可以用所有需要的路径设置API Gateway,并将DNS条目从传统的LB替换为API Gateway
使用此设置,您将拥有单个域,并且您将阻止API Gateway之外的任何流量。

相关问题