Fampidirana ny GitOps ho an'ny OpenShift

Androany isika dia hiresaka momba ny fitsipika sy maodely GitOps, ary koa ny fomba fampiharana ireo modely ireo amin'ny sehatra OpenShift. Misy torolalana ifanakalozan-kevitra momba ity lohahevitra ity rohy.

Fampidirana ny GitOps ho an'ny OpenShift

Raha fintinina, ny GitOps dia fomba fanao amin'ny fampiasana ny fangatahan'i Git hitantana ny fotodrafitrasa sy ny fandrindrana ny fampiharana. Ny tahiry Git ao amin'ny GitOps dia raisina ho loharanom-baovao tokana momba ny toetry ny rafitra, ary izay fiovana rehetra amin'ity fanjakana ity dia azo trandrahana sy azo jerena.

Ny hevitra momba ny fanaraha-maso fanovana ao amin'ny GitOps dia tsy vaovao mihitsy; io fomba io dia efa nampiasaina saika manerana izao rehetra izao rehefa miasa miaraka amin'ny code source application. Ny GitOps dia mametraka endri-javatra mitovy amin'izany (famerenana, fangatahana fisintonana, marika, sns.) Amin'ny fotodrafitrasa sy fitantanana ny fandrindrana ny fampiharana ary manome tombony mitovy amin'izany amin'ny fitantanana ny kaody loharano.

Tsy misy famaritana akademika na fehezan-dalàna ankatoavina ho an'ny GitOps, fitsipika iray ihany no nananganana ity fomba fanao ity:

  • Ny famaritana fanambarana momba ny rafitra dia voatahiry ao amin'ny tahiry Git (configs, fanaraha-maso, sns.).
  • Ny fanovana fanjakana dia atao amin'ny alàlan'ny fangatahana fisintonana.
  • Ny toetry ny rafitra mihazakazaka dia ampifandraisina amin'ny angon-drakitra ao amin'ny tahiry amin'ny alàlan'ny fangatahana Git push.

Fitsipika GitOps

  • Ny famaritana ny rafitra dia lazaina ho kaody loharano

Ny fandrindrana ny rafitra dia raisina ho toy ny kaody ka azo tehirizina sy adika ho azy ao amin'ny tahiry Git, izay loharano tokana ny fahamarinana. Ity fomba fiasa ity dia manamora ny famoahana sy famerenana ny fanovana amin'ny rafitra.

  • Ny fanjakana irina sy ny fandrindrana ny rafitra dia napetraka sy voavolavola ao amin'ny Git

Amin'ny alàlan'ny fitehirizana sy famoahana ny toetry ny rafitra irina ao amin'ny Git, dia afaka mandroaka mora foana sy mamerina ny fanovana amin'ny rafitra sy ny fampiharana isika. Azontsika atao koa ny mampiasa ny rafitra fiarovana an'i Git mba hifehezana ny fananana kaody sy hanamarina ny maha-azo itokiana azy.

  • Ny fanovana config dia azo ampiharina ho azy amin'ny alàlan'ny fangatahana fisintonana

Amin'ny fampiasana ny fangatahana Git pull, azontsika atao ny mifehy mora foana ny fomba ampiharana ny fanovana amin'ny fanamafisana ao amin'ny tahiry. Ohatra, azo omena ny mpikambana hafa ao amin'ny ekipa izy ireo mba hojerena na hihazakazaka amin'ny fitsapana CI, sns.

Ary amin'izay fotoana izay dia tsy ilaina ny mizara ny fahefana admin ankavia sy havanana. Raha te hanova ny fanovana, ny mpampiasa dia mila fahazoan-dàlana mifanaraka amin'izany ao amin'ny tahiry Git izay itahirizana azy ireo.

  • Famahana ny olan'ny fifindran'ny configurations tsy voafehy

Raha vantany vao voatahiry ao amin'ny tahiry Git ny toetry ny rafitra tiana, ny hany tsy maintsy ataontsika dia ny mitady rindrambaiko izay hiantoka fa ny toetry ny rafitra amin'izao fotoana izao dia mifanaraka amin'ny toe-javatra tadiaviny. Raha tsy izany no zava-misy, dia ity rindrambaiko ity dia tokony - miankina amin'ny toe-javatra - na hanafoana ny tsy fitovian-kevitra samirery, na hampandre anay momba ny fizotry ny fikirakirana.

