A Injiniya na Gaskiya, mun tsara tsari don ci gaba da isar da sabuntawa zuwa sabar abokin cinikinmu kuma muna son raba wannan ƙwarewar.
Mun fara ta hanyar haɓaka tsarin kan layi don abokin ciniki da tura shi zuwa gungu na Kubernetes. Yanzu babban kayan aikin mu ya ƙaura zuwa dandalin abokin ciniki, wanda saboda shi mun kafa tsarin ci gaba mai sarrafa kansa. Wannan ya haɓaka lokaci-zuwa kasuwa-bayar da canje-canje ga yanayin samarwa.
A cikin wannan labarin, za mu rufe duk matakan da ke cikin tsarin Ci gaba da Aiki (CD), ko isar da sabuntawa zuwa dandalin abokin ciniki:
- yadda wannan tsari yake farawa,
- aiki tare tare da ma'ajiyar Git na abokin ciniki,
- taron baya da gaban gaba,
- tura aikace-aikacen ta atomatik zuwa yanayin gwaji,
- Ana turawa ta atomatik zuwa samfur.
Za mu raba bayanan saitin a hanya.

1. Fara CD
Ci gaba da ƙaddamarwa yana farawa tare da mai haɓakawa yana tura canje-canje zuwa reshen sakin ma'ajiyar Git ɗin mu.
Aikace-aikacenmu ya dogara ne akan gine-ginen ƙananan sabis, kuma ana adana duk abubuwan da ke cikin sa a cikin ma'aji guda. Wannan yana tabbatar da cewa an gina duk microservices kuma an shigar dasu, koda ɗayansu ya canza.
Mun tsara aikinmu ta wurin ma'ajiya guda ɗaya saboda dalilai da yawa:
- Sauƙin haɓakawa - aikace-aikacen yana haɓaka sosai, don haka zaku iya aiki tare da duk lambar a lokaci ɗaya.
- Bututun CI / CD mai haɗin kai yana tabbatar da cewa aikace-aikacen azaman tsarin guda ɗaya ya wuce duk gwaje-gwaje kuma ana isar da shi zuwa yanayin samarwa abokin ciniki.
- Muna kawar da rikice-rikicen sigar-ba lallai ne mu kula da taswirar sigar microservice ba kuma mu bayyana tsarin kowane ƙaramin sabis a cikin rubutun Helm.
2. Aiki tare tare da wurin ajiyar lambar tushen Git na abokin ciniki
Ana daidaita canje-canjen da aka yi ta atomatik tare da ma'ajin Git na abokin ciniki. Ana saita ginin aikace-aikacen a wurin, an kunna shi bayan sabunta reshe, kuma ana aiwatar da tura zuwa samarwa. Dukkan hanyoyin biyu suna faruwa a cikin mahallin su daga ma'ajin Git.
Ba za mu iya aiki kai tsaye tare da ma'ajiyar abokin ciniki ba saboda muna buƙatar ci gaban namu da yanayin gwaji. Muna amfani da ma'ajin Git na mu don waɗannan dalilai, wanda aka daidaita tare da nasu. Da zarar mai haɓakawa ya tura canje-canje zuwa reshen da ya dace na ma'ajiyar mu, GitLab yana tura waɗannan canje-canje ga abokin ciniki nan da nan.

