He kupu whakataki ki GitOps mo OpenShift

I tenei ra ka korero tatou mo nga maataapono me nga tauira o GitOps, me pehea te whakatinanatanga o enei tauira ki runga i te turanga OpenShift. Kei te waatea he aratohu tauwhitiwhiti mo tenei kaupapa hono.

He kupu whakataki ki GitOps mo OpenShift

I roto i nga korero poto, ko GitOps he huinga tikanga mo te whakamahi i nga tono toia a Git hei whakahaere i nga hanganga me nga whirihoranga tono. Ko te putunga a Git i GitOps he puna korero kotahi mo te ahuatanga o te punaha, a ko nga huringa ki tenei ahuatanga ka taea te tirotiro me te tirotiro.

Ko te whakaaro ki te whakarereke i te aroturuki i roto i te GitOps ehara i te mea hou; kua roa tenei huarahi i whakamahia tata ki te ao katoa i te wa e mahi ana me te waehere puna tono. Ka whakatinana noa a GitOps i nga ahuatanga rite (nga arotake, nga tono toia, nga tohu, me etahi atu) i roto i nga hanganga me te whakahaere whirihoranga tono me te whakarato i nga painga rite ki te take o te whakahaere waehere puna.

Karekau he whakamaramatanga matauranga, he huinga ture ranei kua whakaaetia mo GitOps, he huinga maataapono anake i hangaia ai tenei mahi:

  • Ko te whakamaarama korero o te punaha kei te rongoa i roto i te rokiroki Git (whiriwhiringa, aroturuki, me etahi atu).
  • Ko nga huringa a te kawanatanga ka mahia ma te tono kume.
  • Ko te ahua o nga punaha whakahaere ka uru ki nga raraunga kei roto i te putunga ma te whakamahi i nga tono pana a Git.

Nga Tikanga a GitOps

  • Ko nga whakamaramatanga o te punaha ka kiia ko te waehere puna

Ko te whirihoranga o nga punaha ka kiia he waehere kia taea ai te penapena me te whakaputa aunoa i roto i te putunga Git, he puna kotahi o te pono. Ma tenei huarahi ka ngawari te huri me te huri i nga huringa o nga punaha.

  • Ko te ahua me te whirihoranga o nga punaha kua whakaritea me te whakaputa ki Git

Ma te penapena me te whakaputa i te ahua o nga punaha e hiahiatia ana i Git, ka taea e taatau te huri me te huri i nga huringa ki nga punaha me nga tono. Ka taea hoki e tatou te whakamahi i nga tikanga haumaru a Git ki te whakahaere i te mana o te waehere me te manatoko i tona pono.

  • Ko nga huringa whirihoranga ka taea te tono aunoa ma nga tono kume

Ma te whakamahi i nga tono kume a Git, ka ngawari te whakahaere me pehea te whakarereketanga ki nga whirihoranga i roto i te putunga. Hei tauira, ka taea te hoatu ki etahi atu mema o te roopu hei arotake, hei whakahaere ranei ma nga whakamatautau CI, aha atu.

A i te wa ano, kaore he take ki te tohatoha i nga mana whakahaere ki maui me matau. Hei mahi i nga huringa whirihoranga, me whai whakaaetanga tika nga kaiwhakamahi i roto i te putunga Git kei te rongoa aua whirihoranga.

  • Te whakatika i te raru o te paheketanga o nga whirihoranga

Kia penapenahia te ahua o te punaha ki roto i te putunga putunga Git, ko taatau anake te mahi ko te kimi i nga rorohiko hei whakarite kia rite te ahua o te punaha ki tona ahuatanga e hiahiatia ana. Mena karekau tenei, ka tika ma tenei rorohiko - i runga i nga tautuhinga - me whakakore i te rereketanga i a ia ano, me whakamarama mai ranei mo te whirihoranga neke.

Nga Tauira GitOps mo OpenShift

Kaitautoko Rauemi-A-Kapu