Models GitOps ho an'ny OpenShift

On-Cluster Resource Reconciler

Araka io maodely io, ny cluster dia manana mpanara-maso izay tompon'andraikitra amin'ny fampitahana ny loharanon-karena Kubernetes (rakitra YAML) ao amin'ny tahiry Git miaraka amin'ny tena loharanon'ny cluster. Raha hita ny tsy fitovian-kevitra dia mandefa fampandrenesana ny mpanara-maso ary mety handray fepetra hanitsiana ny tsy fitoviana. Ity modely GitOps ity dia ampiasaina amin'ny Anthos Config Management sy Weaveworks Flux.

Fampidirana ny GitOps ho an'ny OpenShift

Fampihavanana loharanon-karena ivelany (Push)

Ity modely ity dia azo raisina ho toy ny fiovaovan'ny teo aloha, rehefa manana mpanara-maso iray na maromaro isika tompon'andraikitra amin'ny fampifanarahana ny loharanon-karena ao amin'ny mpivady "Git repository - cluster Kubernetes". Ny mahasamihafa azy eto dia ny cluster tsirairay tantana dia tsy voatery manana mpanara-maso manokana. Git - k8s cluster dia matetika nofaritana ho CRDs (famaritana ny loharanon-karena manokana), izay afaka mamaritra ny fomba tokony hanaovan'ny mpanara-maso ny fampifanarahana. Ao anatin'ity maodely ity, ny mpanara-maso dia mampitaha ny tahiry Git voalaza ao amin'ny CRD amin'ny loharanon-karena cluster Kubernetes, izay voatondro ao amin'ny CRD ihany koa, ary manao hetsika mifanaraka amin'ny vokatry ny fampitahana. Indrindra indrindra, ity modely GitOps ity dia ampiasaina amin'ny ArgoCD.

Fampidirana ny GitOps ho an'ny OpenShift

GitOps amin'ny sehatra OpenShift

Fitantanana ny fotodrafitrasa Kubernetes marobe

Miaraka amin'ny fiparitahan'ny Kubernetes sy ny fitomboan'ny lazan'ny paikadin'ny rahona marobe sy ny informatika edge, dia mitombo ihany koa ny salan'isan'ny cluster OpenShift isaky ny mpanjifa.

Ohatra, rehefa mampiasa informatika edge, dia azo apetraka an-jatony na an'arivony mihitsy aza ny cluster an'ny mpanjifa iray. Vokatr'izany dia voatery mitantana cluster OpenShift mahaleo tena na mirindra ao anaty rahona ho an'ny daholobe sy eo an-toerana izy.

Amin'ity tranga ity, maro ny olana tsy maintsy voavaha, indrindra indrindra:

  • Mifehy fa ny clusters dia ao anatin'ny toe-javatra mitovy (configs, fanaraha-maso, fitahirizana, sns.)
  • Avereno (na avereno) vondrona mifototra amin'ny fanjakana fantatra.
  • Mamorona cluster vaovao mifototra amin'ny fanjakana fantatra.
  • Manaova fanovana amin'ny cluster OpenShift maro.
  • Avereno indray ny fanovana amin'ny cluster OpenShift maro.
  • Ampifandraiso amin'ny tontolo isan-karazany ny fandrindrana môdely.

Application Configurations

Mandritra ny androm-piainany, matetika ny fampiharana dia mandalo amin'ny rojo-bolongana (dev, sehatra, sns.) alohan'ny hiafarany amin'ny kluster famokarana. Ho fanampin'izay, noho ny fitakiana ny fisiana sy ny scalability, matetika ny mpanjifa no mametraka rindranasa amin'ny cluster maro an-toerana na faritra maro amin'ny sehatra rahona ho an'ny daholobe.

Amin'ity tranga ity, ireto asa manaraka ireto dia tsy maintsy voavaha:

  • Ataovy azo antoka ny fihetsehan'ny rindranasa (binary, configs, sns.) eo anelanelan'ny clusters (dev, stage, sns.).
  • Alefaso ny fanovana amin'ny rindranasa (binary, configs, sns.) amin'ny cluster OpenShift maromaro.
  • Avereno ny fanovana amin'ny fampiharana amin'ny fanjakana fantatra teo aloha.

