

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Personalização de imagens do Docker para o Flink e o FluentD
<a name="jobruns-flink-docker-flink-fluentd"></a>

Siga as etapas a seguir para personalizar as imagens do Docker para o Amazon EMR no EKS com imagens do Apache Flink ou do FluentD. Isso inclui orientação técnica para obter uma imagem base, personalizá-la, publicá-la e enviar uma workload.

**Topics**
+ [Pré-requisitos](#jobruns-flink-docker-flink-fluentd-prereqs)
+ [Etapa 1: recuperar uma imagem base do Amazon Elastic Container Registry](#jobruns-flink-docker-flink-fluentd-retrieve-base)
+ [Etapa 2: personalizar uma imagem base](#jobruns-flink-docker-flink-fluentd-customize-image)
+ [Etapa 3: publicar uma imagem personalizada](#jobruns-flink-docker-flink-fluentd-publish-image)
+ [Etapa 4: enviar uma workload do Flink no Amazon EMR usando uma imagem personalizada](#jobruns-flink-docker-flink-fluentd-submit-workload)

## Pré-requisitos
<a name="jobruns-flink-docker-flink-fluentd-prereqs"></a>

Antes de personalizar a imagem do Docker, certifique-se de ter atendido aos seguintes pré-requisitos:
+ Concluir as etapas em [Setting up the Flink Kubernetes operator for Amazon EMR on EKS](https://docs.aws.amazon.com/emr/latest/EMR-on-EKS-DevelopmentGuide/jobruns-flink-kubernetes-operator-setup.html).
+ Instalar o Docker em seu ambiente. Para obter mais informações, consulte [Get Docker](https://docs.docker.com/get-docker/).

## Etapa 1: recuperar uma imagem base do Amazon Elastic Container Registry
<a name="jobruns-flink-docker-flink-fluentd-retrieve-base"></a>

A imagem base contém o runtime do Amazon EMR e os conectores necessários ​​para acessar outros Serviços da AWS. Se estiver usando o Amazon EMR no EKS com a versão 6.14.0 ou posterior do Flink, você pode obter as imagens base na galeria pública do Amazon ECR. Navegue pela galeria para encontrar o link da imagem e extraia-a para seu Workspace local. Por exemplo, para a versão 6.14.0 do Amazon EMR, o comando `docker pull` a seguir retorna a imagem base padrão mais recente. Substitua `emr-6.14.0:latest` pela versão de lançamento desejada.

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

Estes são os links para a imagem da galeria do Flink e a imagem da galeria do 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/fluente/emr-6.14.0 (](https://gallery.ecr.aws/emr-on-eks/fluentd/emr-6.14.0)

## Etapa 2: personalizar uma imagem base
<a name="jobruns-flink-docker-flink-fluentd-customize-image"></a>

As etapas a seguir descrevem como personalizar a imagem base extraída do Amazon ECR.

1. Crie um novo `Dockerfile` em seu Workspace local.

1. Edite o `Dockerfile` e adicione o conteúdo a seguir. Este `Dockerfile` usa a imagem de contêiner que você extraiu 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
   ```

   Use a configuração a seguir se estiver utilizando o `Fluentd`.

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

1. Adicione comandos no `Dockerfile` para personalizar a imagem base. O comando a seguir demonstra como instalar bibliotecas 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. No mesmo diretório em que o `DockerFile` foi criado, execute o comando a seguir para criar a imagem do Docker. O campo que você fornece após o sinalizador `-t` é o nome personalizado da imagem.

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

## Etapa 3: publicar uma imagem personalizada
<a name="jobruns-flink-docker-flink-fluentd-publish-image"></a>

Agora você pode publicar a nova imagem do Docker no Amazon ECR Registry.

1. Execute o comando a seguir para criar um repositório do Amazon ECR e armazenar a imagem do Docker. Forneça um nome para o repositório, como `emr_custom_repo.`. Para obter mais informações, consulte [Create a repository](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-create-repository) no Guia do usuário do Amazon Elastic Container Registry.

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

1. Execute o comando apresentado a seguir para realizar a autenticação em seu registro padrão. Para obter mais informações, consulte [Authenticate to your default registry](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-authenticate-registry) no Guia do usuário do 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. Envie a imagem. Para obter mais informações, consulte [Push an image to Amazon ECR](https://docs.aws.amazon.com/AmazonECR/latest/userguide/getting-started-cli.html#cli-push-image) no Guia do usuário do Amazon Elastic Container Registry.

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

## Etapa 4: enviar uma workload do Flink no Amazon EMR usando uma imagem personalizada
<a name="jobruns-flink-docker-flink-fluentd-submit-workload"></a>

Faça as alterações a seguir na especificação `FlinkDeployment` para usar uma imagem personalizada. Para fazer isso, insira sua própria imagem na linha `spec.image` da especificação de implantação.

```
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 uma imagem personalizada no trabalho do FluentD, insira sua própria imagem na linha `monitoringConfiguration.image` da especificação de implantação.

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