F5 NGINX Management Suite é uma família de módulos para gerenciar o plano de dados do NGINX em uma única interface. Ao simplificar o gerenciamento de instâncias do NGINX Open Source e do NGINX Plus, o NGINX Management Suite simplifica seus processos de dimensionamento, proteção e monitoramento de aplicações e APIs.
Você precisa instalar o NGINX Agent em cada instância do NGINX que deseja gerenciar pelo NGINX Management Suite para permitir a comunicação com o plano de controle e o gerenciamento remoto de configurações.
Para instâncias do NGINX executadas em bare metal ou em uma máquina virtual (VM), fornecemos instruções de instalação em nossa documentação. Neste artigo, mostramos como criar uma imagem do Docker para o NGINX Plus e o NGINX Agent, ampliando o alcance do NGINX Management Suite para instâncias do NGINX Plus implantadas no Kubernetes ou em outras infraestruturas de microsserviços.
Há três opções de compilação, dependendo do que você deseja incluir na imagem Docker resultante:
- NGINX Plus e NGINX Agent apenas
- NGINX Plus, NGINX Agent e NGINX App Protect WAF
- NGINX Plus, NGINX Agent e suporte ao portal do desenvolvedor do NGINX Management Suite API Connectivity Manager (para instâncias do NGINX Plus executadas como um gateway de API)
[Editor – Esta publicação foi atualizada em abril de 2023 para esclarecer as instruções e adicionar o campo ACM_DEVPORTAL na Etapa 1 de Execução da imagem do Docker no Kubernetes.]
Pré-requisitos
Fornecemos um repositório do GitHub com os recursos necessários para criar uma imagem do Docker do NGINX Plus e do NGINX Agent, compatível com a versão 2.8.0 e posteriores do módulo Instance Manager do NGINX Management Suite.
Para criar a imagem do Docker, você precisa de:
- Um host Linux (máquina física ou VM)
- Docker 20.10+
- Um registro privado para o qual você possa enviar a imagem Docker de destino
- Uma instância em execução do NGINX Management Suite com o Instance Manager e, caso queira aproveitar o suporte ao portal do desenvolvedor, o API Connectivity Manager
- Uma assinatura (ou avaliação gratuita de 30 dias) do NGINX Plus e, opcionalmente, do NGINX App Protect
Para executar a imagem do Docker, você precisa de:
- Um cluster Kubernetes em execução
kubectlcom acesso ao cluster do Kubernetes
Criando a imagem Docker
Siga estas instruções para criar a imagem do Docker.
- Clone o repositório do GitHub:
$ git clone https://github.com/nginxinc/NGINX-Demos Cloning into 'NGINX-Demos'...
remote: Enumerating objects: 126, done.
remote: Counting objects: 100% (126/126), done.
remote: Compressing objects: 100% (85/85), done.
remote: Total 126 (delta 61), reused 102 (delta 37), pack-reused 0
Receiving objects: 100% (126/126), 20.44 KiB | 1.02 MiB/s, done.
Resolving deltas: 100% (61/61), done.- Acesse o diretório de compilação:
$ cd NGINX-Demos/nginx-agent-docker/- Execute
dockerpspara verificar se o Docker está em execução e, em seguida, execute o script build.sh para incluir o software desejado na imagem do Docker. As opções básicas são: As opções adicionais são: Veja os comandos para as diferentes combinações de software: Veja um exemplo do log de compilação de uma imagem básica. A mensagemBuildcompleteno final indica que a compilação foi concluída com sucesso.
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -n https://nim.f5.ff.lan => Target docker image is nginx-plus-with-agent:2.7.0
[+] Building 415.1s (10/10) FINISHED
=> [internal] load build definition from Dockerfile
=> transferring dockerfile: 38B
=> [internal] load .dockerignore
=> transferring context: 2B
=> [internal] load metadata for docker.io/library/centos:7
=> [auth] library/centos:pull token for registry-1.docker.io
=> CACHED [1/4] FROM docker.io/library /centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
=> [internal] load build context
=> transferring context: 69B
=> [2/4] RUN yum -y update && yum install -y wget ca-certificates epel-release curl && mkdir -p /deployment /etc/ssl/nginx && bash -c 'curl -k $NMS_URL/install/nginx-agent | sh' && echo "A 299.1s
=> [3/4] COPY ./container/start.sh /deployment/
=> [4/4] RUN --mount=type=secret,id=nginx-crt,dst=/etc/ssl/nginx/nginx-repo.crt --mount=type=secret,id=nginx-key,dst=/etc/ssl/nginx/nginx-repo.key set -x && chmod +x /deployment/start.sh & 102.4s
=> exporting to image
=> exporting layers
=> writing image sha256:9246de4af659596a290b078e6443a19b8988ca77f36ab90af3b67c03d27068ff
=> naming to registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
=> Build complete for registry.ff.lan:31005/nginx-plus-with-agent:2.7.0- Executando a imagem do Docker no Kubernetes Siga estas instruções para preparar o manifesto de implantação e iniciar o NGINX Plus com o NGINX Agent no Kubernetes. Comece 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: Baixe o NGINX Agent – ele é gratuito e de código aberto.
‑C– Nome do arquivo de certificado de licença do NGINX Plus (nginx-repo.crtnos exemplos de comandos abaixo)‑K– Nome do arquivo de chave de licença do NGINX Plus (nginx-repo.keynos exemplos de comandos abaixo)‑t– O registro e a imagem de destino no formato<registry_name>/<image_name>:<tag>(registry.ff.lan:31005/nginx-plus-with-agent:2.7.0nos comandos de exemplo abaixo)‑n– URL base da sua instância do NGINX Management Suite (https://nim.f5.ff.lannos exemplos de comandos abaixo)‑d– Adicione suporte ao plano de dados para o portal do desenvolvedor ao usar o NGINX API Connectivity Manager‑w– Adicionar o NGINX App Protect WAF- NGINX Plus e NGINX Agent:
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 \ -n https://nim.f5.ff.lan- NGINX Plus, NGINX Agent e NGINX App Protect WAF (adicione a opção
‑w):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \-t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -w \ -n https://nim.f5.ff.lan- Suporte ao NGINX Plus, ao NGINX Agent e ao portal do desenvolvedor (adicione a opção
‑d):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 -d \ -n https://nim.f5.ff.lan- Usando seu editor de texto preferido, abra manifests/1.nginx-with-agent.yaml e faça as seguintes alterações (os trechos de código mostram os valores padrão que você pode ou deve alterar, destacados em laranja):
- Na seção
spec.template.spec.containers, substitua o nome padrão da imagem (your.registry.tld/nginx-with-nim2-agent:tag) pelo nome da imagem do Docker que você especificou com a opção‑tna etapa 3 de Como criar a imagem do Docker (no nosso caso, registry.ff.lan:31005/nginx-plus-with-agent:2.7.0):
- Na seção
spec:
...
template:
...
spec:
containers:
- name: nginx-nim
image: your.registry.tld/nginx-with-nim2-agent:tag- Na seção
spec.template.spec.containers.env, faça estas substituições no campovaluepara cadanameindicado:
spec:
...
template:
...
spec:
containers:
...
env:
- name: NIM_HOST
...
value: "nginx-nim2.nginx-nim2"
- name: NIM_GRPC_PORT
value: "443"
- name: NIM_INSTANCEGROUP
value: "lab"
- name: NIM_TAGS
value: "preprod,devops"NIM_HOST– (Obrigatório) Substitua o valor padrão (nginx-nim2.nginx-nim2) pelo FQDN ou endereço IP da sua instância do NGINX Management Suite (no nosso caso, nim2.f5.ff.lan).NIM_GRPC_PORT– (Opcional) Substitua o valor padrão (443) por um número de porta diferente para o tráfego gRPC.NIM_INSTANCEGROUP– (Opcional) Substitua o valor padrão (lab) pelo grupo de instâncias ao qual a instância do NGINX Plus pertence.NIM_TAGS– (Opcional) Substitua o valor padrão (preprod,devops) por uma lista de tags separadas por vírgulas para a instância do NGINX Plus.
- Também na seção
spec.template.spec.containers.env, remova os comentários destes pares de camposname‑valuese a condição indicada se aplicar:
spec:
...
template:
...
spec:
containers:
...
env:
- name: NIM_HOST
...
#- name: NAP_WAF # value: "true" #- name: NAP_WAF_PRECOMPILED_POLICIES # value: "true"
...
#- name: ACM_DEVPORTAL # value: "true"NIM_WAFeNIM_WAF_PRECOMPILED_POLICIES– o NGINX App Protect WAF está incluído na imagem (você incluiu a opção-wna Etapa 3 de Criação da imagem do Docker), portanto, o valor é"true".ACM_DEVPORTAL– O suporte ao portal do desenvolvedor do App Connectivity Manager está incluído na imagem (você incluiu a opção-dna Etapa 3 de Criação da imagem do Docker), portanto, o valor é"true".
- Execute o script nginxwithAgentStart.sh conforme indicado para aplicar o manifesto e iniciar dois pods (conforme especificado pela instrução
replicas:2na seçãospecdo manifesto), cada um com o NGINX Plus e o NGINX Agent:
$ ./scripts/nginxWithAgentStart.sh start$ ./scripts/nginxWithAgentStart.sh stop- Verifique se dois pods estão em execução: cada pod executa uma instância do NGINX Plus e um NGINX Agent para se comunicar com o plano de controle do NGINX Management Suite.
$ kubectl get pods -n nim-test NAME READY STATUS RESTARTS AGE
nginx-nim-7f77c8bdc9-hkkck 1/1 Running 0 1m
nginx-nim-7f77c8bdc9-p2s94 1/1 Running 0 1m- Acesse a interface gráfica do NGINX Instance Manager no NGINX Management Suite e verifique se duas instâncias do NGINX Plus estão em execução com o status Online. Neste exemplo, o NGINX App Protect WAF não está habilitado.

- NGINX Management Suite
- NGINX Plus (inclui NGINX App Protect WAF)
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.