버전 3부터 New Relic Kubernetes 통합은 보다 모듈화되고 구성 가능한 것을 목표로 하는 아키텍처 를 특징으로 하여 배포 방법을 선택할 수 있는 더 많은 권한을 제공하고 더 많은 환경과 호환되도록 합니다.
Kubernetes 통합 버전 3에서 보고된 데이터는 버전 2 이후로 변경되지 않았습니다. 버전 3의 경우 구성 가능성, 안정성 및 사용자 경험에 중점을 두었습니다. 여기에서 통합에 대한 최신 릴리스 노트를 확인하세요.
중요
Kubernetes 통합 버전 3(appVersion
)은 nri-bundle
차트 version
4에 포함되어 있습니다.
마이그레이션 가이드
이전 버전에서 최대한 쉽게 마이그레이션할 수 있도록 이전 newrelic-infrastructure
차트에서 구성 가능한 옵션 대부분을 새로운 옵션으로 변환하는 호환성 레이어를 개발했습니다. 이 호환성 레이어는 일시적이며 향후 제거될 예정입니다. 이 가이드를 주의 깊게 읽고 사람의 감독하에 구성을 마이그레이션하는 것이 좋습니다. 여기에서 업데이트된 newrelic-infrastructure
차트에 대한 자세한 내용을 읽을 수 있습니다.
KSM(Kube State Metrics) 구성
팁
KSM 모니터링은 대부분의 구성에서 기본적으로 작동합니다. 대부분의 사용자는 이 구성을 변경할 필요가 없습니다.
disableKubeStateMetrics
ksm.enabled
으로 대체되었습니다. 기본값은 여전히 동일합니다(KSM 스크래핑 활성화됨).kubeStateMetricsScheme
,kubeStateMetricsPort
,kubeStateMetricsUrl
,kubeStateMetricsPodLabel
및kubeStateMetricsNamespace
는 보다 포괄적이고 유연한ksm.config
로 대체되었습니다.- KSM v2+는 기본적으로 라벨 지표를 비활성화합니다. 여기 쿠버네티스 클러스터에 설명된
metric-labels-allowlist
옵션을 사용하여 퀴, 목표 라벨 지표를 모니터로 활성화할 수 있습니다.
ksm.config
객체의 구조는 다음과 같습니다.
ksm: config: # When autodiscovering KSM, force the following scheme. By default, `http` is used. scheme: "http" # Label selector to find kube-state-metrics endpoints. Defaults to `app.kubernetes.io/name=kube-state-metrics`. selector: "app.kubernetes.io/name=kube-state-metrics" # Restrict KSM discovery to this particular namespace. Defaults to all namespaces. namespace: "" # When autodiscovering, only consider endpoints that use this port. By default, all ports from the discovered `endpoint` are probed. # port: 8080 # Override autodiscovery mechanism completely and specify the KSM url directly instead # staticUrl: "http://test.io:8080/metrics"
제어 평면 구성
제어 평면 구성이 크게 변경되었습니다. 이전에 제어 플레인 모니터링을 활성화한 경우 제어 플레인 모니터링 구성 설명서를 살펴보는 것이 좋습니다.
다음 옵션은 위에 링크된 섹션에서 다루는 보다 포괄적인 구성으로 대체되었습니다.
apiServerSecurePort
etcdTlsSecretName
etcdTlsSecretNamespace
controllerManagerEndpointUrl
,etcdEndpointUrl
,apiServerEndpointUrl
및schedulerEndpointUrl
에이전트 구성
이전에 config
에 지정된 에이전트 구성 파일이 common.agentConfig
로 이동되었습니다. 파일 형식은 변경되지 않았으며 구성할 수 있는 전체 옵션 범위는 여기에서 확인할 수 있습니다.
다음 에이전트 옵션은 이전에 values.yml
파일의 루트에서 "별칭"이었으며 no longer available 입니다.
logFile
common.agentConfig.log_file
으로 대체되었습니다.eventQueueDepth
common.agentConfig.event_queue_depth
으로 대체되었습니다.customAttributes
형식이 yaml 객체로 변경되었습니다. 이전 형식인 수동으로 JSON으로 인코딩된 문자열(예:{"team": "devops"}
)은 더 이상 사용되지 않습니다.- 이전에는
customAttributes
에 제거할 경우 원치 않는 결과가 발생할 수 있는 기본clusterName
항목이 있었습니다. 더 이상 그렇지 않습니다. 이제 사용자는customAttributes
전체를 안전하게 재정의할 수 있습니다. discoveryCacheTTL
이제 캐시가 내장된 Kubernetes 정보를 사용하여 검색이 수행되므로 완전히 제거되었습니다.
통합 구성
통합은 이전에 배열 형식을 사용하여 integrations_config
아래에 구성되었습니다.
integrations_config: - name: nri-redis.yaml data: discovery: # ... integrations: # ...
메커니즘은 동일하게 유지되지만 보다 사용자 친화적으로 형식을 변경했습니다.
integrations: nri-redis-sampleapp: discovery: # ... integrations: # ...
또한 이제 검색 명령에서 --port
및 --tls
플래그가 필수입니다. 과거에는 다음이 작동했습니다.
integrations: nri-redis-sampleapp: discovery: command: exec: /var/db/newrelic-infra/nri-discovery-kubernetes
v3부터 --port
및 --tls
을 지정해야 합니다.
integrations: nri-redis-sampleapp: discovery: command: exec: /var/db/newrelic-infra/nri-discovery-kubernetes --tls --port 10250
이 변경이 필요한 이유는 v2 이하에서는 nrk8s-kubelet
구성 요소(또는 이에 상응하는 구성 요소)가 hostNetwork: true
로 실행되어 nri-discovery-kubernetes
localhost
및 일반 http를 사용하여 kubelet에 연결할 수 있기 때문입니다. 보안상의 이유로 더 이상 그렇지 않습니다. 따라서 지금부터 두 플래그를 모두 지정해야 합니다.
Kubernetes에서 온호스트 통합을 구성하는 방법에 대한 자세한 내용은 Kubernetes 설명서의 모니터 서비스를 확인하세요.
기타 차트 값
통합 구성과 관련이 없지만 Helm 차트에 대한 다음 기타 옵션도 변경되었습니다.
runAsUser
포드에 직접 템플릿화되고 더 많은 구성이 가능한securityContext
으로 대체되었습니다.resources
이제 세 가지 다른 워크로드를 배포하므로 제거되었습니다. 각각에 대한 리소스는 다음에서 개별적으로 구성할 수 있습니다.ksm.resources
kubelet.resources
controlPlane.resources
tolerations
3개로 분할되어 이전 항목은 더 이상 유효하지 않습니다. 세 가지 모두 기본적으로NoSchedule
및NoExecute
의 모든 값을 허용합니다.ksm.tolerations
kubelet.tolerations
controlPlane.tolerations
image
모든 하위 키는 현재 배포된 세 개의 이미지 각각에 대한 개별 섹션으로 대체되었습니다.images.forwarder.*
인프라 에이전트 전달자를 구성합니다.images.agent.*
인프라-에이전트 및 온-호스트 통합을 번들하는 이미지를 구성합니다.images.integration.*
k8s 데이터 스크래핑을 담당하는 이미지를 구성합니다.