

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

# 使用 CloudFormation 或 Helm 部署增強型容器洞見 （傳統）
<a name="container-insights-eks-classic-iac"></a>

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

**建議**  
對於新的部署，我們建議使用 [OTel Container Insights （建議）](container-insights-eks-otel.md)，其使用附加元件 6.2.0 版或更新版本搭配 OTel 型管道。

## 先決條件
<a name="container-insights-eks-classic-iac-prereqs"></a>

使用 CloudFormation 或 Helm 部署增強型容器洞見 （傳統） 之前，請確認您符合下列要求。
+ 執行 Kubernetes 1.25 版或更新版本的現有 Amazon EKS 叢集
+ AWS CLI 2.12.0 版或更新版本
+ `kubectl` 設定為與您的目標叢集通訊
+ 建立 CloudFormation 堆疊的 IAM 許可 （適用於 CloudFormation 方法）
+ Helm v3.8 或更新版本 （適用於 Helm 方法）
+ 從叢集到 CloudWatch 端點的傳出網際網路存取

## 使用 部署 CloudFormation
<a name="container-insights-eks-classic-iac-cloudformation"></a>

使用 CloudFormation 範本來部署具有 Classic 組態的 CloudWatch Observability 附加元件。此範本使用 `AWS::EKS::Addon` 資源來安裝 6.2.0 版之前的附加元件。

### CloudFormation 範本
<a name="container-insights-eks-classic-iac-cfn-template"></a>

下列範本會建立在 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 堆疊
<a name="container-insights-eks-classic-iac-cfn-deploy"></a>

使用 從範本 AWS CLI 建立 CloudFormation 堆疊。

**部署堆疊**

1. 將上述範本儲存至名為 的檔案`classic-container-insights.yaml`。

1. 執行下列命令。使用 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
   ```

1. 等待堆疊建立完成。

   ```
   aws cloudformation wait stack-create-complete \
     --stack-name classic-container-insights
   ```

1. 確認堆疊狀態為 `CREATE_COMPLETE`。

   ```
   aws cloudformation describe-stacks \
     --stack-name classic-container-insights \
     --query "Stacks[0].StackStatus" \
     --output text
   ```

## 使用 Helm 部署
<a name="container-insights-eks-classic-iac-helm"></a>

如果您使用 Helm 管理 Kubernetes 工作負載，請使用 Helm Chart 部署增強型容器洞見 （傳統）。圖表會使用 Classic 指標管道安裝 CloudWatch 可觀測性運算子。

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

### 步驟 1：建立 IAM 角色
<a name="container-insights-eks-classic-iac-helm-iam"></a>

安裝 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"]
       }]
     }'
   ```

1. 將 `CloudWatchAgentServerPolicy` 受管政策連接至角色。

   ```
   aws iam attach-role-policy \
     --role-name EKS-CloudWatch-Agent-Role \
     --policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy
   ```

1. 建立 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
<a name="container-insights-eks-classic-iac-helm-install"></a>

使用 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
   ```

1. 確認 Helm 版本已成功部署。

   ```
   helm list -n amazon-cloudwatch
   ```

   狀態必須顯示 `deployed`。

## 驗證部署
<a name="container-insights-eks-classic-iac-verify"></a>

 CloudFormation 堆疊建立或 Helm 安裝完成後，請確認附加元件正在執行並將資料傳送至 CloudWatch。

**驗證部署**

1. 確認 CloudWatch 代理程式 Pod 正在執行。

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

   所有 Pod 必須顯示`Running`狀態。

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

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

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

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

## 後續步驟
<a name="container-insights-eks-classic-iac-next"></a>

部署 Enhanced Container Insights (Classic) 之後，您可以探索下列主題。
+ 如需主控台型設定，請參閱 [從主控台啟用增強型容器洞見 （傳統）](container-insights-eks-classic-console.md)。
+ 如需 AWS CLI以 為基礎的設定，請參閱 [設定指南 (AWS CLI)](container-insights-eks-classic-setup.md)。
+ 如需增強型容器洞見 （傳統） 收集的指標資訊，請參閱 [增強型容器洞見 （傳統） 指標參考](container-insights-eks-classic-metrics.md)。
+ 若要遷移至 OTel Container Insights，請參閱 [從增強型容器洞見 （傳統） 遷移至 OTel 容器洞見](container-insights-eks-migrate-from-classic.md)。
+ 如需 OTel Container Insights 的詳細資訊，請參閱 [OTel Container Insights （建議）](container-insights-eks-otel.md)。