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