¿Cómo creo AMI personalizadas de Amazon Linux para Amazon EKS?

5 minutos de lectura
0

Quiero crear una imagen de máquina de Amazon (AMI) personalizada de Amazon Linux para implementarla con un clúster de Amazon Elastic Kubernetes Service (Amazon EKS).

Breve descripción

Para crear una AMI de Amazon Linux personalizada para Amazon EKS, debe utilizar lo siguiente:

Nota: Packer funciona con una pila de AWS CloudFormation. La pila ejecuta una instancia m4.large o a1.large de Amazon Elastic Compute Cloud (Amazon EC2) (según la arquitectura de la AMI de destino). Packer aprovisiona la instancia. Después de aprovisionar la instancia con paquetes y binarios, Packer crea una AMI a partir de la instancia en ejecución.

Resolución

Nota: Si recibe errores al ejecutar comandos de la interfaz de la línea de comandos de AWS (AWS CLI), asegúrese de utilizar la versión más reciente de AWS CLI.

Instalar y configurar Packer

1.    Instale Packer desde el sitio web de HashiCorp.

2.    Configure las credenciales de su cuenta de AWS para que Packer pueda realizar llamadas a las operaciones de la API de AWS en su nombre. Puede utilizar credenciales estáticas (clave secreta y clave de acceso secreta), una variable de entorno, archivos de credenciales compartidos o un rol de Amazon EC2.

Nota: Para obtener más información sobre la configuración de las credenciales de AWS para Packer, consulte Authentication y IAM Task or Instance Role en el sitio web de HashiCorp.

Clonar el repositorio AMI de Amazon EKS

Para clonar el repositorio AMI de Amazon EKS en su estación de trabajo, ejecute el siguiente comando:

$ git clone https://github.com/awslabs/amazon-eks-ami && cd amazon-eks-ami

Nota: Packer se ejecuta a través de una serie de objetivos de makefile con eks-worker-al2.json como especificación de compilación. El proceso de compilación utiliza el compilador amazon-ebs Packer (desde el sitio web de HashiCorp) y lanza una instancia. El aprovisionador de shell de Packer (desde el sitio web de HashiCorp) ejecuta el script install-worker.sh en la instancia para instalar el software y realizar otras tareas de configuración. A continuación, Packer crea una AMI a partir de la instancia y la termina una vez creada la AMI.

Proporcionar una AMI de origen personalizada

Para configurar una AMI de origen personalizada, defina las variables source_ami_id, source_ami_owners y aws_region en el archivo de configuración de Packer eks-worker-al2.json. Por ejemplo:

"source_ami_id": "SOURCE_AMI_ID",      # Enter the ID of your source image
"source_ami_owners": "AWS_ACCOUNT_ID", # Enter the account where this image is stored
"aws_region": "AWS_DEFAULT_REGION",    # Enter the AWS Region of the source AMI

Para proporcionar binarios de trabajo personalizados, siga los pasos de la sección (Opcional) Proporcionar sus propios binarios de Kubernetes.

Para compilar la imagen con los binarios predeterminados de Kubernetes de AWS, siga los pasos de la sección Crear una AMI de trabajo de Amazon EKS con binarios predeterminados.

(Opcional) Proporcionar sus propios binarios de Kubernetes

Cuando Packer aprovisiona la instancia, los binarios se descargan de forma predeterminada del bucket público de Amazon Simple Storage Service (Amazon S3) de Amazon EKS amazon-eks en us-west-2. Para obtener más información, consulte el archivo install-worker.sh.

1.    Para examinar los binarios disponibles que se proporcionan en el bucket predeterminado, ejecute el siguiente comando de AWS CLI

$ aws s3 ls s3://amazon-eks
$ aws s3 ls s3://amazon-eks/kubernetes_version/kubernetes_build_date/bin/linux/arch/

Nota: Sustituya amazon-eks, kubernetes_version, kubernetes_build_date y arch por sus valores.

Importante: Para descargar sus propios binarios al nodo de trabajo durante el aprovisionamiento, debe reflejar la estructura de carpeta de bucket de amazon-eks que se utiliza en el script install-worker.sh.

2.    Una vez que los binarios estén preparados mediante su propio proceso de compilación, cópielos en su propio bucket de S3 mediante la AWS CLI.

Este es un ejemplo que usa un binario de kubelet personalizado:

$ aws s3 cp kubelet s3://my-custom-bucket/kubernetes_version/kubernetes_build_date/bin/linux/arch/kubelet

Nota: Sustituya my-custom-bucket, amazon-eks, kubernetes_version, kubernetes_build_date y arch por sus valores.

Importante: Debe proporcionar todos los binarios que figuran en el bucket predeterminado de amazon-eks para una combinación específica de kubernetes_version, kubernetes_build_date y arch. Se debe acceder a estos binarios mediante las credenciales de AWS Identity and Access Management (IAM) configuradas en la sección Instalar y configurar HashiCorp Packer.

Compilar una AMI de trabajo de Amazon EKS mediante binarios personalizados

Para iniciar el proceso de compilación, utilice la AMI de origen configurada en eks-worker-al2.json para invocar make con parámetros. Por ejemplo:

$ make k8s \
    binary_bucket_name=my-custom-bucket \
    binary_bucket_region=eu-west-1 \
    kubernetes_version=1.14.9 \
    kubernetes_build_date=2020-01-22

Nota: Confirme que los parámetros binary_bucket_name, binary_bucket_region, kubernetes_version y kubernetes_build_date coinciden con la ruta a los binarios de Amazon S3.

Compilar una AMI de trabajo de Amazon EKS mediante binarios predeterminados

1.    Para compilar la AMI de trabajo de Amazon EKS con una AMI base personalizada y los binarios de Kubernetes predeterminados (más recientes), confirme que el archivo eks-worker-al2.json esté actualizado con la AMI base correcta.

2.    Para iniciar el proceso de compilación proporcionando la versión de Kubernetes como parámetro, ejecute el siguiente comando:

$ make 1.14  # Build a Amazon EKS Worker AMI for k8s 1.14

Nota: Para configuraciones más avanzadas, debe modificar los archivos de configuración del repositorio amazon-eks-ami de AWS GitHub antes de activar la compilación.

Consejo: Consulte AWS GitHub para ver los problemas comunes con el uso de la configuración de Packer para compilar AMI personalizadas.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años