0% encontró este documento útil (0 votos)
67 vistas21 páginas

AWS EKS CI - CD With AWS CodeCommit + AWS CodeBuild + AWS CodePipeline - Final - En.es

El documento describe cómo configurar un clúster de AWS EKS para implementar una aplicación Node.js usando CI/CD. Explica cómo instalar las herramientas necesarias, crear un clúster EKS e implementar una aplicación de muestra. Luego explica cómo configurar CodePipeline para automatizar el despliegue continuo de la aplicación en el clúster EKS.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
67 vistas21 páginas

AWS EKS CI - CD With AWS CodeCommit + AWS CodeBuild + AWS CodePipeline - Final - En.es

El documento describe cómo configurar un clúster de AWS EKS para implementar una aplicación Node.js usando CI/CD. Explica cómo instalar las herramientas necesarias, crear un clúster EKS e implementar una aplicación de muestra. Luego explica cómo configurar CodePipeline para automatizar el despliegue continuo de la aplicación en el clúster EKS.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 21

Traducido del inglés al español - www.onlinedoctranslator.

com

1) Introducción a AWS EKS (pequeña descripción general)


2) Configurar clústeres de EKS con eksctl
3) Implementar la aplicación Simple NodeJs usando kubectl
4) Configuración de CI / CD con AWS CodePipeline
+ AWS CodeCommit + AWS CodeBuild
5) Configuración del clúster de AWS EKS para CI / CD

Una guía práctica para AWS EKS CI / CD


Por Sandip Das
Contenido
➔ Introducción a AWS EKS
➔ Beneficios
➔ Costo
➔ Arquitectura de AWS EKS
➔ Kubernetes y redes de VPC
➔ Empresas que utilizan AWS EKS
➔ Creemos un clúster de AWS EKS e implementemos una
aplicación NodeJs simple
➔ Instalar herramientas esenciales

➔ Crear clúster de AWS EKS


➔ Cree la imagen de la ventana acoplable con Dockerfile

➔ Publicación / almacenamiento de imágenes en AWS ECR


(Elastic Container Registry)
➔ Finalmente, implementemos la aplicación
➔ Configuremos la canalización
➔ Agregar el rol de IAM requerido

➔ Configuración del clúster de AWS EKS para CI / CD


➔ Limpiar todo
➔ Más recursos de aprendizaje
➔ Gracias  
AWS EKS
Amazon Elastic Kubernetes Service (Amazon EKS) facilita la
implementación, la administración y el escalado de aplicaciones en
contenedores medianteKubernetes en AWS .

Amazon EKS ejecuta la infraestructura de administración de


Kubernetes por usted en varias zonas de disponibilidad de AWS para
eliminar un solo punto de falla. Amazon EKS está certificado en
conformidad con Kubernetes, por lo que puede utilizar las
herramientas y los complementos existentes de los socios y la
comunidad de Kubernetes. Las aplicaciones que se ejecutan en
cualquier entorno estándar de Kubernetes son totalmente
compatibles y se pueden migrar fácilmente a Amazon EKS.

Amazon EKS generalmente está disponible para todos los


clientes de AWS.
Beneficios
Analicemos brevemente qué características
proporciona

➔ Ningún plano de control para gestionar

➔ Seguro por defecto

➔ Conforme y compatible

➔ Optimizado por costo

➔ Construye con la comunidad


Costo
Discutamos sobre el costo

➔ Cada grupo de EKS cuesta $ 0.10 /


hora, es decir, $ 73 / mes

Puede utilizar un solo clúster de Amazon EKS para


ejecutar varias aplicaciones aprovechando los espacios
de nombres de Kubernetes y las políticas de seguridad
de IAM.

➔ Instancias EC2 y volúmenes de EBS


usados en AS Worker Nodes

Usted paga por los recursos de AWS, crea para


ejecutar sus nodos de trabajo de Kubernetes. Solo
paga por lo que usa, a medida que lo usa; no hay
tarifas mínimas ni compromisos iniciales.
EKS
Arquitectura
Empresas que utilizan AWS EKS
Creemos un clúster de AWS EKS e implementemos una
aplicación NodeJs simple
Asegúrese de instalar awscli, eksctl, kubectl, aws-iam-authenticator

Para asegurarse de que todo esté instalado y configurado, ejecute:

sh prereqs.sh

URL del proyecto GitHub:


https://github.com/sd031/aws_codebuild_codedeploy_nodeJs_demo

