Umlando omusha

Ukubuyekeza: Umlando Olandelayo Olandelayo Olandelayo Olandelayo

nge Nicolas Fränkel6m2025/04/25
Read on Terminal Reader

Kude kakhulu; Uzofunda

Ngaphezu kwalokho, lapho ngitholile isiteshi elithathelwe I-Testing Your Pull Request on Kubernetes nge-GKE ne-GitHub Actions, ngitholela inkinga elifanayo ngezikhathi ezimbili: inkonzo A inesidingo inkonzo B, kodwa inkonzo A inquma ngokukhawuleza kunazo inkonzo B, futhi inqubo inquma. Kule post, ngitholile inkulumo lwezinkinga zayo futhi indlela ngitholile ngamunye nge-tool efanayo.
featured image - Ukubuyekeza: Umlando Olandelayo Olandelayo Olandelayo Olandelayo
Nicolas Fränkel HackerNoon profile picture

Ngaphezu kwalokho, ngexesha elandelayo, i-WorkshopUkubuyekeza Isicelo sakho se-Pull ku-Kubernetes nge-GKE ne-GitHub Actions, 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.

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 ikakhulukaziFailedumoya


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 inikezaUkubuyekezwaWaze:


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/healthendpoint phezulu. Kubernetes inikeza amabili exclusiveUkubuyiselwaIzinzuzo zokusebenza:httpGetnomaexec. 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.I-Bitnami Helm Chartizibuyekezo ezilandelayo uma isicelo:


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,WazeI-script for this. I-idea iyona elula:


ikhaya

./wait-for kuyinto script eyenzelwe ukuhlangabezana nezinsizakalo ezifana ne-docker containers. Kuyinto sh kanye ne-alpine ehlanganisiwe.

ikhaya

./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.


Ukubuyekezwa4xumdlalo efanayo, kodwa iyatholakala njenge-containers versioned futhi inikeza inkonzo ezininzi ezihlangene: HTTP, DNS, databases, kanye nezivakashi zebhizinisi. Lokhu kubalulekile kwami.


Yonke ithuluzi ungasebenzisa, ungasebenzisa ngaphakathiIndawo yokufakelwaWaze:


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.

ikhaya

I-Init containers iyiphi i-containers ezivamile, ngaphandle:

ikhaya


    I-Init containers iyatholakala kuze kube lokugqibela. I-Init container iyatholakala ngokushesha ngaphambi kokuqala.
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.


Ukubonisa umzekeloPodKuyinto kulingana PostgreSQLDeploymentWaze:


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 ngeinitContainerUkubuyekezwa kwe-containers


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, iinitContainerNgemuva kwalokho, i-database iyahambisana ne-akhawunti ye-akhawunti ye-akhawunti ye-akhawunti ye-akhawunti.recommandationskubernetes. Kubernetes akufanele ukuguqulwaPodNjengoba ku-setup edlule! Kufaka i-logs engaphansi kanye ne-alerts engaphansi.

Uma ukubuyekeza kwenziwa obligatory

Ukubuyekezwa okuphakeme, kodwa ungakwazi ukwenza ngaphandle kwalokho. Kwezinye izimo, ukuhambisa kubaluleke. Ngitholile ngempumelelo eminyakeni okuphakeme emaphakeme. Isikhathi esilandelayo:


    ikhaya
  • I-pipeline isetshenziselwa i-manifesto ku-Kubernetes
  • ikhaya
  • Ngo-step elilandelayo, it is run the test
  • ikhaya
  • Njengoba isizinda kuqala ngaphambi kokufunda isicelo, isizinda.
  • ikhaya


Thina siphinde ukuze backend iyatholakala ngaphambi kokuphendula. Thina usebenzisawait4xUkubuyekeza ukubaPodukuze ufumane imibuzo ngaphambi kokushicilela izifundo:


      - 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
  1. I-GitHub Action inikeza ukuqhuba i-containers. Ngingathanda ukulanda i-Go binary.
  2. ikhaya
  3. Ukubuyekeza kuze kube /health endpoint ukuguqulwa 200 isivumelwano ikhodi.
  4. ikhaya

Ukuphakama

Kubernetes i-start-up probes iyindlela enhle yokuvimbela ukuqala okungenani lapho ufake izinsizakalo ezisebenzayo. I-alternative is a external waiting tool configured in ainitContainerNgathiwait4xis a tool that can be used in other contexts. It is now part of my toolbelt.


To go further:


    ikhaya
  • Ukubuyekezwa4x
  • ikhaya
  • Ngakho-ke ungenza ezinye izindawo Kubernetes?
  • ikhaya



Okokuqala ku-A Java Geek ku-April 20th, 2025

I-Java Geek

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks