Ngaphezu kwalokho, ngexesha elandelayo, i-Workshop , Ngitholile inkinga elifanayo ngezikhathi ezimbili: inkonzo A kufanele inkonzo B, kodwa inkonzo A uqala ngokushesha kunoma inkonzo B, futhi inqubo ibonakale. Kule post, ngitholile inkulumo lwezinkinga zayo futhi indlela ngitholile ngezinye izixhobo efanayo. Ukubuyekeza Isicelo sakho se-Pull ku-Kubernetes nge-GKE ne-GitHub Actions Ukukhangisa Kubernetes Ngingathanda kahle kubonakala kubaluleke Kubernetes. I-self-healing nature ye-Kubernetes platform kuyinto omunye izinzuzo zayo ezinkulu. Thola ukubuyekeza ama-pods ezimbili: isicelo se-Python kanye ne-PostgreSQL database. I-application ifakwe ngokushesha kakhulu futhi usebenza ngokushesha ukuqhuma ukuxhuma ku-database. Ngesikhathi eside, i-database ikakhulukazi ngokushesha nge-database eyakhiwe; ukuxhuma kwangapheli. I-pod ikakhulukazi umoya Failed Ngemva kwexesha elide, Kubernetes ibhalisele isimo se-pod ye-application. Ngenxa yokungasebenzi, i-pod uqala i-pod entsha. Kulesi sikhathi, izimo ezimbili zingatholakala: i-pod ye-database ayikho, futhi i-pod iyahambe ku-quadrat one, noma iyahambisana, futhi isicelo ekugcineni uxhumene. Ukuze kusebenze inqubo, Kubernetes inikeza Waze: Ukubuyekezwa startupProbe: httpGet: path: /health port: 8080 failureThreshold: 30 periodSeconds: 10 Ngokusebenzisa isondlo angaphambili, Kubernetes ibheka imizuzu embalwa angu-10 ngaphambi kokufunda isimo se-pod. Uma isizukulwana, ibheka imizuzu embalwa angu-10. Ukushisa futhi ukuguqulwa 30 izikhathi ngaphambi kokuphumelela ngokuqinisekileyo. Ungayifumana i-HTTP endpoint phezulu. Kubernetes inikeza amabili exclusive Izinzuzo zokusebenza: noma . Olandelayo iyatholakala izicelo web, lapho esilandelayo iyatholakala izicelo ezininzi. Lokhu kubalulekile ukuba siphinde uhlobo le-containers i-pod futhi indlela yokubuyekeza isakhiwo se-pod, uma kungenzeka. Ngingu-Expert ye-PostgreSQL, ngakho-ke ngithole isicelo yokubuyekeza isakhiwo. izibuyekezo ezilandelayo uma isicelo: /health Ukubuyiselwa httpGet exec I-Bitnami Helm Chart startupProbe: exec: command: - /bin/sh - -c - -e - exec pg_isready -U $PG_USER -h $PG_HOST -p $PG_PORT Qaphela ukuthi okufanayo kuyinto ukunciphisa, njengokungabikho ngokushesha igama lombhalo lombhalo futhi isitifiketi SSL. I-start-up probe iveza izinto ngokushesha kuqhathaniswa ne-default situation uma ukuguqulwa ngokufanelekileyo. Unokufaka i-default yokuqala elide, bese i-increments engaphansi. Nokho, i-containers engaphezu kwamanani, kunzima ukuguqulwa, njengoba kufuneka abe nomdla we-expert e-containers eyisisekelo. Kuyinto enhle ukuhlola izindlela ezintsha. Ukubuyekezwa4x I-Alternatives iyindlela ezihlangene ku-expecting. Ngaphezu kwalokho, I-script for this. I-idea iyona elula: Waze ikhaya ikhaya ./wait-for kuyinto script eyenzelwe ukuhlangabezana nezinsizakalo ezifana ne-docker containers. Kuyinto sh kanye ne-alpine ehlanganisiwe. ./wait-for kuyinto script eyenzelwe ukuhlangabezana nezinsizakalo ezifana ne-docker containers. Kuyinto sh kanye ne-alpine ehlanganisiwe. Ngiyazi indlela yokufunda i-HTTP API: sh -c './wait-for http://my.api/health -- echo "The api is up! Let's use it"' Yenza umsebenzi eyenziwe, kodwa lapho, kufanele ukopi script futhi manually check for updates. Ngithole, futhi le nkqubo manje inikeza isikhwama okuzenzakalelayo. umdlalo efanayo, kodwa iyatholakala njenge-containers versioned futhi inikeza inkonzo ezininzi ezihlangene: HTTP, DNS, databases, kanye nezivakashi zebhizinisi. Lokhu kubalulekile kwami. Ukubuyekezwa4x Yonke ithuluzi ungasebenzisa, ungasebenzisa ngaphakathi Waze: Indawo yokufakelwa ikhaya ikhaya ikhaya ikhaya I-Pod ingaba ama-containers eziningana ezisebenza nezinhlelo zokusebenza ngaphakathi, kodwa ingaba futhi i-init containers eyodwa noma eziningana, ezisebenza ngaphambi kokufaka ama-containers zokusebenza. I-Init containers iyiphi i-containers ezivamile, ngaphandle: I-Init containers iyatholakala kuze kube lokugqibela. I-Init container iyatholakala ngokushesha ngaphambi kokuqala. I-Pod ingaba ama-containers eziningana ezisebenza nezinhlelo zokusebenza ngaphakathi, kodwa ingaba futhi i-init containers eyodwa noma eziningana, ezisebenza ngaphambi kokufaka ama-containers zokusebenza. I-Init containers iyiphi i-containers ezivamile, ngaphandle: I-Init containers iyatholakala kuze kube lokugqibela. I-Init container iyatholakala ngokushesha ngaphambi kokuqala. Ukubonisa umzekelo Kuyinto kulingana PostgreSQL Waze: Pod Deployment apiVersion: v1 kind: Pod metadata: labels: type: app app: recommandations spec: containers: - name: recommandations image: recommandations:latest envFrom: - configMapRef: name: postgres-config I-application iyona-Python futhi ivula ngokushesha kakhulu. It isixazulule ukuxhuma ku-PostgreSQL database. Ngaphandle kwalokho, i-database ayikho ekugqibeleni ukuqala, ngakho-ke ukuxhuma akufanele, futhi i-Kubernetes uqala i-pod. Thina ukuguqulwa nge Ukubuyekezwa kwe-containers initContainer apiVersion: v1 kind: Pod metadata: labels: type: app app: recommandations spec: initContainers: - name: wait-for-postgres image: atkrad/wait4x:3.1 command: - wait4x - postgresql - postgres://$(DATABASE_URL)?sslmode=disable envFrom: - configMapRef: name: postgres-config containers: - name: recommandations image: recommandations:latest envFrom: - configMapRef: name: postgres-config Ngokusho kwangaphambili, i Ngemuva kwalokho, i-database iyahambisana ne-akhawunti ye-akhawunti ye-akhawunti ye-akhawunti ye-akhawunti. kubernetes. Kubernetes akufanele ukuguqulwa Njengoba ku-setup edlule! Kufaka i-logs engaphansi kanye ne-alerts engaphansi. initContainer recommandations Pod Uma ukubuyekeza kwenziwa obligatory Ukubuyekezwa okuphakeme, kodwa ungakwazi ukwenza ngaphandle kwalokho. Kwezinye izimo, ukuhambisa kubaluleke. Ngitholile ngempumelelo eminyakeni okuphakeme emaphakeme. Isikhathi esilandelayo: ikhaya ikhaya ikhaya ikhaya I-pipeline isetshenziselwa i-manifesto ku-Kubernetes Ngo-step elilandelayo, it is run the test Njengoba isizinda kuqala ngaphambi kokufunda isicelo, isizinda. Thina siphinde ukuze backend iyatholakala ngaphambi kokuphendula. Thina usebenzisa Ukubuyekeza ukuba ukuze ufumane imibuzo ngaphambi kokushicilela izifundo: wait4x Pod - name: Wait until the application has started uses: addnab/docker-run-action@v3 #1 with: image: atkrad/wait4x:latest run: wait4x http ${{ env.BASE_URL }}/health --expect-status-code 200 #2 ikhaya ikhaya ikhaya I-GitHub Action inikeza ukuqhuba i-containers. Ngingathanda ukulanda i-Go binary. Ukubuyekeza kuze kube /health endpoint ukuguqulwa 200 isivumelwano ikhodi. Ukuphakama Kubernetes i-start-up probes iyindlela enhle yokuvimbela ukuqala okungenani lapho ufake izinsizakalo ezisebenzayo. I-alternative is a external waiting tool configured in a Ngathi is a tool that can be used in other contexts. It is now part of my toolbelt. initContainer wait4x To go further: ikhaya ikhaya ikhaya Ukubuyekezwa4x Ngakho-ke ungenza ezinye izindawo Kubernetes? Okokuqala ku-A Java Geek ku-April 20th, 2025 I-Java Geek