E ai ki tenei tauira, kei te roopu he kaiwhakahaere te kawenga mo te whakatairite i nga rauemi Kubernetes ( nga konae YAML) i roto i te putunga Git me nga rawa tuturu o te roopu. Mena ka kitea nga rereketanga, ka tukuna e te kaiwhakahaere nga whakamohiotanga me te mahi pea ki te whakatika i nga rereketanga. Ka whakamahia tenei tauira GitOps i roto i te Anthos Config Management me te Weaveworks Flux.

He kupu whakataki ki GitOps mo OpenShift

Kaihanga Rauemi o-waho (Push)

Ko tenei tauira ka taea te whakaaro he rereke o te mea o mua, ina kotahi, neke atu ranei nga kaiwhakahaere e kawe ana mo te tukutahi rauemi i roto i nga takirua "Git repository - Kubernetes cluster". Ko te rereketanga i konei ko ia kahui whakahaere ehara i te mea he mana motuhake tana ake. Git - Ko nga huinga takirua k8s ka tautuhia hei CRD (whakamaramatanga rauemi ritenga), ka taea te whakaatu me pehea te mahi a te kaiwhakahaere i te tukutahitanga. I roto i tenei tauira, ka whakatauritehia e nga kaiwhakahaere te putunga Git kua tohua i roto i te CRD me nga rauemi roopu Kubernetes, kua tohua ano ki te CRD, me te mahi i nga mahi tika i runga i nga hua o te whakataurite. Ina koa, ka whakamahia tenei tauira GitOps ki ArgoCD.

He kupu whakataki ki GitOps mo OpenShift

GitOps i runga i te turanga OpenShift

Te whakahaere i nga hanganga Kubernetes maha-ahua

Na te horapa o Kubernetes me te rongonui haere o nga rautaki maha-kapua me te rorohiko taha, kei te piki haere ano te tau toharite o nga tautau OpenShift mo ia kaihoko.

Hei tauira, i te wa e whakamahi ana i te rorohiko mata, ka taea te whakauru i nga tautau a te kaihoko ki nga rau, ki nga mano ranei. Ko te mutunga mai, ka kaha ia ki te whakahaere i etahi tautau OpenShift motuhake, ruruku ranei i roto i te kapua whanui me te waahi.

I tenei keehi, he maha nga raru me whakatika, ina koa:

  • Whakahaerehia kia rite tonu te ahua o nga tautau (whiriwhiringa, aroturuki, rokiroki, aha atu)
  • Hangaia ano (whakaora ranei) nga tautau i runga i te ahua mohio.
  • Waihangahia nga tautau hou i runga i te ahua mohio.
  • Hurihia nga huringa ki nga tautau OpenShift maha.
  • Hurihia nga huringa puta noa i nga tautau OpenShift maha.
  • Honoa nga whirihoranga tauira ki nga taiao rereke.

Whirihoranga Taupānga

I roto i to ratau oranga, he maha nga wa ka uru nga tono ki roto i te mekameka o nga tautau (dev, atamira, me etahi atu) i mua i te mutunga ki roto i te roopu whakaputa. I tua atu, na te waatea me nga whakaritenga tauineine, he maha nga wa ka tukuna e nga kaihoko nga tono puta noa i te maha o nga tautau-a-whare, i nga rohe maha ranei o te papaahi kapua whanui.

I tenei keehi, me whakaoti nga mahi e whai ake nei:

  • Me whakarite te neke o nga tono (rua, whirihora, aha atu) i waenga i nga tautau (dev, atamira, me etahi atu).
  • Hurihia nga huringa ki nga tono (ruarua, whirihora, me etahi atu) i roto i nga huinga OpenShift maha.
  • Hurihia nga huringa ki nga tono ki tetahi ahua mohio o mua.

OpenShift GitOps Whakamahi Take

1. Te tono huringa mai i te putunga putunga Git

