重要
マルチアカウントルーティングには、nr-ebpf-agentHelmチャートバージョン1.5.0以降が必要です。この機能は、eBPFエージェントのKubernetesデプロイメントでのみ利用できます。
Kubernetesクラスタが複数のチームやテナントをホストしている場合、ワークロードが実行されているKubernetesのネームスペースに基づいて、テレメトリーを別のNew RelicアカウントにルーティングするようにNew Relic eBPFエージェントを構成できます。これにより、単一のeBPFエージェントのデーモンセットがクラスタ全体をカバーしながら、各チームのデータがそれぞれのアカウントに保存されるようになります。
マルチアカウントルーティングの挙動
eBPFエージェントのデーモンセットは、NAMESPACE_LICENSE_KEY_MAP環境変数として注入されるKubernetesシークレットから、ネームスペースからライセンスキーへのマップを読み取ります。このマップは2つの方法のいずれかで提供しますが、これらは相互に排他的です:
namespaceLicenseKeys— マップをvalues.yamlで直接定義します。チャートは、自動的に作成されるシークレットにそれを保存します。customSecretNamespaceLicenseKeys— 自分で作成および管理するKubernetesシークレットを指定して、ライセンスキーがvalues.yamlやソース管理に表示されないようにします。
ヒント
namespaceLicenseKeysとcustomSecretNamespaceLicenseKeysの両方を設定した場合、namespaceLicenseKeysが優先され、カスタムシークレットは無視されます。1つだけ設定してください。
特定のポッドについて、エージェントはマップ内でポッドのネームスペースを検索します:
- ネームスペースがマップ内のキーである場合、そのネームスペースからのテレメトリーは対応するアカウントにルーティングされます。
- ネームスペースがマップにない場合、テレメトリーはクラスタのグローバルな
licenseKeyまたはcustomSecretNameにフォールバックします。
マルチアカウントルーティングの設定
ライセンスキーをvalues.yamlにインラインで配置するか、個別に管理するシークレットに配置するかに応じて、以下のオプションのいずれかを選択します。
独自のアカウントにルーティングするネームスペースごとに1つのエントリを持つnamespaceLicenseKeysマップをvalues.yamlに追加します:
namespaceLicenseKeys: team-a: "NRAK-aaa..." team-b: "NRAK-bbb..."次に、変更を適用します:
$helm upgrade --install nr-ebpf-agent newrelic/nr-ebpf-agent -n newrelic --values values.yaml注意
これにより、ライセンスキーが直接values.yamlに保存されます。このファイルをソース管理にコミットする場合は、代わりにカスタムシークレットオプションを使用してください。
値がJSONエンコードされたネームスペースからライセンスキーへのマップである、正確にNAMESPACE_LICENSE_KEY_MAPという名前のデータキーを持つKubernetesシークレットを作成します。シークレットは、eBPF agentリリースと同じネームスペースに存在する必要があります。
apiVersion: v1kind: Secretmetadata: name: my-nr-namespace-keys namespace: newrelictype: OpaquestringData: NAMESPACE_LICENSE_KEY_MAP: '{"team-a":"NRAK-aaa...","team-b":"NRAK-bbb..."}'次に、values.yamlでシークレットを参照し、namespaceLicenseKeysを空のままにします:
namespaceLicenseKeys: {}customSecretNamespaceLicenseKeys: "my-nr-namespace-keys"変更を適用:
$helm upgrade --install nr-ebpf-agent newrelic/nr-ebpf-agent -n newrelic --values values.yaml重要
シークレットのデータキーは正確にNAMESPACE_LICENSE_KEY_MAPである必要があります — チャートは名前を変更しません。値は、キーと値が二重引用符で囲まれた有効なJSONである必要があります;不正な形式のマップはルーティングを完全に無効にします(エージェントはそれを空として扱います)。
知っておくべき事項
- ルーティングするワークロードのネームスペース(
team-aなど)ではなく、eBPF agentリリースと同じネームスペース(たとえば、newrelic)にカスタムシークレットを作成します。 namespaceLicenseKeysとcustomSecretNamespaceLicenseKeysの両方を設定しないでください。両方が空でない場合、インラインマップが暗黙的に優先されます。- マップにリストされていないネームスペースは、引き続きクラスタのグローバルな
licenseKeyまたはcustomSecretNameを使用します。これらの設定の詳細については、K8s設定パラメーターを参照してください。