

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.

# Personnalisation des images Docker pour Flink et FluentD
<a name="jobruns-flink-docker-flink-fluentd"></a>

Procédez comme suit pour personnaliser les images Docker pour Amazon EMR sur EKS avec des images Apache Flink ou FluentD. Il s'agit notamment de conseils techniques pour obtenir une image de base, la personnaliser, la publier et soumettre une charge de travail.

**Topics**
+ [Conditions préalables](#jobruns-flink-docker-flink-fluentd-prereqs)
+ [Étape 1 : récupérer une image de base depuis Amazon Elastic Container Registry](#jobruns-flink-docker-flink-fluentd-retrieve-base)
+ [Étape 2 : Personnaliser une image de base](#jobruns-flink-docker-flink-fluentd-customize-image)
+ [Étape 3 : Publiez votre image personnalisée](#jobruns-flink-docker-flink-fluentd-publish-image)
+ [Étape 4 : Soumettre une charge de travail Flink dans Amazon EMR à l'aide d'une image personnalisée](#jobruns-flink-docker-flink-fluentd-submit-workload)

## Conditions préalables
<a name="jobruns-flink-docker-flink-fluentd-prereqs"></a>

Avant de personnaliser votre image Docker, assurez-vous de remplir les conditions préalables suivantes :
+ Vous avez terminé les [étapes de configuration de l'opérateur Flink Kubernetes pour Amazon EMR](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/jobruns-flink-kubernetes-operator-setup.html) sur EKS.
+ Docker installé dans votre environnement. Pour plus d'informations, consultez [Obtenir Docker](https://docs.docker.com/get-docker/).

## Étape 1 : récupérer une image de base depuis Amazon Elastic Container Registry
<a name="jobruns-flink-docker-flink-fluentd-retrieve-base"></a>

L'image de base contient le moteur d'exécution Amazon EMR et les connecteurs dont vous avez besoin pour accéder à d'autres. Services AWS Si vous utilisez Amazon EMR sur EKS avec la version 6.14.0 ou supérieure de Flink, vous pouvez obtenir les images de base depuis la galerie publique Amazon ECR. Parcourez la galerie pour trouver le lien de l'image et extrayez l'image dans votre espace de travail local. Par exemple, pour la version 6.14.0 d'Amazon EMR, la `docker pull` commande suivante renvoie la dernière image de base standard. `emr-6.14.0:latest`Remplacez-le par la version finale que vous souhaitez.

```
docker pull public.ecr.aws/emr-on-eks/flink/emr-6.14.0-flink:latest
```

Voici les liens vers l'image de la galerie Flink et l'image de la galerie Fluentd :
+ [emr-on-eks/flink/emr-6.14.0-flink](https://gallery.ecr.aws/emr-on-eks/flink/emr-6.14.0-flink)
+ [emr-on-eks/fluentd/emr-6.14.0 (](https://gallery.ecr.aws/emr-on-eks/fluentd/emr-6.14.0)

## Étape 2 : Personnaliser une image de base
<a name="jobruns-flink-docker-flink-fluentd-customize-image"></a>

Les étapes suivantes décrivent comment personnaliser l'image de base que vous avez extraite d'Amazon ECR.

1. Créez un nouveau espace de travail `Dockerfile` sur votre espace de travail local.

1. Modifiez le contenu `Dockerfile` et ajoutez-y le contenu suivant. Cela `Dockerfile` utilise l'image du conteneur que vous avez extraite`public.ecr.aws/emr-on-eks/flink/emr-7.12.0-flink:latest`.

   ```
   FROM public.ecr.aws/emr-on-eks/flink/emr-7.12.0-flink:latest
   USER root
   ### Add customization commands here ####
   USER hadoop:hadoop
   ```

   Utilisez la configuration suivante si vous utilisez`Fluentd`.

   ```
   FROM public.ecr.aws/emr-on-eks/fluentd/emr-7.12.0:latest
   USER root
   ### Add customization commands here ####
   USER hadoop:hadoop
   ```

1. Ajoutez des commandes dans le `Dockerfile` pour personnaliser l'image de base. La commande suivante montre comment installer des bibliothèques Python.

   ```
   FROM public.ecr.aws/emr-on-eks/flink/emr-7.12.0-flink:latest
   USER root
   RUN pip3 install --upgrade boto3 pandas numpy // For python 3
   USER hadoop:hadoop
   ```

1. Dans le répertoire où vous l'avez créée`DockerFile`, exécutez la commande suivante pour créer l'image Docker. Le champ que vous fournissez après le `-t` drapeau est le nom personnalisé de l'image.

   ```
   docker build -t <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
   ```

## Étape 3 : Publiez votre image personnalisée
<a name="jobruns-flink-docker-flink-fluentd-publish-image"></a>

Vous pouvez désormais publier la nouvelle image Docker dans votre registre Amazon ECR.

1. Exécutez la commande suivante pour créer un référentiel Amazon ECR afin de stocker votre image Docker. Donnez un nom à votre référentiel, par exemple `emr_custom_repo.` Pour plus d'informations, consultez [Créer un référentiel](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-create-repository) dans le guide de l'utilisateur d'Amazon Elastic Container Registry.

   ```
   aws ecr create-repository \
          --repository-name emr_custom_repo \
          --image-scanning-configuration scanOnPush=true \
          --region <AWS_REGION>
   ```

1. Exécutez la commande suivante pour vous authentifier dans votre registre par défaut. Pour plus d'informations, consultez [Authentifier auprès de votre registre par défaut](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) dans le guide de l'utilisateur d'Amazon Elastic Container Registry.

   ```
   aws ecr get-login-password --region <AWS_REGION> | docker login --username AWS --password-stdin <AWS_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com
   ```

1. Transmettez l'image. Pour plus d'informations, consultez la section [Envoyer une image vers Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-push-image) dans le guide de l'utilisateur d'Amazon Elastic Container Registry.

   ```
   docker push <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
   ```

## Étape 4 : Soumettre une charge de travail Flink dans Amazon EMR à l'aide d'une image personnalisée
<a name="jobruns-flink-docker-flink-fluentd-submit-workload"></a>

Apportez les modifications suivantes à vos `FlinkDeployment` spécifications pour utiliser une image personnalisée. Pour ce faire, entrez votre propre image dans la `spec.image` ligne de votre spécification de déploiement.

```
apiVersion: flink.apache.org/v1beta1
   kind: FlinkDeployment
   metadata:
     name: basic-example
   spec:
     flinkVersion: v1_18
     image: <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
     imagePullPolicy: Always
     flinkConfiguration:
           taskmanager.numberOfTaskSlots: "1"
```

Pour utiliser une image personnalisée pour votre tâche Fluentd, entrez votre propre image dans la `monitoringConfiguration.image` ligne de votre spécification de déploiement.

```
  monitoringConfiguration:
       image: <YOUR_ACCOUNT_ID>.dkr.ecr.<YOUR_ECR_REGION>.amazonaws.com/<ECR_REPO>:<ECR_TAG>
       cloudWatchMonitoringConfiguration:
         logGroupName: flink-log-group
         logStreamNamePrefix: custom-fluentd
```