Ka taea e te kaiwhakahaere tautau te penapena i nga whirihoranga huinga OpenShift ki roto i te putunga Git me te whakamahi aunoa i aua mea ki te hanga i nga tautau hou me te kawe ki roto i te ahua rite ki te ahua mohio kei te rongoa i roto i te rokiroki Git.

2. Tukutahi me te Kaiwhakahaere ngaro

Ka whai hua ano te kaiwhakahaere i te kaha ki te tukutahi i nga mea huna a OpenShift me nga rorohiko e tika ana penei i a Vault hei whakahaere i a raatau ma te whakamahi taputapu i hangaia mo tenei.

3. Te whakahaere i nga whirihoranga paheke

Ka pai noa te kaiwhakahaere mena ka whakaatu, ka whakatupato ano a OpenShift GitOps mo nga rereketanga i waenga i nga whirihoranga tuturu me era kua tohua ki roto i te putunga, kia tere ai te whakautu ki te paheketanga.

4. Nga whakamohiotanga mo te whirihoranga tere

He whai hua i roto i te keehi ka hiahia te kaiwhakahaere ki te ako tere mo nga keehi o te huringa whirihoranga kia tere ai te mahi i a ia ano.

5. Tukutahi a-ringa o nga whirihoranga i te wa e paheke ana

Ka tuku i te kaiwhakahaere ki te tukutahi i te tautau OpenShift me te putunga Git mena ka rere te whirihoranga, kia tere te whakahoki i te tautau ki tetahi ahuatanga o mua.

6. Tukutahi-aunoa o nga whirihoranga i te wa e paheke ana

Ka taea hoki e te kaiwhakahaere te whirihora i te roopu OpenShift ki te tukutahi aunoa me te putunga ina kitea he paheketanga, kia rite tonu te whirihoranga tautau ki nga whirihora i Git.

7. He maha nga tautau - kotahi te putunga

Ka taea e te kaiwhakahaere te penapena whirihoranga o te maha o nga tautau OpenShift rereke ki roto i te putunga Git kotahi, me te whakamahi maataki ina hiahiatia.

8. Aratakinga o nga whirihoranga tautau (tuku iho)

Ka taea e te kaiwhakahaere te whakarite i te raupapatanga o nga whirihoranga tautau i roto i te putunga (ataata, prod, kōpaki taupānga, me etahi atu me nga taonga tuku iho). I etahi atu kupu, ka taea e ia te whakatau mehemea me tono nga whirihoranga ki tetahi, neke atu ranei nga tautau.

Hei tauira, ki te whakatauhia e te kaiwhakahaere te raupapatanga "Nga tautau whakangao (prod) → Nga tautau Pūnaha X → Nga tautau whakangao o te punaha X" i roto i te whare putunga Git, ka tukuna he huinga o nga whirihora e whai ake nei ki nga tautau whakangao o te punaha X:

  • He whirihora noa ki nga tautau whakangao katoa.
  • He whirihora mo te roopu Pūnaha X.
  • Nga whirihora mo te roopu whakaputa punaha X.

9. Ko nga tauira me nga whirihoranga whakahuri

Ka taea e te kaiwhakahaere te whakakore i te huinga o nga whirihora tuku iho me o raatau uara, hei tauira, ki te whakatikatika i te whirihoranga mo nga tautau motuhake ka hoatu ki a ratou.

10. Te whakauru me te whakakore mo nga whirihoranga, whirihoranga tono

Ka taea e te kaiwhakahaere te whakarite i nga tikanga mo te tono me te kore tono o etahi whirihoranga ki nga tautau me etahi ahuatanga.

11. Tautoko tauira

Ka whai hua nga kaiwhakawhanake i te kaha ki te whiriwhiri me pehea te tautuhi i nga rauemi tono (Tutohi Helm, Kubernetes yaml parakore, me etahi atu) kia taea ai te whakamahi i te whakatakotoranga tino tika mo ia tono motuhake.

Nga taputapu GitOps i runga i te papaaho OpenShift

ArgoCD

