Personalización de las imágenes de Docker para Flink y FluentD
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.
Temas
Requisitos previos
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.
-
Ha instalado Docker en su entorno. Para obtener más información, consulte Obtener Docker
.
Paso 1: recupere una imagen base del Amazon Elastic Container Registry
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:
Paso 2: personalizar una imagen base
Los pasos siguientes describen cómo personalizar la imagen base que ha extraído de Amazon ECR.
-
Cree un
Dockerfile
nuevo en su espacio de trabajo local. -
Edite el
Dockerfile
y añada el siguiente contenido. EsteDockerfile
usa la imagen del contenedor que extrajo depublic.ecr.aws/emr-on-eks/flink/emr-7.3.0-flink:latest
.FROM public.ecr.aws/emr-on-eks/flink/emr-7.3.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.3.0:latest USER root ### Add customization commands here #### USER hadoop:hadoop
-
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.3.0-flink:latest USER root RUN pip3 install --upgrade boto3 pandas numpy // For python 3 USER hadoop:hadoop
-
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
Ahora puede publicar la nueva imagen de Docker en su registro de Amazon ECR.
-
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 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>
-
Ejecute el siguiente comando para autenticarse en el registro predeterminado. Para obtener más información, consulte Autenticación de sus registros personalizados 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 -
Inserte la imagen. Para obtener más información, consulte Insertar una imagen en Amazon ECR 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
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