【问题标题】:Kubernetes Ingress Controller - What's the need of it?Kubernetes Ingress Controller - 它有什么需求?
【发布时间】:2021-03-10 06:42:40
【问题描述】:

在 AWS 控制台中创建 ALB 规则时,是否有一个入口控制器在后台运行?

在了解 ALB 入口控制器时,我有点困惑。我认为这只是对 AWS 中 ALB 服务的 API 调用。但是导师好像装了aws ingress controller。然后编写规则将路径重定向到节点端口服务。

与在 AWS 控制台中创建和通过 kubernets 集群进行相比有什么区别。

这是正在安装的控制器。

https://github.com/kubernetes-sigs/aws-load-balancer-controller

【问题讨论】:

    标签: amazon-web-services kubernetes


    【解决方案1】:

    先看看我的图表

    所以从高层次的角度来看,您有一个 AWS ALB,它将流量重定向到底层集群。然后,入口控制器负责将流量重定向到正确的 Kubernetes 服务,并且该服务将流量重定向到它的一个 pod。有多种不同的解决方案。

    我最喜欢的解决方案是:

    • 使用像 ingress-nginx 这样的 Ingress Controller(Kubernetes 有多种不同的 Ingress Controller 可用,提供了很好的比较here
    • 将 IngressController 服务配置为使用 NodePort 作为类型并使用类似 30080 的端口
    • 以使用 Terraform 创建自己的 AWS ALB 为例,并将 NodePort 30080 添加到 TargetGroup
    • 创建一个 Ingress 资源来配置 IngressController

    所以我希望这张图有助于理解 ALB 和 Ingress Controller 的原因。

    如果您仍有疑问,请在此处提问。

    【讨论】:

      【解决方案2】:

      一般来说,在 Kubernetes 中,controller 是一个正在运行的程序,它观察一些 Kubernetes 对象并以此为基础管理其他对象。例如,有一个控制器观察 Deployment 并从中创建 ReplicaSet,还有一个控制器观察 ReplicaSet 并创建匹配的 Pod。在这种情况下,ALB 入口控制器会观察 Ingress 对象并创建相应的 AWS ALB 规则。

      没有什么能阻止您手动进行相同的设置,或者使用像 Terraform 这样更专业地管理云资源的工具。使用 Ingress 对象在环境中更便携(例如,您可以为本地 minikube 安装使用类似的 Ingress 设置)。这种方法还允许您使用像 Helm 这样的单一工具来创建部署、服务和入口,并自动更新 ALB;如果您删除 Helm 图表,它将删除 Kubernetes 对象,并且 ALB 将再次自我更新。

      开发团队也有可能在 Kubernetes 中拥有创建 Ingress 对象的权限,但不会(直接)在 AWS 中拥有创建负载均衡器的权限,根据您的本地安全和治理要求,此设置可能有意义.

      【讨论】:

      • 顺便说一句,为什么没有内置 ALB 入口控制器?是因为它的 AWS 服务还是某种早期开发阶段?与外部 dns 入口控制器相同
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 2019-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      相关资源
      最近更新 更多