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

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

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

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 conectar seu aplicativo ao Kubernetes, você precisa ser capaz de implantar `MutatingWebhookConfiguration' em seu cluster do Kubernetes.

Para verificar se você tem as permissões necessárias, execute este comando:

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

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

bash
$
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 contêiner do servidor API , dependendo de como o cluster está configurado) deve permitir a saída do 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 sua 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

Quando você instala nossa integração usando Helm, ela inclui injeção de metadados. Ao configurar o gráfico nri-bundle , certifique-se de ativar o webhook de injeção de metadados da seguinte maneira.

nri-metadata-injection:
enabled: true

Após implantar o webhook, reinicie seu aplicativo pod. Eles precisam selecionar 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 para obter mais informações.

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 usá-lo, o que pode tornar a implantação muito mais fácil:

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
  • Se o seu certificado e par de chaves estiverem em outro formato, consulte a base de conhecimento da Digicert para obter mais ajuda.

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

implantar um novo pod e verificar as variáveis de ambiente do New Relic para verificar a correta instalação do webhook responsável por injetar os metadados.

  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 desinstalar a injeção de metadados, altere seu arquivo values-newrelic.yaml da seguinte forma:

webhook:
enabled: false

Depois disso, 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.