Réamhrá ar GitOps le haghaidh OpenShift

Sa lá atá inniu beimid ag caint faoi phrionsabail agus samhlacha GitOps, chomh maith leis an gcaoi a gcuirtear na samhlacha sin i bhfeidhm ar an ardán OpenShift. Tá treoir idirghníomhach ar an ábhar seo ar fáil по ссылке.

Réamhrá ar GitOps le haghaidh OpenShift

Go hachomair, is sraith cleachtas é GitOps chun iarratais tarraingthe Git a úsáid chun bonneagair agus cumraíochtaí feidhmchláir a bhainistiú. Déileáiltear le stór Git in GitOps mar fhoinse aonair faisnéise faoi staid an chórais, agus tá aon athruithe ar an stát seo inrianaithe agus in-iniúchta go hiomlán.

Níl an smaoineamh maidir le rianú athruithe i GitOps nua ar bith; tá an cur chuige seo in úsáid le fada beagnach go huilíoch agus muid ag obair le cód foinse an fheidhmchláir. Cuireann GitOps gnéithe den chineál céanna i bhfeidhm go simplí (athbhreithnithe, iarratais tarraingthe, clibeanna, etc.) i mbainistíocht bonneagair agus cumraíochta feidhmchláir agus soláthraíonn sé sochair chomhchosúla mar atá i gcás bainistíochta cód foinse.

Níl aon sainmhíniú acadúil ná sraith rialacha formheasta ann do GitOps, níl ann ach sraith prionsabal ar a bhfuil an cleachtas seo bunaithe:

  • Stóráiltear cur síos dearbhaithe an chórais i stór Git (configs, monatóireacht, etc.).
  • Déantar athruithe stáit trí iarratais ar tharraingt.
  • Cuirtear staid na gcóras reatha i gcomhréir leis na sonraí sa stór trí úsáid a bhaint as iarratais bhrú Git.

Prionsabail GitOps

  • Déantar cur síos ar shainmhínithe córais mar chód foinse

Déileáiltear le cumraíocht córais mar chód ionas gur féidir é a stóráil agus a leagan go huathoibríoch i stór Git, a fheidhmíonn mar fhoinse amháin fírinne. Fágann an cur chuige seo go bhfuil sé éasca athruithe i gcórais a rolladh amach agus a rolladh siar.

  • Socraítear staid agus cumraíocht na gcóras atá ag teastáil agus leagtar iad in Git

Trí staid inmhianaithe na gcóras a stóráil agus a leagan in Git, táimid in ann athruithe ar chórais agus ar fheidhmchláir a rolladh amach agus a rolladh siar go héasca. Is féidir linn meicníochtaí slándála Git a úsáid freisin chun úinéireacht cóid a rialú agus a bharántúlacht a fhíorú.

  • Is féidir athruithe cumraíochta a chur i bhfeidhm go huathoibríoch trí iarratais tarraingthe

Ag baint úsáide as iarratais tarraingt Git, is féidir linn a rialú go héasca conas a chuirtear athruithe i bhfeidhm ar chumraíochtaí sa stór. Mar shampla, is féidir iad a thabhairt do bhaill foirne eile le haghaidh athbhreithnithe nó a reáchtáil trí thástálacha CI, etc.

Agus ag an am céanna, níl aon ghá le cumhachtaí riaracháin a dháileadh ar chlé agus ar dheis. Chun athruithe cumraíochta a ghealladh, ní gá ach ceadanna cuí a bheith ag úsáideoirí sa stór Git ina bhfuil na cumraíochtaí sin stóráilte.

  • An fhadhb a bhaineann le sruth neamhrialaithe na bhfoirmíochtaí a réiteach

Nuair a bheidh staid inmhianaithe an chórais stóráilte i stór Git, níl le déanamh againn ach bogearraí a aimsiú a chinnteoidh go mbeidh staid reatha an chórais ag teacht leis an staid inmhianaithe. Murab amhlaidh an cás, ba cheart don bhogearra seo - ag brath ar na socruithe - deireadh a chur leis an neamhréireacht ina aonar, nó fógra a thabhairt dúinn maidir le sruth cumraíochta.

Samhlacha GitOps le haghaidh OpenShift

