View a markdown version of this page

CloudFormation 또는 헬름을 사용하여 Enhanced Container Insights(Classic) 배포 - Amazon CloudWatch

CloudFormation 또는 헬름을 사용하여 Enhanced Container Insights(Classic) 배포

CloudFormation 템플릿 또는 헬름 차트를 사용하여 Enhanced Container Insights(Classic)를 코드형 인프라로 배포할 수 있습니다. 이러한 접근 방식은 v6.2.0 이전 버전의 amazon-cloudwatch-observability 추가 기능을 설치하여 Classic 지표 파이프라인을 활성화합니다. IaC 파이프라인을 통해 클러스터를 관리하고 반복 가능한 버전 제어 배포를 원하는 경우 이 접근 방식을 선택합니다.

권장 사항

새 배포의 경우 OTel 기반 파이프라인에서 추가 기능 버전 6.2.0 이상을 사용하는 OTel Container Insights(권장)이 권장됩니다.

사전 조건

CloudFormation 또는 헬름을 사용하여 Enhanced Container Insights(Classic)를 배포하기 전에 다음 요구 사항을 충족하는지 확인합니다.

  • Kubernetes 버전 1.25 이상을 실행하는 기존의 Amazon EKS 클러스터

  • AWS CLI 버전 2.12.0 이상

  • 대상 클러스터와 통신하도록 구성된 kubectl

  • CloudFormation 스택 생성에 대한 IAM 권한(CloudFormation 메서드의 경우)

  • 헬름 v3.8 이상(헬름 메서드의 경우)

  • 클러스터에서 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 버전을 사용하는 amazon-cloudwatch-observability EKS 추가 기능(v6.2.0 이전)

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

헬름을 사용하여 배포

헬름으로 Kubernetes 워크로드를 관리하는 경우 헬름 차트를 사용하여 Enhanced Container Insights(Classic)를 배포합니다. 차트는 Classic 지표 파이프라인과 함께 CloudWatch Observability 오퍼레이터를 설치합니다.

참고

헬름을 사용하는 경우 IAM 역할과 Pod Identity 연결을 별도로 생성해야 합니다. 헬름 차트는 Kubernetes 리소스만 설치합니다.

1단계 - IAM 역할 생성

헬름 차트를 설치하기 전에 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단계: 헬름 차트 설치

Classic 버전(v6.2.0 이전)을 사용하여 CloudWatch Observability 헬름 차트를 설치합니다.

헬름 차트 설치
  1. 다음 명령을 실행합니다. cluster-name을 Amazon EKS 클러스터의 이름으로 바꾸고 리전을 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 list -n amazon-cloudwatch

    상태는 deployed여야 합니다.

배포 확인

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. 탐색 창에서 지표를 선택한 다음 모든 지표를 선택합니다.

  4. 지표가 클러스터의 ContainerInsights 네임스페이스에 나타나는지 확인합니다.

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

다음 단계

Enhanced Container Insights(Classic)가 배포되면 다음 주제를 살펴볼 수 있습니다.