O F5 NGINX Management Suite é uma família de módulos para gerenciar o plano de dados NGINX a partir de um único painel de controle. 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 aplicativos e APIs.
Você precisa instalar o Agente NGINX em cada instância do NGINX que deseja gerenciar do NGINX Management Suite para habilitar a comunicação com o plano de controle e o gerenciamento de configuração remota.
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. Nesta postagem, mostramos como construir uma imagem Docker para NGINX Plus e NGINX Agent, para ampliar o alcance do NGINX Management Suite para instâncias NGINX Plus implantadas no Kubernetes ou outras infraestruturas de microsserviços.
Há três opções de compilação, dependendo do que você deseja incluir na imagem Docker resultante:
[ Editor – Esta postagem foi atualizada em abril de 2023 para esclarecer as instruções e adicionar o campo ACM_DEVPORTAL
, na Etapa 1 de Executar a imagem do Docker no Kubernetes .]
Fornecemos um repositório GitHub dos recursos necessários para criar uma imagem Docker do NGINX Plus e do NGINX Agent, com suporte para a versão 2.8.0 e posteriores do módulo Instance Manager do NGINX Management Suite.
Para construir a imagem do Docker, você precisa:
Para executar a imagem do Docker, você precisa:
kubectl
com acesso ao cluster KubernetesSiga estas instruções para criar a imagem do Docker.
Clone o repositório GitHub:
$ git clone https://github.com/nginxinc/NGINX-Demos Clonando em 'NGINX-Demos'... remoto: Enumerando objetos: 126, feito. remoto: Contando objetos: 100% (126/126), concluído. remoto: Comprimindo objetos: 100% (85/85), concluído. remoto: Total 126 (delta 61), reutilizado 102 (delta 37), pacote-reutilizado 0 Recebendo objetos: 100% (126/126), 20,44 KiB | 1,02 MiB/s, concluído.
Resolução de deltas: 100% (61/61), concluído.
Mude para o diretório de construção:
$ cd NGINX-Demos/nginx-agent-docker/
Execute docker
ps
para 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:
‑C
– Nome do arquivo do certificado de licença do NGINX Plus ( nginx-repo.crt
nos comandos de exemplo abaixo)‑K
– Nome do arquivo de chave de licença do NGINX Plus ( nginx-repo.key
nos comandos de exemplo abaixo)‑t
– O registro e a imagem de destino no formulário
<nome_do_registro>/<nome_da_imagem>:<etiqueta>
( registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
nos comandos de exemplo abaixo)
‑n
– URL base da sua instância do NGINX Management Suite ( https://nim.f5.ff.lan
nos comandos de exemplo abaixo)As opções adicionais são:
‑d
– Adicionar suporte ao plano de dados para o portal do desenvolvedor ao usar o NGINX API Connectivity Manager‑w
– Adicionar NGINX App Protect WAFAqui estão os comandos para as diferentes combinações de software:
NGINX Plus e Agente NGINX:
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registro.ff.lan:31005/nginx-plus-com-agente: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 registro.ff.lan:31005/nginx-plus-com-agente:2.7.0 -w \ -n https://nim.f5.ff.lan
Suporte ao NGINX Plus, NGINX Agent e portal do desenvolvedor (adicione a opção ‑d
):
$ ./scripts/build.sh -C nginx-repo.crt -K nginx-repo.key \ -t registro.ff.lan:31005/nginx-plus-com-agente:2.7.0 -d \ -n https://nim.f5.ff.lan
Aqui está um exemplo de rastreamento da construção de uma imagem básica. A mensagem Build
complete
no final indica uma compilação bem-sucedida.
$ ./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 => A imagem do docker de destino é nginx-plus-with-agent:2.7.0 [+] Compilando 415.1s (10/10) CONCLUÍDO => [interno] carregar definição de compilação do Dockerfile => transferir dockerfile: 38B => [interno] carregar .dockerignore => transferir contexto: 2B => [interno] carregar metadados para docker.io/library/centos:7 => [auth] library/centos:pull token para registry-1.docker.io => EM CACHE [1/4] DE docker.io/library /centos:7@sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4 => [interno] carregar contexto de compilação => transferir contexto: 69B => [2/4] EXECUTE 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 => exportando para imagem => exportando camadas => gravando imagem sha256:9246de4af659596a290b078e6443a19b8988ca77f36ab90af3b67c03d27068ff => nomeando para registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 => Compilação concluída para registry.ff.lan:31005/nginx-plus-with-agent:2.7.0
Siga estas instruções para preparar o manifesto de implantação e iniciar o NGINX Plus com o NGINX Agent no Kubernetes.
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 da imagem padrão ( your.registry.tld/nginx-with-nim2-agent:tag
) pelo nome da imagem do Docker que você especificou com a opção ‑t
na Etapa 3 de Construindo a imagem do Docker (no nosso caso, registry.ff.lan:31005/nginx-plus-with-agent:2.7.0 ):
especificação: ... modelo: ... especificação: contêineres: - nome: nginx-nim imagem: your.registry.tld/nginx-with-nim2-agent:tag
Na seção spec.template.spec.containers.env
, faça estas substituições no campo de valor
para cada nome
indicado:
NIM_HOST
– (Obrigatório) Substitua o 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) Substitui o padrão (443
) com um número de porta diferente para tráfego gRPC.NIM_INSTANCEGROUP
– (Opcional) Substitua o padrão ( lab
) pelo grupo de instâncias ao qual a instância do NGINX Plus pertence.NIM_TAGS
– (Opcional) Substitua o padrão ( preprod,devops
) por uma lista delimitada por vírgulas de tags para a instância do NGINX Plus.especificação: ... modelo: ... especificação: contêineres: ... ambiente: - nome: NIM_HOST ... valor: " nginx-nim2.nginx-nim2 " - nome: Valor NIM_GRPC_PORT: "443 " - nome: Valor NIM_INSTANCEGROUP: " lab " - nome: Valor NIM_TAGS: " preprod,devops "
Também na seção spec.template.spec.containers.env
, descomente esses pares de campos nome
- valor
se a condição indicada se aplicar:
NIM_WAF
e NIM_WAF_PRECOMPILED_POLICIES
– O NGINX App Protect WAF está incluído na imagem (você incluiu a opção -w
na Etapa 3 de Construindo a imagem do Docker ), então o valor é "true"
.ACM_DEVPORTAL
– O suporte para o portal do desenvolvedor do App Connectivity Manager está incluído na imagem (você incluiu a opção -d
na Etapa 3 de Construindo a imagem do Docker ), então o valor é "true"
.especificação: ... modelo: ... especificação: contêineres: ... ambiente: - nome: NIM_HOST ... #- nome: NAP_WAF # valor: "true" #- nome: NAP_WAF_PRECOMPILED_POLICIES # valor: "true" ... #- nome: ACM_DEVPORTAL # valor: "true"
Execute o script nginxwithAgentStart.sh conforme indicado para aplicar o manifesto e iniciar dois pods (conforme especificado pelas réplicas:
2
instruções na seção de especificações
do manifesto), cada um com NGINX Plus e NGINX Agent:
$ ./scripts/nginxWithAgentStart.sh iniciar $ ./scripts/nginxWithAgentStart.sh parar
Verifique se dois pods estão em execução: cada pod executa uma instância do NGINX Plus e um agente NGINX para se comunicar com o plano de controle do NGINX Management Suite.
$ kubectl get pods -n nim-test NOME PRONTO STATUS REINÍCIOS IDADE nginx-nim-7f77c8bdc9-hkkck 1/1 Em execução 0 1m nginx-nim-7f77c8bdc9-p2s94 1/1 Em execução 0 1m
Acesse a GUI 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.
Para experimentar as soluções NGINX discutidas nesta postagem, inicie um teste gratuito de 30 dias hoje mesmo ou entre em contato conosco para discutir seus casos de uso :
Baixe o NGINX Agent – é gratuito e de código aberto.
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."