O Agent Control New Relic com Terraform torna o monitoramento em larga escala com New Relic ainda mais fácil, especialmente ao lidar com múltiplos clusters do Kubernetes. Com o Terraform e Helm, você pode configurar New Relic Agent Control de forma especificada, repetível e escalável em toda a sua infraestrutura Kubernetes .
Pré-requisitos
Antes de usar esta integração no Terraform, certifique-se de ter o seguinte:
- Helm 3: O Helm versão 3 deve estar instalado na sua máquina. Para obter instruções de instalação, consulte Instalando o Helm.
 - Chave de licença New Relic : Você precisará de uma chave de licença New Relic para reportar telemetria para sua conta New Relic .
 - Chave de usuário do New Relic: você precisará da sua chave de usuário do New Relic caso ainda não tenha obtido sua chave e segredo 
clientID. - Permissões de usuário: seu usuário New Relic tem as funções de gerente de domínio de autenticação e administrador de produto organizacional.
 - New Relic OrgId: O New Relic 
OrgIdidentificará de qual organização você está obtendo sua chave de ID de cliente e segredo. - Nome do cluster do Kubernetes: tenha o nome do seu cluster do Kubernetes pronto, pois ele será referenciado durante o processo de instalação.
 
Dica
Ao configurar um novo cluster com o Terraform, certifique-se de usar o mesmo nome de cluster durante a instalação do controle do agente.
- Provedor Helm para Terraform: inclua o provedor Helm no seu script Terraform para que a instalação funcione.
 - Terraform: certifique-se de ter o Terraform instalado na sua máquina.
 
Compatibilidade
Para descobrir quais versões do Kubernetes são compatíveis com esta solução, consulte a seção de compatibilidade na visão geral.
Instalar
Se você não tiver seu clientId e clientSecret, busque-os usando a seguinte API NerdGraph :
$curl -X POST \>      https://api.newrelic.com/graphql \>      -H 'Content-Type: application/json' \>      -H 'x-api-key: [INSERT_USER_API_KEY]' \>      --data-raw '{"query": "mutation SICreate { systemIdentityCreate(name: \"User Key for Agent Control\" organizationId: \"[INSERT_YOUR_ORG_ID]\") { clientId clientSecret } }"}' \>      --compressedNo comando, substitua os valores do espaço reservado pelo seu organizationId e pela chave do usuário. Isso retorna as credenciais necessárias que você usará no seu arquivo de configuração.
Passo 1
Crie um diretório para seu projeto e coloque seu arquivo main.tf dentro dele. Confirme se você adicionou o provedor Helm ao seu arquivo Terraform.
Passo 2
Configure seu script Terraform com uma versão Helm que usa os gráficos do New Relic para o Agent Control. Veja o script de exemplo abaixo:
provider "helm" { kubernetes {   config_paths = [       "~/.kube/config"   ] }}
resource "helm_release" "newrelic" {   name = "agent-control"   repository = "https://newrelic.github.io/helm-charts/"   chart = "agent-control"   namespace = "newrelic"   create_namespace = "true"
   values = [       file("./values-newrelic.yaml")   ]}Observe que o script do Terraform faz referência a um arquivo values-newrelic.yaml . Este é o arquivo de configuração do Agent Control New Relic que será usado para configurar o Agent Control. Não precisa estar no mesmo diretório que o script do Terraform. Você pode referenciá-lo de qualquer local fornecendo o caminho correto na função file() dentro do atributo values do recurso helm_release .
