Hordhac GitOps ee OpenShift

Maanta waxaan ka hadli doonaa mabaadi'da iyo moodooyinka GitOps, iyo sidoo kale sida moodooyinkan loogu hirgeliyay goobta OpenShift. Hagaha isdhexgalka ee mawduucan ayaa diyaar ah link.

Hordhac GitOps ee OpenShift

Marka la soo koobo, GitOps waa hab-dhaqameedyo loo isticmaalo codsiyada jiidista Git si loo maareeyo kaabayaasha iyo habaynta codsiga. Kaydka Git ee GitOps waxa loola dhaqmaa sidii il keliya oo macluumaad ah oo ku saabsan xaaladda nidaamka, iyo isbeddel kasta oo ku yimaadda gobolkan si buuxda ayaa loo raad-raaci karaa oo la hubin karaa.

Fikradda isbeddelka raadinta ee GitOps macnaheedu maaha mid cusub; habkan ayaa muddo dheer la isticmaalay ku dhawaad ​​caalami ahaan marka la shaqeynayo code isha codsiga. GitOps waxay si fudud u fulisaa sifooyin la mid ah (dib u eegis, soo jiidashada codsiyada, tags, iwm.) ee kaabayaasha iyo qaabeynta qaabeynta codsiyada waxayna bixisaa faa'iidooyin la mid ah sida kiiska maareynta koodhka isha.

Ma jiro qeexitaan tacliimeed ama xeerar la ansixiyay oo loogu talagalay GitOps, kaliya mabaadi'da ay ku dhisan tahay dhaqankan:

  • Sharaxaadda caddaynta ee nidaamka waxa lagu kaydiyaa kaydka Git (habaynta, la socodka, iwm.).
  • Isbeddellada gobolka waxaa lagu sameeyaa codsiyada jiidista.
  • Xaaladda nidaamyada socodsiinta waxaa la waafajiyaa xogta ku jirta kaydka iyadoo la adeegsanayo codsiyada riixitaanka Git.

Mabaadi'da GitOps

  • Qeexitaannada nidaamka waxaa lagu tilmaamay inay yihiin koodka isha

Habaynta nidaamyada waxaa loola dhaqmaa sidii kood si loo kaydiyo oo si toos ah loogu daabaco kaydka Git, kaas oo u adeega sida hal il oo runta ah. Habkani waxa uu sahlayaa in la soo rogo oo dib loo rogo isbeddelada nidaamyada.

  • Gobolka la doonayo iyo qaabeynta nidaamyada ayaa lagu dejiyay oo lagu daabacaa Git

Kaydinta iyo nuqul ka samaynta nidaamka la doonayo ee Git, waxaan awoodnaa inaan si fudud u soo saarno oo dib ugu celino isbeddelada nidaamyada iyo codsiyada. Waxaan sidoo kale isticmaali karnaa hababka amniga ee Git si aan u xakameyno lahaanshaha koodka oo aan u xaqiijino runnimadeeda.

  • Isbeddellada qaabaynta ayaa si toos ah loogu dabaqi karaa codsiyada jiidista

Isticmaalka codsiyada jiidashada Git, waxaan si fudud u xakameyn karnaa sida isbeddelada loogu dabaqo habeynta kaydka. Tusaale ahaan, waxaa la siin karaa xubnaha kale ee kooxda si ay dib ugu eegaan ama u maraan imtixaanada CI, iwm.

Isla mar ahaantaana, looma baahna in la qaybiyo awoodaha maamulka bidix iyo midig. Si loo sameeyo isbeddelada qaabeynta, isticmaalayaashu waxay kaliya u baahan yihiin oggolaansho ku habboon kaydka Git halkaas oo qaabayntaas lagu kaydiyo.

  • Hagaajinta dhibka habaynta habaynta ee aan la xakamayn

Marka nidaamka la doonayo ee nidaamka lagu kaydiyo kaydka Git, waxa kaliya ee ay tahay in aan samayno waa hel software kaas oo hubin doona in nidaamka hadda jira uu la mid yahay gobolka la rabo. Haddi aanay taasi ahayn kiis, markaas software-kani waa inuu - ku xidhan yahay goobaha - ama meesha ka saaro is-khilaafaadka kaligiis, ama na ogeysiiso qaabeynta qaabeynta.

