EKS FargateにNew Relic Kubernetes Integrationを連携する方法

前提

New RelicのAWS Integration(API Polling方式)はnewrelic_cloud_aws_integrationsにeks ブロックが存在せず、EKSのノード/Pod/クラスタメトリクスが取得できない。これを補うため、New Relic 公式のKubernetes Integrationを利用する。

New Relic Kubernetes Integrationは通常DaemonSet(各ノードに1つエージェントを配置)で動く。しかし対象クラスターは EC2ノードグループを持たず、Fargateのみで構成されており、Fargateの仕組み上DaemonSetはスケジュールされない。

アーキテクチャ

newrelic-infra-operatorがMutatingWebhookConfigurationを通じて、対象PodにNew Relicの監視サイドカーコンテナを自動注入する方式が望ましい。

Pod作成イベント → MutatingWebhook → newrelic-infra-operator が判定 → 該当すればサイドカー注入

Fargateクラスター全体に対してWebhookが有効だと、global.fargate=true かつ、policies未指定の場合はクラスタ内の全Fargate Podが対象になってしまうため、namespaceSelectorで明示的にオプトインする方式が良い。

対応方法

Terraform

  • newrelic_api_access_key リソースでIngest/LICENSEキーをTerraformから直接発行
  • SSM Parameter Storeに格納
  • newrelic namespace用のFargate Profileを新規追加
  • External Secrets Operator用のIRSAロールを追加

Kubernetes(ArgoCD)

  • SecretStore + ExternalSecret でSSMからLicense Keyをnewrelic namespaceに同期
  • nri-bundle Helmチャートをnewrelic-infra-operator有効・Fargateモードで導入

・argocd_base.yaml

・newrelic-secret.yaml

newrelic-bundle.yaml

  •  確認

Was this helpful?

0 / 0

コメントを残す