Réiteach Acmhainne Ar Chnuasach

De réir an tsamhail seo, tá rialtóir ag an mbraisle atá freagrach as acmhainní Kubernetes (comhaid YAML) i stór Git a chur i gcomparáid le fíor-acmhainní an bhraisle. Má aimsítear neamhréireachtaí, seolann an rialaitheoir fógraí agus b'fhéidir go ndéanann sé beart chun na neamhréireachtaí a cheartú. Úsáidtear an tsamhail GitOps seo in Anthos Config Management agus Weaveworks Flux.

Réamhrá ar GitOps le haghaidh OpenShift

Réiteach Acmhainní Seachtracha (Brúigh)

Is féidir an tsamhail seo a mheas mar athrú ar an gceann roimhe seo, nuair a bhíonn rialtóir amháin nó níos mó againn atá freagrach as acmhainní a shioncronú i bpéirí “stór Git - braisle Kubernetes”. Is é an difríocht anseo ná nach gá go mbeadh a rialtóir ar leith féin ag gach braisle bainistithe. Is minic a shainmhínítear péirí braisle Git - k8s mar CRDs (sainmhínithe acmhainní saincheaptha), ar féidir leo cur síos a dhéanamh ar conas ba cheart don rialtóir sioncrónú a dhéanamh. Laistigh den tsamhail seo, déanann rialtóirí an stór Git atá sonraithe sa CRD a chur i gcomparáid le hacmhainní braisle Kubernetes, atá sonraithe sa CRD freisin, agus déanann siad gníomhartha iomchuí bunaithe ar thorthaí na comparáide. Go háirithe, úsáidtear an tsamhail GitOps seo in ArgoCD.

Réamhrá ar GitOps le haghaidh OpenShift

GitOps ar an ardán OpenShift

Riar ar bhonneagar ilbhraisle Kubernetes

Le scaipeadh Kubernetes agus an tóir atá ag fás ar straitéisí il-scamall agus ríomhaireachta imeall, tá meánlíon na mbraislí OpenShift in aghaidh an chustaiméara ag méadú freisin.

Mar shampla, agus ríomhaireacht chiumhais á húsáid, is féidir braislí custaiméara amháin a imscaradh sna céadta nó fiú na mílte. Mar thoradh air sin, cuirtear iallach air roinnt braislí OpenShift neamhspleácha nó comhordaithe a bhainistiú sa scamall poiblí agus san áitreabh.

Sa chás seo, ní mór go leor fadhbanna a réiteach, go háirithe:

  • Rialú go bhfuil na braislí i riocht comhionann (configs, monatóireacht, stóráil, etc.)
  • Braislí a athchruthú (nó a athbhunú) bunaithe ar staid aitheanta.
  • Cruthaigh braislí nua bunaithe ar staid aitheanta.
  • Rollaigh amach athruithe ar ilchnuasaigh OpenShift.
  • Rollaigh athruithe siar thar ilchnuasaigh OpenShift.
  • Nasc cumraíochtaí teimpléid le timpeallachtaí éagsúla.

Cumraíochtaí Feidhmchláir

Le linn a saolré, is minic a théann feidhmchláir trí shlabhra braislí (dev, stáitse, etc.) sula gcríochnaíonn siad i mbraisle táirgeachta. Ina theannta sin, mar gheall ar riachtanais infhaighteachta agus inscálaithe, is minic a úsáideann custaiméirí feidhmchláir thar ilchnuasaigh ar an áitreabh nó i réigiúin iolracha d’ardán néil poiblí.

Sa chás seo, ní mór na tascanna seo a leanas a réiteach:

  • Cinntigh gluaiseacht na n-iarratas (dénártha, configs, etc.) idir braislí (dev, céim, etc.).
  • Rollaigh amach athruithe ar fheidhmchláir (dénártha, cumraíochtaí, etc.) i roinnt braislí OpenShift.
  • Rollaigh siar athruithe ar iarratais chuig staid aitheanta roimhe seo.

Cásanna Úsáide OpenShift GitOps

1. Athruithe a chur i bhfeidhm ó stór Git

