Terraform을 사용한 뉴렐릭 에이전트 제어를 사용 하면 특히 여러 쿠버네티스 클러스터를 처리할 때 뉴렐릭을 사용한 대규모 모니터링이 더욱 쉬워집니다. Terraform과 Helm 사용하면 Kubernetes 인프라 전반에서 지정되고 반복 가능하며 확장 가능한 방식으로 뉴렐릭 에이전트 Control을 설정할 수 있습니다.
전제 조건
Terraform에서 이 통합을 사용하기 전에 다음 사항이 있는지 확인하세요.
- Helm 3: Helm 버전 3이 컴퓨터에 설치되어 있어야 합니다. 설치 지침은 Helm 설치를 참조하세요.
- 뉴렐릭 클러스터 키: 뉴렐릭 클러스터를 귀하의 계정에 보고하려면 뉴렐릭 클러스터 키가 필요합니다.
- 뉴렐릭 사용자 키:
clientID
키와 비밀번호를 아직 가져오지 않은 경우 뉴렐릭 사용자 키가 필요합니다. - 사용자 권한: 귀하의 뉴렐릭 사용자에게는 인증 관리자 및 조직 제품 관리자 역할이 있습니다.
- 뉴렐릭 OrgId: 뉴렐릭
OrgId
은 귀하가 클라이언트 ID 키와 비밀번호를 받는 기관을 식별합니다. - 쿠버네티스 클러스터 이름: 설치 과정에서 참조될 쿠버네티스 클러스터의 이름을 준비하세요.
팁
Terraform으로 새 클러스터를 설정할 때 에이전트 제어를 설치하는 동안 동일한 클러스터 이름을 사용해야 합니다.
- Terraform용 Helm 공급자: 설치가 작동하도록 Terraform 스크립트에 Helm 공급자를 포함하세요.
- Terraform: 컴퓨터에 Terraform이 설치되어 있는지 확인하세요.
호환성
이 솔루션과 호환되는 Kubernetes 버전을 알아보려면 개요의 호환성 섹션을 참조하세요.
설치
clientId
및 clientSecret
이 없으면 다음 NerdGraph API를 사용하여 가져오세요.
$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 } }"}' \> --compressed
명령에서 플레이스홀더 값을 organizationId
및 사용자 키로 바꾸세요. 이는 설정 파일에서 사용할 필수 자격 증명을 반환합니다.
1단계
프로젝트를 위한 디렉토리를 만들고 그 안에 main.tf
파일을 넣습니다. Terraform 파일에 Helm 공급자를 추가했는지 확인하세요.
2단계
에이전트 제어용 뉴렐릭 차트를 사용하는 Helm 릴리스로 Terraform 펼쳐보기를 구성하세요. 아래의 샘플 스크립트를 확인하세요.
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") ]}
Terraform 스크립트가 values-newrelic.yaml
파일을 참조한다는 점에 유의하세요. 에이전트 Control 설정에 사용되는 뉴렐릭 에이전트 Control 설정 파일입니다. Terraform 스크립트와 같은 디렉토리에 있을 필요는 없습니다. helm_release
리소스의 values 속성 내에 있는 file()
함수에서 올바른 경로를 제공하면 어느 위치에서나 참조할 수 있습니다.
또는 values-newrelic.yaml
파일을 Terraform 프로젝트 디렉토리에 직접 배치하면 main.tf
스크립트가 자동으로 해당 파일을 참조합니다.
추가 설정이 포함되지 않은 기본 values-newrelic.yaml
파일의 예는 다음과 같습니다.
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: trace
사용 가능한 모든 구성 설정을 살펴보려면 values-newrelic.yaml
을 참조하세요.
3단계
Terraform 스크립트를 초기화하고 검토합니다.
$terraform init
$terraform plan
4단계
변경 사항을 적용하세요:
$terraform apply
5단계
Kube Control을 사용하여 에이전트 패드가 올바르게 구축되었는지 확인하세요.
$kubectl get pods -n newrelic
구성
values-newrelic.yaml
에서 여러 모니터링 에이전트의 설치를 구성할 수 있습니다. 이 예에서는 뉴렐릭의 에이전트 에이전트, Fluent Bit 에이전트 에이전트, OpenTelemetry 수집기 에이전트 및 뉴렐릭 파이프라인 에이전트 에이전트를 포함하여 사용 가능한 옵션을 보여줍니다.
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: 70
제거
중요
Terraform 설정에서 Helm 릴리스 리소스를 제거하는 것은 파괴적인 작업입니다. 이 변경 사항에 따라 terraform apply
실행하면 Terraform이 쿠버네티스 서버에서 관련 리소스를 제거하고 삭제합니다. 이로 인해 해당 Helm 릴리스에서 관리하는 리소스에 연결된 데이터 및 설정이 손실될 수 있습니다. 진행하기 전에 환경에 미칠 수 있는 잠재적 영향을 완전히 이해했는지 확인하세요.
- 영향을 받을 수 있는 모든 의존성/종속성과 서비스를 검토하세요.
- 릴리스에 연결된 모든 영구 데이터 또는 설정을 백업하는 것을 고려하세요.
- 이 릴리스를 제거하는 것이 필요하고 인프라 관리 전략에 맞는지 확인하세요. 인프라를 크게 변경할 때는 항상 주의를 기울이고, 문제가 발생하는 경우를 대비해 적절한 롤백 절차가 마련되어 있는지 확인하세요.
terraform plan
실행: 설정에서 Helm 릴리스 리소스 블록을 제거한 후terraform plan
명령을 실행합니다. 이를 통해 Terraform이 인프라에 적용할 변경 사항을 검토할 수 있습니다. 삭제를 위해 의도한 리소스만 표시되었는지 확인하려면 계획 출력을 주의 깊게 검토하세요. 이 단계는 의도치 않은 삭제나 변경이 발생하지 않는지 확인하는 데 필수적입니다.terraform apply
실행: Terraform 계획 결과가 기대치와 일치하면terraform apply
명령을 실행하여 계속 진행합니다. 이렇게 하면 계획된 변경 사항이 구현되어 지정된 Helm 릴리스가 환경에서 효과적으로 제거됩니다. 삭제 과정을 완료하기 위해 다운로드가 완료되면 실행을 확인하세요.