No início deste ano, apresentamos o NGINX Management Suite como nosso novo plano de controle para as soluções de software NGINX, permitindo configurar, dimensionar, proteger e monitorar aplicações de usuários e APIs REST no plano de dados do NGINX por meio de uma única interface.
O NGINX Management Suite tem um design modular: em seu núcleo está o módulo Instance Manager, que oferece monitoramento, configuração e visibilidade de toda a sua frota de instâncias do NGINX Open Source e do NGINX Plus. No momento da redação deste texto, o API Connectivity Manager é o outro módulo disponível, usado para gerenciar e orquestrar o NGINX Plus em execução como um gateway de API.
O NGINX Management Suite pode ser executado diretamente em um servidor físico, como uma máquina virtual Linux ou em um contêiner. A maneira recomendada de implantá-lo no Kubernetes é usando o Helm chart que fornecemos, mas, para fins específicos, talvez seja necessário criar sua própria imagem do Docker e gerenciar o ciclo de vida dela por meio de um pipeline de CI/CD personalizado que não dependa necessariamente do Helm.
[Editor – Esta publicação foi atualizada em fevereiro de 2023 para automatizar totalmente o processo de criação da imagem do Docker.]
Pré-requisitos
Fornecemos um repositório do GitHub com os recursos necessários para criar uma imagem do Docker para o NGINX Management Suite, compatível com estas versões do Instance Manager e do API Connectivity Manager:
- Instance Manager 2.4.0+
- API Connectivity Manager 1.0.0+
- Monitoramento de Segurança 1.0.0+
Para criar a imagem do Docker, você precisa de:
- Um host Linux (servidor físico ou máquina virtual)
- Docker 20.10+
- Um registro privado para o qual você possa enviar a imagem Docker de destino
- Uma assinatura (ou uma avaliação gratuita de 30 dias) do NGINX Management Suite
Para executar a imagem do Docker, você precisa de:
- Um cluster Kubernetes em execução
kubectlcom acesso ao cluster do Kubernetes- Uma assinatura (ou uma avaliação gratuita de 30 dias) do NGINX Ingress Controller baseado no NGINX Plus
Como criar a imagem do Docker
Siga estas instruções para criar a imagem do Docker.
Observação: Fizemos todos os esforços para representar com precisão a interface do NGINX Management Suite no momento da publicação, mas ela está sujeita a alterações. Use estas instruções como referência e adapte-as à interface atual conforme necessário.
- Clone o repositório do 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.- Acesse o diretório de compilação:
$ cd NGINX-Demos/nginx-nms-docker/- Execute
dockerpspara verificar se o Docker está em execução e, em seguida, execute o script buildNIM.sh para criar a imagem do Docker. A opção‑idefine o modo de compilação automatizada; as opções‑Ce‑Ksão obrigatórias e especificam, respectivamente, o certificado e a chave do NGINX Management Suite; e a opção‑tespecifica o local e o nome do registro privado para o qual a imagem é enviada.
$ ./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: 2425Executando o NGINX Management Suite no Kubernetes
Siga estas instruções para preparar o manifesto de implantação e iniciar o NGINX Management Suite no Kubernetes.
- Codifique em Base64 a licença do NGINX Management Suite que você baixou na Etapa 4 da seção anterior e copie a saída para a área de transferência:
$ base64 -w0 nginx-mgmt-suite.licTulNRS1WZXJz...- Usando seu editor preferido, abra manifests/1.nginx-nim.yaml e faça as seguintes alterações:
- Na seção
spec.template.spec.containers, substitua o nome padrão da imagem (your.registry.tld/nginx-nim2:tag) pelo nome da imagem do Docker que você especificou com a opção‑tna Etapa 3 da seção anterior (no nosso caso, registry.ff.lan:31005/nginx-nms:2.5.1):
- Na seção
spec: ...
template:
...
spec:
containers:
- name: nginx-nim2
image: your.registry.tld/nginx-nim2:tag- Na seção
spec.template.spec.containers.env, configure as credenciais de autenticação fazendo estas substituições no campovaluepara cadanameindicado:
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– (Opcional) Substitua o valor padrãoadminpelo nome de uma conta de administrador.NIM_PASSWORD– (Obrigatório) Substitua o valor padrãonimadminpor uma senha forte.NIM_LICENSE– (Obrigatório) Substitua o valor padrão<BASE64_ENCODED_LICENSE_FILE>pela licença codificada em base64 que você gerou na Etapa 1 acima.
- Verifique e modifique os arquivos em manifests/certs para personalizar o certificado e a chave TLS usados para o descarregamento de TLS, definindo o FQDN que você deseja usar. Por padrão, o script de inicialização nimDockerStart.sh publica o NGINX Management Suite em contêiner por meio do NGINX Ingress Controller.
- Opcionalmente, edite manifests/3.vs.yaml e personalize os nomes de host usados para acessar o NGINX Management Suite.
- Execute nimDockerStart.sh para iniciar o NGINX Management Suite no seu cluster do Kubernetes. Conforme indicado no log, ele é executado como o pod nginx-nim2. O script também inicializa pods para o ClickHouse como banco de dados de back-end e para o Grafana para visualização de análises. Para obter mais informações, consulte o README no repositório do GitHub.
$ ./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- Verifique se três pods estão em execução agora:
$ 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 63sAcessando o NGINX Management Suite
Para acessar o NGINX Management Suite, acesse em um navegador https://nim2.f5.ff.lan (ou o nome de host alternativo que você definiu na Etapa 4 da seção anterior). Faça login usando as credenciais que você definiu na Etapa 2 da seção anterior.
Interrompendo o NGINX Management Suite
Para interromper e remover a instância do NGINX Management Suite no Docker, execute este comando:
$ ./scripts/nimDockerStart.sh stop namespace "nginx-nim2" deletedComece agora
Para experimentar as soluções NGINX abordadas nesta publicação, inicie hoje mesmo uma avaliação gratuita de 30 dias ou entre em contato conosco para falar sobre seus casos de uso:
- NGINX Management Suite
- NGINX Ingress Controller baseado no NGINX Plus
Sobre o autor