Ka whakatinanahia e ArgoCD te tauira Whakataunga Rauemi o waho me te tuku i tetahi UI kua whakahiatotia mo te whakarite hononga kotahi-ki-maha i waenga i nga tautau me nga putunga Git. Ko nga ngoikoretanga o tenei kaupapa ko te kore e kaha ki te whakahaere i nga tono ka kore e mahi a ArgoCD.

Paetukutuku Official

rere

Ka whakatinanahia e Flux tetahi tauira Whakataunga Rauemi-On-Cluster, a, ko te mutunga mai, karekau he whakahaere i te pokapū o te putunga whakamaramatanga, he waahi ngoikore. I tetahi atu taha, na te kore o te whakaurunga, ka noho tonu te kaha ki te whakahaere i nga tono ahakoa ka rahua tetahi tautau.

Paetukutuku Official

Tāuta ArgoCD ki OpenShift

Ka tukuna e ArgoCD tetahi atanga raina whakahau pai me te papatohu paetukutuku, no reira kare matou e hipokina a Flux me etahi atu momo rereke i konei.

Hei tuku ArgoCD ki runga i te papaaho OpenShift 4, whai i enei mahi hei kaiwhakahaere roopu:

Te tuku i nga waahanga ArgoCD i runga i te papaaho 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}')

Te whakapai ake i te ArgoCD Server kia kitea e 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

Te whakamahi i te Utauta 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

Te huri i te kupuhipa kaiwhakahaere 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 oti enei mahi, ka taea e koe te mahi me te ArgoCD Server na roto i te papatohu paetukutuku ArgoCD WebUI, i te taputapu raina whakahau ArgoCD Cli ranei.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - Kare I Too Too

"Kua wehe te tereina" - koinei ta ratou korero mo tetahi ahuatanga ka ngaro te whai waahi ki te mahi i tetahi mea. Mo te OpenShift, ko te hiahia ki te timata tonu ki te whakamahi i tenei papaaa hou hauhautanga i te nuinga o te wa ka hangai tenei ahuatanga me te whakahaere me te tiaki i nga huarahi, te tuku me etahi atu taonga OpenShift. Engari ka ngaro tonu te tupono?

Kei te haere tonu te raupapa tuhinga mo GitOps, i tenei ra ka whakaatu matou ki a koe me pehea te huri i tetahi tono hanga-a-ringa me ona rauemi ki roto i te tukanga e whakahaerehia ai nga mea katoa e nga taputapu GitOps. Hei mahi i tenei, ka tohatohahia e matou te tono httpd i te tuatahi. Ko te Whakaahuamata i raro nei e whakaatu ana me pehea te hanga mokowāingoa, te horahanga me te ratonga, ka whakaatu i tenei ratonga ki te hanga ara.

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

Na kei a matou he tono a-ringa. Inaianei me whakawhiti i raro i te whakahaere a GitOps me te kore e ngaro te waatea. Hei poto, ka mahi tenei:

  • Waihangahia he putunga Git mo te waehere.
  • Ka kaweake e matou a matou taonga o naianei ka tukuna atu ki te putunga putunga Git.
  • Te whiriwhiri me te tuku taputapu GitOps.
  • Ka taapirihia e matou to maatau putunga ki tenei kete taputapu.
  • Ka tautuhia e matou te tono i roto i ta maatau kete taputapu GitOps.
  • Ka mahia e matou he whakamatautau mo te tono ma te whakamahi i te kete taputapu GitOps.
  • Ka tukutahi tatou i nga taonga ma te whakamahi i te kete taputapu GitOps.
  • Whakahohehia te tapahi me te tukutahi-aunoa o nga mea.

