View a markdown version of this page

CloudFormation または Helm を使用して Enhanced Container Insights (Classic) をデプロイする - Amazon CloudWatch

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-observability EKS アドオン

CloudFormation スタックをデプロイするには

AWS CLI を使用してテンプレートから CloudFormation スタックを作成します。

スタックをデプロイするには
  1. 上記のテンプレートを classic-container-insights.yaml という名前のファイルに保存します。

  2. 以下のコマンドを実行してください。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
  3. スタックの作成が完了するのを待機します。

    aws cloudformation wait stack-create-complete \ --stack-name classic-container-insights
  4. スタックのステータスが 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 の関連付けを作成するには
  1. 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"] }] }'
  2. CloudWatchAgentServerPolicy 管理ポリシーをロールにアタッチします。

    aws iam attach-role-policy \ --role-name EKS-CloudWatch-Agent-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
  3. Pod Identity の関連付けを作成します。cluster-name を Amazon EKS クラスターの名前に、account-id を AWS アカウント ID に置き換えます。

    aws eks create-pod-identity-association \ --cluster-name cluster-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 チャートをインストールするには
  1. 以下のコマンドを実行してください。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
  2. Helm リリースが正常にデプロイされたことを確認します。

    helm list -n amazon-cloudwatch

    ステータスは deployed であることが必要です。

デプロイメントを確認する

CloudFormation スタックの作成または Helm のインストールが完了したら、アドオンが実行され、CloudWatch にデータが送信されていることを確認します。

デプロイを確認するには
  1. CloudWatch エージェントポッドが実行されていることを確認します。

    kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent

    すべてのポッドが Running ステータスになっている必要があります。

  2. CloudWatch コンソールの https://console.aws.amazon.com/cloudwatch/ を開いてください。

  3. ナビゲーションペインで、[Metrics] (メトリクス)、[All metrics] (すべてのメトリクス) の順に選択します。

  4. メトリクスがクラスター ContainerInsights の名前空間に表示されることを確認します。

メトリクスは通常、デプロイ完了後 3~5 分以内に CloudWatch に表示されます。

次のステップ

Enhanced Container Insights (Classic) をデプロイしたら、次のトピックを確認できます。