Is féidir le riarthóir braisle cumraíochtaí braisle OpenShift a stóráil i stór Git agus iad a chur i bhfeidhm go huathoibríoch chun braislí nua a chruthú gan stró agus iad a thabhairt isteach i stát atá comhionann leis an stát aitheanta atá stóráilte i stór Git.

2. Sioncrónú le Bainisteoir Rúnda

Bainfidh an riarthóir leas freisin as an gcumas atá ann réada rúnda OpenShift a shioncronú le bogearraí cuí mar Vault chun iad a bhainistiú ag baint úsáide as uirlisí a cruthaíodh go speisialta chuige seo.

3. Rialú cumraíochtaí srutha

Ní bheidh an riarthóir i bhfabhar ach amháin má aithníonn OpenShift GitOps é féin agus go dtugann sé rabhadh faoi neamhréireachtaí idir cumraíochtaí fíor agus iad siúd atá sonraithe sa stór, ionas gur féidir leo freagairt go tapa ar shreabhadh.

4. Fógraí maidir le sruth cumraíochta

Tá siad úsáideach i gcás nuair is mian leis an riarthóir foghlaim go tapa faoi chásanna srutha cumraíochta chun na bearta cuí a ghlacadh go tapa ina n-aonar.

5. Cumraíochtaí a shioncronú de láimh agus iad ag sruthlú

Ligeann sé seo don riarthóir an bhraisle OpenShift a shioncronú leis an stór Git i gcás srutha cumraíochta, chun an braisle a thabhairt ar ais go tapa chuig staid aitheanta roimhe seo.

6.Auto-sioncrónú na bhfoirmíochtaí nuair a drifting

Is féidir leis an riarthóir braisle OpenShift a chumrú freisin chun sioncrónú go huathoibríoch leis an stór nuair a aimsítear sruth, ionas go mbeidh cumraíocht an bhraisle ag teacht leis na cumraíochtaí i Git i gcónaí.

7. Roinnt braislí - stór amháin

Is féidir leis an riarthóir cumraíochtaí de roinnt braislí OpenShift éagsúla a stóráil i stór amháin Git agus iad a chur i bhfeidhm go roghnach de réir mar is gá.

8. Ordlathas na bhfoirmíochtaí braisle (oidhreacht)

Is féidir leis an riarthóir ordlathas cumraíochtaí braisle a shocrú sa stór (céim, táirge, punann aipe, etc. le hoidhreacht). I bhfocail eile, is féidir leis a chinneadh ar cheart cumraíochtaí a chur i bhfeidhm ar bhraisle amháin nó níos mó.

Mar shampla, má leagann riarthóir an t-ordlathas “Braislí táirgeachta (táirgí) → Cnuasaigh Chóras X → Cnuasaigh táirgeachta de chóras X" sa stór Git, ansin cuirtear meascán de na cumraíochtaí seo a leanas i bhfeidhm ar bhraislí táirgeachta chóras X:

  • Cumraíochtaí atá comónta do gach braisle táirgeachta.
  • Cumraíochtaí do bhraisle Chóras X.
  • Cumraíochtaí do bhraisle táirgeachta an chórais X.

9. Sáraítear teimpléid agus cumraíocht

Is féidir leis an riarthóir sraith de chumraíochtaí oidhreachta agus a luachanna a shárú, mar shampla, chun an chumraíocht a mhionchoigeartú do bhraislí ar leith a gcuirfear i bhfeidhm iad.

10. Roghnach áirítear agus eisiamh le haghaidh cumraíochtaí, cumraíochtaí feidhmchlár

Is féidir leis an riarthóir na coinníollacha a leagan síos maidir le cumraíochtaí áirithe a chur i bhfeidhm nó gan iad a chur i bhfeidhm ar bhraislí le tréithe áirithe.

11. Tacaíocht teimpléad

Bainfidh forbróirí leas as an gcumas a roghnú conas a shaineofar acmhainní iarratais (Cairt Helm, Kubernetes yaml íon, etc.) chun an fhormáid is oiriúnaí a úsáid do gach feidhmchlár ar leith.

Uirlisí GitOps ar an ardán OpenShift

ArgoCD

