NGINX 安装和配置

问题描述

我是 Kubernetes 的新手,想将 Nginx 入口控制器用于我目前正在进行的项目。我阅读了一些文档并观看了一些教程,但我还没有真正理解:

有没有人知道一篇博客文章或教程可以让这些事情变得清晰。到目前为止,我所学到的一切(前端和后端)开发和部署到云环境让我迷失了方向。我已经被一个问题困住了一个星期,想弄清楚 Ingress 可以帮助我。 谢谢!

解决方法

安装 nginx 入口控制器(或任何其他与此相关的)最直接的过程是使用 helm。这需要对 helm 以及如何使用 helm charts 有基本的了解。

这是存储库:https://github.com/kubernetes/ingress-nginx/tree/master/charts/ingress-nginx

按照那里的说明进行操作 - 如果您使用默认值,则非常简单。对于配置,您也可以在安装前自定义图表。查看自述文件以了解如何获取所有可配置选项。

希望这有助于作为起点。

,

答案:

我应该如何安装 nginx-ingress

没有一种正确的方法来安装 nginx-ingress。每种方式都有其优点/缺点,每个 Kubernetes 集群可能需要不同的处理方式(例如:云管理的 Kubernetes 和 minikube),您需要确定哪个选项最适合您。

你可以选择跑步:

  • $ kubectl apply -f ...,
  • $ helm install ...,
  • terraform apply ...(舵提供者),

我应该如何正确配置 Ingress

引用官方文档:

管理对集群中服务的外部访问的 API 对象,通常是 HTTP。

-- Kubernetes.io: Docs: Concepts: Services networking: Ingress

基本上,Ingress 是一种资源,它告诉您的 Ingress controller 它应该如何处理特定的 HTTP/HTTPS 流量。

专门谈到 nginx-ingress,您的 HTTP/HTTPS 流量应该发送到的入口点是 Service 类型的 LoadBalancer,名为:{ {1}}(在 ingress-nginx-controller 命名空间中)。在带有 Kubernetes 实现的 Docker 中,它将绑定到您机器的本地主机。

ingress-nginx

文档中修改后的示例将告诉您的 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: minimal-ingress spec: ingressClassName: "nginx" rules: - http: paths: - path: / pathType: Prefix backend: service: name: nginx port: number: 80 控制器将带有任何 Ingress 和带有 Host(每个 path: /)的流量传递给名为 {{ 1}} 在端口 path 上。

应用后的上述配置会通过nginx文件中的80体现。

附注!

看看应用上述定义时 ingress-nginx 部分的样子:

/etc/nginx/nginx.conf

关于您的特定 nginx.conf 清单的外观,您需要查阅您尝试将流量发送到的软件的文档和 ingress-nginx docs


解决部分:

如何正确配置 Ingress。例如,Kubernetes 文档说要使用 nginx.conf 文件(https://kubernetes.io/docs/tasks/access-application-cluster/connecting-frontend-backend/#creating-the-frontend),而实际 NGINX 文档中从未提到过。他们说要使用 ConfigMaps 或注解。

您通常不会修改 location / { set $namespace "default"; set $ingress_name "minimal-ingress"; set $service_name "nginx"; set $service_port "80"; set $location_path "/"; set $global_rate_limit_exceeding n; 自己使用的 Ingress。您编写了一个 nginx.conf 清单,其余部分由 Ingress controllerIngress 处理。 Ingress controller 中的 Kubernetes 负责路由(您的 nginx.conf)将反映您的 Pod 清单。

Ingress controllerIngress 可用于修改/更改 Configmaps 的配置。使用 Annotations 可以说启用 Ingress controller 压缩,使用注释可以说使用特定的 Configmap

为了让事情更清楚。此处引用的指南是安装了 gzip2 的前端 rewrite,它将请求传递给 Pod。此示例除了使用 nginx 和转发流量外,与实际的 backend 无关。它不会确认 nginx 资源,也不会根据您传递的清单采取行动。

附注!

您的流量将以以下方式(简化)定向:

  • Ingress -> Ingress -> Ingress controller

这个例子从个人角度来说更多的是指导如何连接frontendbackend,而不是关于frontend


其他资源:

我前段时间写的指南应该可以帮助您了解如何配置基本的 backend(它可能有点过时):