View a markdown version of this page

使用 CloudFormation 或 Helm 部署增強型容器洞見 (傳統) - Amazon CloudWatch

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 CloudFormation 或 Helm 部署增強型容器洞見 (傳統)

您可以使用 範本或 Helm Chart,將 CloudFormation 增強型容器洞見 (傳統) 部署為基礎設施做為程式碼。此方法會使用 v6.2.0 之前的版本安裝amazon-cloudwatch-observability附加元件,以啟用 Classic 指標管道。如果您透過 IaC 管道管理叢集,並想要可重複的版本控制部署,請選擇此方法。

建議

對於新的部署,我們建議使用 OTel Container Insights (建議),其使用附加元件 6.2.0 版或更新版本搭配 OTel 型管道。

先決條件

使用 CloudFormation 或 Helm 部署增強型容器洞見 (傳統) 之前,請確認您符合下列要求。

  • 執行 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 資源來安裝 6.2.0 版之前的附加元件。

CloudFormation 範本

下列範本會建立在 Amazon EKS 叢集上啟用增強型容器洞見 (傳統) 所需的資源。

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. 執行下列命令。使用 Amazon EKS 叢集的名稱取代 cluster-name

    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 Chart 部署增強型容器洞見 (傳統)。圖表會使用 Classic 指標管道安裝 CloudWatch 可觀測性運算子。

注意

使用 Helm 時,您必須分別建立 IAM 角色和 Pod Identity 關聯。Helm Chart 只會安裝 Kubernetes 資源。

步驟 1:建立 IAM 角色

安裝 Helm Chart 之前,請為 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 Chart

使用 Classic 版本 (v6.2.0 之前) 安裝 CloudWatch 可觀測性 Helm Chart。

安裝 Helm Chart
  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 代理程式 Pod 正在執行。

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

    所有 Pod 必須顯示Running狀態。

  2. 透過 https://console.aws.amazon.com/cloudwatch/ 開啟 CloudWatch 主控台。

  3. 在導覽窗格中,選擇 Metrics (指標),然後選擇 All metrics (所有指標)。

  4. 確認 指標出現在叢集的ContainerInsights命名空間中。

指標通常會在部署完成後 3 到 5 分鐘內出現在 CloudWatch 中。

後續步驟

部署 Enhanced Container Insights (Classic) 之後,您可以探索下列主題。