버전 3부터 New Relic의 Kubernetes 솔루션은 모듈화 및 구성 가능성을 목표로 하는 아키텍처 를 특징으로 하여 솔루션 배포 방법을 선택할 수 있는 더 많은 권한을 제공하고 더 많은 환경과 호환되도록 합니다.
Kubernetes 통합 버전 3에서 보고한 데이터는 버전 2 이후로 변경되지 않았습니다. 버전 3의 경우 구성 가능성, 안정성 및 사용자 경험에 중점을 두었습니다.
중요
Kubernetes 통합 버전 3( appVersion
)은 nri-bundle
차트 version
4에 포함되어 있습니다.
마이그레이션 가이드
이전 버전에서 가능한 한 쉽게 마이그레이션할 수 있도록 이전 newrelic-infrastructure 차트에서 지정할 수 있는 대부분의 옵션을 새 대응 항목으로 변환하는 호환성 계층을 개발했습니다. 이 호환성 계층은 일시적이며 향후 제거될 예정입니다. 따라서 이 가이드를 주의 깊게 읽고 사람의 감독 하에 구성을 마이그레이션하는 것이 좋습니다.
KSM(Kube State Metrics) 구성
팁
KSM 모니터링은 대부분의 구성에서 기본적으로 작동하므로 대부분의 사용자는 이 구성을 변경할 필요가 없습니다.
disableKubeStateMetrics
ksm.enabled
으로 대체되었습니다. 기본값은 여전히 동일합니다(KSM 스크래핑 활성화됨).kubeStateMetricsScheme
,kubeStateMetricsPort
,kubeStateMetricsUrl
,kubeStateMetricsPodLabel
및kubeStateMetricsNamespace
는 보다 포괄적이고 유연한ksm.config
로 대체되었습니다.- KSM v2+는 기본적으로 레이블 및 주석 메트릭을 비활성화합니다. Kubernetes 클러스터에서 여기 에 설명된
metricLabelsAllowlist
및metricAnnotationsAllowList
옵션을 사용하여 대상 라벨 및 주석 측정항목을 모니터링하도록 설정할 수 있습니다.
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
파일의 루트에서 "별칭 지정"되었으며 더 이상 사용할 수 없습니다.
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
은(는) 세 개로 분할되었으며 이전 항목은 더 이상 유효하지 않습니다. ksm.tolerations
kubelet.tolerations
controlPlane.tolerations
- 세 가지 모두 기본값은
NoSchedule
에 대한 모든 값을 허용하고NoExecute
image
모든 하위 키는 현재 배포된 세 개의 이미지 각각에 대한 개별 섹션으로 대체되었습니다.images.forwarder.*
인프라 에이전트 전달자를 구성합니다.images.agent.*
인프라-에이전트 및 온-호스트 통합을 번들하는 이미지를 구성합니다.images.integration.*
k8s 데이터 스크래핑을 담당하는 이미지를 구성합니다.
v2에서 업그레이드
Kubernetes values-newrelic.yaml
버전 2( nri-bundle 차트 버전 3.x에 포함됨)에서 업그레이드하려면 원하는 및 구성. 예를 들어 다음과 같은 명령을 사용하여 이전에 CLI에서 차트를 직접 설치한 경우:
$helm install newrelic/nri-bundle \>--set global.licenseKey=<New Relic License key> \>--set global.cluster=<Cluster name> \>--set infrastructure.enabled=true \>--set prometheus.enabled=true \>--set webhook.enabled=true \>--set ksm.enabled=true \>--set kubeEvents.enabled=true \>--set logging.enabled=true
제공된 --set
인수를 사용하여 다음과 같이 yaml 파일에 넣을 수 있습니다.
# values-newrelic.yamlglobal: licenseKey: <New Relic License key> cluster: <Cluster name>infrastructure: enabled: trueprometheus: enabled: truewebhook: enabled: trueksm: enabled: truekubeEvents: enabled: truelogging: enabled: true
이 작업을 수행하고 위의 섹션 에 따라 변경했을 수 있는 다른 설정을 적용한 후 다음 명령을 실행하여 업그레이드할 수 있습니다.
$helm upgrade newrelic newrelic/nri-bundle \>--namespace newrelic --create-namespace \>-f values-newrelic.yaml
중요
--reuse-values
플래그는 v2에서 v3으로 업그레이드하는 데 지원되지 않습니다.