Ou, se você colocar o arquivo values-newrelic.yaml diretamente no diretório do projeto Terraform, o script main.tf fará referência a ele automaticamente.
Aqui está um exemplo de um arquivo values-newrelic.yaml básico sem nenhuma configuração adicional incluída:
global: cluster: [YOUR_CLUSTER_NAME] licenseKey: [YOUR_INGEST_LICENSE_KEY]
agent-control-deployment: identityClientId: [YOUR_IDENTITY_CLIENT_ID] identityClientSecret: [YOUR_IDENTITY_CLIENT_SECRET] config:   fleet_control:   # optional     fleet_id: [YOUR_FLEET_ENTITY_GUID]     auth:       organizationId: [ORG_ID]   agentControl:     content:       log:         level: tracePara explorar todas as configurações disponíveis, consulte values-newrelic.yaml.
Passo 3
Inicialize e revise o script do Terraform:
$terraform init$terraform planPasso 4
Aplique suas alterações:
$terraform applyPasso 5
Verifique se o pod do agente foi construído corretamente usando o Kube Control:
$kubectl get pods -n newrelicConfiguração
Em values-newrelic.yaml você pode configurar a instalação de múltiplos agentes de monitoramento. Este exemplo mostra as opções disponíveis, incluindo New Relic agente de infraestrutura da , agente deFluent Bit logs , agente OpenTelemetry coletor e agente gateway New Relic Controle Pipeline de :
agent-control-deployment:  identityClientId: [YOUR_IDENTITY_CLIENT_ID]  identityClientSecret: [YOUR_IDENTITY_CLIENT_SECRET]  config:    subAgents:      infrastructure:        type: newrelic/com.newrelic.infrastructure:0.1.0        content:          chart_version: "*"            chart_values:            newrelic-infrastructure:              enableProcessMetrics: true      logs:        type: newrelic/io.fluentbit:0.1.0        content:          # Ref: `https://github.com/newrelic/helm-charts/tree/master/charts/newrelic-logging`          # Recommended: check and define an explicit chart version (latest stable)          chart_version: "*"            chart_values:              newrelic-logging:                sendMetrics: true      agent-operator:        type: com.newrelic.k8s_agent_operator:0.1.0        content:          chart_version: "*"      open-telemetry:        type: newrelic/io.opentelemetry.collector:0.1.0        content:            # Ref: `https://github.com/newrelic/helm-charts/blob/master/charts/nr-k8s-otel-collector/values.yaml`            # Recommended: check and define an explicit chart version (latest stable)            chart_version: "*"              chart_values:                nr-k8s-otel-collector:                  receivers.filelog.enabled: false      gateway:        type: newrelic/com.newrelic.pipeline_control_gateway:0.1.0        content:          chart_version: "*"          chart_values:            gateway:              autoscaling:                minReplicas: 2                maxReplicas: 10                targetCPUUtilizationPercentage: 70Desinstalar
Importante
Remover um recurso de versão do Helm da sua configuração do Terraform é uma ação destrutiva. Depois de executar terraform apply após essa alteração, o Terraform desinstalará e destruirá os recursos relacionados no seu cluster do Kubernetes. Isso pode resultar na perda de dados e configuração vinculados aos recursos gerenciados por essa versão Helm . Antes de prosseguir, certifique-se de entender completamente o impacto potencial em seu ambiente:
- Revise todas as dependências e serviços que podem ser afetados.
 - Considere fazer backup de quaisquer dados persistentes ou configurações vinculadas à versão.
 - Confirme se a remoção desta versão é necessária e se ajusta à sua estratégia de gerenciamento de infraestrutura. Sempre tenha cuidado ao fazer alterações significativas em sua infraestrutura e garanta que você tenha procedimentos de reversão adequados em vigor caso algo dê errado.
 
- Executar 
terraform plan: Após remover o bloco de recursos de liberação do Helm da sua configuração, execute o comandoterraform plan. Isso permite que você revise as alterações que o Terraform planeja fazer na sua infraestrutura. Examine cuidadosamente a saída do plano para garantir que apenas os recursos pretendidos sejam marcados para exclusão. Esta etapa é essencial para verificar se não ocorrerão exclusões ou alterações não intencionais. - Execute 
terraform apply: se os resultados do plano do Terraform estiverem alinhados com suas expectativas, prossiga executando o comandoterraform apply. Isso implementará as alterações planejadas, removendo efetivamente a versão especificada do Helm do seu ambiente. Confirme a execução quando solicitado para concluir o processo de desinstalação.