Ahoana ny fampiasan'i Dailymotion Kubernetes: Fametrahana fampiharana
Izahay ato amin'ny Dailymotion dia nanomboka nampiasa Kubernetes tamin'ny famokarana 3 taona lasa izay. Mahafinaritra anefa ny manaparitaka fampiharana amin'ny cluster maro, ka tato anatin'ny taona vitsivitsy izay dia niezaka nanatsara ny fitaovanay sy ny lalan'ny asa izahay.
Taiza no niatombohany
Ho hitantsika eto ny fomba ametrahanay ny rindranasa amin'ny vondron'olona Kubernetes maro manerana izao tontolo izao.
Mampiasa zavatra Kubernetes maromaro indray mandeha izahay fiarovan-doha, ary ny tabilao rehetra dia voatahiry ao anaty tahiry git iray. Mba hametrahana stack fampiharana feno avy amin'ny serivisy maromaro dia mampiasa ilay antsoina hoe tabilao famintinana. Amin'ny ankapobeny dia tabilao manambara fiankinan-doha ity ary ahafahanao manangana ny API sy ny serivisy amin'ny baiko iray.
Nanoratra script Python kely teo an-tampon'ny Helm ihany koa izahay mba hanao fisavana, hamorona tabilao, hampiditra tsiambaratelo ary hametraka fampiharana. Ireo asa rehetra ireo dia atao amin'ny sehatra CI afovoany amin'ny fampiasana sary docker.
Andeha hojerentsika ny teboka.
Fanamarihana. Rehefa mamaky ity ianao dia efa nambara ny kandidΓ famoahana voalohany ho an'ny Helm 3. Ny dikan-teny fototra dia misy fanatsarana maro be mba hamahana ny olana sasany sendra anay taloha.
Workflow fampandrosoana tabilao
Mampiasa sampana izahay amin'ny fampiharana, ary nanapa-kevitra ny hampihatra ny fomba fiasa mitovy amin'ny tabilao.
Rehefa misy fangatahana misintona atolotra tompony, izy ireo dia voamarina ao amin'ny fandaharana.
Farany, mamorona fangatahana misintona izahay mba hanolorany ny fanovana amin'ny sampana famokarana ary ampiharo amin'ny famokarana.
Ny tontolo iainana tsirairay dia manana tahiry manokana manokana izay mitahiry ny saritsika, ary ampiasainay Chartmuseum miaraka amin'ny API tena ilaina. Amin'izany fomba izany dia miantoka ny fitokana-monina henjana eo amin'ny tontolo iainana sy ny fitiliana ny sariitatra tena izy alohan'ny hampiasana azy ireo amin'ny famokarana.
Fametrahana tabilao amin'ny tontolo samihafa
Tsara ny manamarika fa rehefa manosika sampana iray mankany amin'ny dev ny mpamorona, dia atosiky ho azy any amin'ny dev Chartmuseum ny dikan-tsarin'izy ireo. Noho izany, ny mpamorona rehetra dia mampiasa tahiry dev mitovy, ary mila mamaritra tsara ny dikan-teninao amin'ny tabilao ianao mba tsy hampiasana tsy nahy ny fiovan'ny olon-kafa.
Ankoatr'izay, ny script Python kelinay dia manamarina ny zavatra Kubernetes amin'ny fanondroana ny Kubernetes OpenAPI ampiasaina Kubeval, alohan'ny hamoahana azy ireo ao amin'ny Chartmusem.
Fametrahana ny asan'ny fantsona araka ny fepetra gazr.io ho an'ny fanaraha-maso ny kalitao (lint, unit-test).
Manosika sary docker miaraka amin'ny fitaovana Python izay mametraka ny fampiharanay.
Fametrahana ny tontolo iainana amin'ny anaran'ny sampana.
Fanamarinana ny rakitra yaml Kubernetes amin'ny fampiasana Kubeval.
Ampitomboy ho azy ny dikan-tsarimihetsika sy ny sarin'ny ray aman-dreniny (sarintany miankina amin'ny tabilao ovaina).
Fandefasana tabilao any amin'ny Chartmuseum izay mifanaraka amin'ny tontolo iainany
Mitantana ny fahasamihafana amin'ny cluster
Federasionan'ny Clusters
Nisy fotoana nampiasanay federasionan'ny cluster Kubernetes, izay ahafahana manambara ny zavatra Kubernetes avy amin'ny teboka API tokana. Nipoitra anefa ny olana. Ohatra, ny zavatra Kubernetes sasany dia tsy azo noforonina tao amin'ny federasiona faran'ny federasiona, ka sarotra ny mitazona zavatra federasiona sy zavatra hafa ho an'ny cluster tsirairay.
Mba hamahana ny olana dia nanomboka nitantana tsy miankina ireo cluster, izay nanamora ny fizotran'ny dingana (nampiasa ny federasiona voalohany izahay; mety hisy fiovana amin'ny faharoa).
Sehatra mizara Geo
Miparitaka manerana ny faritra 6 ny sehatra misy anay amin'izao fotoana izao - 3 eo an-toerana ary 3 ao anaty rahona.
Distributed Deployment
Global Helm soatoavina
Ny soatoavin'ny Helm manerantany 4 dia ahafahanao mamantatra ny fahasamihafana eo amin'ny cluster. Ny sarintsika rehetra dia manana sanda ambany indrindra.
Ity dia rindran-damina amin'ny dingana rehetra izay mamaritra ny fizotran'ny fametrahanay. Ny dingana farany dia mametraka ny fampiharana amin'ny vondron'ny mpiasa marobe miaraka.
Jenkins Deployment Steps
Ahoana ny amin'ny tsiambaratelo?
Mikasika ny fiarovana, dia manara-maso ny tsiambaratelo rehetra avy amin'ny toerana samihafa izahay ary mitahiry azy ireo ao anaty vata tokana andohalambony eny any Paris.
Ny fitaovan'ny fanapariahanay dia maka ny soatoavina miafina ao amin'ny Vault ary rehefa tonga ny fotoana fametrahana azy dia ampidiro ao amin'ny Helm.
Mba hanaovana izany, dia namaritra sari-tany eo anelanelan'ny tsiambaratelo ao amin'ny Vault sy ny tsiambaratelo ilain'ny fampiharanay izahay:
Nofaritanay ny fitsipika ankapobeny harahina rehefa mirakitra tsiambaratelo ao amin'ny Vault.
Raha mihatra ny tsiambaratelo amin'ny contexte na cluster manokana, mila manampy fidirana manokana ianao. (Eto ny context cluster1 dia manana ny sandany manokana ho an'ny miafina stack-app1-password).
Raha tsy izany dia ampiasaina ny sanda amin'ny default.
Ho an'ny singa tsirairay ao amin'ity lisitra ity Kubernetes secret ampidirina mpivady sanda manan-danja. Noho izany, ny mΓ΄dely miafina ao amin'ny tabilaontsika dia tena tsotra.
Ankehitriny dia manasaraka ny fivoaran'ny tabilao sy ny fampiharana. Midika izany fa tsy maintsy miasa ao anaty tahiry git roa ny mpamorona: ny iray ho an'ny fampiharana, ary ny iray hamaritana ny fametrahana azy amin'ny Kubernetes. Ny 2 git repository dia midika hoe 2 workflows, ary mora ho an'ny newbie ny misavoritaka.
Amin'ny fizotran'ny fandefasana mitohy dia manana soatoavina roa miova tsy tapaka isika: ny isan'ny kopia sy ny tag sary (dikan-teny). Ny sanda hafa, miorina kokoa dia ovaina amin'ny tanana, ary sarotra be izany. Fanampin'izany, ny fahadisoana iray amin'ny fametrahana tabilao ankapobeny dia mety hitarika ho amin'ny tsy fahombiazana lehibe, araka ny efa hitantsika tamin'ny traikefantsika manokana.
Fanavaozana rakitra maromaro maromaro
Rehefa manampy fampiharana vaovao ny developer dia tsy maintsy manova rakitra maromaro izy: ny fanambarana fampiharana, ny lisitry ny tsiambaratelo, manampy ny fampiharana ho fiankinan-doha raha ampidirina ao amin'ny tabilao ankapobeny.
Miitatra loatra ny fahazoan-dΓ lana Jenkins ao amin'ny Vault
Ankehitriny dia manana iray isika AppRole, izay mamaky ny tsiambaratelo rehetra ao amin'ny Vault.
Tsy mandeha ho azy ny fizotry ny famerenana
Mba hamerenana indray dia mila mandefa ny baiko amin'ny cluster maromaro ianao, ary feno hadisoana izany. Manao an'io asa io izahay mba hahazoana antoka fa voatondro ny ID dikan-teny marina.
Mizotra mankany amin'ny GitOps izahay
Ny tanjonay
Te-hamerina ny tabilao amin'ny fitahirizana ny fampiharana apetrany izahay.
Ny fizotran'ny asa dia hitovy amin'ny fampandrosoana. Ohatra, rehefa voatosika ho tompon'andraikitra ny sampana iray, dia hivoaka ho azy ny fametrahana. Ny fahasamihafana lehibe eo amin'ity fomba fiasa ity sy ny fizotran'ny asa amin'izao fotoana izao dia izany ny zavatra rehetra dia ho hitantana ao amin'ny git (ny fampiharana sy ny fomba fametrahana azy ao amin'ny Kubernetes).
Misy tombony maromaro:
be mazava kokoa ho an'ny mpamorona. Mora kokoa ny mianatra mampihatra ny fanovana amin'ny tabilao eo an-toerana.
Ny famaritana ny fametrahana serivisy dia azo faritana toerana mitovy amin'ny kaody fanompoana.
Mitantana ny fanesorana ireo tabilao ankapobeny. Ny serivisy dia hanana ny famoahana Helm azy manokana. Izany dia ahafahanao mitantana ny fiainan'ny fampiharana (famerenana, fanavaozana) amin'ny ambaratonga kely indrindra, mba tsy hisy fiantraikany amin'ny serivisy hafa.
Ny tombony amin'ny git ho an'ny fitantanana tabilao: manafoana ny fanovana, diarin'ny fanaraha-maso, sns. Raha mila manafoana ny fanovana amin'ny tabilao ianao dia azonao atao izany amin'ny fampiasana git. Manomboka ho azy ny fametrahana.
Azonao atao ny mieritreritra ny hanatsara ny fizotran'ny asa fampandrosoana miaraka amin'ny fitaovana toy izany Skaffold, izay ahafahan'ny mpamorona manandrana fiovana amin'ny toe-javatra manakaiky ny famokarana.
Fifindra-monina dingana roa
Efa 2 taona izao no nampiasain'ny developer anay ity workflow ity, ka tianay ny tsy hanaintaina araka izay tratra ny fifindra-monina. Noho izany, nanapa-kevitra izahay fa hanampy dingana manelanelana amin'ny lalana mankany amin'ny tanjona.
Tsotra ny dingana voalohany:
Famoahana 1 isaky ny fampiharana (tsy misy tabilao ankapobeny).
Sarintany ao amin'ny tahiry git an'ny fampiharana.
Efa niresaka tamin'ny mpamorona rehetra izahay, ka efa nanomboka ny fizotry ny fifindra-monina. Ny dingana voalohany dia mbola fehezina amin'ny fampiasana ny sehatra CI. Hanoratra lahatsoratra hafa aho tsy ho ela momba ny dingana faharoa: ny fomba nifindranay tany amin'ny workflow GitOps mikoriana. Holazaiko aminao ny fomba nametrahanay ny zava-drehetra sy ny fahasarotana sendra anay (repositories maro, tsiambaratelo, sns.). Araho ny vaovao.
Eto izahay dia nanandrana nanoritsoritra ny fivoaranay tamin'ny fizotran'ny fametrahana fampiharana nandritra ny taona lasa, izay nitarika eritreritra momba ny fomba fiasa GitOps. Tsy mbola tratra ny tanjona ary hanao tatitra momba ny vokatra, fa izao dia resy lahatra izahay fa nanao ny tsara rehefa nanapa-kevitra ny hanatsotra ny zava-drehetra sy hanakaiky kokoa ny fahazaran'ny mpamorona.