使用 CloudFormation 或 Helm 部署 Enhanced Container Insights(Classic)
可以使用 CloudFormation 模板或 Helm 图表将 Enhanced Container Insights(Classic)部署为基础设施即代码。此方法可安装 v6.2.0 之前版本的 amazon-cloudwatch-observability 附加组件,以启用 Classic 指标管道。如果通过 IaC 管道管理集群,并且想要可重复的、受版本控制的部署,请选择此方法。
建议
对于新的部署,建议使用 Enhanced Container Insights(建议),其将附加组件版本 6.2.0 或更高版本与基于 OTEL 的管道搭配使用。
先决条件
在通过 CloudFormation 或 Helm 部署 Enhanced Container Insights(Classic)之前,请确认已满足以下要求。
-
运行 Kubernetes 1.25 版本或更高版本的现有 Amazon EKS 集群
-
AWS CLI 版本 2.12.0 或更高版本
-
已配置
kubectl以与目标集群通信 -
用于创建 CloudFormation 堆栈的 IAM 权限(适用于 CloudFormation 方法)
-
Helm v3.8 或更高版本(适用于 Helm 方法)
-
从集群到 CloudWatch 端点的出站互联网访问
使用 CloudFormation 进行部署
使用 CloudFormation 模板部署具有 Classic 配置的 CloudWatch 可观测性附加组件。此模板使用 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 角色 -
EKS 容器组身份关联,用于将角色映射到 CloudWatch 代理服务账户
-
带有 Classic 版本(v6.2.0 之前的版本)的
amazon-cloudwatch-observabilityEKS 附加组件
部署 CloudFormation 堆栈
使用 AWS CLI 根据模板创建 CloudFormation 堆栈。
部署堆栈
-
将前述模板保存到一个名为
classic-container-insights.yaml的文件中。 -
运行如下命令。将
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 -
等待堆栈创建完成。
aws cloudformation wait stack-create-complete \ --stack-name classic-container-insights -
确认堆栈状态是否为
CREATE_COMPLETE。aws cloudformation describe-stacks \ --stack-name classic-container-insights \ --query "Stacks[0].StackStatus" \ --output text
使用 Helm 进行部署
如果使用 Helm 来管理 Kubernetes 工作负载,请使用 Helm 图表部署 Enhanced Container Insights(Classic)。该图表安装了带有 Classic 指标管道的 CloudWatch 可观测性算子。
注意
使用 Helm 时,必须分别创建 IAM 角色和容器组身份关联。Helm 图表仅安装 Kubernetes 资源。
步骤 1:创建 IAM 角色
安装 Helm 图表之前为 CloudWatch 代理创建 IAM 角色。
创建 IAM 角色和容器组身份关联
-
运行以下命令为 EKS 容器组身份创建具有信任策略的角色。
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"] }] }' -
将
CloudWatchAgentServerPolicy托管式策略附加到角色。aws iam attach-role-policy \ --role-name EKS-CloudWatch-Agent-Role \ --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy -
创建容器组身份关联。将
cluster-name替换为 Amazon EKS 集群的名称,并将account-id替换为 AWS 账户 ID。aws eks create-pod-identity-association \ --cluster-namecluster-name\ --namespace amazon-cloudwatch \ --service-account cloudwatch-agent \ --role-arn arn:aws:iam::account-id:role/EKS-CloudWatch-Agent-Role
步骤 2:安装 Helm 图表
安装 Classic 版本(v6.2.0 之前的版本)的 CloudWatch 可观测性 Helm 图表。
安装 Helm 图表
-
运行如下命令。将
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 -
确认 Helm 版本是否已成功部署。
helm list -n amazon-cloudwatch状态必须为
deployed。
验证部署
CloudFormation 堆栈创建或 Helm 安装完成后,请确认附加组件是否正在运行并将数据发送到 CloudWatch。
验证部署
-
确认 CloudWatch 代理容器组(pod)是否正在运行。
kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/name=cloudwatch-agent所有容器组(pod)都必须显示
Running状态。 -
通过 https://console.aws.amazon.com/cloudwatch/
打开 CloudWatch 控制台。 -
在导航窗格中,选择 Metrics(指标),然后选择 All metrics(所有指标)。
-
确认指标是否显示在集群的
ContainerInsights命名空间中。
指标通常会在部署完成后的 3 到 5 分钟内显示在 CloudWatch 中。
后续步骤
部署 Enhanced Container Insights(Classic)后,即可浏览以下主题。
-
有关基于控制台的设置,请参阅从控制台启用 Enhanced Container Insights(Classic)。
-
有关基于 AWS CLI 的设置,请参阅设置指南(AWS CLI)。
-
有关 Enhanced Container Insights(Classic)收集的指标的信息,请参阅 Enhanced Container Insights(Classic)指标参考。
-
要迁移到 OTel Containainer Insights,请参阅从 Enhanced Container Insights(Classic)迁移到 OTel Container Insights。
-
有关 OTel Container Insights 的更多信息,请参阅 Enhanced Container Insights(建议)。