Qaababka GitOps ee OpenShift

Dib-u-heshiisiinta Kheyraadka Kooxda

Marka loo eego qaabkan, kooxdu waxay leedahay kontaroole mas'uul ka ah isbarbardhigga ilaha Kubernetes (faylalka YAML) ee kaydka Git iyo agabka dhabta ah ee kooxda. Haddii la ogaado kala duwanaanshiyaha, kontarooluhu wuxuu soo diraa ogeysiisyo waxaana suurtogal ah inuu qaado tallaabo si loo saxo khilaafaadka. Qaabka GitOps-ka waxa lagu isticmaalay Anthos Config Management iyo Weaveworks Flux.

Hordhac GitOps ee OpenShift

Dib-u-heshiisiinta Kheyraadka Dibadda (Riix)

Qaabkan waxa loo tixgalin karaa kala duwanaanshiyaha kii hore, marka aan haysano hal ama in ka badan oo kontaroolayaal ah oo masuul ka ah isku xidhka agabka β€œGit repository - Kubernetes cluster” lammaane. Farqiga halkan ku jira ayaa ah in koox kasta oo la maareeyey aanay qasab ahayn in aanay yeelan koontarool u gaar ah. Kooxda Git-k8s waxaa inta badan lagu qeexaa sida CRDs (Qeexitaannada kheyraadka gaarka ah), kaas oo sharxi kara sida koontarooluhu uu u sameeyo isku-dubarid. Qaabkan dhexdiisa, kontaroolayaashu waxay isbarbardhigaan kaydka Git ee lagu cayimay CRD iyo agabyada kutlada Kubernetes, kuwaas oo sidoo kale lagu cayimay CRD, oo waxay qabtaan ficilo ku haboon oo ku salaysan natiijooyinka isbarbardhigga. Gaar ahaan, qaabkan GitOps waxaa lagu isticmaalaa ArgoCD.

Hordhac GitOps ee OpenShift

GitOps ee madal OpenShift

Maamulka kaabayaasha badan ee Kubernetes

Iyada oo faafitaanka Kubernetes iyo caannimada sii kordheysa ee xeeladaha daruuraha badan iyo xisaabinta cidhifyada, celceliska tirada kooxaha OpenShift macmiilkiiba waa sii kordhayaa.

Tusaale ahaan, marka la isticmaalayo kombuyuutarka geesaha, hal koox oo macmiil ah ayaa la geyn karaa boqolaal ama xitaa kumanaan. Natiijo ahaan, waxaa lagu qasbay inuu maareeyo dhowr kooxood oo OpenShift ah oo madax banaan ama isku dubaridan oo ku dhex jira daruuraha dadweynaha iyo goobta.

Xaaladdan oo kale, dhibaatooyin badan ayaa loo baahan yahay in la xalliyo, gaar ahaan:

  • Xakamee in kooxuhu ay ku jiraan xaalad isku mid ah (habaynta, la socodka, kaydinta, iwm.)
  • Dib u samee (ama soo celi) rucubyada ku salaysan xaalad la yaqaan.
  • Abuur kooxo cusub oo ku salaysan dawlad la yaqaan
  • U soo rogo isbeddelada dhowr kooxood oo OpenShift ah.
  • Dib u rog isbedelada badan oo kutlada OpenShift
  • Ku xidh qaabaynta qaabaysan ee deegaan kala duwan.

Habaynta Codsiga

Inta lagu jiro meertada noloshooda, codsiyadu waxay inta badan maraan silsilado kooxo ah (dev, stage, iwm.) ka hor intaysan ku dambayn koox wax soo saar ah. Intaa waxaa dheer, iyadoo ay ugu wacan tahay shuruudaha la heli karo iyo miisaanka, macaamiishu waxay inta badan geeyaan codsiyada guud ahaan kooxo badan oo dhismo ah ama gobollo badan oo ka mid ah madal daruuraha dadweynaha.

