CloudFormation または Helm を使用して Enhanced Container Insights (Classic) をデプロイする
CloudFormation テンプレートまたは Helm チャートを使用して、Enhanced Container Insights (Classic) を Infrastructure as Code としてデプロイできます。このアプローチでは、v6.2.0 より前のバージョンで amazon-cloudwatch-observability アドオンをインストールして Classic メトリクスパイプラインを有効にします。IaC パイプラインを介してクラスターを管理し、バージョン管理された反復可能なデプロイが必要な場合は、このアプローチを選択します。
推奨事項
新しいデプロイでは、OTel ベースのパイプラインでアドオンバージョン 6.2.0 以降を使用する OTel Container Insights (推奨) をお勧めします。
前提条件
CloudFormation または Helm を使用して Enhanced Container Insights (Classic) をデプロイする前に、次の要件を満たしていることを確認します。
-
Kubernetes バージョン 1.25 以降を実行している既存の Amazon EKS クラスター
-
AWS CLI バージョン 2.12.0 以降
-
kubectlがターゲットクラスターと通信できるように設定されていること -
CloudFormation スタック作成の IAM アクセス許可 (CloudFormation メソッドの場合)
-
Helm v3.8 以降 (Helm メソッドの場合)
-
クラスターから CloudWatch エンドポイントへのアウトバウンドインターネットアクセス
CloudFormation でデプロイする
CloudFormation テンプレートを使用して、Classic 設定で CloudWatch Observability アドオンをデプロイします。このテンプレートは AWS::EKS::Addon リソースを使用して、v6.2.0 より前のバージョンでアドオンをインストールします。
CloudFormation テンプレート
次のテンプレートは、Amazon EKS クラスターで Enhanced Container Insights (Classic) を有効にするために必要なリソースを作成します。
AWSTemplateFormatVersion: '2010-09-09' Description: Deploy Enhanced Container Insights (Classic) on an EKS cluster Parameters: ClusterName: Type: String Description: The name of your EKS cluster Resources: CloudWatchAgentRole: Type: AWS::IAM::Role Properties: RoleName: EKS-CloudWatch-Agent-Role AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: pods.eks.amazonaws.com Action: - sts:AssumeRole - sts:TagSession ManagedPolicyArns: - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy PodIdentityAssociation: Type: AWS::EKS::PodIdentityAssociation Properties: ClusterName: !Ref ClusterName Namespace: amazon-cloudwatch ServiceAccount: cloudwatch-agent RoleArn: !GetAtt CloudWatchAgentRole.Arn CloudWatchObservabilityAddon: Type: AWS::EKS::Addon DependsOn: PodIdentityAssociation Properties: ClusterName: !Ref ClusterName AddonName: amazon-cloudwatch-observability AddonVersion: v5.4.0-eksbuild.1 ServiceAccountRoleArn: !GetAtt CloudWatchAgentRole.Arn ResolveConflicts: OVERWRITE
このテンプレートによって以下のリソースが作成されます。
-
CloudWatchAgentServerPolicy管理ポリシーがアタッチされた IAM ロール -
ロールを CloudWatch エージェントサービスアカウントにマッピングする EKS Pod Identity の関連付け
-
Classic バージョン (v6.2.0 より前) の
amazon-cloudwatch-observabilityEKS アドオン
CloudFormation スタックをデプロイするには
AWS CLI を使用してテンプレートから CloudFormation スタックを作成します。
スタックをデプロイするには
-
上記のテンプレートを
classic-container-insights.yamlという名前のファイルに保存します。 -
以下のコマンドを実行してください。
cluster-nameは、自分の Amazon EKS クラスターに置き換えます。aws cloudformation create-stack \ --stack-name classic-container-insights \ --template-body file://classic-container-insights.yaml \ --parameters ParameterKey=ClusterName,ParameterValue=cluster-name\ --capabilities CAPABILITY_NAMED_IAM -
スタックの作成が完了するのを待機します。
aws cloudformation wait stack-create-complete \ --stack-name classic-container-insights -
スタックのステータスが
CREATE_COMPLETEになっていることを確認します。aws cloudformation describe-stacks \ --stack-name classic-container-insights \ --query "Stacks[0].StackStatus" \ --output text
Helm を使用してデプロイする
Helm で Kubernetes ワークロードを管理する場合は、Helm チャートを使用して Enhanced Container Insights (Classic) をデプロイします。このチャートは、Classic メトリクスパイプラインを使用して CloudWatch Observability オペレーターをインストールします。
注記
Helm を使用する場合は、IAM ロールと Pod Identity の関連付けを別途作成する必要があります。Helm チャートは、Kubernetes リソースのみをインストールします。
ステップ 1: IAM ロールを作成する
Helm チャートをインストールする前に、CloudWatch エージェント用の IAM ロールを作成します。
IAM ロールと Pod Identity の関連付けを作成するには
-
EKS Pod Identity 用の信頼ポリシーを持つロールを作成するには、次のコマンドを実行します。
aws iam create-role \ --role-name EKS-CloudWatch-Agent-Role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": ["sts:AssumeRole", "sts:TagSession"] }] }' -
CloudWatchAgentServerPolicy管理ポリシーをロールにアタッチします。aws iam attach-role-policy \ --role-name EKS-CloudWatch-Agent-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy -
Pod Identity の関連付けを作成します。
cluster-nameを Amazon EKS クラスターの名前に、account-idを AWS アカウント ID に置き換えます。aws eks create-pod-identity-association \ --cluster-namecluster-name\ --namespace amazon-cloudwatch \ --service-account cloudwatch-agent \ --role-arn arn:aws:iam::account-id:role/EKS-CloudWatch-Agent-Role
ステップ 2: Helm チャートをインストールする
Classic バージョン (v6.2.0 より前) で CloudWatch Observability Helm チャートをインストールします。
Helm チャートをインストールするには
-
以下のコマンドを実行してください。
cluster-nameを Amazon EKS クラスターの名前に、regionを AWS リージョンに置き換えます。helm install amazon-cloudwatch-observability \ oci://public.ecr.aws/cloudwatch-agent/amazon-cloudwatch-observability-helm-chart \ --namespace amazon-cloudwatch \ --create-namespace \ --set clusterName=cluster-name\ --set region=region\ --version 5.4.0 -
Helm リリースが正常にデプロイされたことを確認します。
helm list -n amazon-cloudwatchステータスは
deployedであることが必要です。
デプロイメントを確認する
CloudFormation スタックの作成または Helm のインストールが完了したら、アドオンが実行され、CloudWatch にデータが送信されていることを確認します。
デプロイを確認するには
-
CloudWatch エージェントポッドが実行されていることを確認します。
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentすべてのポッドが
Runningステータスになっている必要があります。 -
CloudWatch コンソールの https://console.aws.amazon.com/cloudwatch/
を開いてください。 -
ナビゲーションペインで、[Metrics] (メトリクス)、[All metrics] (すべてのメトリクス) の順に選択します。
-
メトリクスがクラスター
ContainerInsightsの名前空間に表示されることを確認します。
メトリクスは通常、デプロイ完了後 3~5 分以内に CloudWatch に表示されます。
次のステップ
Enhanced Container Insights (Classic) をデプロイしたら、次のトピックを確認できます。
-
コンソールベースのセットアップについては、「コンソールから Enhanced Container Insights (Classic) を有効にする」を参照してください。
-
AWS CLI ベースのセットアップについては、「セットアップガイド (AWS CLI)」を参照してください。
-
Enhanced Container Insights (Classic) が収集するメトリクスについては、「Enhanced Container Insights (Classic) メトリクスのリファレンス」を参照してください。
-
OTel Container Insights に移行するには、「Enhanced Container Insights (Classic) から OTel Container Insights に移行する」を参照してください。
-
OTel Container Insights の詳細については、「OTel Container Insights (推奨)」を参照してください。