Kubernetes APM Kubernetes 이전에 에이전트 Kubernetes APM 연산자로 알려진 자동 Kubernetes 연결은 에이전트 배포와 함께 배포를 자동화하여 환경에 대한 풀스택 옵저버빌리티를 간소화합니다. 자동 측정을 활성화하면 개발자는 더 이상 APM 에이전트를 수동으로 관리할 필요가 없습니다. Kubernetes APM 자동 연결은 APM 에이전트를 자동으로 설치, 업그레이드 및 제거합니다.
현재 Java, .NET, Node.js를 지원합니다 . Python 및 루비에 추가 언어(PHP 및 Go)가 추가될 예정입니다.
작동 원리
설치 시
MutatingWebHook
는 노드에 구현하다, 배포하다 파드에 대한 API 요청을 가로채는 데 관여하게 됩니다.지정된 설정을 반영하여 파드 사양을 변경하여 NR init컨텍스트 및 환경 변수를 추가합니다.
파드 설립 이후, 뉴렐릭 APM 에이전트는 그 안에 수용된 기능에 원활하게 통합됩니다.
시작하기 전에
오퍼레이터를 설치하기 전에 다음 사항을 확인하십시오.
설치
요구 사항에 따라 Kubernetes APM 자동 연결을 Kubernetes 통합과 함께 또는 독립적으로 설치할 수 있습니다.
전체 풀스택 옵저버빌리티 경험을 활용하려면 통합과 함께 설치하는 것이 좋습니다.Kubernetes
Kubernetes 통합에 추가로 번들 설치(권장)
Kubernetes APM 자동 연결 차트는 nri-bundle
차트의 일부로, 전체 Kubernetes 옵저버빌리티를 활성화하는 데 필요한 모든 구성 요소의 설치를 관리합니다.
k8s-agents-operator.enabled=true
파라미터를 helm 명령에 추가하거나 values.yaml
파일에 포함하세요. Helm 사용에 대한 자세한 내용은 Kubernetes 통합 설치 페이지를 참조하거나 nri-bundle
차트를 확인하세요.
시위를 사용하여 Helm 명령 샘플을 확인하세요.
$helm repo add newrelic https://helm-charts.newrelic.com$
$helm upgrade --install newrelic-bundle newrelic/nri-bundle \> --set global.licenseKey=YOUR_NEW_RELIC_INGEST_LICENSE_KEY \> --set global.cluster=CLUSTER_NAME \> --namespace=newrelic \> --set newrelic-infrastructure.privileged=true \> --set global.lowDataMode=true \> --set kube-state-metrics.enabled=true \> --set kubeEvents.enabled=true \> --set k8s-agents-operator.enabled=true \> --create-namespace
독립형 설치
기본 설정으로 Kubernetes APM 자동 연결을 설치하려면 다음 명령을 실행하세요.
$helm repo add k8s-agents-operator https://newrelic.github.io/k8s-agents-operator$helm upgrade --install k8s-agents-operator k8s-agents-operator/k8s-agents-operator \> --namespace newrelic \> --create-namespace \> --set licenseKey=YOUR_NEW_RELIC_INGEST_LICENSE_KEY
설정 옵션의 전체 목록을 보려면 README 차트를 참조하세요.
자동 계측 구성
클러스터에 APM 자동 연결이 모두 설정되면 다음 단계는 이를 작동시키는 데 필요한 구성을 롤아웃하는 것입니다. 여기에는 클러스터에서 최소한 하나의 계측 사용자 정의 리소스(CR)가 활성화되어 있어야 합니다.
계측 CR을 사용하면 다음을 매핑할 수 있습니다.
- 계측기 이름 CR
- 계측 CR을 적용할 위치(
podLabelSelector
및namespaceLabelSelector
덕분에) - APM 에이전트(CR당 하나)
- APM 에이전트 버전
- APM config 수행, (env vars)
- 라이선스 키 (선택 사항)
매니페스트 파일은 APM 자동 연결을 설치한 것과 동일한 네임스페이스(기본적으로 newrelic
)에 삽입되어야 합니다.
$kubectl apply -f ./values.yaml -n newrelic
선택기를 사용하는 방법
계측 CR이 APM 에이전트를 주입하는 시점을 알려면 선택기를 사용해야 합니다. 함께 사용할 수 있는 레이블 선택기가 2개 있습니다(논리적 AND(&&) 연산자로 작동) 또는 필요에 따라 분리하여 사용할 수 있습니다.
PodLabelSelector
APM 자동 연결에 어떤 파드를 데이터베이스화해야 하는지 알려줍니다.matchLabel
사용한 예(특정 태그와 값이 포함된 파드 선택):...podLabelSelector:matchLabels:app.kubernetes.io/name: flask-hello-world...NameSpaceLabelSelector
지우스페이스 수준에서 자동 계측된 패드를 정의합니다.matchExpressions
사용한 예(특정 태그와 값을 포함하는 네임스페이스 선택):...namespaceLabelSelector:matchExpressions:- key: "kubernetes.io/metadata.name"operator: "In"values: ["backend"]...팁
kubernetes.io/metadata.name
라벨을 적용하는 것은 네임스페이스 이름을 기준으로 선택하는 것과 동일하다는 점에 유의하세요.
두 선택기 모두 matchLabel
및 matchExpressions
지원합니다.
APM 에이전트
계측 CR 내에서 APM 에이전트와 해당 버전을 지정해야 합니다. 사용 가능한 최신 기능을 최대한 활용하려면 최신 버전을 사용하는 것이 좋습니다.
영상 | 언어 | 사용 가능한 버전 |
---|---|---|
닷넷 |
| |
자바 |
| |
노드제이에스 |
| |
파이썬 |
| |
루비 |
|
이 예를 보세요:
... spec: agent: language: dotnet image: newrelic/newrelic-dotnet-init:latest ...
APM 설정 방법,
로그 CR은 APM 에이전트의 설정을 간소화하기 위해 패드에 환경 변수를 주입하는 기능을 제공합니다. 이 예를 보세요:
... spec: env: # Example overriding the appName configuration by using a label of the pod - name: NEW_RELIC_APP_NAME valueFrom: fieldRef: fieldPath: metadata.labels['app.kubernetes.io/name'] ...
위의 예에서는 환경 변수를 사용하여 에이전트 설정을 전역적으로 구성하는 방법을 보여드립니다. 사용 가능한 설정 옵션은 각 에이전트의 설정 문서를 참조하세요.
중요
이러한 환경 변수는 앱 배포 매니페스트에 삽입할 수 있습니다.
라이선스 키 (선택 사항)
설치하면 이 생성되고 이것이 기본 라이센스입니다. APM 텔레메트리를 다른 계정으로 보내야 하는 경우 다음 단계를 따르세요.
새 라이선스 키가 포함된 비밀을 생성하려면 다음 명령을 실행하세요.
bash$kubectl create secret generic newrelic-key-secret \>--namespace my-monitored-namespace \>--from-literal=new_relic_license_key=<NEW RELIC INGEST LICENSE KEY>계측 CR에서 비밀을 참조하려면 다음 명령을 실행하세요.
...spec:licenseKeySecret: the-name-of-the-custom-secret...
계측 CR 예제
애플리케이션에서 APM 계측 업데이트
기본적으로 Kubernetes APM 자동 연결은 해당 APM 에이전트 의 최신 사용 가능한 버전을 자동으로 설치합니다.
애플리케이션 모니터링이 시작되면 사용자가 업데이트를 선택하지 않는 한 자동으로 새로운 버전으로 업데이트되지 않습니다. 파드를 재배포하거나 배포를 다시 시작하여 기능을 업데이트할 수 있습니다.
애플리케이션에서 APM 계측 제거
애플리케이션에서 APM 계측을 제거하려면 사용된 podLabelSelector
또는 namespaceLabelSelector
내부의 일치하는 레이블 선택기를 변경하거나 계측 CR을 삭제해야 합니다. 그런 다음 배포를 다시 시작합니다. 제거 과정은 몇 초 밖에 걸리지 않습니다.
Kubernetes APM 자동 연결 업데이트
번들 설치
다음 모범 사례를 사용하여 nri-bundle
차트 업데이트를 실행합니다.
$k8s-agents-operator.enabled=true
독립형 설치
Kubernetes APM 자동 연결의 최신 버전으로 업데이트하려면 helm upgrade
명령을 실행하세요.
$helm upgrade k8s-agents-operator newrelic/k8s-agents-operator -n newrelic
Kubernetes APM 자동 연결 제거
번들 설치
nri-bundle
차트를 제거하거나 Kubernetes APM 자동 연결만 제거하려면 다음 명령어를 사용하여 helm 업그레이드를 실행합니다.
$k8s-agents-operator.enabled=false
독립형 설치
Kubernetes APM 자동 연결을 제거하고 삭제하려면 다음 명령을 실행하세요.
$helm uninstall k8s-agents-operator -n newrelic
데이터 찾기 및 사용
APM 요약 페이지를 사용하여 인사이트를 얻고 인시던트를 해결하세요.
Kubernetes 요약 페이지를 확인하세요. 이는 모니터의 맥락에서 Kubernetes 인사이트를 제공합니다.
인증서
Kubernetes APM 자동 연결은 원하는 경우 cert-manager
지원할 수 있습니다.
cert-manager
Helm 차트를 설치하려면 다음 명령을 실행하세요.bash$helm install cert-manager jetstack/cert-manager \>--namespace cert-manager \>--create-namespace \>--set crds.enabled=truevalues.yaml
파일에서admissionWebhooks.autoGenerateCert.enabled: false
및admissionWebhooks.certManager.enabled: true
설정합니다. 그런 다음 평소처럼 차트를 설치합니다.
사용 가능한 차트 릴리스
사용 가능한 차트를 보려면 다음 명령을 실행하세요.
$helm search repo k8s-agents-operator
자주 묻는 질문
문제점 해결
로그가 포함되지 않은 경우 다음을 확인해야 합니다.
Kubernetes APM 자동 연결을 설치한 후에는 반드시 재배포하거나 구현하고, 새로운 기능을 구현하세요. 클러스터에서는 자동 계측된 새로운 기능만 구현하다, 배포하다라는 점에 유의하세요.
앱의 네임스페이스에 비밀이 설치되었는지 확인하려면 다음 명령을 실행하세요.
bash$kubectl get secrets -n NAMESPACEpodLabelSelector
사용할 때 CR을 통한 자동 시스템을 활성화하는 데 필요한 레이블이 파드에 있는지 확인하세요. 마찬가지로 CR 내부에서namespaceLabelSelector
사용할 때 네임스페이스에 필요한 레이블이 있는지 확인하세요.bash$kubectl get pod POD_NAME -n NAMESPACE -o jsonpath='{.metadata.annotations}'APM 자동 연결 패드에서 로그를 가져오려면 다음 명령을 실행하세요.
bash$kubectl logs AGENT_OPERATOR_POD -n newrelic이 명령을 실행하여
init
컨테이너가 삽입되고 특수 파드 내부에서 성공적으로 실행되었는지 확인하세요.bash$kubectl describe pod POD_NAME -n NAMESPACE
주석이 필요한 이전 버전에서 마이그레이션하는 방법
버전 0.14부터, 작곡을 자동 계측하기 위해 더 이상 작곡 배포 매니페스트 내의 주석이 필요하지 않습니다.
0.14 이전 버전을 모두 제거하고 최신 릴리스 버전을 설치하는 것이 좋습니다. 계측 CR 내의 레이블 선택기를 활용하면 APM 에이전트를 정확하게 배포할 수 있으므로 주석이 필요하지 않습니다.
지원하다
Kubernetes APM 자동 연결은 현재 다음 APM 에이전트의 최신 버전을 지원합니다: Java, .NET, Node.js, 파이썬, 루비.
일반적으로 사용 가능해지면 각 APM 에이전트의 최신 3가지 버전이 지원될 예정입니다.
문제가 있는 경우:
비슷한 문제가 있는지 GitHub의 문제 섹션을 검토하거나 새 문제를 여는 것을 고려해 보세요.
뉴렐릭 지원팀 에 연락하여 도움을 받으실 수 있습니다.