Xaaladdan oo kale, hawlaha soo socda waa in la xalliyo:

  • Hubi dhaqdhaqaaqa codsiyada (binary, configs, iwm.) inta u dhaxaysa kooxaha (dev, stage, iwm.).
  • Ku soo rogo isbeddelada codsiyada (binary, configs, iwm.) ee dhowr kooxood oo OpenShift ah.
  • Dib ugu celi isbeddelada codsiyada xaalad hore oo la yaqaanay.

OpenShift GitOps Isticmaal Kiisas

1. Ka dalbashada isbeddelada kaydka Git

Maamulaha kooxdu waxa uu ku kaydin karaa isku xidhka kooxda OpenShift kaydka Git oo si toos ah u dabaqi kara si ay dadaal la'aan u abuuraan kooxo cusub oo ay u keenaan gobol la mid ah gobolka la yaqaan ee lagu kaydiyay kaydka Git.

2. La shaqaynta Maareeyaha Sirta

Maamuluhu waxa kale oo uu ka faa'iidaysan doonaa awoodda isku xidhka walxaha sirta ah ee OpenShift iyo software ku habboon sida Vault si uu u maareeyo iyaga oo isticmaalaya qalabka sida gaarka ah loo abuuray.

3. Xakamaynta qaabaynta qulqulka

Maamuluhu waxa kaliya oo ay ku farxi doonaan haddii OpenShift GitOps lafteedu ay aqoonsato oo ay ka digto faraqa u dhexeeya qaabaynta dhabta ah iyo kuwa lagu cayimay kaydka, si ay si dhakhso ah uga jawaabaan qulqulka.

4. Ogeysiisyada ku saabsan wareejinta qaabeynta

Waxay faa'iido u leeyihiin kiiska marka maamuluhu rabo inuu si dhakhso ah u barto kiisaska qaabeynta qaabeynta si uu si dhakhso ah u qaado tallaabooyin ku habboon naftiisa.

5. Isku-dubarid gacanta ah ee habaynta marka la durayo

Oggolow maamulaha in uu kultarka OpenShift la mideeyo kaydka Git haddii ay dhacdo qaabaynta qaabaynta, si dhakhso ah loogu celiyo kooxda xaalad hore oo la yaqaanay.

6.Auto-synchronization of designs marka la leexinayo

Maamuluhu waxa kale oo uu habayn karaa kooxda OpenShift si ay si toos ah ula jaanqaado kaydka marka la ogaado qulqulka, si habayntu kooxdu had iyo jeer ula mid noqoto isku xidhka Git.

7. Kooxo dhowr ah - hal kayd

Maamuluhu waxa uu ku kaydin karaa isku xidhka dhawr kooxood oo OpenShift kala duwan hal kayd Git oo si xushmad leh u adeegsan kara hadba sida loogu baahdo.

8. Kala sareynta habaynta kooxdu (dhaxalka)

Maamuluhu waxa uu dejin karaa kala sareynta habaynta kooxda ee kaydka (marxaladda, prod, faylalka abka, iwm. leh dhaxalka). Si kale haddii loo dhigo, waxay go'aamin kartaa in qaabaynta lagu dabaqo hal ama in ka badan oo rucubyo ah.

Tusaale ahaan, haddii maamuluhu uu qeexo kala sarreynta "Kooxaha wax-soo-saarka (prod) β†’ Kooxaha nidaamka X β†’ Kooxaha wax-soo-saarka ee nidaamka X" ee ku jira kaydka Git, markaa isku-darka qaababkan soo socda ayaa lagu dabaqay koox-soo-saarka nidaamka X:

  • Confis ka dhexeeya dhammaan kooxaha wax soo saarka
  • Habaynta nidaamka X kutlada
  • Habaynta kooxda wax soo saarka nidaamka X.

9. Qaababka iyo qaabaynta ayaa meesha ka saaraysa

Maamuluhu waxa uu burin karaa habaynta la dhaxlo iyo qiyamkooda, tusaale ahaan, si loo hagaajiyo qaabaynta kooxaha gaarka ah ee lagu dabaqi doono.