Cuireann ArgoCD an tsamhail um Réiteach Acmhainne Seachtraí i bhfeidhm agus tairgeann sé UI láraithe chun caidreamh duine le go leor a eagrú idir braislí agus stórtha Git. I measc na míbhuntáistí a bhaineann leis an gclár seo tá an neamhábaltacht feidhmchláir a bhainistiú nuair nach bhfuil ArgoCD ag obair.

Láithreán gréasáin oifigiúil

Flux

Cuireann Flux samhail um Réiteach Acmhainne Ar Chnuasach i bhfeidhm agus, mar thoradh air sin, níl aon bhainistíocht láraithe ar an stór sainmhínithe, rud atá lag. Ar an láimh eile, go beacht mar gheall ar an easpa láraithe, tá an cumas iarratais a bhainistiú fós fiú má theipeann ar bhraisle amháin.

Láithreán gréasáin oifigiúil

Suiteáil ArgoCD ar OpenShift

Cuireann ArgoCD comhéadan ordaithe den scoth agus consól gréasáin ar fáil, mar sin ní chlúdóidh muid Flux agus roghanna eile anseo.

Chun ArgoCD a imscaradh ar an ardán OpenShift 4, lean na céimeanna seo mar riarthóir braisle:

Comhpháirteanna ArgoCD a imscaradh ar an ardán 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}')

Freastalaí ArgoCD a fheabhsú ionas gur féidir é a fheiceáil trí 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

Uirlis ArgoCD Cli a Imscaradh

# 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

Focal faire riaracháin Freastalaí ArgoCD a athrú

# 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

Tar éis duit na céimeanna seo a chríochnú, is féidir leat oibriú le Freastalaí ArgoCD trí chonsól gréasáin ArgoCD WebUI nó uirlis líne ordaithe ArgoCD Cli.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - Níl sé Ró-dhéanach riamh

“D’imigh an traein” – seo an méid a deir siad faoi chás nuair a chailltear an deis rud éigin a dhéanamh. I gcás OpenShift, is minic a chruthaíonn an fonn chun tús a chur láithreach ag baint úsáide as an ardán nua fionnuar seo go díreach an cás seo le bainistiú agus cothabháil bealaí, imscaradh agus rudaí OpenShift eile. Ach an bhfuil an seans i gcónaí caillte go hiomlán?

Ag leanúint leis an tsraith alt faoi GitOps, inniu taispeánfaimid duit conas feidhmchlár lámhdhéanta agus a chuid acmhainní a athrú go próiseas ina bhfuil gach rud á bhainistiú ag uirlisí GitOps. Chun seo a dhéanamh, déanfaimid an feidhmchlár httpd a imscaradh de láimh ar dtús. Taispeánann an seat thíos conas a chruthaímid ainmspás, imscaradh agus seirbhís, agus ansin an tseirbhís seo a nochtadh chun bealach a chruthú.

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

Mar sin tá feidhmchlár lámhdhéanta againn. Anois ní mór é a aistriú faoi bhainistíocht GitOps gan infhaighteacht a chailleadh. Go hachomair, déanann sé seo:

  • Cruthaigh stór Git don chód.
  • Easpórtálaimid ár réada reatha agus uaslódálaimid iad chuig stór Git.
  • Uirlisí GitOps a roghnú agus a imscaradh.
  • Cuirimid ár stór leis an bhfoireann uirlisí seo.
  • Sainmhínímid an feidhmchlár inár bhfoireann uirlisí GitOps.
  • Déanaimid tástáil ar an bhfeidhmchlár ag baint úsáide as an bhfoireann uirlisí GitOps.
  • Déanaimid rudaí a shioncronú trí úsáid a bhaint as foireann uirlisí GitOps.
  • Cumasaigh bearradh agus uathshioncronú réad.

Mar a luadh san roimhe seo Airteagal, in GitOps níl ach foinse amháin faisnéise faoi na réada go léir i gcnuasach(i)r Kubernetes - stór Git. Ansin, leanaimid ar aghaidh ón mbonn go n-úsáideann d'eagraíocht stór Git cheana féin. Féadfaidh sé a bheith poiblí nó príobháideach, ach caithfidh sé a bheith inrochtana do bhraislí Kubernetes. Is féidir gurb é seo an taisclann céanna agus a bhaineann le cód iarratais, nó stór ar leith a cruthaíodh go sonrach le haghaidh imlonnaithe. Moltar ceadanna dochta a bheith sa stór ós rud é go stórálfar rúin, bealaí, agus rudaí eile atá íogair ó thaobh slándála ann.

