

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Déployez OTel Container Insights avec CloudFormation
<a name="container-insights-eks-otel-cfn"></a>

Vous pouvez déployer OTel Container Insights sous forme d'infrastructure sous forme de code à l'aide d'un CloudFormation modèle. Cette approche est idéale pour les équipes qui gèrent des clusters via des pipelines IaC et qui souhaitent des déploiements reproductibles et contrôlés par version.

Le modèle installe le module complémentaire `amazon-cloudwatch-observability` EKS avec OTel Container Insights activé. Si vous préférez la gestion des Kubernetes-native packages, consultez[Déployez OTel Container Insights avec Helm](container-insights-eks-otel-helm.md).

## Conditions préalables
<a name="container-insights-eks-otel-cfn-prereqs"></a>

Avant de déployer OTel Container Insights avec CloudFormation, vérifiez que vous répondez aux exigences suivantes.
+ Un cluster Amazon EKS existant exécutant Kubernetes version 1.28 ou ultérieure
+ AWS CLI version 2.15.0 ou ultérieure
+ `kubectl`configuré pour communiquer avec votre cluster cible
+ Autorisations IAM pour la création de CloudFormation piles
+ Accès Internet sortant du cluster vers les points de terminaison CloudWatch 

## Déployez avec CloudFormation
<a name="container-insights-eks-otel-cfn-cloudformation"></a>

Utilisez un CloudFormation modèle pour déployer le module complémentaire CloudWatch Observability, le rôle IAM requis et l'association Pod Identity dans une seule pile. Ce modèle utilise la `AWS::EKS::Addon` ressource pour installer le module complémentaire avec OTel Container Insights activé.

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

Le modèle suivant crée l'ensemble complet de ressources dont vous avez besoin pour activer OTel Container Insights sur votre 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
```

Ce modèle crée les ressources suivantes :
+ Un rôle IAM auquel est attachée la politique `CloudWatchAgentServerPolicy` gérée
+ Une association EKS Pod Identity qui associe le rôle au compte de service de l' CloudWatch agent
+ L'extension `amazon-cloudwatch-observability` EKS avec OTel Container Insights activé

### Pour déployer le CloudFormation pile
<a name="container-insights-eks-otel-cfn-deploy-stack"></a>

Utilisez le AWS CLI pour créer la CloudFormation pile à partir du modèle.

**Pour déployer la pile**

1. Enregistrez le modèle précédent dans un fichier nommé`otel-container-insights.yaml`.

1. Exécutez la commande suivante. {{cluster-name}}Remplacez-le par le nom de votre 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. Attendez que la création de la pile soit terminée.

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

1. Vérifiez que l'état de la pile est`CREATE_COMPLETE`.

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

## Vérification du déploiement
<a name="container-insights-eks-otel-cfn-verify"></a>

Une fois la création de la CloudFormation pile terminée, vérifiez que le module complémentaire est en cours d'exécution et qu'il envoie des données à CloudWatch.

**Pour vérifier le déploiement**

1. Vérifiez que les modules d' CloudWatch agent sont en cours d'exécution.

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

   Tous les pods doivent indiquer `Running` leur statut.

1. Ouvrez la CloudWatch console à l'adresse [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Dans le volet de navigation, choisissez **Container Insights**.

1. Vérifiez que votre cluster apparaît dans la liste des clusters et que les métriques sont renseignées.

Les métriques apparaissent généralement CloudWatch dans les 3 à 5 minutes suivant la fin du déploiement.

## Supprimer le déploiement
<a name="container-insights-eks-otel-cfn-cleanup"></a>

Pour supprimer toutes les ressources créées par le CloudFormation modèle, supprimez la pile.

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