セルフマネージド Kubernetes インスタンス用の エージェントをインストールする
このセクションの手順に従って、セルフマネージド Kubernetes クラスターにワークロード用の Network Flow Monitor エージェントをインストールします。ステップを完了すると、Network Flow Monitor エージェントポッドはすべてのセルフマネージド Kubernetes クラスターノードで実行されます。
Amazon Elastic Kubernetes Service (Amazon EKS) を使用する場合、実行するインストール手順については、次のセクションの「EKS AWS Network Flow Monitor Agent アドオンをインストールする」を参照してください。
[開始する前に]
インストールプロセスを開始する前に、このセクションのステップに従って、適切な Kubernetes クラスターにエージェントを正常にインストールするように環境が設定されていることを確認します。
- お使いの Kubernetes のバージョンが対応していることを確認します。
Network Flow Monitor エージェントのインストールには、Kubernetes バージョン 1.25 またはこれ以降のバージョンが必要です。
- 必要なツールがインストールされていることを確認する
このインストールプロセスで使用するスクリプトでは、次のツールをインストールする必要があります。ツールがまだインストールされていない場合は、提供されているリンクで詳細を確認してください。
AWS Command Line Interface (CLI)。詳細については、AWS Command Line Interface リファレンスガイドの「AWS Command Line Interface の最新バージョンをインストールまたは更新」を参照してください。
Helm パッケージマネージャー。詳細については、Helm ウェブサイトの「Helm のインストール
」を参照してください。 kubectl
コマンドラインツール 詳細については、Kubernetes ウェブサイトの「Kubernetes のインストール」を参照してください。 make
Linux コマンドの依存関係。詳細については、次のブログ記事「Linux コマンドを作成するための入門: インストールと使用」を参照してください。例として、以下のいずれかを実行します。 Ubuntu などの Debian ベースのディストリビューションの場合は、コマンド
sudo apt-get install make
を使用します。CentOS などの RPM ベースのディストリビューションの場合は、コマンド
sudo yum install make
を使用します。
- KubeConfig 環境変数が有効で正しく設定されていることを確認します。
Network Flow Monitor エージェントのインストールでは、Helm パッケージマネージャーツールを使用します。このツールでは、kubeconfig 変数
$HELM_KUBECONTEXT
を使用して、使用するターゲット Kubernetes クラスターを決定します。また、Helm がインストールスクリプトを実行すると、デフォルトで標準~/.kube/config
ファイルを参照することに注意してください。設定の環境変数を変更して、別の設定ファイルを使用するか ($KUBECONFIG
を更新することによる)、連携するターゲットクラスターを定義できます ($HELM_KUBECONTEXT
を更新することによる)。- Network Flow Monitor Kubernetes 名前空間を作成する
Network Flow Monitor エージェントの Kubernetes アプリケーションは、そのリソースを特定の名前空間にインストールします。インストールを成功させるには、名前空間が存在している必要があります。必要な名前空間を確実に設定するには、次のいずれかを実行します。
開始する前に、デフォルトの名前空間
amazon-network-flow-monitor
を作成します。別の名前空間を作成し、インストールを実行してターゲットを作成するときに
$NAMESPACE
環境変数で定義します。
Helm チャートをダウンロードしてエージェントをインストールする
次のコマンドを使用して、AWS パブリックリポジトリから Network Flow Monitor エージェント Helm チャートをダウンロードできます。まず、GitHub アカウントで確実に認証してください。
git clone https://github.com/aws/network-flow-monitor-agent.git
./charts/amazon-network-flow-monitor-agent
ディレクトリでは、Network Flow Monitor エージェントの Helm チャートとエージェントのインストールに使用するインストールの make ターゲットを含む Makefile があります。Network Flow Monitor のエージェントをインストールするには、Makefile ターゲット helm/install/customer
を使用します。
インストールをカスタマイズするには、たとえば、次の操作を行います。
# Overwrite the kubeconfig files to use KUBECONFIG=<MY_KUBECONFIG_ABS_PATH> make helm/install/customer # Overwrite the Kubernetes namespace to use NAMESPACE=<MY_K8S_NAMESPACE> make helm/install/customer
Network Flow Monitor エージェントの Kubernetes アプリケーションポッドが正常に作成され、デプロイされたことを確認するには、それらの状態が Running
であることを確認します。コマンド kubectl get pods -o wide -A | grep amazon-network-flow-monitor
を実行すれば、エージェントのステータスを確認できます。
エージェントがメトリクスを配信するためのアクセス許可を設定する
Network Flow Monitor のエージェントをインストールしたら、エージェントが Network Flow Monitor の取り込み API にネットワークメトリクスを送信できるようにする必要があります。Network Flow Monitor のエージェントは、インスタンスごとに収集したネットワークフローメトリクスを配信できるように、Network Flow Monitor の取り込み API にアクセスするための許可を持っている必要があります。このアクセス許可は、サービスアカウント (IRSA) の IAM ロールを実装することによって付与されます。
エージェントがネットワークメトリクスを Network Flow Monitor に配信できるようにするには、このセクションのステップに従います。
サービスアカウントの IAM ロールを実行
サービスアカウントの IAM ロールには、Amazon EC2 インスタンスプロファイルから Amazon EC2 インスタンスに認証情報を提供する場合と同じような方法で、アプリケーションの認証情報を管理する機能があります。IRSA の実装は、Network Flow Monitor エージェントが Network Flow Monitor 取り込み API に正常にアクセスするために必要なすべてのアクセス許可を付与するために推奨される方法です。詳細については、「Amazon EKS ユーザーガイド」の「サービスアカウントの IAM ロール」を参照してください。
Network Flow Monitor エージェントに IRSA を設定するときは、次の情報を使用します。
[ServiceAccount:] IAM ロールの信頼ポリシーを定義するときに、
ServiceAccount
にaws-network-flow-monitor-agent-service-account
を指定します。[名前空間:]
namespace
には、amazon-network-flow-monitor
を指定します。[一時的な認証情報のデプロイ:] Network Flow Monitor エージェントポッドをデプロイした後にアクセス許可を設定する場合、IAM ロールで
ServiceAccount
を更新すると、Kubernetes は IAM ロールの認証情報をデプロイしません。Network Flow Monitor エージェントが、指定した IAM ロールの認証情報を確実に取得するには、DaemonSet
の再起動をロールアウトする必要があります。例えば、以下のようなコマンドを使用します。kubectl rollout restart daemonset -n amazon-network-flow-monitor aws-network-flow-monitor-agent
Network Flow Monitor エージェントが Network Flow Monitor 取り込み API に正常にアクセスしていることを確認する
Network Flow Monitor エージェントポッドの HTTP 200 ログを使用して、エージェントの設定が正しく動作していることを確認できます。まず、Network Flow Monitor エージェントポッドを検索してから、ログファイルを検索して、成功した HTTP 200 リクエストを見つけます。例えば、次のオペレーションを実行できます。
Network Flow Monitor のエージェントポッド名を見つけます。例えば、次のコマンドを使用できます。
RANDOM_AGENT_POD_NAME=$(kubectl get pods -o wide -A | grep amazon-network-flow-monitor | grep Running | head -n 1 | tr -s ' ' | cut -d " " -f 2)
指定したポッド名の HTTP ログをすべてグレップします。NAMESPACE を変更した場合は、新しいものを使用してください。
NAMESPACE=amazon-network-flow-monitor kubectl logs $
RANDOM_AGENT_POD_NAME
-\-namespace ${NAMESPACE} | grep HTTP
アクセスが正常に許可されると、次のようなログエントリが表示されます。
... {"level":"INFO","message":"HTTP request complete","status":200,"target":"amzn_nefmon::reports::publisher_endpoint","timestamp":1737027525679} {"level":"INFO","message":"HTTP request complete","status":200,"target":"amzn_nefmon::reports::publisher_endpoint","timestamp":1737027552827}
Network Flow Monitor エージェントは、Network Flow Monitor 取り込み API を呼び出して、30 秒ごとにネットワークフローレポートを発行することに注意してください。