

# CloudWatch での Container Insights の前提条件の検証
<a name="Container-Insights-prerequisites"></a>

Amazon EKS または Kubernetes で Container Insights をインストールする前に、以下を確認してください。これらの前提条件は、CloudWatch エージェントまたは AWS Distro for OpenTelemetry を使用して Amazon EKS クラスターに Container Insights をセットアップする場合に適用されます。
+ Amazon EKS および Kubernetes に Container Insights がサポートされているいずれかのリージョンに、ノードがアタッチされて機能している Amazon EKS または Kubernetes クラスターがある。サポートされているリージョンのリストについては、「[Container Insights](ContainerInsights.md)」を参照してください。
+ `kubectl` がインストールされ、実行されている。詳細については、*Amazon EKS ユーザーガイド*の「[`kubectl` のインストール](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)」を参照してください。
+ Amazon EKS を使用する代わりに、AWS で実行されている Kubernetes を使用している場合は、以下の前提条件も必要になります。
  + Kubernetes クラスターで、ロールベースのアクセス制御 (RBAC) が有効になっている。詳細については、Kubernetes Reference の「[RBAC 認可の使用](https://kubernetes.io/docs/reference/access-authn-authz/rbac/)」を参照してください。
  + kubelet で Webhook 認可モードが有効になっている。詳細については、Kubernetes Reference の「[Kubelet の認証/認可](https://kubernetes.io/docs/reference/access-authn-authz/kubelet-authn-authz/)」を参照してください。

また、Amazon EKS ワーカーノードが CloudWatch にメトリクスとログを送信できるようにするには、IAM にもアクセス許可を付与する必要があります。次の 2 通りの方法があります。
+ ワーカーノードの IAM ロールにポリシーをアタッチします。これは、Amazon EKS クラスターと他の Kubernetes クラスターの両方に有効です。
+ クラスターでサービスアカウントの IAM ロールを使用し、このロールにポリシーをアタッチします。これは Amazon EKS クラスターでのみ機能します。

最初のオプションはノード全体へのアクセス許可を CloudWatch に付与しますが、サービスアカウントの IAM ロールを使用した場合は、該当する daemonset ポッドへのアクセス権のみを CloudWatch に付与します。

**ワーカーノードの IAM ロールにポリシーをアタッチする**

ワーカーノードの IAM ロールにポリシーをアタッチするには、次の手順に従います。これは、Amazon EKS クラスターと、Amazon EKS 外の Kubernetes クラスターの両方で機能します。

**ワーカーノードの IAM ロールに必要なポリシーをアタッチするには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ワーカーノードのインスタンスの 1 つを選択し、説明で IAM ロールを選択します。

1. IAM ロールページで、[**Attach policies (ポリシーをアタッチします)**] を選択します。

1. ポリシーのリストで、[**CloudWatchAgentServerPolicy**] の横にあるチェックボックスを選択します。必要に応じて、検索ボックスを使用してポリシーを見つけます。

1. [**ポリシーのアタッチ**] を選択します。

Amazon EKS 外で Kubernetes クラスターを実行している場合、まだワーカーノードにアタッチされた IAM ロールがない可能性があります。アタッチしていない場合は、最初に IAM ロールをインスタンスにアタッチし、前の手順で説明しているようにポリシーを追加する必要があります。インスタンスへのロールのアタッチの詳細については、「Amazon EC2 ユーザーガイド」の「[インスタンスへの IAM ロールのアタッチ](https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)」を参照してください。

Amazon EKS 外で Kubernetes クラスターを実行しており、メトリクスで EBS ボリューム ID を収集する場合は、インスタンスにアタッチされた IAM ロールに別のポリシーを追加する必要があります。以下をインラインポリシーとして追加します。詳細については、*IAM ユーザーガイド*の「[IAM ID アクセス許可の追加と削除](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html)」を参照してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "ec2:DescribeVolumes"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}
```

------

**IAM サービスアカウントのロールを使用する**

この方法は Amazon EKS クラスターでのみ機能します。

**IAM サービスアカウントロールを使用して CloudWatch にアクセス許可を付与するには**

1. クラスターでサービスアカウントの IAM ロールを有効にします (まだ有効にしていない場合)。詳細については、「[クラスターでサービスアカウントの IAM ロールを有効にする](https://docs.aws.amazon.com/eks/latest/userguide/enable-iam-roles-for-service-accounts.html)」を参照してください。

1. まだ設定していない場合は、サービスアカウントが IAM ロールを使用するように設定します。詳細については、「[IAM ロールを引き受けるための Kubernetes サービスアカウントの設定](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html)」を参照してください。

   ロールの作成時に、ロール用に作成するポリシーに加えて、**CloudWatchAgentServerPolicy** IAM ポリシーをロールにアタッチします。また、このロールにリンクされている関連する Kubernetes サービスアカウントは、次のステップで CloudWatch と Fluent Bit のデーモンセットがデプロイされる `amazon-cloudwatch` 名前空間に作成する必要があります

1. IAM ロールをクラスターのサービスアカウントに関連付けます (まだ関連付けていない場合)。詳細については、「[IAM ロールを引き受けるための Kubernetes サービスアカウントの設定](https://docs.aws.amazon.com/eks/latest/userguide/associate-service-account-role.html)」を参照してください。