Ka rite ki te korero i mua Tuhinga, kei roto i te GitOps kotahi anake te puna korero mo nga mea katoa kei roto i te (ng) tautau Kubernetes - te putunga Git. I muri mai, ka puta mai i te whakaaro kua whakamahia e to whakahaere he putunga Git. Ka taea te mahi mo te iwi whanui, mo te motuhake ranei, engari me uru ki nga roopu Kubernetes. Ka rite pea tenei ki te putunga mo te waehere tono, he putunga motuhake ranei i hangaia mo nga whakatakotoranga. E taunaki ana kia whai whakaaetanga tino i roto i te whare putunga na te mea ka penapena nga mea ngaro, ara, me etahi atu mea tairongo haumaru ki reira.

I roto i ta maatau tauira, ka hangahia e matou he rehitatanga whanui hou mo GitHub. Ka taea e koe te karanga i nga mea e pai ana koe, ka whakamahia e matou te ingoa blogpost.

Mena karekau nga konae ahanoa YAML i penapena i te takiwa, i te Git ranei, me whakamahi koe i te oc, kubectl rua ranei. I roto i te Whakaahuamata i raro nei kei te tono matou ki a YAML mo to maatau mokowā ingoa, tuku, ratonga me te huarahi. I mua i tenei, ka katihia e matou te rehitatanga hou i hangaia me te cd ki roto.

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

Inaianei me whakatika te konae deployment.yaml hei tango i te mara kaore e taea e Argo CD te tukutahi.

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

I tua atu, me whakarereke te huarahi. Tuatahi ka tautuhia he taurangi raina maha ka whakakapi i te whakaurunga: null me nga ihirangi o taua taurangi.

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

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

Na, kua tohatohahia e matou nga konae, ko nga mea e toe ana ko te penapena ki te putunga Git. Muri iho ka noho ko tenei putunga te puna korero anake, a ko nga huringa a-ringa ki nga taonga me tino aukati.

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

Ka haere tonu taatau mai i te mea kua tukuna e koe a ArgoCD (me pehea te mahi - tirohia o mua pou). Na reira, ka taapirihia e matou ki te CD Argo te putunga i hangaia e matou, kei roto te waehere tono mai i ta maatau tauira. Me whakarite e koe te putunga tika i hanga e koe i mua.

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

Inaianei me hanga e tatou te tono. Ka whakatauhia e te tono nga uara kia mohio ai te kete taputapu GitOps ko tehea putunga me nga huarahi hei whakamahi, e hiahiatia ana a OpenShift hei whakahaere taonga, ko tehea peka motuhake o te putunga e hiahiatia ana, me te tukutahi-aunoa nga rauemi.

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

Ina tohua he tono ki roto i te Argo CD, ka timata te kete taputapu ki te tirotiro i nga mea kua horahia ki runga i nga whakamaramatanga o te putunga. I roto i ta maatau tauira, kua monoa te tukutahi-aunoa me te horoi, no reira kare ano nga huānga e huri. Kia mahara kei roto i te atanga CD Argo ka whai mana to maatau tono "Kei te Tukutahi" na te mea karekau he tapanga ka tukuna e ArgoCD.
Koinei te take ka timata taatau ki te tukutahi i muri tata nei, ka kore e tukuna nga taonga.

Inaianei me mahi he oma whakamatautau kia mohio kaore he hapa i roto i a maatau konae.

argocd app sync simple-app --dry-run

Mena kaore he hapa, ka taea e koe te haere ki te tukutahi.

argocd app sync simple-app

Whai muri i te whakahaere i te tono argocd get i runga i ta maatau tono, me kite tatou kua huri te mana tono ki te Hauora, Tukutahi ranei. Ko te tikanga ko nga rauemi katoa kei roto i te putunga Git inaianei e rite ana ki era rauemi kua tukuna kee.

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

Inaianei ka taea e koe te tukutahi-aunoa me te horoi kia kore ai he mea hanga-a-ringa me nga wa katoa ka hangaia he ahanoa, ka whakahouhia ranei ki te putunga, ka puta he tukunga.

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

Na, kua angitu te kawe i tetahi tono i raro i te mana o GitOps kaore i te whakamahi i nga GitOps i te tuatahi.

Source: will.com

Tāpiri i te kōrero