今年早些时候,我们推出了NGINX Management Suite,将其作为NGINX软件解决方案的新控制平面。通过统一界面,您可以在NGINX数据平面上配置、扩展、保护和监控用户应用及REST API。
NGINX Management Suite采用模块化设计,其核心是Instance Manager模块,可对整个NGINX Open Source和NGINX Plus实例群进行跟踪和配置,并提供可见性。截至本文撰写时,另一个可用模块是API Connectivity Manager,用于管理和编排作为API网关运行的NGINX Plus。
NGINX Management Suite可以在裸机、Linux虚拟机或容器中运行。建议使用我们提供的Helm chart在Kubernetes上进行部署,但出于特定用途,您可能需要自行构建Docker镜像,并通过不一定依赖Helm的自定义CI/CD流水线管理其生命周期。
[编辑:本文已于2023年2月更新,实现Docker镜像构建流程的完全自动化。]
先决条件
我们提供了一个GitHub存储库,其中包含为NGINX Management Suite创建Docker镜像所需的资源,并支持以下版本的Instance Manager和API Connectivity Manager:
- Instance Manager 2.4.0+
- API Connectivity Manager 1.0.0+
- Security Monitoring 1.0.0+
要构建Docker镜像,需要:
- Linux主机(裸机或虚拟机)
- Docker 20.10+
- 可将目标Docker镜像推送到的私有镜像仓库
- NGINX Management Suite订阅(或30天免费试用)
要运行Docker镜像,需要:
- 一个正在运行的Kubernetes集群
kubectl,可访问Kubernetes集群- 基于NGINX Plus的NGINX Ingress Controller订阅(或30天免费试用)
构建Docker镜像
按照以下说明构建Docker镜像。
注意:我们已尽力准确呈现本文发布时的NGINX Management Suite UI,但该UI可能会发生变化。请将这些说明作为参考,并根据当前UI酌情调整。
- 克隆GitHub存储库:
$ git clone https://github.com/nginxinc/NGINX-DemosCloning into 'NGINX-Demos'...
remote: Enumerating objects: 215, done.
remote: Counting objects: 100% (215/215), done.
remote: Compressing objects: 100% (137/137), done.
remote: Total 215 (delta 108), reused 171 (delta 64), pack-reused 0
Receiving objects: 100% (215/215), 2.02 MiB | 1.04 MiB/s, done.
Resolving deltas: 100% (108/108), done.- 切换到构建目录:
$ cd NGINX-Demos/nginx-nms-docker/- 运行“
dockerps”以验证Docker是否正在运行,然后运行“buildNIM.sh”脚本以构建Docker镜像。“‑i”选项用于设置自动构建模式;“‑C”和“‑K”是必需选项,分别用于指定NGINX Management Suite证书和密钥;“‑t”选项用于指定镜像推送到的私有注册表的位置和名称。
$ ./scripts/buildNIM.sh -i -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-nms:2.5.1
==> Building NGINX Management Suite docker image
Sending build context to Docker daemon 92.19MB
Step 1/18 : FROM ubuntu:22.04
---> a8780b506fa4
Step 2/18 : ARG NIM_DEBFILE
---> Running in 0f2354280c34
Removing intermediate container 0f2354280c34
[...]
---> 0588a050c852
Step 18/18 : CMD /deployment/startNIM.sh
---> Running in d0cc5466a43d
Removing intermediate container d0cc5466a43d
---> 25117ec0410a
Successfully built 25117ec0410a
Successfully tagged registry.ff.lan:31005/nginx-nms:2.5.1
The push refers to repository [registry.ff.lan:31005/nginx-nms]
9c4918474e3a: Pushed
42543d044dbb: Pushed
1621b2ec0a5e: Pushed
c6a464fc6a79: Pushed
75fa1d3c61bb: Pushed
3501fcf5dbd8: Pushed
d4a221057e67: Pushed
9ad05eafed57: Pushed
f4a670ac65b6: Pushed
2.5.1: digest: sha256:9a70cfdb63b71dc31ef39e4f20a1420d8202c85784cb037b45dc0e884dad74c9 size: 2425在Kubernetes上运行NGINX Management Suite
按照以下说明准备Deployment清单,并在Kubernetes上启动NGINX Management Suite。
- 对在上一节第 4 步中下载的 NGINX Management Suite 许可证进行 Base64 编码,并将输出复制到剪贴板:
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...- 使用常用编辑器打开manifests/1.nginx-nim.yaml,并进行以下更改:
- 在
spec.template.spec.containers部分,将默认镜像名称(your.registry.tld/nginx-nim2:tag)替换为在上一节第 3 步中使用‑t选项指定的Docker镜像名称(本例中为registry.ff.lan:31005/nginx-nms:2.5.1):
- 在
spec: ...
template:
...
spec:
containers:
- name: nginx-nim2
image: your.registry.tld/nginx-nim2:tag- 在
spec.template.spec.containers.env部分,通过在每个指定name对应的value字段中进行以下替换来配置身份验证凭据:
spec: ...
template:
...
spec:
containers:
...
env:
...
- name: NIM_USERNAME
value: admin
- name: NIM_PASSWORD
value: nimadmin
- name: NIM_LICENSE
value: "<BASE64_ENCODED_LICENSE_FILE>"NIM_USERNAME(可选)将默认的admin替换为管理员帐户名称。NIM_PASSWORD(必填)将默认密码nimadmin替换为强密码。NIM_LICENSE(必填)将默认值<BASE64_ENCODED_LICENSE_FILE>替换为上面第1步中生成的Base64编码许可证。
- 检查并修改manifests/certs下的文件,设置要使用的FQDN,以自定义用于TLS卸载的证书和密钥。默认情况下,nimDockerStart.sh启动脚本通过NGINX Ingress Controller发布容器化的NGINX Management Suite。
- 可选择编辑manifests/3.vs.yaml,并自定义用于访问NGINX Management Suite的主机名。
- 运行nimDockerStart.sh,在Kubernetes集群中启动NGINX Management Suite。如跟踪信息所示,该套件以nginx-nim2 Pod的形式运行。该脚本还会初始化相应的Pod,其中ClickHouse用作后端数据库,Grafana用于分析可视化。有关更多信息,请参阅GitHub仓库中的README。
$ ./scripts/nimDockerStart.sh start namespace/nginx-nim2 created
~/NGINX-NIM2-Docker/manifests/certs ~/NGINX-NIM2-Docker
Generating a RSA private key
.....................................+++++
.....................................+++++
writing new private key to 'nim2.f5.ff.lan.key'
-----
secret/nim2.f5.ff.lan created
configmap/clickhouse-conf created
configmap/clickhouse-users created
persistentvolumeclaim/pvc-clickhouse created
deployment.apps/clickhouse created
service/clickhouse created
deployment.apps/nginx-nim2 created
service/nginx-nim2 created
service/nginx-nim2-grpc created
persistentvolumeclaim/pvc-grafana-data created
persistentvolumeclaim/pvc-grafana-log created
deployment.apps/grafana created
service/grafana created
virtualserver.k8s.nginx.org/nim2 created
virtualserver.k8s.nginx.org/grafana created
~/NGINX-NIM2-Docker- 验证现在有3个Pod正在运行:
$ kubectl get pods -n nginx-nim2 NAME READY STATUS RESTARTS AGE
clickhouse-759b65db8c-74pn5 1/1 Running 0 63s
grafana-95fbbf5c-jczgk 1/1 Running 0 63s
nginx-nim2-5f54664754-lrhmn 1/1 Running 0 63s访问 NGINX Management Suite
要访问NGINX Management Suite,请在浏览器中转到“https://nim2.f5.ff.lan”(或在上一节的“步骤 4”中设置的备用主机名)。使用在上一节的“步骤 2”中设置的凭据登录。
停止NGINX Management Suite
要停止并移除NGINX Management Suite的Docker实例,请运行以下命令:
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deleted开始使用
要试用本文介绍的NGINX解决方案,可立即开始30天免费试用,或联系我们,讨论您的用例:
- NGINX Management Suite
- NGINX Ingress Controller,基于NGINX Plus
关于作者

相关博客文章
NGINX Plus R26 正式发布
NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。
