CloudWatch での Container Insights の前提条件の検証
Amazon EKS または Kubernetes で Container Insights をインストールする前に、以下を確認してください。これらの前提条件は、CloudWatch エージェントまたは AWS Distro for OpenTelemetry を使用して Amazon EKS クラスターに Container Insights をセットアップする場合に適用されます。
-
Amazon EKS および Kubernetes に Container Insights がサポートされているいずれかのリージョンに、ノードがアタッチされて機能している Amazon EKS または Kubernetes クラスターがある。サポートされているリージョンのリストについては、「Container Insights」を参照してください。
-
kubectl
がインストールされ、実行されている。詳細については、Amazon EKS ユーザーガイドの「kubectl
のインストール」を参照してください。 -
Amazon EKS を使用する代わりに、AWS で実行されている Kubernetes を使用している場合は、以下の前提条件も必要になります。
-
Kubernetes クラスターで、ロールベースのアクセス制御 (RBAC) が有効になっている。詳細については、Kubernetes Reference の RBAC 認証の使用
を参照してください。 -
kubelet で Webhook 認証モードが有効になっている。詳細については、Kubernetes Reference の Kubelet の認証/認可
を参照してください。
-
また、Amazon EKS ワーカーノードが CloudWatch にメトリクスとログを送信できるようにするには、IAM にもアクセス許可を付与する必要があります。次の 2 通りの方法があります。
-
ワーカーノードの IAM ロールにポリシーをアタッチします。これは、Amazon EKS クラスターと他の Kubernetes クラスターの両方に有効です。
-
クラスターでサービスアカウントの IAM ロールを使用し、このロールにポリシーをアタッチします。これは Amazon EKS クラスターでのみ機能します。
最初のオプションはノード全体へのアクセス許可を CloudWatch に付与しますが、サービスアカウントの IAM ロールを使用した場合は、該当する daemonset ポッドへのアクセス権のみを CloudWatch に付与します。
ワーカーノードの IAM ロールにポリシーをアタッチする
ワーカーノードの IAM ロールにポリシーをアタッチするには、次の手順に従います。これは、Amazon EKS クラスターと、Amazon EKS 外の Kubernetes クラスターの両方で機能します。
ワーカーノードの IAM ロールに必要なポリシーをアタッチするには
Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/
) を開きます。 -
ワーカーノードのインスタンスの 1 つを選択し、説明で IAM ロールを選択します。
-
IAM ロールページで、[Attach policies (ポリシーをアタッチします)] を選択します。
-
ポリシーのリストで、[CloudWatchAgentServerPolicy] の横にあるチェックボックスを選択します。必要に応じて、検索ボックスを使用してポリシーを見つけます。
-
[ポリシーのアタッチ] を選択します。
Amazon EKS 外で Kubernetes クラスターを実行している場合、まだワーカーノードにアタッチされた IAM ロールがない可能性があります。アタッチしていない場合は、最初に IAM ロールをインスタンスにアタッチし、前の手順で説明しているようにポリシーを追加する必要があります。インスタンスへのロールのアタッチの詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスへの IAM ロールのアタッチ」を参照してください。
Amazon EKS 外で Kubernetes クラスターを実行しており、メトリクスで EBS ボリューム ID を収集する場合は、インスタンスにアタッチされた IAM ロールに別のポリシーを追加する必要があります。以下をインラインポリシーとして追加します。詳細については、IAM ユーザーガイドの「IAM ID アクセス許可の追加と削除」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Action": [ "ec2:DescribeVolumes" ], "Resource": "*", "Effect": "Allow" } ] }
IAM サービスアカウントのロールを使用する
この方法は Amazon EKS クラスターでのみ機能します。
IAM サービスアカウントロールを使用して CloudWatch にアクセス許可を付与するには
-
クラスターでサービスアカウントの IAM ロールを有効にします (まだ有効にしていない場合)。詳細については、「クラスターでサービスアカウントの IAM ロールを有効にする」を参照してください。
-
まだ設定していない場合は、サービスアカウントが IAM ロールを使用するように設定します。詳細については、「IAM ロールを引き受けるための Kubernetes サービスアカウントの設定」を参照してください。
ロールの作成時に、ロール用に作成するポリシーに加えて、CloudWatchAgentServerPolicy IAM ポリシーをロールにアタッチします。また、このロールにリンクされている関連する Kubernetes サービスアカウントは、次のステップで CloudWatch と Fluent Bit のデーモンセットがデプロイされる
amazon-cloudwatch
名前空間に作成する必要があります -
IAM ロールをクラスターのサービスアカウントに関連付けます (まだ関連付けていない場合)。詳細については、「IAM ロールを引き受けるための Kubernetes サービスアカウントの設定」を参照してください。