• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

In the event of any inconsistency between the English version and the translated version, the English versionwill take priority. Please visit this page for more information.

Criar um problema

Vincular aplicativo APM-instrumentado ao Kubernetes

Você pode exibir metadados Kubernetes e vinculá-los ao seu agente APM como rastreamento distribuído para explorar problemas de desempenho e solucionar erros de operação. Para obter mais informações, consulte esta postagem do blog sobre monitoramento de desempenho de aplicativos via Kubernetes.

O produto metadados injeção usa um MutatingAdmissionWebhook para adicionar as seguintes variáveis de ambiente ao pod:

NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME
NEW_RELIC_METADATA_KUBERNETES_NODE_NAME
NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME
NEW_RELIC_METADATA_KUBERNETES_DEPLOYMENT_NAME
NEW_RELIC_METADATA_KUBERNETES_POD_NAME
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_IMAGE_NAME

Dica

Nosso projeto de injeção de metadados do Kubernetes é de código aberto. Aqui está o código para vincular o APM e os dados de infraestrutura.

Compatibilidade e requisitos

Para vincular seu aplicativo e Kubernetes, você deve ser capaz de implantar MutatingWebhookConfigurations em seu cluster do Kubernetes.

Para verificar se você tem as permissões necessárias, você pode executar o seguinte comando:

bash
$
kubectl auth can-i create mutatingwebhookconfigurations.admissionregistration.k8s.io -A

A saída do comando acima deve ser algo semelhante a:

yes

Se você vir um resultado diferente, siga a documentação do Kubernetes para habilitar o controle de admissão em seu cluster.

Requisitos de rede

Para que Kubernetes se comunique com nosso MutatingAdmissionWebhook, o nó mestre (ou o contêiner do servidor API , dependendo de como o cluster está configurado) deve ter permissão de saída para tráfego HTTPS na porta 443 para pod em todos os outros nós do cluster.

Isso pode exigir configuração específica dependendo de como a infraestrutura está configurada (local, AWS, Google Cloud, etc.).

Compatibilidade APM do agente

O seguinte agente New Relic coleta metadados Kubernetes :

Configure a injeção de metadados

A injeção de metadados está incluída quando você instala nossa integração usando Helm. Apenas certifique-se de que, ao configurar o gráfico nri-bundle , o webhook que injeta os metadados esteja ativado:

nri-metadata-injection:
enabled: true

Seu pod de aplicativo precisará ser reiniciado após a implantação do webhook, para que eles possam coletar as variáveis de ambiente necessárias.

Por padrão, todos os pods criados que incluem o agente APM têm as variáveis de ambiente corretas definidas e a injeção de metadados se aplica a todo o cluster. Para verificar se as variáveis de ambiente foram definidas, qualquer contêiner em execução deve ser interrompido e uma nova instância iniciada (consulte Validar a injeção de metadados).

Essa configuração padrão também usa a API de certificados Kubernetes para gerenciar automaticamente os certificados necessários para a injeção. Se necessário, você pode limitar a injeção de metadados a namespaces específicos em seu cluster ou autogerenciar seus certificados.

Configuração personalizada

Limitar namespace sujeito a injeção

Você pode limitar a injeção de metadados apenas a namespaces específicos usando rótulos.

Para ativar esse recurso, adicione o seguinte ao arquivo values-newrelic.yaml :

nri-metadata-injection:
injectOnlyLabeledNamespaces: true

Com esta opção, a injeção é aplicada apenas aos namespaces que possuem o rótulo newrelic-metadata-injection definido como enabled:

bash
$
kubectl label namespace YOUR_NAMESPACE newrelic-metadata-injection=enabled

Use o cert-manager para gerar certificados

Por padrão, nosso gráfico usa kube-webhook-certgen para gerar automaticamente os certificados necessários para a execução do webhook.

No entanto, se você tiver o cert-manager instalado, poderá configurar nosso gráfico para usar o cert-manager, o que pode simplificar significativamente o processo de implantação:

nri-metadata-injection:
certManager:
enabled: true

Gerenciar certificados personalizados

Dica

O gerenciamento manual de certificados de webhook é recomendado apenas para usuários avançados. A equipe de suporte New Relic pode não ser capaz de ajudar na resolução de problemas nesta configuração.

Para usar certificados personalizados, você precisa desabilitar a instalação automática de certificados ao instalar usando o Helm.

Para desativar a instalação de certificados, basta modificar o Helm nri-bundle values.yaml assim:

nri-metadata-injection:
customTLSCertificate: true

Agora você pode prosseguir com a opção de gerenciamento de certificado personalizado.

Você precisa do certificado, da chave do servidor e do pacote da Autoridade de Certificação (CA) codificados no formato PEM.

  • Se você os tiver no formato de certificado padrão (X.509), instale openssl e execute o seguinte:
bash
$
openssl x509 -in YOUR_CERTIFICATE_FILENAME -outform PEM -out YOUR_CERTIFICATE_FILENAME.pem
$
openssl x509 -in YOUR_SERVER_KEY_FILENAME -outform PEM -out YOUR_SERVER_KEY_FILENAME.pem
$
openssl x509 -in YOUR_CA_BUNDLE_FILENAME -outform PEM -out YOUR_BUNDLE_FILENAME.pem

Crie o segredo TLS com o par de certificado/chave assinado e corrija a configuração mutante do webhook com a CA usando os seguintes comandos:

bash
$
kubectl create secret tls YOUR_NEWRELIC_METADATA_INJECTION_ADMISSION \
>
--key=YOUR_PEM_ENCODED_SERVER_KEY \
>
--cert=YOUR_PEM_ENCODED_CERTIFICATE \
>
--dry-run -o yaml |
$
kubectl -n newrelic apply -f -
$
$
caBundle=$(cat YOUR_PEM_ENCODED_CA_BUNDLE | base64 | td -d $'\n')
$
kubectl patch mutatingwebhookconfiguration newrelic-metadata-injection-cfg --type='json' -p "[{'op': 'replace', 'path': '/webhooks/0/clientConfig/caBundle', 'value':'${caBundle}'}]"

Importante

Os certificados assinados pelo Kubernetes têm validade de um ano. Para obter mais informações, consulte o código-fonte do Kubernetes no GitHub.

Validar a injeção de metadados

Para validar se o webhook (responsável por injetar os metadados) foi instalado corretamente, implante um novo pod e verifique as variáveis de ambiente New Relic .

  1. Crie um pod nginx fictício executando:

    bash
    $
    kubectl run test-nginx --image nginx -n newrelic
  2. Verifique se as variáveis de ambiente do New Relic foram injetadas:

    bash
    $
    kubectl exec -n newrelic test-nginx -- env | grep NEW_RELIC_METADATA_KUBERNETES

A saída esperada seria algo como o seguinte:

NEW_RELIC_METADATA_KUBERNETES_CLUSTER_NAME=THE_CLUSTER_NAME
NEW_RELIC_METADATA_KUBERNETES_NODE_NAME=nodea
NEW_RELIC_METADATA_KUBERNETES_NAMESPACE_NAME=newrelic
NEW_RELIC_METADATA_KUBERNETES_POD_NAME=test-nginx
NEW_RELIC_METADATA_KUBERNETES_CONTAINER_NAME=nginx

Desative a injeção de metadados

Para desativar/desinstalar a injeção de metadados, altere seu arquivo values-newrelic.yaml da seguinte forma:

webhook:
enabled: false

E execute novamente o comando de instalação.

Resolução de problemas

Siga estas dicas de resolução de problemas conforme necessário.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.