OpenShift GitOps Use Cases

1. Mampihatra fanovana avy amin'ny tahiry Git

Ny mpitantana kluster iray dia afaka mitahiry ny fandrindrana kluster OpenShift ao amin'ny tahiry Git ary mampihatra azy ireo ho azy mba hamoronana cluster vaovao ary hitondra azy ireo amin'ny fanjakana mitovy amin'ny fanjakana fantatra voatahiry ao amin'ny tahiry Git.

2. Fandrindrana amin'ny Secret Manager

Hahazo tombony ihany koa ny mpitantana amin'ny fahafahana mampifanaraka ireo zavatra miafina OpenShift amin'ny rindrambaiko mifanaraka amin'izany toa ny Vault mba hitantana azy ireo amin'ny fampiasana fitaovana noforonina manokana ho an'izany.

3. Fanaraha-maso ny fanamafisam-peo

Ny admin ihany no hahazo sitraka raha ny OpenShift GitOps mihitsy no mamantatra sy mampitandrina momba ny tsy fitovian-kevitra eo amin'ny tena rindrankajy sy ireo voatondro ao amin'ny tahiry, mba hahafahan'izy ireo mamaly haingana ny drift.

4. Fampandrenesana momba ny fihodinam-pandaminana

Izy ireo dia ilaina amin'ny tranga izay te-hahafantatra haingana momba ny tranganà fihodinam-pandaminana ny mpitantana mba handray fepetra haingana amin'ny tenany manokana.

5. Fandrindrana manual ny configurations rehefa mikoriana

Mamela ny admin hampifanaraka ny kluster OpenShift amin'ny tahiry Git raha sendra misy fisintahana, mba hamerenana haingana ny cluster amin'ny fanjakana fantatra teo aloha.

6. Auto-synchronization ny configurations rehefa drifting

Ny mpandrindra dia afaka manamboatra ny cluster OpenShift ihany koa mba hampifanaraka ho azy amin'ny tahiry rehefa hita fa misy drift, mba hifanaraka hatrany amin'ny configs ao amin'ny Git ny configuration cluster.

7. Vondrona maromaro - tahiry iray

Ny administratera dia afaka mitahiry ny fandrindrana ny clusters OpenShift maro samihafa ao anaty tahiry Git iray ary mampihatra azy ireo araka izay ilaina.

8. Ny ambaratongan'ny fandrindrana cluster (lova)

Ny admin dia afaka mametraka ambaratongan'ny fandrindrana cluster ao amin'ny tahiry (dingana, prod, portfolio app, sns miaraka amin'ny lova). Raha lazaina amin'ny teny hafa, dia afaka mamaritra raha tokony hampiharina amin'ny cluster iray na maromaro ny fanamafisana.

Ohatra, raha misy administratera mametraka ny ambaratongan'ny "Famokarana clusters (prod) → System X clusters → Production clusters an'ny rafitra X" ao amin'ny Git repository, dia ny fitambaran'ireto configs manaraka ireto dia ampiharina amin'ny vondrona famokarana an'ny rafitra X:

  • Config mahazatra amin'ny vondrona famokarana rehetra.
  • Config ho an'ny kluster System X.
  • Config ho an'ny kluster famokarana rafitra X.

9. Fanodinana ny maodely sy ny fandrindrana

Azon'ny administratera atao ny manafoana andiana config nolovaina sy ny soatoaviny, ohatra, mba hanitsiana tsara ny tefy ho an'ny cluster manokana izay hampiharana azy.

10. Mifantina mampiditra sy manilika ho an'ny configurations, fampiharana configurations

Ny mpandrindra dia afaka mametraka ny fepetra amin'ny fampiharana na tsy fampiharana ny configurations sasany amin'ny cluster misy toetra sasany.

11. Fanohanana modely

Ny mpamorona dia hahazo tombony amin'ny fahafahana misafidy ny fomba hamaritana ny loharanon'ny fampiharana (Helm Chart, Kubernetes yaml madio, sns) mba hampiasana ny endrika mety indrindra ho an'ny fampiharana manokana tsirairay.

Fitaovana GitOps amin'ny sehatra OpenShift

ArgoCD

ArgoCD dia mampihatra ny maodely External Resource Reconcile ary manolotra UI afovoany mba handrindrana fifandraisana iray amin'ny maro eo amin'ny clusters sy ny tahiry Git. Ny tsy fahampian'ity programa ity dia ny tsy fahaizana mitantana ny rindranasa rehefa tsy mandeha ny ArgoCD.

Tranonkala Ofisialy

mikoriana

Ny Flux dia mametraka modely On-Cluster Resource Reconcile ary, vokatr'izany, tsy misy fitantanana foibe ny tahiry famaritana, izay teboka malemy. Amin'ny lafiny iray, noho ny tsy fahampian'ny centralization, ny fahaizana mitantana ny fampiharana dia mijanona na dia tsy mahomby aza ny cluster iray.

Tranonkala Ofisialy

Fametrahana ArgoCD amin'ny OpenShift

ArgoCD dia manolotra interface tsara andalana baiko sy console amin'ny Internet, noho izany dia tsy handrakotra ny Flux sy ny safidy hafa eto izahay.

Raha hametraka ArgoCD amin'ny sehatra OpenShift 4, araho ireto dingana ireto amin'ny maha mpitantana cluster:

Mametraka singa ArgoCD amin'ny sehatra 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}')

