Este proyecto contiene un listener de una cola sqs-lambda-customer-service-create-ticket-comment-qa
Para instalar localmente el proyecto
##- Docker
docker image build -t go-sqs-listener .
docker run --network host -d go-sqs-listener
Para probar esto solo es hacer el despliegue y mirar los logs del docker y adicional enviar mensajes a la cola, para ver los logs del docker se ejecuta este comando:
docker logs #iddeldocker
Esta guia de instalación contiene:
- Crear artefactos de red
- Crear clúster
- Crear proveedor de identididad
- Crear de política
- Crear service account
- Crear del deployment
Nota: La ejecución debe ser en orden
##- Kubectl — https://kubernetes.io/docs/tasks/tools/install-kubectl/ ##- AWS CLI - https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html ##- Aws iam authenticator — https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html ##- eksctl — https://github.com/weaveworks/eksctl
Se crean artefactos de red: vpc, subnets públicas y privadas, grupos de seguridad entre otros
aws cloudformation deploy --template-file red.yaml --stack-name my-new-stack
Para la creación del clúster se debe cambiar en el archivo cluster.yaml el id de las vpc y las subnets
eksctl create cluster -f cluster.yaml
El proveedor de identidad se crea para que los pods puedan asumir un role de IAM y así acceder a los diferentes recursos de AWS, este paso es opcional para mejor documentación aquí.
eksctl utils associate-iam-oidc-provider --cluster <CLUSTER_NAME> --approve
Este política se la vamos asignar al role que vamos a crear en el siguiente paso
aws iam create-policy --policy-name go-sqs-listener-role-pilicy --policy-document file://policy.json
Acá creamos el role que le vamos asigna a nuestro pod y le asociamos la política que creamos en el paso anterior
eksctl create iamserviceaccount \
--cluster=EKS-Demo-Cluster1 \
--role-name=go-sqs-listener-role-1 \
--namespace=default \
--name=go-sqs-listener-service-account-name-1 \
--attach-policy-arn=arn:aws:iam::851560454673:policy/go-sqs-listener-role-pilicy \
--approve
El despliegue incluye la arn del repositorio ecr donde tenemos la imagen que queremos desplegar, el puerto que queremos exponer, los labels con los que queremos clasificar nuestra app y el service account que creamos en el paso anterior que es el que nos permite que el o los pods asuman un rol de IAM
kubectl apply -f deployment.yaml
Para probar esto solo es hacer el despliegue y mirar los logs del pod y adicional enviar mensajes a la cola, para ver los logs del pod se ejecuta este comando:
kubectl logs id_del_pod_que_se_desplegó_en_el_deployment