Todos los archivos de configuración relacionados con Kubernetes están en "eks_cicd"Carpeta

Tutorial de video en YouTube: https://www.youtube.com/watch?v=nEK7e0QUVio


Instalar herramientas esenciales

Necesitaremos las siguientes herramientas para ser instaladas

➔ Instalar aws cli


https://docs.aws.amazon.com/cli/latest/userg
uide / cli-chap-install.html (instalar cli v2)

➔ Instalar kubectl
https://docs.aws.amazon.com/eks/latest/
userguía / install-kubectl.html

➔ Instalar aws-iam-authenticator
https://docs.aws.amazon.com/eks/latest/
userguía / install-aws-iam-authenticator.html

➔ Instalar eksctl

https://docs.aws.amazon.com/eks/latest/user

guide / Getting-started-eksctl.html o
https://eksctl.io/introduction/installation/
Crear clúster de AWS EKS

Crear clúster:
cluster.yaml
eksctl crear clúster -f clúster.yaml

Luego verifique el mensaje: apiVersion: eksctl.io/v1alpha5 tipo:


ClusterConfig
El clúster EKS "<nombre del clúster>"
en la región "<región aws>" está listo
metadatos:
Verifique que el cliente kubectl se configure
automáticamente correctamente o no mediante: nombre: cicd-demo # nombre del clúster
región: us-west-2 # región deseada
cat /home/ec2-user/.kube/config

Si desea eliminar el clúster en cualquier momento:


nodeGroups:

eksctl eliminar cluster -f cluster.yaml - nombre: ng-1 #cluster nombre del grupo de nodos

instanceType: t2.medium # tipo de instancia deseado


Nota: Ejecutar el comando delete eliminará todos los
deseadaCapacidad: 3 # recuento / capacidad de nodos deseados
recursos.
ssh:
permitir: falso
Cree la imagen de la ventana acoplable con Dockerfile

Ejecutar debajo del comando desde


Dockerfile
Directorio de proyectos para crear la imagen Antes DESDE el nodo: 14
de instalar la ventana acoplable:
# Configuración del directorio de trabajo. Toda la ruta será
https://docs.docker.com/engine/install/Para hacer relativa a WORKDIR
que Docker compile WORKDIR / usr / src / app

docker image build -t <nombre_imagen>: # Instalar dependencias de aplicaciones


# Se utiliza un comodín para garantizar que se copien tanto
etiqueta. ("." Se refiere al directorio actual)
package.json como package-lock.json
p.ej # donde esté disponible ( npm @ 5
compilación de la imagen de Docker -t cicd-demo: v1.
+) COPY package * .json ./

EJECUTAR npm install


Prueba de imagen funcionando bien o no: # Si está creando su código para producción
docker run -d --name cicd-demo -p 3000: 3000 cicd-demo: v1 # RUN npm ci --only = producción

# COPIA de la fuente de la aplicación

del paquete. .

EXPONER 3000
CMD ["nodo", "index.js"]
Publicación de imágenes en AWS ECR

Es como Docker Hub, donde podemos presionar y extraer imágenes y podemos

utilícelo con AWS ECR de la misma manera. Para obtener el inicio de sesión de la ventana acoplable y la ejecución automática

el inicio de sesión el comando es:

aws ecr get-login-password --region <nombre de la región> | inicio de sesión de docker - nombre de
usuario AWS --password-stdin <id_cuenta> .dkr.ecr.us-west-2.amazonaws.com

Por ejemplo, aws ecr get-login-password --region us-west-2 | inicio de sesión de docker --
username AWS --password-stdin123456789012.dkr.ecr.us-west-2.amazonaws.com

Después de esto, cree un repositorio ECR desde AWS

Consola de administración, dará una URL como

Se muestra en el diagrama del lado derecho, después de esa etiqueta

La imagen: (Todos los comandos ya se proporcionan en la interfaz de usuario de AWS ECR, solo use el mismo)

Docker tag cicd-demo: último


123456789012.dkr.ecr.us-west-2.amazonaws.com/cicd-demo:latest

empuje de la ventana acoplable

123456789012.dkr.ecr.us-west-2.amazonaws.com/cicd-demo:latest
Asegúrate de usar las etiquetas correctas
Finalmente, implementemos la aplicación
kubectl apply -f deployment.yaml
deployment.yaml
kubectl apply -f service.yaml
apiVersion: aplicaciones / v1

Si tiene algún problema, consulte los registros: tipo: Despliegue