10. Xulashada waxaa ka mid ah oo ka saaraya habaynta, habaynta codsiga

Maamuluhu wuxuu dejin karaa shuruudaha codsiga ama codsi la'aanta isku xidhka qaar ka mid ah kooxo leh astaamo gaar ah.

11. Taageerada qaab-dhismeedka

Horumariyayaashu waxay ka faa'iidaysan doonaan awoodda ay ku dooranayaan sida agabka codsiga loo qeexi doono (Helm Chart, pure Kubernetes yaml, iwm.) si ay u isticmaalaan qaabka ugu habboon codsi kasta oo gaar ah.

Qalabka GitOps ee goobta OpenShift

ArgoCD

ArgoCD waxay fulisaa qaabka Dib-u-heshiisiinta Kheyraadka Dibadda oo waxay bixisaa UI dhexe oo habaynta hal-ilaa-badan oo xidhiidhada u dhexeeya kooxaha iyo kaydadka Git. Khasaaraha barnaamijkan waxaa ka mid ah awood la'aanta in la maareeyo codsiyada marka ArgoCD aanu shaqaynayn.

Website rasmiga ah

qulquli

Flux waxay fulisaa qaabka Dib-u-heshiisiinta Kheyraadka Kooxda-koox, natiijaduna, ma jiro maamul dhexe oo meel dhexe ah oo lagu kaydiyo qeexida, taas oo ah meel daciif ah. Dhanka kale, si sax ah sababtoo ah la'aanta xarun dhexe, awoodda maaraynta codsiyada waa ay jirtaa xitaa haddii hal koox ay ku guuldareysato.

Website rasmiga ah

Ku rakibida ArgoCD ee OpenShift

ArgoCD waxay bixisaa khadka taliska oo aad u wanaagsan iyo konsole web, markaa kuma dabooli doonno Flux iyo beddelka kale ee halkan.

Si loo geeyo ArgoCD goobta OpenShift 4, raac tillaabooyinkan maamule kooxeed ahaan:

Gelitaanka qaybaha ArgoCD ee madal OpenShift