Inár sampla, cruthóimid stór poiblí nua ar GitHub. Is féidir leat é a ghlaoch is cuma cad is mian leat, úsáidimid an t-ainm blogpost.

Mura raibh na comhaid oibiachta YAML stóráilte go háitiúil nó i Git, ansin beidh ort na binaries oc nó kubectl a úsáid. Sa screenshot thíos táimid ag iarraidh ar YAML ár n-ainmspás, imscaradh, seirbhís agus bealach. Roimhe seo, rinneamar clónáil ar an stór nuachruthaithe agus cd isteach ann.

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

Anois déanaimis an comhad deployment.yaml a chur in eagar chun an réimse nach féidir le Argo CD a shioncronú a bhaint.

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

Ina theannta sin, is gá an bealach a athrú. Déanfaimid athróg illíne a shocrú ar dtús agus ansin cuirfimid ábhar na hathróige sin in ionad ingress: null.

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

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

Mar sin, tá na comhaid socraithe againn, níl fágtha ach iad a shábháil ar stór Git. Ina dhiaidh sin is é an stór seo an t-aon fhoinse faisnéise amháin, agus ba cheart toirmeasc dian a chur ar aon athruithe láimhe ar rudaí.

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

Ina theannta sin leanaimid ar aghaidh ón bhfíric go bhfuil ArgoCD imlonnaithe agat cheana féin (conas é seo a dhéanamh - féach roimhe seo post). Mar sin, cuirfimid leis an CD Argo an stór a chruthaigh muid, ina bhfuil an cód iarratais ónár sampla. Déan cinnte go sonróidh tú an stór cruinn a chruthaigh tú níos luaithe.

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

Anois, déanaimis an t-iarratas a chruthú. Socraíonn an feidhmchlár luachanna ionas go dtuigeann foireann uirlisí GitOps cén stór agus na cosáin atá le húsáid, cé na OpenShift atá ag teastáil chun rudaí a bhainistiú, cén brainse sonrach den stór atá ag teastáil, agus cé acu ar cheart acmhainní a shioncronú go huathoibríoch.

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

Nuair a shonraítear feidhmchlár ar an CD Argo, tosaíonn an fhoireann uirlisí ag seiceáil réad atá imlonnaithe cheana féin i gcoinne na sainmhínithe sa stór. Inár sampla, tá uath-shioncronú agus glantachán díchumasaithe, mar sin ní athraíonn na heilimintí fós. Tabhair faoi deara le do thoil go mbeidh stádas “Out of Sync” ag ár bhfeidhmchlár i gcomhéadan Argo CD toisc nach bhfuil lipéad ar bith a sholáthraíonn ArgoCD.
Sin é an fáth nuair a thosaímid ag sioncrónú beagán níos déanaí, ní dhéanfar na cuspóirí a ath-imscaradh.

Anois déanaimis rith tástála chun a chinntiú nach bhfuil aon earráidí inár gcomhaid.

argocd app sync simple-app --dry-run

Mura bhfuil aon earráidí, ansin is féidir leat dul ar aghaidh chuig sioncrónaithe.

argocd app sync simple-app

Tar éis dúinn an t-ordú argocd a fháil ar ár n-iarratas a rith, ba cheart dúinn a fheiceáil go bhfuil stádas an iarratais athraithe go Healthy or Synced. Ciallóidh sé sin go gcomhfhreagraíonn na hacmhainní go léir i stór Git anois do na hacmhainní sin atá imlonnaithe cheana féin.

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

Anois is féidir leat sioncronú uathoibríoch agus glantachán a chumasú lena chinntiú nach gcruthaítear rud ar bith de láimh agus go dtarlóidh imscaradh gach uair a chruthaítear nó a nuashonraítear réad chuig an stór.

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

Mar sin, d’éirigh linn feidhmchlár a thabhairt isteach faoi rialú GitOps nár bhain úsáid as GitOps ar bhealach ar bith ar dtús.

Foinse: will.com

Add a comment