博客 | NGINX

在 Red Hat OpenShift 上开始使用 NGINX Ingress Operator

NGINX-F5-horiz-black-type-RGB 的一部分
Amir Rawdat 缩略图
阿米尔·罗达特
2020 年 4 月 30 日发布

与 Red Hat 的合作中,我们继续专注于支持需要高性能、可扩展、长期解决方案的企业用户,以便在 OpenShift 中提供与 DevOps 兼容的服务交付。 OpenShift 的NGINX Ingress Operator是一种受支持且经过认证的机制,用于在 OpenShift 环境中与默认路由器一起部署 Kubernetes 的NGINX Plus Ingress Controller ,并具有点击安装和自动升级功能。 您可以利用Operator Lifecycle Manager (OLM) 来执行 NGINX Ingress Operator 的安装、升级和配置。

想知道为什么除了默认路由器之外还要使用 NGINX Plus Ingress Controller 吗? 在我们的“Red Hat + NGINX 的价值”博客中了解我们的合作伙伴关系如何实现安全、可扩展且受支持的应用交付。

本分步指南提供了使用 NGINX Ingress Operator 所需的一切。 在开始之前,请确保您具有运行 OpenShift 4.3 或更高版本的 OpenShift 集群环境的管理员访问权限。

安装 Operator

以下视频展示了如何安装 NGINX Ingress Operator,后面是带有屏幕截图的书面摘要。

我们从 OpenShift 控制台安装 NGINX Ingress Operator。

  1. 以管理员身份登录 OpenShift 控制台。
  2. 在左侧导航栏中,单击Operators ,然后单击 OperatorHub 。 在搜索框中输入nginx ,然后单击出现的Nginx Ingress Operator框。

  3. 查看产品信息后,单击“安装”按钮。

  4. 在打开的创建操作员订阅页面上,指定要安装操作员的集群命名空间(在此示例中为nginx-ingress )。 还可以单击“批准策略”下的“自动”单选按钮,以启用正在运行的 Operator 实例的自动更新,而无需管理员手动批准。 单击“订阅”按钮。

  5. 安装完成后,在终端中运行此命令以验证 Operator 是否正在运行:

    # oc get pods –n nginx-ingress NAME READY STATUS RESTARTS AGE nginx-ingress-operator-dd546d869- xxxxx 1/1 运行 0 7m29s
  6. 单击左侧导航栏中的“已安装的操作员” 。 在打开的页面中,单击提供的API列中的NginxIngressController链接。 NginxIngressController 是一个自定义资源,操作员使用它在 OpenShift 集群上部署 NGINX Plus Ingress Controller。

  7. 在打开的页面上,将类似以下示例的清单粘贴到文本字段中,然后单击“创建”按钮以部署用于 Kubernetes 部署的 NGINX Plus Ingress Controller。

    请注意,我们在defaultSecretwildcardTLS字段中嵌入了带有 TLS 证书和密钥的Secret 。 这使得 TLS 终止和传递成为可能,而不需要将 Secret 包含在 Ingress 策略中。

    在为 Kubernetes 配置 NGINX Plus Ingress Controller 时,您可以设置许多选项,如我们的GitHub repo中所列。

    api版本:k8s.nginx.org/v1alpha1kind: NginxIngressController
    元数据:
    名称:my-nginx-ingress-controller
    命名空间:nginx-ingress
    规范:
    enableCRDs:true
    图像:
    pullPolicy: 始终
    存储库:registry.hub.docker.com/nginx/nginx-ingress
    标签:edge
    nginxPlus:false
    serviceType: LoadBalancer
    类型:部署
    副本: 2
    defaultSecret:nginx-ingress/default-server-secret
    wildcardTLS:default/app-secret
    configMapData:
    error-log-level:debug
    enableTLSPassthrough:true
    globalConfiguration:nginx-ingress/nginx-configuration
  8. 要验证部署,请在终端中运行以下命令。 如输出所示,我们在上一步中使用的清单部署了 NGINX Plus Ingress Controller 的两个副本,并使用LoadBalancer服务公开它们。 (为了易读, get命令的输出分布在多行上。)

    # oc 获取 pods -n nginx-ingress名称 就绪状态 重新启动 年龄
    my-nginx-ingress-controller-579f455d7d-xxxxx  1/1 正在运行 0 5 分 53 秒
    my-nginx-ingress-controller-579f455d7d-xxxxx  1/1 正在运行 0 5 分 53 秒
    nginx-ingress-operator-dd546d869-xxxxx        1/1 跑步 0 56m
    
    # oc 获取 svc –n nginx-ingress
    my-nginx-ingress-controller 负载均衡器 172。二十.48.254 <待处理> ... 
    nginx-ingress-operator-metrics ClusterIP 172.二十.209.190 <无> ... 
    
    ... 80:32028/TCP,443:31973/TCP 10 米... 80:32028/TCP,443:31973/TCP 10 米
  9. 运行以下命令来验证NGINX Plus Ingress Controller是否响应请求。 将public_IP_address替换为公开 NGINX Plus Ingress Controller 的LoadBalancer服务的外部 IP 地址。

    请注意,此时命令返回404找到。 这是因为我们尚未配置和部署 Ingress 资源来将流量路由到后端 Pod。 欲了解更多信息,请参阅我们的文档

    # 卷曲 公共 IP 地址 <html> 
    <head><title>404 未找到</title></head> 
    <body bgcolor="white"> 
    <center><h1>404 未找到</h1></center> 
    <hr><center>nginx/1.13.4</center> 
    </body> 
    </html>

    请注意,最终用户可以提交 NginxIngressController 资源的多个清单,并为每个清单创建一个单独的部署。 该操作员还支持跨不同命名空间的部署。 可以在清单的元数据部分中指定命名空间。

下一步是什么?

NGINX Ingress Operator 可帮助您管理 NGINX Plus Ingress Controller 部署,特别是:

  • 配置——只需几个输入参数和一个清单即可启动基本部署
  • 扩展——无缝添加和删除副本
  • 升级——利用滚动更新,无需停机
  • 卸载——确保所有 Operator 和 Kubernetes Ingress Controller 对象均已正确且安全地删除

现在您已经准备好并部署了 NGINX Plus Ingress Controller,请参阅我们的文档GitHub 存储库以在 OpenShift 中使用 NGINX Plus 的高级功能。

还不是客户? 要试用 NGINX Plus 和 Ingress Controller,请立即开始30 天免费试用联系我们讨论您的用例

Red Hat + NGINX 的价值


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”