Fanatsarana ny Server ArgoCD mba ho hitan'ny OpenShift Route

# 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

Mampiasa ArgoCD Cli Tool

# 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

Manova ny tenimiafina admin 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

Rehefa vita ireo dingana ireo dia afaka miara-miasa amin'ny Server ArgoCD ianao amin'ny alàlan'ny console web ArgoCD WebUI na ny fitaovana andalana baiko ArgoCD Cli.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - Tsy Tara loatra

"Niala ny lamasinina" - izany no lazain'izy ireo momba ny toe-javatra iray izay tsy afaka manao zavatra. Amin'ny tranga OpenShift, ny faniriana hanomboka avy hatrany amin'ity sehatra vaovao mahafinaritra ity dia matetika miteraka io toe-javatra io amin'ny fitantanana sy fikojakojana ny lalana, ny fametrahana ary ny zavatra OpenShift hafa. Very tanteraka ve anefa ny fahafahana?

Manohy ny andian-dahatsoratra momba ny GitOps, anio dia hasehontsika anao ny fomba hanovana ny rindranasa vita tanana sy ny loharanony ho dingana iray izay tantanan'ny fitaovana GitOps ny zava-drehetra. Mba hanaovana izany, dia hampiasa ny fampiharana httpd aloha izahay. Ny pikantsary eto ambany dia mampiseho ny fomba hamoronana namespace, fametrahana ary serivisy, ary avy eo dia mampiseho ity serivisy ity mba hamoronana lalana.

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

Noho izany dia manana fampiharana vita tanana izahay. Ankehitriny dia mila afindra eo ambanin'ny fitantanana GitOps tsy misy fahaverezan'ny fahafahana. Raha fintinina dia manao izao izy:

  • Mamorona tahiry Git ho an'ny code.
  • Manondrana ny zavatra ankehitriny izahay ary mampiditra azy ireo ao amin'ny tahiry Git.
  • Misafidiana sy mampiasa fitaovana GitOps.
  • Ampidirinay amin'ity kitapom-pitaovana ity ny fitahirizanay.
  • Mamaritra ny fampiharana ao amin'ny kitapom-pitaovanay GitOps izahay.
  • Manao andrana amin'ny fampiharana izahay amin'ny alàlan'ny kitapo fitaovan'ny GitOps.
  • Mampifanara-javatra amin'ny alalan'ny fitaovana GitOps izahay.
  • Alefaso ny fanetezam-boaloboka sy ny fandrindrana ho azy ny zavatra.

Araka ny voalaza teo aloha lahatsoratra, ao amin'ny GitOps dia misy loharanom-baovao tokana sy tokana momba ny zavatra rehetra ao amin'ny cluster (s) Kubernetes - ny tahiry Git. Manaraka izany dia miroso amin'ny vinavina izahay fa efa mampiasa tahiry Git ny fikambananao. Mety ho an'ny daholobe na tsy miankina izy io, saingy tsy maintsy idirana amin'ny cluster Kubernetes. Ity dia mety ho tahiry mitovy amin'ny kaody fampiharana, na tahiry manokana noforonina manokana ho an'ny fametrahana. Amporisihina ny hanana fahazoan-dàlana henjana ao amin'ny tahiry satria hotehirizina ao ny tsiambaratelo, ny lalana ary ny zavatra hafa saro-pady.

