In acest laborator vom parcurge crearea de pods folosind comanda kubectl. Activitatea este echivalenta cu pornirea mai multor containere de Docker folosind docker run.
Va propunem o mini aplicatie formata din 4 componente:
Aplicatia reprezinta un model simplificat de CQRS.
Fluxul este urmatorul:
Codul este accesibil pe repo-ul nostru.
In codul sursa aveti un exemplu de docker-compose.yml, pentru a avea o perspectiva familiara asupra cum va arata deploymentul local. In Kubernetes, fiecare serviciu va fi reprezentat de un Pod.
In continuare vom folosi comenzile de Kubectl, prezentate la laboratorul trecut, pentru a porni fiecare Pod independent.
Vom lucra cu urmatoarele concepte:
Mai jos puteti regasi comenzile care vor fi efectuate pentru rezolvarea laboratorului:
kubectl run db --image=axonedge/lab-k8s-database --env="POSTGRES_USER=student" --env="POSTGRES_PASSWORD=student" --env="POSTGRES_DB=library" kubectl expose pod db --port=5432 --target-port=5432 --name=db-cluster-ip-service kubectl run rabbitmq --image=rabbitmq:3 --port=5672 kubectl expose pod rabbitmq --port=5672 --target-port=5672 --name=rabbitmq-cluster-ip-service kubectl describe pod rabbitmq kubectl describe service rabbitmq-cluster-ip-service kubectl run procesator --image=axonedge/lab-k8s-procesator --env="PGHOST=db-cluster-ip-service" --env="PGDATABASE=library" --env="PGPORT=5432" --env="PGUSER=student" --env="PGPASSWORD=student" --env="AMQPURL=amqp://rabbitmq-cluster-ip-service" kubectl logs procesator kubectl run api --image=axonedge/lab-k8s-api --env="PORT=8000" --env="PGHOST=db-cluster-ip-service" --env="PGDATABASE=library" --env="PGPORT=5432" --env="PGUSER=student" --env="PGPASSWORD=student" --env="AMQPURL=amqp://rabbitmq-cluster-ip-service" kubectl expose pod api --port=8000 --name=api-nodeport-service --type=NodePort kubectl delete --all pods kubectl delete --all services
Pentru a testa aplicatia va recomandam sa folositi Postman.
Testarea se realizeaza in felul urmator:
{ "name": "De ce iubim femeile?", "author": "Mircea Cartarescu", "price": 69, "description": "Autoironie" }