Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Tutorial: Implementar una aplicación en Amazon EKS
En este tutorial, aprenderá a implementar una aplicación en contenedores en Amazon Elastic Kubernetes Service mediante CodeCatalyst un EKS flujo de trabajo de Amazon, Amazon y algunos otros servicios. AWS La aplicación implementada es un sencillo mensaje de «¡Hola, mundo!» sitio web creado sobre una imagen de Docker del servidor web Apache. En el tutorial se explica el trabajo de preparación necesario, como la configuración de una máquina de desarrollo y un EKS clúster de Amazon, y, a continuación, se describe cómo crear un flujo de trabajo para crear la aplicación e implementarla en el clúster.
Una vez finalizada la implementación inicial, el tutorial le indica cómo realizar un cambio en la fuente de la aplicación. Este cambio hace que se cree una nueva imagen de Docker y se envíe a su repositorio de imágenes de Docker con la nueva información de revisión. A continuación, la nueva revisión de la imagen de Docker se implementa en AmazonEKS.
sugerencia
En lugar de seguir este tutorial, puedes usar un plano que haga una EKS configuración completa de Amazon por ti. Deberás usar el plan de implementación de EKS aplicaciones. Para obtener más información, consulte Crear un proyecto con un plano.
Temas
- Requisitos previos
- Paso 1: Configura tu máquina de desarrollo
- Paso 2: Crear un EKS clúster de Amazon
- Paso 3: Crear un repositorio de ECR imágenes de Amazon
- Paso 4: Añadir los archivos fuente
- Paso 5: Crear AWS roles
- Paso 6: Añadir AWS roles a CodeCatalyst
- Paso 7: actualice el ConfigMap
- Paso 8: Crea y ejecuta un flujo de trabajo
- Paso 9: Realice un cambio en los archivos fuente
- Limpieza
Requisitos previos
Antes de comenzar este tutorial:
-
Necesitas un CodeCatalyst espacio en Amazon con una AWS cuenta conectada. Para obtener más información, consulte Crear un espacio.
-
En tu espacio, necesitas un proyecto vacío llamado:
codecatalyst-eks-project
Usa la opción Empezar desde cero para crear este proyecto.
Para obtener más información, consulte Crear un proyecto vacío en Amazon CodeCatalyst.
-
En tu proyecto, necesitas un repositorio de CodeCatalyst código fuente vacío llamado:
codecatalyst-eks-source-repository
Para obtener más información, consulte Almacene código y colabore en él con los repositorios de código fuente en CodeCatalyst.
-
En su proyecto, necesita un entorno de CodeCatalyst CI/CD (no un entorno de desarrollo) llamado:
codecatalyst-eks-environment
Configure este entorno de la siguiente manera:
-
Elija cualquier tipo, como el de no producción.
-
Conecta tu AWS cuenta a ella.
-
Para el IAMrol predeterminado, elige cualquier rol. Especificará un rol diferente más adelante.
Para obtener más información, consulte Implementación en Cuentas de AWS y VPCs.
-
Paso 1: Configura tu máquina de desarrollo
El primer paso de este tutorial consiste en configurar una máquina de desarrollo con algunas herramientas que utilizarás a lo largo de este tutorial. Estas herramientas son:
-
la
eksctl
utilidad: para la creación de clústeres -
la
kubectl
utilidad: un requisito previo paraeksctl
-
el AWS CLI — también es un requisito previo para
eksctl
Puede instalar estas herramientas en su máquina de desarrollo actual si tiene una, o puede usar un entorno de CodeCatalyst desarrollo, que está basado en la nube. La ventaja de un CodeCatalyst entorno de desarrollo es que es fácil de configurar y desmontar, y está integrado con otros CodeCatalyst servicios, lo que te permite completar este tutorial en menos pasos.
En este tutorial se asume que utilizarás un entorno CodeCatalyst de desarrollo.
Las siguientes instrucciones describen una forma rápida de lanzar un CodeCatalyst entorno de desarrollo y configurarlo con las herramientas necesarias, pero si desea obtener instrucciones detalladas, consulte:
-
Creación de un entorno de desarrollo en esta guía.
-
Instalación de kubectl en la Guía del usuario de Amazon EKS.
-
Instalación o actualización de eksctl en la Guía del EKSusuario de Amazon.
-
Instalación o actualización de la última versión de la Guía AWS CLI del AWS Command Line Interface usuario.
Para lanzar un entorno de desarrollo
Abra la CodeCatalyst consola en https://codecatalyst.aws/
. -
Navegue hasta su proyecto,
codecatalyst-eks-project
. -
En el panel de navegación, elija Código y, a continuación, elija Repositorios de origen.
-
Elige el nombre de tu repositorio fuente,
codecatalyst-eks-source-repository
. -
En la parte superior, selecciona Crear entorno de desarrollo y, a continuación, selecciona AWS Cloud9 (en el navegador).
-
Asegúrese de que estén seleccionadas la opción Trabajar en la rama existente y la rama principal y, a continuación, elija Crear.
Tu entorno de desarrollo se abre en una nueva pestaña del navegador y tu repositorio (
codecatalyst-eks-source-repository
) se clona en ella.
Para instalar y configurar kubectl
-
En la terminal Dev Environment, introduce:
curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl
-
Introduzca:
chmod +x ./kubectl
-
Ingresa:
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
-
Ingresa:
echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
-
Ingresa:
kubectl version --short --client
-
Compruebe que aparezca una versión.
Ya está instalada
kubectl
.
Para instalar y configurar eksctl
nota
eksctl
no es estrictamente obligatorio porque puede usarlo kubectl
en su lugar. Sin embargo, eksctl
tiene la ventaja de automatizar gran parte de la configuración del clúster y, por lo tanto, es la herramienta recomendada para este tutorial.
-
En la terminal Dev Environment, introduzca:
curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
-
Introduzca:
sudo cp /tmp/eksctl /usr/bin
-
Ingresa:
eksctl version
-
Compruebe que aparezca una versión.
Ya está instalada
eksctl
.
Para comprobar que AWS CLI está instalado
-
En la terminal Dev Environment, introduzca:
aws --version
-
Compruebe que aparezca una versión para comprobar que AWS CLI está instalada.
Complete los procedimientos restantes para configurarlo AWS CLI con los permisos de acceso necesarios AWS.
Para configurar el AWS CLI
Debe configurarlo AWS CLI con claves de acceso y un token de sesión para darle acceso a AWS los servicios. Las siguientes instrucciones proporcionan una forma rápida de configurar las claves y el token, pero si desea obtener instrucciones detalladas, consulte Configuración AWS CLI en la Guía del AWS Command Line Interface usuario.
-
Cree un usuario del Centro de IAM identidades, de la siguiente manera:
Inicie sesión en AWS Management Console y abra la AWS IAM Identity Center consola en https://console.aws.amazon.com/singlesignon/
. (Puede que tenga que seleccionar Activar si nunca ha iniciado sesión en IAM Identity Center).
nota
Asegúrese de iniciar sesión con el Cuenta de AWS que está conectado a su CodeCatalyst espacio. Para comprobar qué cuenta está conectada, ve a tu espacio y selecciona la pestaña de AWScuentas. Para obtener más información, consulte Crear un espacio.
-
En el panel de navegación, elija Users y luego elija la opción Add user.
-
En Nombre de usuario, ingresa:
codecatalyst-eks-user
-
En Contraseña, selecciona Generar una contraseña de un solo uso que puedas compartir con este usuario.
-
En Dirección de correo electrónico y Confirmar dirección de correo electrónico, introduzca una dirección de correo electrónico que no exista aún en IAM Identity Center.
-
En Nombre, introduzca:
codecatalyst-eks-user
-
En Apellido, introduzca:
codecatalyst-eks-user
-
En Nombre para mostrar, mantenga:
codecatalyst-eks-user codecatalyst-eks-user
-
Elija Next (Siguiente).
-
En la página Añadir usuario a grupos, selecciona Siguiente.
-
En la página Revisar y agregar usuario, revise la información y elija Agregar usuario.
Aparece un cuadro de diálogo de contraseña de un solo uso.
-
Seleccione Copiar y, a continuación, pegue la información de inicio de sesión en un archivo de texto. La información de inicio de sesión consta del portal de AWS accesoURL, un nombre de usuario y una contraseña de un solo uso.
-
Elija Close.
-
Cree un conjunto de permisos, de la siguiente manera:
-
En el panel de navegación, elija Conjuntos de permisos y, a continuación, elija Crear conjunto de permisos.
-
Elija un conjunto de permisos predefinido y, a continuación, seleccione AdministratorAccess. Esta política proporciona permisos completos a todos Servicios de AWS.
-
Elija Next (Siguiente).
-
En Nombre del conjunto de permisos, elimine
AdministratorAccess
e introduzca:codecatalyst-eks-permission-set
-
Elija Next (Siguiente).
-
En la página Revisión, revise la información y, a continuación, elija Crear grupo.
-
-
Asigne el conjunto de permisos a
codecatalyst-eks-user
, de la siguiente manera:-
En el panel de navegación, elija y Cuentas de AWS, a continuación, active la casilla de verificación situada junto a la casilla en la Cuenta de AWS que ha iniciado sesión actualmente.
-
Seleccione Asignar usuarios o grupos.
-
Elija la pestaña Users.
-
Seleccione la casilla situada junto a
codecatalyst-eks-user
. -
Elija Next (Siguiente).
-
Seleccione la casilla situada junto a
codecatalyst-eks-permission-set
. -
Elija Next (Siguiente).
-
Revise la información y seleccione Enviar.
Ahora tienes asignada
codecatalyst-eks-user
ycodecatalyst-eks-permission-set
a la tuya Cuenta de AWS, uniéndolas.
-
-
Obtenga las claves
codecatalyst-eks-user
de acceso y el token de sesión de la siguiente manera:-
Asegúrese de tener el portal de AWS acceso y el nombre de usuario URL y la contraseña de un solo uso del mismo
codecatalyst-eks-user
. Deberías haber copiado esta información en un editor de texto anteriormente.nota
Si no dispone de esta información, vaya a la página de
codecatalyst-eks-user
detalles del IAM Identity Center, seleccione Restablecer contraseña, Generar una contraseña de un solo uso [...] y vuelva a restablecer la contraseña para mostrar la información en la pantalla. -
Cerrar sesión en AWS.
-
Pegue el portal de AWS acceso URL en la barra de direcciones del navegador.
-
Inicie sesión con:
-
Nombre de usuario:
codecatalyst-eks-user
-
Contraseña:
one-time-password
-
-
En Establecer nueva contraseña, introduzca una nueva contraseña y elija Establecer nueva contraseña.
Aparece un cuadro de Cuenta de AWS en la pantalla.
-
Elija y Cuenta de AWS, a continuación, elija el nombre de la persona Cuenta de AWS a la que ha asignado el
codecatalyst-eks-user
usuario y el conjunto de permisos. -
Junto a
codecatalyst-eks-permission-set
, seleccione Línea de comandos o Acceso mediante programación. -
Copia los comandos en el centro de la página. Tienen un aspecto similar al siguiente:
export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" export AWS_SESSION_TOKEN="
session-token
"... dónde
session-token
es una cadena larga y aleatoria.
-
-
Añada las claves de acceso y el token de sesión al AWS CLI, de la siguiente manera:
-
Regrese a su CodeCatalyst entorno de desarrollo.
-
En la línea de comandos del terminal, pegue los comandos que copió. Pulse Intro.
Ahora lo ha configurado AWS CLI con claves de acceso y un token de sesión. Ahora puede utilizarla AWS CLI para completar las tareas requeridas en este tutorial.
importante
Si en algún momento de este tutorial ves mensajes similares a:
Unable to locate credentials. You can configure credentials by running "aws configure".
O bien:
ExpiredToken: The security token included in the request is expired
... es porque tu AWS CLI sesión ha caducado. En este caso, no ejecute el
aws configure
comando. En su lugar, siga las instrucciones del paso 4 de este procedimiento, que comienza conObtain codecatalyst-eks-user's access key and session token
la actualización de la sesión.
-
Paso 2: Crear un EKS clúster de Amazon
En esta sección, crearás un clúster en AmazonEKS. En las instrucciones que aparecen a continuación se describe una forma rápida de crear el clúster medianteeksctl
, pero si quieres instrucciones detalladas, consulta:
-
Cómo empezar a usar eksctl en la Guía del usuario de Amazon EKS
o
-
Introducción a la consola y a la Guía del EKS usuario de Amazon ( AWS CLI en este tema se proporcionan
kubectl
instrucciones para crear el clúster)
nota
La CodeCatalyst integración con Amazon no admite clústeres privadosEKS.
Antes de empezar
Asegúrese de haber completado las siguientes tareas en su máquina de desarrollo:
-
Instaló la
eksctl
utilidad. -
Se instaló la
kubectl
utilidad. -
La instalé AWS CLI y la configuré con claves de acceso y un token de sesión.
Para obtener información sobre cómo realizar estas tareas, consultePaso 1: Configura tu máquina de desarrollo.
Pasos para crear un clúster
importante
No utilices la interfaz de usuario del EKS servicio de Amazon para crear el clúster porque el clúster no se configurará correctamente. Usa la eksctl
utilidad, tal y como se describe en los pasos siguientes.
-
Ve a tu entorno de desarrollo.
-
Cree un clúster y nodos:
eksctl create cluster --name
codecatalyst-eks-cluster
--regionus-west-2
Donde:
-
codecatalyst-eks-cluster
se sustituye por el nombre que desee darle al clúster. -
us-west-2
se sustituye por tu región.
Después de 10 a 20 minutos, aparecerá un mensaje similar al siguiente:
EKS cluster "codecatalyst-eks-cluster" in "us-west-2" region is ready
nota
Verás varios
waiting for CloudFormation stack
mensajes mientras creas AWS el clúster. Esto es normal. -
-
Comprueba que el clúster se haya creado correctamente:
kubectl cluster-info
Verás un mensaje similar al siguiente, que indica que la creación del clúster se ha realizado correctamente:
Kubernetes master is running at https://
long-string
.gr7.us-west-2.eks.amazonaws.com CoreDNS is running at https://long-string
.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Paso 3: Crear un repositorio de ECR imágenes de Amazon
En esta sección, creará un repositorio de imágenes privado en Amazon Elastic Container Registry (AmazonECR). Este repositorio almacena la imagen de Docker para el tutorial.
Para obtener más información sobre AmazonECR, consulta la Guía del usuario de Amazon Elastic Container Registry.
Para crear un repositorio de imágenes en Amazon ECR
-
Ve a tu entorno de desarrollo.
-
Crea un repositorio vacío en AmazonECR:
aws ecr create-repository --repository-name
codecatalyst-eks-image-repo
Reemplazar
codecatalyst-eks-image-repo
con el nombre que quieras dar al ECR repositorio de Amazon.En este tutorial se asume que has asignado un nombre a tu repositorio
codecatalyst-eks-image-repo
. -
Muestra los detalles del ECR repositorio de Amazon:
aws ecr describe-repositories \ --repository-names codecatalyst-eks-image-repo
-
Anote el
“repositoryUri”:
valor, por ejemplo,111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
.Lo necesitará más adelante cuando añada el repositorio a su flujo de trabajo.
Paso 4: Añadir los archivos fuente
En esta sección, añadirá los archivos fuente de la aplicación a su repositorio de código fuente (codecatalyst-eks-source-repository
). Se componen de:
-
Un
index.html
archivo: muestra un mensaje de «¡Hola, mundo!» mensaje en el navegador. -
Un archivo de Docker: describe la imagen base que se va a utilizar para la imagen de Docker y los comandos de Docker que se van a aplicar a ella.
-
Un
deployment.yaml
archivo: el manifiesto de Kubernetes que define el servicio y la implementación de Kubernetes.
La estructura de carpetas es la siguiente:
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
index.html
El index.html
archivo muestra el mensaje «¡Hola, mundo!» mensaje en el navegador.
Para añadir el archivo index.html
-
Ve a tu entorno de desarrollo.
-
En
codecatalyst-eks-source-repository
, crea una carpeta llamadapublic-html
. -
En
/public-html
, cree un archivo llamadoindex.html
con el siguiente contenido:<html> <head> <title>Hello World</title> <style> body { background-color: black; text-align: center; color: white; font-family: Arial, Helvetica, sans-serif; } </style> </head> <body> <h1>Hello, World!</h1> </body> </html>
-
En la línea de comandos del terminal, escriba:
cd /projects/codecatalyst-eks-source-repository
-
Agrega, confirma y presiona:
git add . git commit -m "add public-html/index.html" git push
index.html
Se añade a tu repositorio en unapublic-html
carpeta.
Dockerfile
El Dockerfile describe la imagen base de Docker que se debe utilizar y los comandos de Docker que se deben aplicar a ella. Para obtener más información sobre el Dockerfile, consulta la Referencia de Dockerfile.
El Dockerfile especificado aquí indica que se debe usar la imagen base de Apache 2.4 (). httpd
También incluye instrucciones para copiar un archivo fuente llamado index.html
a una carpeta del servidor Apache que sirve páginas web. La EXPOSE
instrucción del Dockerfile indica a Docker que el contenedor está escuchando en el puerto 80.
Para añadir el Dockerfile
-
En
codecatalyst-eks-source-repository
, cree un archivo llamadoDockerfile
con el siguiente contenido:FROM httpd:2.4 COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html EXPOSE 80
No incluya una extensión de archivo.
importante
El Dockerfile debe residir en la carpeta raíz del repositorio. El
Docker build
comando del flujo de trabajo espera que esté ahí. -
Agrega, confirma y presiona:
git add . git commit -m "add Dockerfile" git push
El Dockerfile se añade a tu repositorio.
deployment.yaml
En esta sección, agregas un deployment.yaml
archivo a tu repositorio. El deployment.yaml
archivo es un manifiesto de Kubernetes que define dos tipos o tipos de recursos de Kubernetes que se van a ejecutar: un «servicio» y un «despliegue».
-
El «servicio» despliega un balanceador de carga en Amazon. EC2 El balanceador de carga te proporciona un puerto público URL y estándar con acceso a Internet (puerto 80) que puedes usar para buscar «¡Hola, mundo!» "Hello, World!".
-
La «implementación» despliega tres módulos y cada uno de ellos contendrá un contenedor Docker con el mensaje «¡Hola, mundo!» "Hello, World!". Los tres pods se implementan en los nodos que se crearon al crear el clúster.
El manifiesto de este tutorial es breve; sin embargo, un manifiesto puede incluir cualquier tipo de recursos de Kubernetes, como pods, trabajos, entradas y políticas de red. Además, puedes usar varios archivos de manifiesto si tu implementación es compleja.
Para añadir un archivo deployment.yaml
-
En
codecatalyst-eks-source-repository
, crea una carpeta llamada.Kubernetes
-
En
/Kubernetes
, cree un archivo llamadodeployment.yaml
con el siguiente contenido:apiVersion: v1 kind: Service metadata: name: my-service labels: app: my-app spec: type: LoadBalancer selector: app: my-app ports: - protocol: TCP port: 80 targetPort: 80 --- apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: - name: codecatalyst-eks-container # The $REPOSITORY_URI and $IMAGE_TAG placeholders will be replaced by actual values supplied by the build action in your workflow image: $REPOSITORY_URI:$IMAGE_TAG ports: - containerPort: 80
-
Agrega, confirma y envía:
git add . git commit -m "add Kubernetes/deployment.yaml" git push
El
deployment.yaml
archivo se añade a tu repositorio en una carpeta llamadaKubernetes
.
Ahora ha agregado todos sus archivos fuente.
Tómate un momento para comprobar tu trabajo y asegurarte de que has colocado todos los archivos en las carpetas correctas. La estructura de carpetas es la siguiente:
|— codecatalyst-eks-source-repository |— Kubernetes |— deployment.yaml |— public-html | |— index.html |— Dockerfile
Paso 5: Crear AWS roles
En esta sección, crearás AWS IAM los roles que tu CodeCatalyst flujo de trabajo necesitará para funcionar. Estas funciones son las siguientes:
-
Función de creación: concede a la acción de CodeCatalyst creación (en el flujo de trabajo) permiso para acceder a tu AWS cuenta y escribir a Amazon ECR y AmazonEC2.
-
Función de implementación: otorga a la acción de clúster CodeCatalyst Implementar en Kubernetes (en el flujo de trabajo) el permiso para acceder a tu cuenta AWS y a Amazon. EKS
Para obtener más información sobre IAM los roles, consulta los IAMroles en la Guía del AWS Identity and Access Management usuario.
nota
Para ahorrar tiempo, puede crear un único rol, denominado CodeCatalystWorkflowDevelopmentRole-
rol, en lugar de los dos roles enumerados anteriormente. Para obtener más información, consulte Crear el CodeCatalystWorkflowDevelopmentRole-spaceNamerol para su cuenta y su espacio. Tenga en cuenta que el spaceName
CodeCatalystWorkflowDevelopmentRole-
rol tiene permisos muy amplios, lo que puede suponer un riesgo para la seguridad. Te recomendamos que solo utilices este rol en los tutoriales y en situaciones en las que la seguridad sea un problema menor. En este tutorial se da por sentado que está creando los dos roles enumerados anteriormente.spaceName
Para crear las funciones de creación e implementación, complete la siguiente serie de procedimientos.
1. Para crear una política de confianza para ambos roles
-
Ve a tu entorno de desarrollo.
-
En el
Cloud9-
directorio, cree un archivo llamadolong-string
codecatalyst-eks-trust-policy.json
con el siguiente contenido:{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
2. Para crear la política de compilación para el rol de compilación
-
En el
Cloud9-
directorio, cree un archivo llamadolong-string
codecatalyst-eks-build-policy.json
con el siguiente contenido:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:*", "ec2:*" ], "Resource": "*" } ] }
nota
La primera vez que se utilice el rol para ejecutar acciones de flujo de trabajo, utilice el comodín en la declaración de política de recursos y, a continuación, defina la política con el nombre del recurso cuando esté disponible.
"Resource": "*"
3. Para crear la política de despliegue para el rol de despliegue
-
En el
Cloud9-
directorio, cree un archivo denominadolong-string
codecatalyst-eks-deploy-policy.json
con el siguiente contenido:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "eks:DescribeCluster", "eks:ListClusters" ], "Resource": "*" } ] }
nota
La primera vez que se utilice el rol para ejecutar acciones de flujo de trabajo, utilice el comodín en la declaración de política de recursos y, a continuación, defina la política con el nombre del recurso cuando esté disponible.
"Resource": "*"
Ahora ha agregado tres documentos de políticas a su entorno de desarrollo. La estructura de su directorio ahora tiene este aspecto:
|— Cloud9-
long-string
|— .c9 |— codecatalyst-eks-source-repository |— Kubernetes |— public-html |— Dockerfile codecatalyst-eks-build-policy.json codecatalyst-eks-deploy-policy.json codecatalyst-eks-trust-policy.json
4. Para añadir la política de compilación a AWS
-
En la terminal Dev Environment, ingresa:
cd /projects
-
Introduzca:
aws iam create-policy \ --policy-name codecatalyst-eks-build-policy \ --policy-document file://codecatalyst-eks-build-policy.json
-
Pulse Intro.
-
En el resultado del comando, anote el
"arn":
valor, por ejemplo,arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
. Lo necesitará ARN más adelante.
5. Para añadir la política de despliegue a AWS
-
Introduzca:
aws iam create-policy \ --policy-name codecatalyst-eks-deploy-policy \ --policy-document file://codecatalyst-eks-deploy-policy.json
-
Pulse Intro.
-
En el resultado del comando, anote el
"arn":
valor de la política de despliegue, por ejemplo,arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
. Lo necesitará ARN más adelante.
6. Para crear el rol de compilación
-
Introduzca:
aws iam create-role \ --role-name codecatalyst-eks-build-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Pulse Intro.
-
Ingresa:
aws iam attach-role-policy \ --role-name codecatalyst-eks-build-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
Donde
arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
se sustituye por la política ARN de construcción que ha indicado anteriormente. -
Pulse Intro.
-
En la línea de comandos del terminal, escriba:
aws iam get-role \ --role-name codecatalyst-eks-build-role
-
Pulse Intro.
-
Anote el
"Arn":
valor del rol, por ejemplo,arn:aws:iam::111122223333:role/codecatalyst-eks-build-role
. Lo necesitarás ARN más tarde.
7. Para crear el rol de despliegue
-
Introduzca:
aws iam create-role \ --role-name codecatalyst-eks-deploy-role \ --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
-
Pulse Intro.
-
Ingresa:
aws iam attach-role-policy \ --role-name codecatalyst-eks-deploy-role \ --policy-arn
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
Donde
arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
se sustituye por la política ARN de despliegue que ha indicado anteriormente. -
Pulse Intro.
-
Introduzca:
aws iam get-role \ --role-name codecatalyst-eks-deploy-role
-
Pulse Intro.
-
Anote el
"Arn":
valor del rol, por ejemplo,arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
. Lo necesitarás ARN más tarde.
Ya ha creado funciones de creación e implementación y ha anotado sus funcionesARNs.
Paso 6: Añadir AWS roles a CodeCatalyst
En este paso, añades el rol de creación (codecatalyst-eks-build-role
) y el rol de despliegue (codecatalyst-eks-deploy-role
) al rol Cuenta de AWS que has conectado a tu espacio. Esto hace que los roles estén disponibles para su uso en su flujo de trabajo.
Para añadir funciones de creación e implementación a su Cuenta de AWS
-
En la CodeCatalyst consola, navega hasta tu espacio.
-
En la parte superior, selecciona Configuración.
-
En el panel de navegación, selecciona AWS cuentas. Aparece una lista de cuentas.
-
En la columna Nombre CodeCatalyst para mostrar de Amazon, copia el nombre para mostrar del Cuenta de AWS lugar en el que creaste las funciones de creación e implementación. (Puede ser un número). Necesitarás este valor más adelante, al crear tu flujo de trabajo.
-
Elige el nombre para mostrar.
-
Seleccione Administrar funciones en la consola de AWS administración.
Aparece la página Añadir IAM rol al CodeCatalyst espacio de Amazon. Puede que tengas que iniciar sesión para acceder a la página.
-
Selecciona Añadir un rol existente en el que hayas creado IAM.
Aparece una lista desplegable. La lista muestra las funciones de creación e implementación, así como cualquier otra IAM función con una política de confianza que incluya a los directores
codecatalyst-runner.amazonaws.com
ycodecatalyst.amazonaws.com
al servicio. -
En la lista desplegable, agrega:
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
nota
Si lo ve
The security token included in the request is invalid
, es posible que se deba a que no tiene los permisos adecuados. Para solucionar este problema, cierra sesión AWS como vuelve a iniciar sesión con la AWS cuenta que utilizaste al crear tu CodeCatalyst espacio. -
-
Vuelve a la CodeCatalyst consola y actualiza la página.
Las funciones de creación e implementación deberían aparecer ahora en IAMFunciones.
Estos roles ahora están disponibles para su uso en los CodeCatalyst flujos de trabajo.
Paso 7: actualice el ConfigMap
Debe añadir la función de despliegue que creó al ConfigMap
archivo de Kubernetes Paso 5: Crear AWS roles para que la acción Implementar en el clúster de Kubernetes (en su flujo de trabajo) pueda acceder a su clúster e interactuar con él. Puedes usar o para realizar esta tareaeksctl
. kubectl
Para configurar el archivo de Kubernetes ConfigMap mediante eksctl
-
En la terminal Dev Environment, introduzca:
eksctl create iamidentitymapping --cluster
codecatalyst-eks-cluster
--arnarn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
--group system:masters --usernamecodecatalyst-eks-deploy-role
--regionus-west-2
Donde:
-
codecatalyst-eks-cluster
se sustituye por el nombre del EKS clúster de Amazon. -
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
se sustituye por el rol ARN de despliegue en el que creastePaso 5: Crear AWS roles. -
codecatalyst-eks-deploy-role
(junto a--username
) se sustituye por el nombre del rol de despliegue en el que creastePaso 5: Crear AWS roles.nota
Si ha decidido no crear un rol de despliegue, sustitúyalo
codecatalyst-eks-deploy-role
por el nombre delCodeCatalystWorkflowDevelopmentRole-
rol. Para obtener más información acerca de este rol, consulte Paso 5: Crear AWS roles.spaceName
-
us-west-2
se sustituye por tu región.
Para obtener más información sobre este comando, consulte Administrar IAM usuarios y roles
. Aparece un mensaje similar al siguiente:
2023-06-09 00:58:29 [ℹ] checking arn arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role against entries in the auth ConfigMap 2023-06-09 00:58:29 [ℹ] adding identity "arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role" to auth ConfigMap
-
Para configurar el archivo de Kubernetes ConfigMap mediante kubectl
-
En la terminal Dev Environment, ingresa:
kubectl edit configmap -n kube-system aws-auth
El ConfigMap archivo aparece en la pantalla.
-
Añada el texto en cursiva roja:
# Please edit the object below. Lines beginning with a '#' will be ignored, # and an empty file will abort the edit. If an error occurs while saving this file will be # reopened with the relevant failures. # apiVersion: v1 data: mapRoles: | - groups: - system:bootstrappers - system:nodes rolearn: arn:aws:iam::111122223333:role/eksctl-codecatalyst-eks-cluster-n-NodeInstanceRole-16BC456ME6YR5 username: system:node:{{EC2PrivateDNSName}}
- groups: - system:masters rolearn: arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role username: codecatalyst-eks-deploy-role
mapUsers: | [] kind: ConfigMap metadata: creationTimestamp: "2023-06-08T19:04:39Z" managedFields: ...Donde:
-
arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
se sustituye por el rol ARN de despliegue en Paso 5: Crear AWS roles el que creaste. -
codecatalyst-eks-deploy-role
(junto ausername:
) se sustituye por el nombre del rol de despliegue en el que creastePaso 5: Crear AWS roles.nota
Si ha decidido no crear un rol de despliegue, sustitúyalo
codecatalyst-eks-deploy-role
por el nombre delCodeCatalystWorkflowDevelopmentRole-
rol. Para obtener más información acerca de este rol, consulte Paso 5: Crear AWS roles.spaceName
Para obtener más información, consulta Cómo habilitar el acceso IAM principal a tu clúster en la Guía del EKS usuario de Amazon.
-
Ahora ha asignado la función de implementación y, por extensión, la EKS acción Implementar en Amazon, system:masters
permisos para su clúster de Kubernetes.
Paso 8: Crea y ejecuta un flujo de trabajo
En este paso, creas un flujo de trabajo que toma tus archivos fuente, los compila en una imagen de Docker y, a continuación, despliega la imagen en grupos de árboles de tu clúster de AmazonEKS.
El flujo de trabajo consta de los siguientes componentes básicos que se ejecutan de forma secuencial:
-
Un disparador: este activador inicia la ejecución automática del flujo de trabajo al introducir un cambio en el repositorio de origen. Para obtener más información acerca de los disparadores, consulte Iniciar un flujo de trabajo, ejecutarlo automáticamente mediante activadores.
-
Una acción de compilación (
BuildBackend
): al activarse, la acción crea la imagen de Docker mediante el Dockerfile y envía la imagen a Amazon. ECR La acción de compilación también actualiza las$IMAGE_TAG
variables$REPOSITORY_URI
y deldeployment.yaml
archivo con los valores correctos y, a continuación, crea un artefacto de salida de este archivo y de cualquier otro archivo de la carpeta.Kubernetes
En este tutorial, el único archivo de laKubernetes
carpeta esdeployment.yaml
, pero puede incluir más archivos. El artefacto se utiliza como entrada para la acción de despliegue, que es la siguiente.Para obtener más información sobre la acción de construcción, consulteConstruir con flujos de trabajo.
-
Una acción de despliegue (
DeployToEKS
): al finalizar la acción de compilación, la acción de despliegue busca el artefacto de salida generado por la acción de compilación (Manifests
) y encuentra eldeployment.yaml
archivo que contiene. A continuación, la acción sigue las instrucciones deldeployment.yaml
archivo para ejecutar tres módulos, cada uno con un único mensaje: «¡Hola, mundo!» Contenedor Docker: dentro de tu clúster de Amazon. EKS
Para crear un flujo de trabajo
-
Ve a la consola. CodeCatalyst
-
Navega hasta tu proyecto (
codecatalyst-eks-project
). -
En el panel de navegación, selecciona CI/CD y, a continuación, selecciona Flujos de trabajo.
-
Seleccione Crear flujo de trabajo.
-
En Repositorio de origen, elija
codecatalyst-eks-source-repository
. -
Para Branch, elija
main
. -
Seleccione Crear.
-
Elimine el código de YAML muestra.
-
Añada el siguiente YAML código para crear un nuevo archivo de definición de flujo de trabajo:
nota
Para obtener más información sobre el archivo de definición del flujo de trabajo, consulteYAMLDefinición del flujo de trabajo.
nota
En el YAML código siguiente, puede omitir las
Connections:
secciones si lo desea. Si omite estas secciones, debe asegurarse de que la función especificada en el campo IAMFunción predeterminada de su entorno incluya los permisos y las políticas de confianza de ambas funciones descritas en. Paso 6: Añadir AWS roles a CodeCatalyst Para obtener más información sobre la configuración de un entorno con un IAM rol predeterminado, consulteCreación de un entorno.Name: codecatalyst-eks-workflow SchemaVersion: 1.0 Triggers: - Type: PUSH Branches: - main Actions: BuildBackend: Identifier: aws/build@v1 Environment: Name:
codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-build-role
Inputs: Sources: - WorkflowSource Variables: - Name: REPOSITORY_URI Value:111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
- Name: IMAGE_TAG Value: ${WorkflowSource.CommitId} Configuration: Steps: #pre_build: - Run: echo Logging in to Amazon ECR... - Run: aws --version - Run: aws ecr get-login-password --regionus-west-2
| docker login --username AWS --password-stdin111122223333.dkr.ecr.us-west-2.amazonaws.com
#build: - Run: echo Build started on `date` - Run: echo Building the Docker image... - Run: docker build -t $REPOSITORY_URI:latest . - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG #post_build: - Run: echo Build completed on `date` - Run: echo Pushing the Docker images... - Run: docker push $REPOSITORY_URI:latest - Run: docker push $REPOSITORY_URI:$IMAGE_TAG # Replace the variables in deployment.yaml - Run: find Kubernetes/ -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g" - Run: find Kubernetes/ -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g" - Run: cat Kubernetes/* # The output artifact will be a zip file that contains Kubernetes manifest files. Outputs: Artifacts: - Name: Manifests Files: - "Kubernetes/*" DeployToEKS: DependsOn: - BuildBackend Identifier: aws/kubernetes-deploy@v1 Environment: Name:codecatalyst-eks-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-eks-deploy-role
Inputs: Artifacts: - Manifests Configuration: Namespace: default Region:us-west-2
Cluster: codecatalyst-eks-cluster Manifests: Kubernetes/En el código anterior, sustituya:
-
Ambas instancias de
codecatalyst-eks-environment
con el nombre del entorno en el que creóRequisitos previos. -
Ambas instancias de
codecatalyst-account-connection
con el nombre visible de la conexión de su cuenta. El nombre para mostrar puede ser un número. Para obtener más información, consulte Paso 6: Añadir AWS roles a CodeCatalyst. -
codecatalyst-eks-build-role
con el nombre del rol de compilación en el que creastePaso 5: Crear AWS roles. -
111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
(en laValue:
propiedad) con el ECR repositorio URI de Amazon en el que creastePaso 3: Crear un repositorio de ECR imágenes de Amazon. -
111122223333.dkr.ecr.us-west-2.amazonaws.com
(en elRun: aws ecr
comando) con el URI del ECR repositorio de Amazon sin el sufijo de imagen (/codecatalyst-eks-image-repo
). -
codecatalyst-eks-deploy-role
con el nombre de la función de despliegue en Paso 5: Crear AWS roles la que creaste. -
Ambas instancias de
us-west-2
con el código de su AWS región. Para obtener una lista de los códigos de región, consulta los puntos finales regionales en. Referencia general de AWS
nota
Si ha decidido no crear funciones de creación e implementación, sustituya
codecatalyst-eks-build-role
ycodecatalyst-eks-deploy-role
por el nombre delCodeCatalystWorkflowDevelopmentRole-
rol. Para obtener más información acerca de este rol, consulte Paso 5: Crear AWS roles.spaceName
-
-
(Opcional) Elija Validar para asegurarse de que el YAML código es válido antes de realizar la confirmación.
-
Elija Commit (Confirmar).
-
En el cuadro de diálogo Confirmar flujo de trabajo, introduzca lo siguiente:
-
En el caso del mensaje de confirmación, elimine el texto e introduzca:
Add first workflow
-
En Repositorio, elija
codecatalyst-eks-source-repository
. -
En Nombre de sucursal, elija principal.
-
Elija Commit (Confirmar).
Ahora ha creado un flujo de trabajo. La ejecución de un flujo de trabajo se inicia automáticamente debido al activador definido en la parte superior del flujo de trabajo. En concreto, cuando depositaste (e insertaste) el
workflow.yaml
archivo en tu repositorio de origen, el desencadenador inició la ejecución del flujo de trabajo. -
Para ver el progreso de la ejecución del flujo de trabajo
-
En el panel de navegación de la CodeCatalyst consola, elija CI/CD y, a continuación, elija Flujos de trabajo.
-
Elija el flujo de trabajo que acaba de crear,.
codecatalyst-eks-workflow
-
Elige BuildBackendver el progreso de la compilación.
-
Elija DeployToEKSver el progreso de la implementación.
Para obtener más información sobre la visualización de los detalles de la ejecución, consulteVer el estado y los detalles de la ejecución del flujo de trabajo.
Para verificar el despliegue
Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/
. -
A la izquierda, cerca de la parte inferior, selecciona Load Balancers.
-
Selecciona el balanceador de carga que se creó como parte de tu implementación de Kubernetes. Si no estás seguro de qué balanceador de cargas elegir, busca las siguientes etiquetas en la pestaña Etiquetas:
-
kubernetes.io/service-name
-
kubernetes.io/cluster/ekstutorialcluster
-
-
Con el balanceador de carga correcto seleccionado, selecciona la pestaña Descripción.
-
Copia y pega el valor DNSdel nombre en la barra de direcciones del navegador.
El «¡Hola, mundo!» La página web aparece en su navegador, lo que indica que la aplicación se ha implementado correctamente.
Paso 9: Realice un cambio en los archivos fuente
En esta sección, realizas un cambio en el index.html
archivo de tu repositorio de código fuente. Este cambio hace que el flujo de trabajo cree una nueva imagen de Docker, la etiquete con un ID de confirmación, la envíe a Amazon ECR y la despliegue en AmazonECS.
Para cambiar el archivo index.html
-
Ve a tu entorno de desarrollo.
-
En la línea de comandos del terminal, cambia a tu repositorio de código fuente:
cd /projects/codecatalyst-eks-source-repository
-
Obtenga los cambios más recientes en el flujo de trabajo:
git pull
-
Abra
codecatalyst-eks-source-repository/public-html/index.html
. -
En la línea 14, cambia el
Hello, World!
texto aTutorial complete!
. -
Agrega, confirma y presiona:
git add . git commit -m "update index.html title" git push
La ejecución de un flujo de trabajo se inicia automáticamente.
-
(Opcional) Introduzca:
git show HEAD
Anote el ID de confirmación del
index.html
cambio. Este ID de confirmación se etiquetará en la imagen de Docker que se implementará en la ejecución del flujo de trabajo que acabas de iniciar. -
Observe el progreso de la implementación:
-
En la CodeCatalyst consola, en el panel de navegación, elija CI/CD y, a continuación, elija Flujos de trabajo.
-
Elija
codecatalyst-eks-workflow
ver la última ejecución. -
Elija BuildBackendy DeployToEKSpara ver el progreso de la ejecución del flujo de trabajo.
-
-
Compruebe que la aplicación se haya actualizado de la siguiente manera:
Abre la EC2 consola de Amazon en https://console.aws.amazon.com/ec2/
. -
A la izquierda, cerca de la parte inferior, selecciona Load Balancers.
-
Selecciona el balanceador de carga que se creó como parte de tu implementación de Kubernetes.
-
Copia y pega el valor del DNSnombre en la barra de direcciones de tu navegador.
¡El «Tutorial completo!» La página web aparece en su navegador, lo que indica que ha implementado correctamente una nueva revisión de la aplicación.
-
(Opcional) En AWS, cambia a la ECR consola de Amazon y comprueba que la nueva imagen de Docker esté etiquetada con el ID de confirmación del paso 7 de este procedimiento.
Limpieza
Debe limpiar su entorno para que no se le cobre innecesariamente por los recursos de almacenamiento y cómputo utilizados en este tutorial.
Eliminación
-
Elimine el clúster:
-
En la terminal Dev Environment, introduce:
eksctl delete cluster --region=
us-west-2
--name=codecatalyst-eks-cluster
Donde:
-
us-west-2
se sustituye por tu región. -
codecatalyst-eks-cluster
se sustituye por el nombre del clúster que ha creado.
Después de 5 a 10 minutos, se eliminan el clúster y los recursos asociados, incluidos, entre otros, las AWS CloudFormation pilas, los grupos de nodos (en AmazonEC2) y los balanceadores de carga.
-
importante
Si el
eksctl delete cluster
comando no funciona, es posible que tengas que actualizar tus AWS credenciales o tuskubectl
credenciales. Si no está seguro de qué credenciales actualizar, actualice primero las AWS credenciales. Para actualizar sus AWS credenciales, consulte¿Cómo puedo corregir los errores «No se pueden localizar las credenciales» y ExpiredToken «»?. Para actualizar suskubectl
credenciales, consulte¿Cómo puedo corregir los errores «No se puede conectar al servidor»?. -
-
En la AWS consola, limpie de la siguiente manera:
-
En AmazonECR, elimínalo
codecatalyst-eks-image-repo
. -
En IAM Identity Center, elimina:
-
codecatalyst-eks-user
-
codecatalyst-eks-permission-set
-
-
EnIAM, elimine:
-
codecatalyst-eks-build-role
-
codecatalyst-eks-deploy-role
-
codecatalyst-eks-build-policy
-
codecatalyst-eks-deploy-policy
-
-
-
En la CodeCatalyst consola, limpie de la siguiente manera:
-
Eliminar
codecatalyst-eks-workflow
. -
Eliminar
codecatalyst-eks-environment
. -
Eliminar
codecatalyst-eks-source-repository
. -
Elimine su entorno de desarrollo.
-
Eliminar
codecatalyst-eks-project
.
-
En este tutorial, aprendiste a implementar una aplicación en un EKS servicio de Amazon mediante un CodeCatalyst flujo de trabajo y una acción de clúster de Deploy to Kubernetes.