Amin'ny ohatra ataontsika dia hamorona tahirim-bahoaka vaovao ao amin'ny GitHub isika. Azonao atao ny miantso azy izay tianao, mampiasa ny anarana blogpost izahay.

Raha tsy voatahiry ao an-toerana na ao amin'ny Git ny rakitra YAML dia tsy maintsy mampiasa ny binary oc na kubectl ianao. Ao amin'ny pikantsary etsy ambany dia mangataka YAML izahay ho an'ny toerana misy ny anaranay, fametrahana, serivisy ary lalana. Talohan'io, dia nanangona ny tahiry vao noforonina izahay ary cd ao anatiny.

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

Andeha isika hanova ny rakitra deployment.yaml hanesorana ny saha tsy azon'ny Argo CD ampifandraisina.

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

Ankoatra izany, mila ovaina ny lalana. Hametraka fari-pitsipika maromaro aloha isika ary hanolo ny ingress: null miaraka amin'ny votoatin'io faribolana io.

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

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

Noho izany, nandamina ireo rakitra izahay, ny hany sisa tavela dia ny mamonjy azy ireo ao amin'ny tahiry Git. Aorian'izay dia ity tahiry ity no hany loharanom-baovao, ary ny fanovana manual amin'ny zavatra dia tokony ho voarara tanteraka.

git commit -am ‘initial commit of objects’
git push origin master

Manaraka izany dia miroso amin'ny hoe efa nametraka ArgoCD ianao (ny fomba hanaovana izany - jereo ny teo aloha lahatsoratra). Noho izany dia ampidirintsika ao amin'ny CD Argo ny tahiry noforoninay, misy ny kaody fampiharana avy amin'ny ohatra asehontsika. Ataovy azo antoka fa mamaritra ny tahiry marina noforoninao teo aloha ianao.

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

Andeha isika hamorona ny fampiharana. Ny fampiharana dia mametraka soatoavina mba hahafantaran'ny kitapom-pitaovana GitOps hoe inona ny tahiry sy ny lalana hampiasaina, izay OpenShift ilaina amin'ny fitantanana zavatra, izay sampana manokana amin'ny fitahirizana no ilaina, ary raha tokony ho automatique ny loharano.

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

Raha vantany vao voatondro ao amin'ny CD Argo ny fampiharana iray, dia manomboka manamarina ireo zavatra efa napetraka manohitra ny famaritana ao amin'ny tahiry ny kitapom-pitaovana. Ao amin'ny ohatra ataontsika, ny auto-sync sy ny fanadiovana dia kilemaina, noho izany dia mbola tsy miova ireo singa. Mariho fa ao amin'ny interface CD Argo dia hanana ny sata "Out of Sync" ny fampiharana anay satria tsy misy marika omen'ny ArgoCD.
Izany no antony rehefa manomboka synchronization kely taty aoriana dia tsy haverina ny zavatra.

Andeha isika hanao andrana mba hahazoana antoka fa tsy misy lesoka ao amin'ny rakitray.

argocd app sync simple-app --dry-run

Raha tsy misy lesoka dia afaka miroso amin'ny synchronization ianao.

argocd app sync simple-app

Aorian'ny fampandehanana ny baiko argocd get amin'ny fampiharana ataontsika dia tokony ho hitantsika fa niova ho Healthy na Synced ny satan'ny fampiharana. Midika izany fa ny loharano rehetra ao amin'ny tahiry Git dia mifanitsy amin'ireo loharano efa napetraka.

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

Azonao atao izao ny mamela ny auto-sync sy ny fanadiovana mba hahazoana antoka fa tsy misy na inona na inona noforonina amin'ny tanana ary isaky ny misy zavatra noforonina na havaozina ao amin'ny tahiry dia hisy ny fametrahana.

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

Noho izany, nahomby izahay nitondra fampiharana teo ambany fifehezan'ny GitOps izay tsy nampiasa GitOps tamin'ny voalohany.

Source: www.habr.com

Add a comment