Resum del projecte: desplegar una aplicació Python Flask que saluda els usuaris usant Kubernetes a Google Kubernetes Engine GKE. Tech stack: Flask, Docker, Kubernetes, Google Kubernetes Engine. Objectiu: posar en producció una app simple que respongui Hello, el meu nom és Gerald i permeti enviar un nom perquè l'app respongui amb una salutació personalitzada.
Sobre Q2BSTUDIO: Q2BSTUDIO és una empresa de desenvolupament de programari especialitzada en aplicacions a mida i programari a mida. Oferim solucions d'intel·ligència artificial, ciberseguretat, serveis cloud AWS i Azure, serveis d'intel·ligència de negoci, IA per a empreses, agents IA i Power BI. Dissenyem aplicacions empresarials, integracions segures i consultoria per accelerar la transformació digital.
Pas 1 Aplicació Flask Resum: l'app defineix una ruta arrel que retorna Hello, el meu nom és Gerald. Quin és el teu nom i un endpoint POST per rebre el camp name des d'un formulari i retornar Hello seguit del nom. En mode producció l'app s'ha d'executar a 0.0.0.0 i port 80 perquè Kubernetes pugui encaminar el trànsit correctament.
Pas 2 Dockeritzar l'app Dockerfile essencial: FROM python:3.12-slim WORKDIR /app COPY requirements.txt requirements.txt RUN pip install --no-cache-dir -r requirements.txt COPY . . EXPOSE 80 CMD python app.py
Comandes per construir i pujar la imatge a l'Artifact Registry: docker build -t africa-south1-docker.pkg.dev/k8s-project-468723/my-docker-repo/my-python-app:v1 . docker push africa-south1-docker.pkg.dev/k8s-project-468723/my-docker-repo/my-python-app:v1
Pas 3 Desplegament a Kubernetes Desplegament bàsic: crear un Deployment amb rèpliques 2 que utilitzi la imatge emmagatzemada a l'Artifact Registry i que exposi el port 80 del contenidor. Aplicar el manifest amb kubectl apply -f deployment.yaml i crear un Service tipus LoadBalancer amb kubectl expose deployment my-python-app --type=LoadBalancer --port 80 --target-port 80
Depuració CrashLoopBackOff Primer símptoma: els pods entraven en estat CrashLoopBackOff en aixecar-se. Comprovació ràpida: kubectl get pods -l app=my-python-app i revisar logs amb kubectl logs nom-del-pod Per a aquest cas, el log indicava que no es trobava el fitxer app.py a /app i a més l'aplicació estava executant-se al port 5000 mentre el Service esperava respostes al port 80.
Correccions aplicades 1 Renombrar el fitxer o ajustar CMD Si el fitxer principal es deia gerald.py, la solució va ser renombrar-lo a app.py o canviar la instrucció CMD al Dockerfile per arrencar el fitxer correcte. 2 Alinear ports Canviar Flask perquè escolti al port 80 o ajustar l'exposició del contenidor. En aquest projecte es va optar per executar Flask al port 80 i mantenir EXPOSE 80 al Dockerfile.
Resultat final Després de corregir el nom del fitxer i el port, l'aplicació va respondre correctament. Obrir la IP externa del LoadBalancer al navegador mostrava la salutació Hello, el meu nom és Gerald. Quin és el teu nom i l'endpoint POST /greet responia Hello seguit del nom enviat des del formulari.
Lliçons apreses Coincidir el port del contenidor i el targetPort del Service és crític. Revisar logs dels pods amb kubectl logs és la manera més ràpida d'identificar errors com fitxers absents o excepcions. Mantenir coherència entre noms de fitxers al repositori i comandes d'arrencada al Dockerfile evita errors de CrashLoopBackOff. Provar localment abans de pujar a Kubernetes permet iterar més ràpid i reduir cicles de depuració al núvol.
Bones pràctiques addicionals Per a projectes empresarials i per a serveis cloud AWS i Azure recomanem integrar pipelines CI/CD que verifiquin la imatge abans de desplegar, aplicar polítiques de seguretat i escaneig de vulnerabilitats per a ciberseguretat, i monitoritzar amb eines d'observabilitat. Integrar solucions d'intel·ligència artificial i intel·ligència de negoci permet afegir valor a les aplicacions a mida; per exemple, agents IA per a atenció automatitzada i panells amb Power BI per a anàlisi.
Recursos i enllaç al codi complet El projecte complet està disponible a GitHub a la següent URL https://github.com/gerald475/simple-python-app
Invitació Si alguna vegada has lluitat contra CrashLoopBackOff, comparteix la teva experiència als comentaris i ajuda la comunitat a depurar més ràpid.
Sobre Q2BSTUDIO Q2BSTUDIO desenvolupa programari a mida, aplicacions a mida i solucions d'intel·ligència artificial per a empreses. Som especialistes en ciberseguretat, serveis cloud AWS i Azure, serveis d'intel·ligència de negoci, IA per a empreses, agents IA i Power BI. Contacta amb Q2BSTUDIO per accelerar els teus projectes amb programari de qualitat, seguretat incorporada i capacitats d'intel·ligència artificial.





