View a markdown version of this page

CloudFormation を使用して OTel Container Insights をデプロイする - Amazon CloudWatch

CloudFormation を使用して OTel Container Insights をデプロイする

CloudFormation テンプレートを使用して、OTel Container Insights を Infrastructure as Code としてデプロイできます。このアプローチは、IaC パイプラインを介してクラスターを管理し、バージョン管理された反復可能なデプロイを必要とするチームに最適です。

このテンプレートは、OTel Container Insights を有効にして amazon-cloudwatch-observability EKS アドオンをインストールします。Kubernetes ネイティブパッケージ管理が必要な場合は、「Helm を使用して OTel Container Insights をデプロイする」を参照してください。

前提条件

CloudFormation で OTel Container Insights をデプロイする前に、次の要件を満たしていることを確認します。

  • Kubernetes バージョン 1.28 以降を実行している既存の Amazon EKS クラスター

  • AWS CLI バージョン 2.15.0 以降

  • kubectl がターゲットクラスターと通信できるように設定されていること

  • CloudFormation スタック作成の IAM アクセス許可

  • クラスターから CloudWatch エンドポイントへのアウトバウンドインターネットアクセス

CloudFormation でデプロイする

CloudFormation テンプレートを使用して、CloudWatch Observability アドオン、必要な IAM ロール、および Pod Identity の関連付けを単一のスタックにデプロイします。このテンプレートは、AWS::EKS::Addon リソースを使用して、OTel Container Insights を有効にしてアドオンをインストールします。

CloudFormation テンプレート

次のテンプレートは、Amazon EKS クラスターで OTel Container Insights を有効にするために必要なリソースの完全なセットを作成します。

AWSTemplateFormatVersion: '2010-09-09' Description: Deploy OTel Container Insights 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-Observability-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: v6.2.0-eksbuild.1 ConfigurationValues: '{"otelContainerInsights":{"enabled":true}}' ServiceAccountRoleArn: !GetAtt CloudWatchAgentRole.Arn ResolveConflicts: OVERWRITE

このテンプレートによって以下のリソースが作成されます。

  • CloudWatchAgentServerPolicy 管理ポリシーがアタッチされた IAM ロール

  • ロールを CloudWatch エージェントサービスアカウントにマッピングする EKS Pod Identity の関連付け

  • OTel Container Insights を有効にした amazon-cloudwatch-observability EKS アドオン

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

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

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

  2. 以下のコマンドを実行してください。cluster-name は、自分の Amazon EKS クラスターに置き換えます。

    aws cloudformation create-stack \ --stack-name otel-container-insights \ --template-body file://otel-container-insights.yaml \ --parameters ParameterKey=ClusterName,ParameterValue=cluster-name \ --capabilities CAPABILITY_NAMED_IAM
  3. スタックの作成が完了するのを待機します。

    aws cloudformation wait stack-create-complete \ --stack-name otel-container-insights
  4. スタックのステータスが CREATE_COMPLETE になっていることを確認します。

    aws cloudformation describe-stacks \ --stack-name otel-container-insights \ --query "Stacks[0].StackStatus" \ --output text

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

CloudFormation スタックの作成が完了したら、アドオンが実行され、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. ナビゲーションペインで、[Container Insights] を選択します。

  4. クラスターがクラスターリストに表示され、メトリクスが入力されていることを確認します。

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

デプロイを削除する

CloudFormation テンプレートで作成したすべてのリソースを削除するには、スタックを削除します。

aws cloudformation delete-stack \ --stack-name otel-container-insights