Personnalisation des images Docker pour Flink et FluentD - Amazon EMR

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

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.

Avant de personnaliser votre image Docker, assurez-vous de remplir les conditions préalables suivantes :

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:latestRemplacez-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 :

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.

  2. Modifiez le contenu Dockerfile et ajoutez-y le contenu suivant. Cela Dockerfile utilise l'image du conteneur que vous avez extraitepublic.ecr.aws/emr-on-eks/flink/emr-7.7.0-flink:latest.

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

    Utilisez la configuration suivante si vous utilisezFluentd.

    FROM public.ecr.aws/emr-on-eks/fluentd/emr-7.7.0:latest USER root ### Add customization commands here #### USER hadoop:hadoop
  3. 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.7.0-flink:latest USER root RUN pip3 install --upgrade boto3 pandas numpy // For python 3 USER hadoop:hadoop
  4. Dans le répertoire où vous l'avez crééeDockerFile, 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>

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 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>
  2. 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 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
  3. Transmettez l'image. Pour plus d'informations, consultez la section Envoyer une image vers Amazon ECR 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>

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