

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Implementa OTel Container Insights con CloudFormation
<a name="container-insights-eks-otel-cfn"></a>

Puoi implementare OTel Container Insights come infrastruttura sotto forma di codice utilizzando un CloudFormation modello. Questo approccio è ideale per i team che gestiscono i cluster tramite pipeline IAc e desiderano implementazioni ripetibili e controllate dalla versione.

Il modello installa il componente aggiuntivo EKS con Otel Container Insights abilitato. `amazon-cloudwatch-observability` Se preferisci la gestione dei Kubernetes-native pacchetti, consulta. [Implementa OTel Container Insights con Helm](container-insights-eks-otel-helm.md)

## Prerequisiti
<a name="container-insights-eks-otel-cfn-prereqs"></a>

Prima di distribuire Otel Container Insights con CloudFormation, verificate di soddisfare i seguenti requisiti.
+ Un cluster Amazon EKS esistente che esegue Kubernetes versione 1.28 o successiva
+ AWS CLI versione 2.15.0 o successiva
+ `kubectl`configurato per comunicare con il cluster di destinazione
+ Autorizzazioni IAM per la creazione di CloudFormation stack
+ Accesso a Internet in uscita dal cluster agli endpoint CloudWatch 

## Implementa con CloudFormation
<a name="container-insights-eks-otel-cfn-cloudformation"></a>

Utilizza un CloudFormation modello per distribuire il componente aggiuntivo CloudWatch Observability, il ruolo IAM richiesto e l'associazione Pod Identity in un unico stack. Questo modello utilizza la `AWS::EKS::Addon` risorsa per installare il componente aggiuntivo con Otel Container Insights abilitato.

### CloudFormation modello
<a name="container-insights-eks-otel-cfn-template"></a>

Il seguente modello crea il set completo di risorse necessarie per abilitare Otel Container Insights sul tuo cluster Amazon EKS.

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

Questo modello crea le seguenti risorse:
+ Un ruolo IAM con la policy `CloudWatchAgentServerPolicy` gestita allegata
+ Un'associazione EKS Pod Identity che associa il ruolo all'account del servizio dell' CloudWatch agente
+ Il componente aggiuntivo `amazon-cloudwatch-observability` EKS con OTel Container Insights abilitato

### Per distribuire il CloudFormation stack
<a name="container-insights-eks-otel-cfn-deploy-stack"></a>

Utilizzate il AWS CLI per creare lo CloudFormation stack a partire dal modello.

**Per distribuire lo stack**

1. Salvate il modello precedente in un file denominato. `otel-container-insights.yaml`

1. Eseguire il seguente comando seguente. Sostituisci {{cluster-name}} con il nome del tuo cluster 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
   ```

1. Attendi il completamento della creazione dello stack.

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

1. Verifica che lo stato dello stack sia. `CREATE_COMPLETE`

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

## Verifica della distribuzione
<a name="container-insights-eks-otel-cfn-verify"></a>

Una volta completata la creazione CloudFormation dello stack, verifica che il componente aggiuntivo sia in esecuzione e che stia inviando dati a. CloudWatch

**Per verificare la distribuzione**

1. Conferma che i pod CloudWatch dell'agente siano in funzione.

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

   Tutti i pod devono mostrare lo `Running` stato.

1. Apri la CloudWatch console all'indirizzo [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Nel riquadro di navigazione, scegli **Container Insights**.

1. Verifica che il cluster compaia nell'elenco dei cluster e che le metriche siano compilate.

Le metriche vengono in genere visualizzate CloudWatch entro 3-5 minuti dal completamento della distribuzione.

## Rimuovi la distribuzione
<a name="container-insights-eks-otel-cfn-cleanup"></a>

Per rimuovere tutte le risorse create dal CloudFormation modello, elimina lo stack.

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