Personalização de imagens do Docker para o Flink e o FluentD - Amazon EMR

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.

Antes de personalizar a imagem do Docker, certifique-se de ter atendido aos seguintes pré-requisitos:

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:

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

  1. Crie um novo Dockerfile em seu Workspace local.

  2. 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.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
  3. 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
  4. 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>

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 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>
  2. 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
  3. 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>

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