metadatos:
kubectl obtener vainas etiquetas:

app.kubernetes.io/name: cicd-demo
kubectl describe pod pod_name_here app.kubernetes.io/instance: cicd-demo-instance
app.kubernetes.io/version: '1.0.0'
service.yaml
app.kubernetes.io/managed-by: kubectl
apiVersion: v1 nombre: cicd-demo-deployment
tipo: Servicio spec:
metadatos: réplicas: 1
etiquetas: selector:
app.kubernetes.io/name: cicd-demo matchLabels:
app.kubernetes.io/instance: cicd-demo-instance aplicación: cicd-demo

app.kubernetes.io/version: "1.0.0" plantilla:


app.kubernetes.io/component: backend metadatos:
app.kubernetes.io/managed-by: kubectl etiquetas:

nombre: cicd-demo aplicación: cicd-demo

Especificaciones: Especificaciones:

selector: contenedores:
aplicación: cicd-demo - imagen: 120717539064.dkr.ecr.us-west-2.amazonaws.com/cicd-demo:latest
tipo: LoadBalancer imagePullPolicy: Siempre
puertos: nombre: cicd-demo
- protocolo: TCP puertos:

puerto: 80 - contenedorPuerto: 3000


targetPort: 3000
Configuremos la canalización buildspec.yml

Crearemos un proyecto de AWS Pipeline, por ejemplo, cicd-demo

Luego, configure AWS CodeCommit como fuente


Y luego, con AWS CodeBuild, realizaremos cambios de compilación e implementación en AWS
EKS

Al configurar AWS CodeBuild, asegúrese de configurar el archivo de especificaciones de compilación


correctamente y de ingresar las variables de entorno requeridas de la siguiente manera:

AWS_DEFAULT_REGION

AWS_CLUSTER_NAME

AWS_ACCOUNT_ID

IMAGE_REPO_NAME

IMAGE_TAG

También agregue, ecr, eks, acceso s3 al rol de compilación


Creemos el rol de IAM requerido
create_iam_role.sh

#! / usr / bin / env bash


En el primer intento, verá un error de acceso denegado, para resolverlo y agregar el acceso de CONFIANZA = "{\" Versión \ ": \ "2012-10-17 \", \"Declaración\": [ {
\ "Efecto \": \ "Permitir \", \"Principal\": {
IAM adecuado, crearemos un nuevo rol de IAM de AWS y agregaremos la política necesaria
\ "Servicio \": \ "codebuild.amazonaws.com \" \ },
allí y luego adjuntar eso al proyecto de creación de código "Acción \": \ "sts: AssumeRole \" }]} "

echo '{"Versión": "2012-10-17", "Declaración": [{"Efecto": "Permitir", "Acción":


Correr : "eks: Describe *", "Recurso": "*"}]} '> / tmp / iam-role-policy
chmod + x /eks_cicd/create_iam_role.sh

sh /eks_cicd/create_iam_role.sh aws iam create-role --nombre de rol CodeBuildKubectlRole


- - asumir-rol-política-documento "$ CONFIANZA" - texto de salida - consulta
'Role.Arn'

aws iam put-role-policy --nombre de rol CodeBuildKubectlRole


Esto creará un rol llamado: CodeBuildKubectlRole
- - nombre-política eks-describe --policy-document
Y en la consola verá la salida de la siguiente manera: file: /// tmp / iam-role-policy
arn: aws: iam :: youeaccountid: role / CodeBuildKubectlRole
aws iam attach-role-policy --nombre de rol CodeBuildKubectlRole
- - policy-arn arn: aws: iam :: aws: policy / CloudWatchLogsFullAccess
Asegúrese de actualizar / editar el rol de CodeBuild como se
aws iam attach-role-policy --nombre de rol CodeBuildKubectlRole
muestra en el video tutorial para que el proyecto de CodeBuild - - policy-arn arn: aws: iam :: aws: policy / AWSCodeBuildAdminAccess
tenga el acceso requerido:
https://www.youtube.com/watch?v=nEK7e0QUVio aws iam attach-role-policy --nombre de rol CodeBuildKubectlRole
- - policy-arn arn: aws: iam :: aws: policy / AWSCodeCommitFullAccess

aws iam attach-role-policy --nombre de rol CodeBuildKubectlRole


- - policy-arn arn: aws: iam :: aws: policy / AmazonS3FullAccess

aws iam attach-role-policy --nombre de rol CodeBuildKubectlRole