Publicações relacionadas no blog

Como o F5 NGINX One aprimora o gerenciamento e a observabilidade
Descubra como o F5 NGINX One aprimora o gerenciamento e a observabilidade de ambientes híbridos e multicloud ao oferecer um console web centralizado baseado em SaaS, com insights em tempo real, conformidade automatizada e gerenciamento simplificado de configurações.

Do OpenAPI ao NGINX como gateway de API usando uma API declarativa
Descubra como transformar uma definição de esquema OpenAPI em uma configuração NGINX totalmente funcional, operando como um API Gateway com a segurança de um Web Application Firewall e um Portal do Desenvolvedor, usando uma abordagem declarativa de API.

Como gerenciar picos repentinos de tráfego e sobrecarga do servidor
Picos de tráfego e sobrecarga de servidores são preocupações sérias para varejistas online em qualquer época, mas especialmente durante a “Cyber Season” de compras de fim de ano. Detalhamos como você pode aproveitar as soluções de entrega de aplicações de nível de produção da NGINX para se preparar para aumentos repentinos de tráfego.

Distribuição segura de chaves privadas SSL com o NGINX
Descrevemos três maneiras progressivamente mais seguras de proteger chaves privadas SSL ao configurar o NGINX para processar tráfego HTTPS: permitir acesso de leitura apenas ao usuário root, criptografar as chaves com senhas armazenadas separadamente e distribuir as senhas a partir de um repositório central.
Agrupando solicitações de API em lotes com NGINX Plus e o módulo JavaScript do NGINX
O módulo JavaScript do NGINX lançado com o NGINX Plus R15 oferece suporte a subsolicitações, possibilitando uma classe totalmente nova de casos de uso para o NGINX Plus. Este exemplo completo também usa a API do NGINX Plus e os módulos de chave-valor para converter solicitações de API dos clientes em solicitações separadas para as APIs dos microsserviços que compõem um aplicativo.
Como superar o esgotamento de portas efêmeras no NGINX e no NGINX Plus
Confira dicas para evitar o esgotamento de portas efêmeras com ajustes no kernel do Linux, conexões keepalive e conexões vinculadas dinamicamente a endereços IP locais.