View a markdown version of this page

CloudFormation을 사용하여 OTel Container Insights 배포 - Amazon CloudWatch

CloudFormation을 사용하여 OTel Container Insights 배포

CloudFormation 템플릿을 사용하여 OTel Container Insights를 코드형 인프라로 배포할 수 있습니다. 이러한 접근 방식은 IaC 파이프라인을 통해 클러스터를 관리하고 반복 가능한 버전 제어 배포를 원하는 팀에 가장 적합합니다.

템플릿은 OTel Container Insights가 활성화된 amazon-cloudwatch-observability EKS 추가 기능을 설치합니다. Kubernetes 네이티브 패키지 관리를 선호하는 경우 헬름을 사용하여 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. https://console.aws.amazon.com/cloudwatch/에서 CloudWatch 콘솔을 엽니다.

  3. 탐색 창에서 Container Insights를 선택합니다.

  4. 클러스터가 클러스터 목록에 나타나고 지표가 채워지고 있는지 확인합니다.

일반적으로 지표는 배포가 완료된 후 3~5분 이내에 CloudWatch에 표시됩니다.

배포 제거

CloudFormation 템플릿이 생성한 모든 리소스를 제거하려면 스택을 삭제합니다.

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