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-observabilityEKS アドオン
CloudFormation スタックをデプロイするには
AWS CLI を使用してテンプレートから CloudFormation スタックを作成します。
スタックをデプロイするには
-
上記のテンプレートを
otel-container-insights.yamlという名前のファイルに保存します。 -
以下のコマンドを実行してください。
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 -
スタックの作成が完了するのを待機します。
aws cloudformation wait stack-create-complete \ --stack-name otel-container-insights -
スタックのステータスが
CREATE_COMPLETEになっていることを確認します。aws cloudformation describe-stacks \ --stack-name otel-container-insights \ --query "Stacks[0].StackStatus" \ --output text
デプロイメントを確認する
CloudFormation スタックの作成が完了したら、アドオンが実行され、CloudWatch にデータが送信されていることを確認します。
デプロイを確認するには
-
CloudWatch エージェントポッドが実行されていることを確認します。
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agentすべてのポッドが
Runningステータスになっている必要があります。 -
CloudWatch コンソールの https://console.aws.amazon.com/cloudwatch/
を開いてください。 -
ナビゲーションペインで、[Container Insights] を選択します。
-
クラスターがクラスターリストに表示され、メトリクスが入力されていることを確認します。
メトリクスは通常、デプロイ完了後 3~5 分以内に CloudWatch に表示されます。
デプロイを削除する
CloudFormation テンプレートで作成したすべてのリソースを削除するには、スタックを削除します。
aws cloudformation delete-stack \ --stack-name otel-container-insights