사용자의 편의를 위해 제공되는 기계 번역입니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

Terraform을 사용한 에이전트 제어 설정

Terraform을 사용한 뉴렐릭 에이전트 제어를 사용 하면 특히 여러 쿠버네티스 클러스터를 처리할 때 뉴렐릭을 사용한 대규모 모니터링이 더욱 쉬워집니다. Terraform과 Helm 사용하면 Kubernetes 인프라 전반에서 지정되고 반복 가능하며 확장 가능한 방식으로 뉴렐릭 에이전트 Control을 설정할 수 있습니다.

전제 조건

Terraform에서 이 통합을 사용하기 전에 다음 사항이 있는지 확인하세요.

  • Helm 3: Helm 버전 3이 컴퓨터에 설치되어 있어야 합니다. 설치 지침은 Helm 설치를 참조하세요.
  • 뉴렐릭 클러스터 키: 뉴렐릭 클러스터를 귀하의 계정에 보고하려면 뉴렐릭 클러스터 키가 필요합니다.
  • 뉴렐릭 사용자 키: clientID 키와 비밀번호를 아직 가져오지 않은 경우 뉴렐릭 사용자 키가 필요합니다.
  • 사용자 권한: 귀하의 뉴렐릭 사용자에게는 인증 관리자 및 조직 제품 관리자 역할이 있습니다.
  • 뉴렐릭 OrgId: 뉴렐릭 OrgId 은 귀하가 클라이언트 ID 키와 비밀번호를 받는 기관을 식별합니다.
  • 쿠버네티스 클러스터 이름: 설치 과정에서 참조될 쿠버네티스 클러스터의 이름을 준비하세요.

Terraform으로 새 클러스터를 설정할 때 에이전트 제어를 설치하는 동안 동일한 클러스터 이름을 사용해야 합니다.

  • Terraform용 Helm 공급자: 설치가 작동하도록 Terraform 스크립트에 Helm 공급자를 포함하세요.
  • Terraform: 컴퓨터에 Terraform이 설치되어 있는지 확인하세요.

호환성

이 솔루션과 호환되는 Kubernetes 버전을 알아보려면 개요의 호환성 섹션을 참조하세요.

설치

clientIdclientSecret 이 없으면 다음 NerdGraph API를 사용하여 가져오세요.

bash
$
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 스크립트를 초기화하고 검토합니다.

bash
$
terraform init
bash
$
terraform plan

4단계

변경 사항을 적용하세요:

bash
$
terraform apply

5단계

Kube Control을 사용하여 에이전트 패드가 올바르게 구축되었는지 확인하세요.

bash
$
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 릴리스가 환경에서 효과적으로 제거됩니다. 삭제 과정을 완료하기 위해 다운로드가 완료되면 실행을 확인하세요.