

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Personalización de las imágenes de Docker para Flink y FluentD
<a name="jobruns-flink-docker-flink-fluentd"></a>

Siga estos pasos para personalizar las imágenes de Docker de Amazon EMR en EKS con imágenes de Apache Flink o FluentD. Estos incluyen orientación técnica para obtener una imagen base, personalizarla, publicarla y enviar una carga de trabajo.

**Topics**
+ [Requisitos previos](#jobruns-flink-docker-flink-fluentd-prereqs)
+ [Paso 1: recupere una imagen base del Amazon Elastic Container Registry](#jobruns-flink-docker-flink-fluentd-retrieve-base)
+ [Paso 2: personalizar una imagen base](#jobruns-flink-docker-flink-fluentd-customize-image)
+ [Paso 3: publique una imagen personalizada](#jobruns-flink-docker-flink-fluentd-publish-image)
+ [Paso 4: envíe una carga de trabajo de Flink en Amazon EMR mediante una imagen personalizada](#jobruns-flink-docker-flink-fluentd-submit-workload)

## Requisitos previos
<a name="jobruns-flink-docker-flink-fluentd-prereqs"></a>

Antes de personalizar su imagen Docker, asegúrese de que cumple los siguientes requisitos previos:
+ Ha completado los pasos para la [Configuración del operador de Kubernetes de Flink para Amazon EMR en EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/jobruns-flink-kubernetes-operator-setup.html).
+ Ha instalado Docker en su entorno. Para obtener más información, consulte [Obtener Docker](https://docs.docker.com/get-docker/).

## Paso 1: recupere una imagen base del Amazon Elastic Container Registry
<a name="jobruns-flink-docker-flink-fluentd-retrieve-base"></a>

La imagen base contiene el tiempo de ejecución de Amazon EMR y los conectores que necesita para acceder a otros Servicios de AWS. Si utiliza Amazon EMR en EKS con Flink en la versión 6.14.0 o posterior, puede obtener las imágenes base en la Galería pública de Amazon ECR. Navegue por la galería para encontrar el enlace a la imagen y llevarla a su espacio de trabajo local. Por ejemplo, para la versión 6.14.0 de Amazon EMR, el comando `docker pull` le devuelve la imagen base estándar más reciente. Sustituya `emr-6.14.0:latest` por la versión de lanzamiento que desee.

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

Los siguientes son enlaces a la imagen de la galería Flink y a la imagen de la galería 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)

## Paso 2: personalizar una imagen base
<a name="jobruns-flink-docker-flink-fluentd-customize-image"></a>

Los pasos siguientes describen cómo personalizar la imagen base que ha extraído de Amazon ECR.

1. Cree un `Dockerfile` nuevo en su espacio de trabajo local.

1. Edite el `Dockerfile` y añada el siguiente contenido. Este `Dockerfile` usa la imagen del contenedor que extrajo de `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
   ```

   Utilice la siguiente configuración si está utilizando `Fluentd`.

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

1. Agregue comandos en el `Dockerfile` para personalizar la imagen base. El comando siguiente muestra cómo instalar bibliotecas de 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. En el mismo directorio en el que se creó `DockerFile`, ejecute el siguiente comando para crear la imagen de Docker. El campo que proporcione después del indicador de `-t` es su nombre personalizado para la imagen.

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

## Paso 3: publique una imagen personalizada
<a name="jobruns-flink-docker-flink-fluentd-publish-image"></a>

Ahora puede publicar la nueva imagen de Docker en su registro de Amazon ECR.

1. Ejecute el siguiente comando para crear un repositorio de Amazon ECR para almacenar la imagen de Docker. Proporcione un nombre para su repositorio, por ejemplo `emr_custom_repo.` Para obtener más información, consulte [Creación de un repositorio](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-create-repository) en la Guía del usuario de Amazon Elastic Container Registry.

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

1. Ejecute el siguiente comando para autenticarse en el registro predeterminado. Para obtener más información, consulte [Autenticación de sus registros personalizados](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) en la Guía del usuario de 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. Inserte la imagen. Para obtener más información, consulte [Insertar una imagen en Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-push-image) en la Guía del usuario de Amazon Elastic Container Registry.

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

## Paso 4: envíe una carga de trabajo de Flink en Amazon EMR mediante una imagen personalizada
<a name="jobruns-flink-docker-flink-fluentd-submit-workload"></a>

Realice los siguientes cambios en sus especificaciones `FlinkDeployment` para usar una imagen personalizada. Para ello, introduzca su propia imagen en la línea `spec.image` de sus especificaciones de implementación.

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

Para usar una imagen personalizada para su trabajo de Fluentd, introduzca su propia imagen en la línea `monitoringConfiguration.image` de sus especificaciones de implementación.

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