• /
  • 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ó do plano de controle (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 o 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.