【问题标题】:How to expose an ingress on kuberntes to get the public IP address?如何在 kubernetes 上公开入口以获取公共 IP 地址?
【发布时间】:2021-07-25 14:32:52
【问题描述】:

我是AWSEKS 的新手。一切都很顺利,除了我无法弄清楚如何公开入口 IP/域以供公众使用?

我在minikube 上测试并使用minikube ip,我能够运行该应用程序。 AWS EKS应该怎么做?

这是我的入口服务文件

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
 name: platform-app-ingress
 annotations:
   nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  rules:
   - http:
      paths:
        - path: /?(.*)
          pathType: Prefix
          backend:
            serviceName: platform-app-api
            servicePort: 80

有什么提示吗?我在这里做错了什么?

【问题讨论】:

    标签: amazon-web-services kubernetes kubernetes-ingress amazon-eks kubernetes-pod


    【解决方案1】:

    您必须安装处理和管理入口对象的入口控制器。

    市场上有多种适用于 Kubernetes 的入口控制器,您可以根据需要使用其中一种。

    https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/

    所以你的整个流量会是这样的

    internet > ingress > ingress controller > Kubernetes service > pod >  container
    

    你正在使用nginx的注解

    因为该控制器必须安装在集群中。

    一切都是一样的,只需要使用 YAML 或 Helm 图表安装控制器,无需其他配置。

    您可以阅读更多内容:https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-on-digitalocean-kubernetes-using-helm

    官方部署文档:https://kubernetes.github.io/ingress-nginx/deploy/

    如何在 AWS 上安装:https://kubernetes.github.io/ingress-nginx/deploy/#aws

    注意

    部署 Ingress 控制器后,它将创建一个类型为 LoadBalancer 的 Kubernetes 服务。

    您可以使用 Kubectl get svc -n

    进行检查

    将该 IP 用作公共 IP。您可以将此IP添加到DNS中并根据需要创建多个子域和域。

    【讨论】:

    • 感谢您的回答。我在关注这个链接:kubernetes.github.io/ingress-nginx/deploy/#aws。如何获得proxy-real-ip-cidrAWS Certificate Manager (ACM) ID
    • 您正在学习该教程,但您想在入口级别或 LB 级别终止 tls?
    • proxy-real-ip-cidr 是您的 VPC CIDR IP 和 AWS 证书管理器 ID,如果您没有创建新的,或者您正在进行 POC 或测试,请仅按照上述方法。@ 987654326@
    • 您可以在入口控制器级别终止 TLS 和 SSL,也可以将入口控制器视为 Nginx 服务,将 Ingres 对象或 YAML 文件视为路由配置。一旦部署了服务或 NLB 并且 pod 运行节点需要接触任何东西,只需使用上面的 yaml 更改入口对象或路径配置。
    • 不,我不想终止 tls,我正在为实际生产而做。顺便说一句,我有。更新。 real-ip-cidr 和证书管理器 ID。如何验证和收集公网IP地址?
    【解决方案2】:

    您至少在两者之间缺少入口端点,请参考https://kubernetes.io/docs/concepts/services-networking/ingress/。 正确的沟通方式是: internet -> ingress endpoint/LB -> ingress controller -> ingress object -> routing rule -> service -> available pod 在这种情况下,您不必担心公共 IP。 但是,如果您直接将服务与 type=loadbalancer 一起使用,您将在描述服务时获得外部 IP 字段。

    【讨论】:

      猜你喜欢
      • 2017-09-23
      • 2011-03-16
      • 2018-05-28
      • 2021-02-20
      • 1970-01-01
      • 2017-06-14
      • 1970-01-01
      • 2018-10-22
      • 1970-01-01
      相关资源
      最近更新 更多