バージョン 3 以降、New Relic の Kubernetes ソリューションは、よりモジュラーで構成可能であることを目的としたアーキテクチャを特徴としており、ソリューションのデプロイ方法を選択する力を強化し、より多くの環境と互換性を持たせることができます。
Kubernetes Integrationバージョン3によって報告されたデータは、バージョン2以降変更されていません。バージョン3では、構成可能性、安定性、ユーザーエクスペリエンスに重点を置いています。
重要
Kubernetes統合バージョン3( appVersion
)は、 nri-bundle
チャートversion
4に含まれています。
マイグレーションガイド
以前のバージョンからの移行をできるだけ簡単にするために、古いnewrelic-infrastructureチャートで指定可能だったオプションのほとんどを、新しいものに変換する互換性レイヤーを開発しました。この互換性レイヤーは一時的なもので、将来的には削除される予定ですので、このガイドをよく読んで、人の目を気にしながら設定を移行することをお勧めします。
KSMの構成
ヒント
KSMのモニタリングは、ほとんどの構成ですぐに機能するので、ほとんどのユーザーはこの設定を変更する必要はありません。
disableKubeStateMetrics
ksm.enabled
に置き換えられました。デフォルトは同じです(KSMスクレイピングが有効)。kubeStateMetricsScheme
、kubeStateMetricsPort
、kubeStateMetricsUrl
、kubeStateMetricsPodLabel
、およびkubeStateMetricsNamespace
は、より包括的で柔軟なksm.config
に置き換えられました。
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"
コントロールプレーンの構成
コントロールプレーンの設定が大幅に変更されました。これまでコントロールプレーン監視を有効にしていた方は、 Configure control plane monitoring の専用ページをご覧になることをお勧めします。
以下のオプションは、上記のリンク先のセクションで説明されている、より包括的な設定に置き換えられています。
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におけるオンホスト統合の設定方法の詳細については、 Monitor services in Kubernetes ページをご確認ください。
その他のチャート値
統合設定とは関係ありませんが、ヘルムチャートの以下の雑多なオプションも変更されています。
runAsUser
securityContext
に置き換えられました。これは、ポッドに直接テンプレート化され、より構成可能です。resources
現在、3つの異なるワークロードを展開しているため、削除されました。それぞれのリソースは、以下で個別に構成できます。ksm.resources
kubelet.resources
controlPlane.resources
- 同様に、
tolerations
は3つに分割され、前の1つは無効になります。 ksm.tolerations
kubelet.tolerations
controlPlane.tolerations
- 3つすべてのデフォルトで、
NoSchedule
およびNoExecute
image
そして、そのすべてのサブキーは、現在デプロイされている3つのイメージのそれぞれについて個別のセクションに置き換えられています。images.forwarder.*
インフラストラクチャエージェントフォワーダを設定します。images.agent.*
インフラストラクチャエージェントとオンホストの統合をバンドルするイメージを構成します。images.integration.*
k8sデータのスクレイピングを担当するイメージを構成します。
v2からのアップグレード
Kubernetes 統合バージョン 2 ( nri-bundle チャート バージョン 3.x に含まれています) からアップグレードするには、目的のvalues-newrelic.yaml
ファイルを作成することを強くお勧めします と構成。 たとえば、次のようなコマンドを使用して、以前に 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へのアップグレードではサポートされていません。