Personalização de imagens do Docker para o Flink e o FluentD
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.
Tópicos
Pré-requisitos
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.
-
Instalar o Docker em seu ambiente. Para obter mais informações, consulte Get Docker
.
Etapa 1: recuperar uma imagem base do Amazon Elastic Container Registry
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:
Etapa 2: personalizar uma imagem base
As etapas a seguir descrevem como personalizar a imagem base extraída do Amazon ECR.
-
Crie um novo
Dockerfile
em seu Workspace local. -
Edite o
Dockerfile
e adicione o conteúdo a seguir. EsteDockerfile
usa a imagem de contêiner que você extraiu 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
Use a configuração a seguir se estiver utilizando o
Fluentd
.FROM public.ecr.aws/emr-on-eks/fluentd/emr-7.3.0:latest USER root ### Add customization commands here #### USER hadoop:hadoop
-
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.3.0-flink:latest USER root RUN pip3 install --upgrade boto3 pandas numpy // For python 3 USER hadoop:hadoop
-
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
Agora você pode publicar a nova imagem do Docker no Amazon ECR Registry.
-
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 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>
-
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 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 -
Envie a imagem. Para obter mais informações, consulte Push an image to Amazon ECR 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
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