Bayan haka, kuna buƙatar gina app. Wannan ya ƙunshi matakai da yawa: taro na baya da gaba, gwaji, da isarwa zuwa samarwa.
3. Haɗa ƙarshen baya da gaba
Gina baya da gaban gaba ayyuka ne guda biyu masu kama da juna da aka yi a GitLab Runner. Tsarin gininsa na farko yana cikin ma'ajiya iri ɗaya.
.
GitLab Runner yana ɗaukar lambar daga ma'ajiyar da ake buƙata, yana amfani da umarnin gina aikace-aikacen Java don gina shi, kuma yana tura shi zuwa rajistar Docker. Anan, muna gina bangon baya da gaba, ƙirƙirar hotunan Docker, kuma muna adana su a cikin ma'ajiyar abokin ciniki. Muna amfani da Docker don sarrafa hotunan Docker. .
Muna daidaita nau'ikan hoton mu tare da sigar sakin da za a tura zuwa Docker. Don tabbatar da aiki mai kyau, mun yi gyare-gyare da yawa:
1. Ba a sake gina kwantena tsakanin gwajin da yanayin samarwa. Mun aiwatar da ma'auni ta yadda kwandon iri ɗaya zai iya aiki tare da duk saituna, masu canjin yanayi, da sabis a duka wuraren gwaji da samarwa ba tare da sake ginawa ba.
2. Don sabunta aikace-aikacen ta hanyar Helm, kuna buƙatar tantance sigar sa. A gare mu, gina bangon baya, gaba, da sabunta aikace-aikacen ayyuka ne daban-daban guda uku, don haka yana da mahimmanci a yi amfani da nau'in aikace-aikacen iri ɗaya a duk ɗawainiya. Don wannan aikin, muna amfani da bayanai daga tarihin Git, tunda tsarin gungu na K8S da aikace-aikacenmu suna cikin ma'ajin Git iri ɗaya.
Muna samun sigar aikace-aikacen daga sakamakon aiwatar da umarni.
git describe --tags --abbrev=7.
4. Ta atomatik tura duk canje-canje zuwa yanayin gwaji (UAT)
Mataki na gaba a cikin wannan rubutun ginin yana sabunta tarin K8S ta atomatik. Wannan yana faruwa da zarar an gina dukkan aikace-aikacen kuma an buga duk kayan tarihi zuwa Docker Registry. Bayan wannan, ana sabunta yanayin gwajin.
An fara sabunta tari da Idan wani abu bai tafi kamar yadda aka tsara ba, Helm zai sake jujjuya duk canje-canjen ta kai tsaye. Ayyukansa baya buƙatar kulawa.
Muna jigilar tsarin gungu na K8S tare da ginin. Don haka, mataki na gaba shine sabunta ta: configMaps, turawa, ayyuka, sirri, da duk wani saitin K8S da muka gyara.
Bayan wannan, Helm yana gudanar da sabuntawar RollOut na aikace-aikacen kanta a cikin yanayin gwaji kafin a tura shi zuwa samarwa. Anyi wannan don masu amfani su iya gwada fasalin kasuwancin da muka tura zuwa yanayin gwaji da hannu.
5. Ta atomatik tura duk canje-canje zuwa Prod
Don tura sabuntawa zuwa yanayin samarwa, duk abin da za ku yi shine danna maballin a GitLab, kuma ana isar da kwantena nan da nan zuwa yanayin samarwa.
Aikace-aikacen iri ɗaya na iya gudana a wurare daban-daban - gwaji da samarwa - ba tare da sake ginawa ba. Muna amfani da kayan tarihi iri ɗaya ba tare da canza komai a cikin aikace-aikacen ba, kuma muna saita sigogi a waje.
Matsakaicin sassauƙan saitunan aikace-aikacen ya dogara da yanayin da aikace-aikacen zai gudana. Mun fitar da duk saitunan muhalli waje: komai an daidaita shi ta hanyar daidaitawar K8S da sigogin Helm. Lokacin da Helm ya ƙaddamar da ginin zuwa yanayin gwaji, ana amfani da ma'auni na gwaji, kuma a cikin yanayin samarwa, ana amfani da matakan samarwa.
Abu mafi wahala shine ƙirƙira duk ayyuka da masu canji da aka yi amfani da su waɗanda suka dogara da muhalli da fassara su zuwa masu canjin yanayi da kwatance-daidaita sigogin muhalli na Helm.
Siffofin aikace-aikacen suna amfani da masu canjin yanayi. An saita ƙimar su a cikin kwantena ta amfani da tsarin tsarin K8S, wanda aka ƙirƙira ta amfani da samfuran Go. Misali, saita canjin yanayi zuwa sunan yankin ana iya yin haka kamar haka:
APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}
.Dabi'u.global.env - wannan m yana adana sunan yanayin (prod, mataki, UAT).
.Value.app.properties.app_external_domain – a cikin wannan m mun saita yankin da ake so a cikin fayil ɗin .Values.yaml
Lokacin sabunta aikace-aikacen, Helm yana ƙirƙirar fayil ɗin configmap.yaml daga samfura kuma yana cika madaidaicin APP_EXTERNAL_DOMAIN tare da ƙimar da ta dace dangane da yanayin da ake ƙaddamar da sabunta aikace-aikacen. An riga an saita wannan maɓalli a cikin akwati kuma ana samun dama daga aikace-aikacen kanta, ma'ana cewa kowane yanayi na aikace-aikacen zai sami ƙima daban-daban don wannan canjin.
Kwanan nan, Spring Cloud ya kara tallafi don K8S, gami da goyan baya don daidaita Maps: Yayin da aikin ke haɓakawa kuma yana fuskantar manyan canje-canje, ba za mu iya amfani da shi wajen samarwa ba. Koyaya, muna sa ido sosai akan matsayin sa kuma muna amfani dashi a cikin saitunan DEV. Da zarar ya daidaita, za mu canza daga amfani da masu canjin yanayi zuwa gare shi.
Jimlar
Don haka, an saita Ci gaba da Aiwatar da aiki. Duk sabuntawa suna faruwa tare da bugun maɓalli ɗaya. Isar da canje-canje ga yanayin samarwa yana atomatik. Kuma, mahimmanci, sabuntawa ba sa katse aikin tsarin.

Shirye-shiryen gaba: ƙaura ta atomatik na bayanai
Mun yi la'akari da haɓaka ma'ajin bayanai da ikon mayar da waɗannan canje-canje. Bayan haka, nau'ikan app guda biyu daban-daban suna gudana lokaci guda: tsohon yana gudana, kuma ana fitar da sabon. Za mu kashe tsohon sigar da zarar mun tabbata sabon sigar tana aiki. Ya kamata ƙaura bayanan bayanai ya ba da damar nau'ikan app ɗin su yi aiki.
Saboda haka, ba za mu iya kawai canza sunan shafi ko wasu bayanai ba. Koyaya, za mu iya ƙirƙirar sabon shafi, kwafi bayanan daga tsohon ginshiƙi zuwa gare shi, mu rubuta abubuwan da za su iya kwafa da sabunta bayanan a cikin wani shafi lokacin da aka sabunta shi. Bayan ƙaddamar da sabon sigar aikace-aikacen cikin nasara, bayan lokacin tallafi bayan ƙaddamarwa ya ƙare, za mu iya share tsohon ginshiƙi da abin da ba a buƙata ba.
Idan sabon sigar app ɗin baya aiki daidai, za mu iya komawa zuwa sigar da ta gabata, gami da sigar data gabata. A takaice, canje-canjen mu zai ba ku damar yin aiki tare da nau'ikan ƙa'idar da yawa a lokaci guda.
Muna shirin sarrafa ƙaura na bayanai ta hanyar ayyukan K8S, haɗa shi cikin tsarin CD. Tabbas za mu raba wannan gogewar akan Habr.
source: www.habr.com