# Create a new namespace for ArgoCD components
oc create namespace argocd
# Apply the ArgoCD Install Manifest
oc -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.2.2/manifests/install.yaml
# Get the ArgoCD Server password
ARGOCD_SERVER_PASSWORD=$(oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server" -o jsonpath='{.items[*].metadata.name}')

Hagaajinta Server-ka ArgoCD si loogu arko Waddada OpenShift

# Patch ArgoCD Server so no TLS is configured on the server (--insecure)
PATCH='{"spec":{"template":{"spec":{"$setElementOrder/containers":[{"name":"argocd-server"}],"containers":[{"command":["argocd-server","--insecure","--staticassets","/shared/app"],"name":"argocd-server"}]}}}}'
oc -n argocd patch deployment argocd-server -p $PATCH
# Expose the ArgoCD Server using an Edge OpenShift Route so TLS is used for incoming connections
oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect

Gelinaya Qalabka ArgoCD Cli

# Download the argocd binary, place it under /usr/local/bin and give it execution permissions
curl -L https://github.com/argoproj/argo-cd/releases/download/v1.2.2/argocd-linux-amd64 -o /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd

Beddelida erayga sirta ah ee maamulaha ArgoCD Server

# Get ArgoCD Server Route Hostname
ARGOCD_ROUTE=$(oc -n argocd get route argocd-server -o jsonpath='{.spec.host}')
# Login with the current admin password
argocd --insecure --grpc-web login ${ARGOCD_ROUTE}:443 --username admin --password ${ARGOCD_SERVER_PASSWORD}
# Update admin's password
argocd --insecure --grpc-web --server ${ARGOCD_ROUTE}:443 account update-password --current-password ${ARGOCD_SERVER_PASSWORD} --new-password

Ka dib markaad dhamaystirto tillaabooyinkan, waxaad la shaqayn kartaa ArgoCD Server iyada oo loo marayo ArgoCD WebUI konsole ama qalabka khadka taliska ee ArgoCD Cli.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - Marnaba ma daahin

"Tareenku wuu baxay" - tani waa waxa ay ka yiraahdeen xaalad marka fursadda wax lagu qabto ay lumiso. Xaaladda OpenShift, rabitaanka in isla markiiba la bilaabo isticmaalka goobtan cusub ee qabow waxay badanaa ku abuurtaa xaaladdan sida saxda ah maamulka iyo dayactirka waddooyinka, geynta iyo walxaha kale ee OpenShift. Laakiin fursadda had iyo jeer si buuxda ma luminaysaa?

Sii wadida taxanaha maqaallada ku saabsan GitOps, Maanta waxaan ku tusi doonaa sida loo beddelo codsiga gacanta lagu sameeyay iyo agabkiisa habraac ay wax walba ku maamulaan qalabka GitOps. Si tan loo sameeyo, waxaan marka hore gacanta ku geyn doonaa codsiga httpd. Sawirka hoose wuxuu muujinayaa sida aan u abuurno meel magac, geyn iyo adeeg, ka dibna daaha ka qaad adeeggan si aan u abuurno waddo.

oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/namespace.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/deployment.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/service.yaml
oc expose svc/httpd -n simple-app

Markaa waxaanu haynaa codsi gacanta lagu sameeyay. Hadda waxay u baahan tahay in lagu wareejiyo maamulka GitOps iyada oo aan la lumin helitaanka. Marka la soo koobo, waxay sameyneysaa sidan:

  • U samee kaydka Git ee summada
  • Waxaan dhoofineynaa walxahayaga hadda oo aan ku dhejinno kaydka Git.
  • Doorashada iyo geynta qalabka GitOps.
  • Waxaan ku darnaa kaydkayaga qalabkan.
  • Waxaan ku qeexnay codsiga ku jira qalabkeena GitOps.
  • Waxaan samaynaa tijaabada barnaamijka anagoo adeegsanayna qalabka GitOps.
  • Waxaan isku dhejineynaa walxaha anagoo adeegsanayna qalabka GitOps.
  • Daree manjooyin iyo si toos ah walxaha.

Sida hore loogu sheegay maqaal, gudaha GitOps waxaa jira hal iyo hal il oo macluumaad ah oo ku saabsan dhammaan walxaha ku jira Kubernetes cluster(yada) - kaydka Git. Marka xigta, waxaanu ka sii soconaa dhismaha in ururkaagu uu hore u isticmaalay kaydka Git. Waxay noqon kartaa mid guud ama mid gaar ah, laakiin waa inay ahaataa mid la heli karo kooxaha Kubernetes. Tani waxay noqon kartaa kayd la mid ah kan koodka codsiga, ama kayd gaar ah oo loo sameeyay si gaar ah u dirida. Waxaa lagu talinayaa in aad ogolaansho adag ku haysato kaydka maadaama siraha, wadooyinka, iyo waxyaabaha kale ee xasaasiga ah lagu kaydin doono meeshaas.

Tusaalahayaga, waxaanu ku abuuri doonaa kayd dadweyne oo cusub GitHub. Waxaad u wici kartaa wax kasta oo aad jeceshahay, waxaan isticmaalnaa magaca blogpost.

Haddii faylasha shayga YAML aan lagu kaydin gudaha ama Git, markaa waa inaad isticmaashaa oc ama kubectl binaries. Sawirka hoose waxa aanu ka codsanaynaa YAML magacayada, geynta, adeegayada iyo dariiqayada. Taas ka hor, waxaan xirnay kaydka cusub ee la sameeyay oo aan galnay cd.

oc get namespace simple-app -o yaml --export > namespace.yaml
oc get deployment httpd -o yaml -n simple-app --export > deployment.yaml
oc get service httpd -o yaml -n simple-app --export > service.yaml
oc get route httpd -o yaml -n simple-app --export > route.yaml

Hadda aan tafatirno faylka deployment.yaml si aan meesha uga saarno Argo CD-gu ma la jaanqaadi karo.

sed -i '/sgeneration: .*/d' deployment.yaml

Intaa waxaa dheer, dariiqa loo baahan yahay in la beddelo. Waxa aynu marka hore dejin doonaa doorsoome xariiqo badan ka dibna waxa aanu ku badali doonaa soo galitaanka: waxba kama jiraan waxa ku jira doorsoomahaas.

export ROUTE="  ingress:                                                            
    - conditions:
        - status: 'True'
          type: Admitted"

sed -i "s/  ingress: null/$ROUTE/g" route.yaml

Markaa, waxaanu kala saarnay faylalka, waxa hadhay oo dhan waa in lagu kaydiyo kaydka Git. Markaa ka dib kaydkani waxa uu noqdaa isha kaliya ee macluumaadka, iyo wax ka bedelka buug-gacmeedka ee walxaha waa in si adag loo mamnuucaa.

git commit -am β€˜initial commit of objects’
git push origin master

Intaa waxaa dheer, waxaan ka sii soconeynaa xaqiiqda ah in aad mar hore geysay ArgoCD (sida tan loo sameeyo - arag hore dhajin). Sidaa darteed, waxaan ku dari doonaa Argo CD-ga kaydka aan abuurnay, oo ka kooban code-ka codsiga ee tusaalahayaga. Kaliya iska hubi inaad qeexday kaydka saxda ah ee aad hore u abuurtay.

argocd repo add https://github.com/cooktheryan/blogpost

Hadda aynu abuurno codsiga. Codsigu wuxuu dejiyaa qiyam si qalabka GitOps uu u fahmo kaydka iyo waddooyinka loo isticmaalo, kaas oo OpenShift loo baahan yahay si loo maareeyo walxaha, kaas oo laan gaar ah oo kaydka ah loo baahan yahay, iyo haddii agabku ay tahay inay iskood isula jaan qaadaan.

argocd app create --project default 
--name simple-app --repo https://github.com/cooktheryan/blogpost.git 
--path . --dest-server https://kubernetes.default.svc 
--dest-namespace simple-app --revision master --sync-policy none

Marka codsiga lagu qeexo CD-ga Argo, qalabku wuxuu bilaabaa hubinta shay horay loo geeyay oo liddi ku ah qeexitaannada ku jira kaydka. Tusaalahayaga, auto-sync iyo nadiifinta waa naafo, markaa walxuhu wali isma beddelaan. Fadlan ogow in interface-ka Argo CD-ga codsigeenu yeelan doono heerka "Out of Sync" sababtoo ah ma jirto calaamad uu ArgoCD bixiyo.
Tani waa sababta marka aan bilowno isku xirnaanta wax yar ka dib, walxaha dib looma sii dayn doono.

Hadda aynu samayno tijaabo tijaabo ah si aan u hubinno in aanay khaladaad ku jirin faylalkayaga.

argocd app sync simple-app --dry-run

Haddii aysan jirin khaladaad, markaa waxaad sii wadi kartaa is-waafajinta.

argocd app sync simple-app

Ka dib markii aan ku socodsiino amarka helista argocd codsigayaga, waa inaan aragnaa in heerka codsigu u beddelay Healthy ama Synced. Tani waxay ka dhigan tahay in dhammaan agabka ku jira kaydka Git ay hadda u dhigmaan agabkaas horay loo geeyay.

argocd app get simple-app
Name:               simple-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          simple-app
URL:                https://argocd-server-route-argocd.apps.example.com/applications/simple-app
Repo:               https://github.com/cooktheryan/blogpost.git
Target:             master
Path:               .
Sync Policy:        <none>
Sync Status:        Synced to master (60e1678)
Health Status:      Healthy
...   

Hadda waxaad awood u yeelan kartaa is-waafajinta iyo nadiifinta si loo hubiyo in aan wax gacanta lagu samayn iyo in mar kasta oo shay la sameeyo ama la cusboonaysiiyo kaydka, hawlgelinta ayaa dhici doonta.

argocd app set simple-app --sync-policy automated --auto-prune

Marka, waxaan si guul leh u keennay codsi hoos yimaada kontoroolka GitOps kaasoo markii hore aan sinaba u isticmaalin GitOps.

Source: www.habr.com

Add a comment