- - política-arn
arn: aws: iam :: aws: policy / AmazonEC2ContainerRegistryFullAccess
Configuración del clúster de AWS EKS para CI / CD
Aunque el rol de CodeBuild tiene permiso para autenticarse en el clúster, no tiene el acceso RBAC necesario para realizar ninguna otra acción en el clúster. Incluso
puede enumerar los pods en el clúster. Debe leer la siguiente cita de la documentación de EKS:
"Cuando crea un clúster de Amazon EKS, el usuario o rol de la entidad de IAM, como un usuario federado que crea el clúster, es automáticamente
sistema concedido: domina los permisos en la configuración RBAC del clúster. Para otorgar a usuarios o roles de AWS adicionales la capacidad de interactuar
con su clúster, debe editar el ConfigMap aws-auth dentro de Kubernetes."
Entonces, necesitamos edite el mapa de configuración aws-

auth. ¿Cómo haces eso?

Si usted es quien creó el clúster, debe ejecutar lo siguiente en su terminal local para crear una copia de aws-auth configMap.

Opción 1:
Como estamos usando la herramienta eksctl, simplemente podemos hacer el mapeo de roles ejecutando este comando:

eksctl create iamidentitymapping --cluster cluster_name_here --arn role_arn_here --group system: masters --
username Designed_user_name_here
P.ej
eksctl crea iamidentitymapping --cluster cicd-demo --arn
arn: aws: iam :: your_accoun_tid_here: role / CodeBuildKubectlRole -sistema de grupo: maestros --nombre de usuario CodeBuildKubectlRole

Consulte la siguiente URL para ver la documentación.

https://eksctl.io/usage/iam-identity-mappings/
Configuración del clúster de AWS EKS para CI / CD
Opcion 2: archivo de muestra aws-auth.yaml
aws eks update-kubeconfig --name eks-cluster-name --region aws-region apiVersion: v1
kubectl obtiene mapas de configuración aws-auth -n kube-system -o yaml> tipo: ConfigMap
aws-auth.yaml metadatos:
nombre: aws-auth
Ahora, edite su aws-auth.yaml y agregue lo siguiente en
data.mapRoles espacio de nombres: kube-system
datos:
- rolearn: arn: aws: iam :: 510442909921: rol / nombre-rol nombre de
mapRoles: |
usuario: rol-nombre - rolearn:
grupos: arn: aws: iam :: 11122223333: role / EKS-Worker-NodeInstance
- sistema: maestros Role-1I00GBC9U4U7B
nombre de usuario: sistema: nodo: {{EC2PrivateDNSName}}
Aplica esta configuración desde tu terminal:kubectl
apply -f aws-auth.yaml
grupos:
- sistema: bootstrappers
- sistema: nodos
Si tiene algún problema, siga estos pasos de depuración:
- rolearn:
https://aws.amazon.com/premiumsupport/knowledge-center/am azon- arn: aws: iam :: 11122223333: role / designado_role
eks-cluster-access / nombre de usuario: designado_role
grupos:
- sistema: maestros
Limpiar todo

Desde que usamos eksctl, es mucho más fácil

Eliminar clúster:

eksctl eliminar cluster -f cluster.yaml

Detrás de la escena, la pila de formación de nubes se eliminará y, en consecuencia, los recursos también se eliminarán, debe hacerlo si lo está haciendo en desarrollo o
prueba como una implementación temporal; de lo contrario, le costará mucho.
Hay algunas cosas más que debes saber.
Esta demostración es solo el punto de partida de CICD y hay mucho más disponible, cuanto más lo use, más
experiencia obtendrá, por lo que le sugiero que lo pruebe usted mismo e implemente su propio clúster de AWS EKS.

Después de probar las implementaciones básicas de la aplicación, lo siguiente que podría estar interesado en aprender es:

1) Usar instancias de spotcon Kubernetes y ahorre el 90% del costo


2) Tipos de implementacionesdisponible en Implementación de Kubernetesy como configurarlo
3) Tipos de serviciosdisponible en Servicio de Kubernetes y cómo configurarlo.
4) CI / CD con Kubernetes
5) Registro con Cloud Trail
6) Iniciar sesión en Cloudwatch con Fluentd
7) Autenticación compleja, roles etc
¡Buena suerte!
Espero que utilice este conocimiento y cree
soluciones increíbles.

Si tiene algún problema contácteme en Linkedin:


https://www.linkedin.com/in/sandip-das-developer/

También podría gustarte