• English日本語한국어
  • 로그인지금 시작하기

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

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

문제 신고

APM 계측 애플리케이션을 Kubernetes에 연결

Kubernetes 메타데이터를 표시하고 분산 추적 으로 APM 에이전트에 연결 하여 성능 문제를 탐색하고 트랜잭션 오류를 해결할 수 있습니다. 자세한 내용 은 Kubernetes를 통한 앱 성능 모니터링에 대한 이 블로그 게시물 을 참조하세요.

메타데이터 삽입 제품은 MutatingAdmissionWebhook 를 사용하여 다음 환경 변수를 포드에 추가합니다.

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

Kubernetes 메타데이터 주입 프로젝트는 오픈 소스입니다. 다음은 APM과 인프라 데이터를 연결하는 코드입니다.

호환성 및 요구 사항

애플리케이션과 Kubernetes를 연결하려면 Kubernetes 클러스터에 MutatingWebhookConfiguration 를 배포할 수 있어야 합니다.

필요한 권한이 있는지 확인하려면 다음 명령을 실행할 수 있습니다.

bash
$
kubectl auth can-i create mutatingwebhookconfigurations.admissionregistration.k8s.io -A

위 명령의 출력은 다음과 유사해야 합니다.

yes

다른 결과가 표시되면 Kubernetes 설명서 에 따라 클러스터에서 승인 제어를 활성화하십시오 .

네트워크 요구 사항

Kubernetes가 MutatingAdmissionWebhook 과 통신하려면 포트 443의 HTTPS 트래픽이 클러스터의 다른 모든 노드에 있는 포드로 나가는 마스터 노드(또는 클러스터 설정 방식에 따라 API 서버 컨테이너)가 허용되어야 합니다. .

인프라 설정 방식(온프레미스, AWS, Google Cloud 등)에 따라 특정 구성이 필요할 수 있습니다.

APM 에이전트 호환성

다음 New Relic 에이전트는 Kubernetes 메타데이터를 수집합니다.

메타데이터 주입 설정

Helm을 사용하여 통합을 설치할때 메타데이터 주입이 포함됩니다. nri-bundle 차트를 구성할 때 메타데이터를 삽입하는 웹후크가 활성화되어 있는지 확인하십시오.

nri-metadata-injection:
enabled: true

필요한 환경 변수를 선택할 수 있도록 웹후크가 배포된 후 애플리케이션 포드를 다시 시작해야 합니다.

기본적으로 APM 에이전트를 포함하여 생성하는 모든 포드에는 올바른 환경 변수가 설정되어 있으며 메타데이터 주입이 전체 클러스터에 적용됩니다. 환경 변수가 설정되었는지 확인하려면 실행 중인 모든 컨테이너를 중지하고 새 인스턴스를 시작해야 합니다( 메타데이터 삽입 확인 참조).

이 기본 구성은 또한 Kubernetes 인증서 API 를 사용하여 주입에 필요한 인증서를 자동으로 관리합니다. 필요한 경우 메타데이터 주입을 클러스터의 특정 네임스페이스로 제한하거나 인증서를 자체 관리할 수 있습니다.

사용자 정의 구성

주입 대상 네임스페이스 제한

레이블을 사용하여 특정 네임스페이스에만 메타데이터 주입을 제한할 수 있습니다.

이 기능을 활성화하려면 values-newrelic.yaml 파일에 다음을 추가하세요.

nri-metadata-injection:
injectOnlyLabeledNamespaces: true

이 옵션을 사용하면 newrelic-metadata-injection 레이블이 enabled 로 설정된 네임스페이스에만 삽입이 적용됩니다.

bash
$
kubectl label namespace YOUR_NAMESPACE newrelic-metadata-injection=enabled

cert-manager를 사용하여 인증서 생성

기본적으로 차트는 kube-webhook-certgen 을 사용하여 웹훅을 실행하는 데 필요한 인증서를 자동으로 생성합니다.

그러나 cert-manager 가 설치되어 있는 경우 cert-manager를 대신 사용하도록 차트를 구성할 수 있으므로 배포 프로세스를 크게 단순화할 수 있습니다.

nri-metadata-injection:
certManager:
enabled: true

사용자 지정 인증서 관리

웹훅 인증서를 수동으로 관리하는 것은 고급 사용자에게만 권장됩니다. New Relic 지원 팀은 이 구성 문제를 해결하는 데 도움을 주지 못할 수 있습니다.

사용자 정의 인증서를 사용하려면 Helm을 사용하여 설치할 때 인증서 자동 설치를 비활성화해야 합니다.

인증서 설치를 비활성화하려면 다음과 같이 nri-bundle Helm values.yaml 을 수정합니다.

nri-metadata-injection:
customTLSCertificate: true

이제 사용자 지정 인증서 관리 옵션을 진행할 수 있습니다.

PEM 형식으로 인코딩된 인증서, 서버 키 및 인증 기관(CA) 번들이 필요합니다.

  • 표준 인증서 형식(X.509)이 있는 경우 openssl 을 설치하고 다음을 실행합니다.
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
  • 인증서/키 쌍이 다른 형식인 경우 Digicert 지식 기반 에서 추가 도움말을 참조하세요.

서명된 인증서/키 쌍으로 TLS 암호를 만들고 다음 명령을 사용하여 CA로 변경하는 웹훅 구성을 패치합니다.

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}'}]"

중요

Kubernetes에서 서명한 인증서의 만료 기간은 1년입니다. 자세한 내용 은 GitHub의 Kubernetes 소스 코드를 참조하세요.

메타데이터 주입 검증

웹훅(메타데이터 주입 담당)이 올바르게 설치되었는지 확인하려면 새 포드를 배포하고 New Relic 환경 변수를 확인하세요.

  1. 다음을 실행하여 더미 nginx 포드를 생성합니다.
bash
$
kubectl run test-nginx --image nginx -n newrelic
  1. New Relic 환경 변수가 주입되었는지 확인하십시오.
bash
$
kubectl exec -n newrelic test-nginx -- env | grep NEW_RELIC_METADATA_KUBERNETES

예상되는 출력은 다음과 같습니다.

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

메타데이터 주입 비활성화

메타데이터 삽입을 비활성화/제거하려면 values-newrelic.yaml 파일을 다음과 같이 변경합니다.

webhook:
enabled: false

그리고 설치 명령 을 다시 실행하십시오.

문제점 해결

필요에 따라 다음 문제 해결 팁을 따르십시오.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.