Aiwatar da mu na ci gaba da ƙaddamarwa akan dandalin abokin ciniki

Mu a Injiniya na Gaskiya mun kafa tsari don ci gaba da isar da sabuntawa zuwa sabar abokin ciniki kuma muna son raba wannan ƙwarewar.

Da farko, mun ƙirƙira tsarin kan layi don abokin ciniki kuma mun tura shi cikin gungu na Kubernetes. Yanzu babban kayan aikin mu ya koma dandalin abokin ciniki, wanda muka kafa cikakken tsari na ci gaba na atomatik. Godiya ga wannan, mun haɓaka lokaci zuwa kasuwa - isar da canje-canje ga yanayin samfurin.

A cikin wannan labarin za mu yi magana game da duk matakai na ci gaba da ƙaddamarwa (CD) tsari ko isar da sabuntawa zuwa dandalin abokin ciniki:

  1. Ta yaya wannan tsari zai fara?
  2. aiki tare da ma'ajiyar Git na abokin ciniki,
  3. taro na baya da gaba,
  4. tura aikace-aikacen atomatik a cikin yanayin gwaji,
  5. atomatik tura zuwa Prod.

Za mu raba bayanan saitin a hanya.

Aiwatar da mu na ci gaba da ƙaddamarwa akan dandalin abokin ciniki

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 yana gudana akan tsarin gine-ginen microservice kuma ana adana duk abubuwan da ke cikin sa a cikin ma'aji guda. Godiya ga wannan, ana tattara duk microservices kuma an shigar dasu, koda ɗayansu ya canza.

Mun shirya aiki ta wurin ajiya guda don dalilai da yawa:

  • Sauƙin haɓakawa - aikace-aikacen yana haɓakawa sosai, don haka zaku iya aiki tare da duk lambar a lokaci ɗaya.
  • Bututun CI / CD guda ɗaya wanda ke ba da garantin cewa aikace-aikacen azaman tsarin guda ɗaya ya wuce duk gwaje-gwaje kuma ana isar da shi zuwa yanayin samar da abokin ciniki.
  • Muna kawar da rudani a cikin nau'ikan - ba dole ba ne mu adana taswirar sigar microservice kuma mu bayyana tsarin sa ga kowane microservice a cikin rubutun Helm.

2. Aiki tare tare da ma'ajin Git na lambar tushen abokin ciniki

Canje-canjen da aka yi ana aiki tare ta atomatik tare da ma'ajin Git na abokin ciniki. A can an saita taron aikace-aikacen, wanda aka ƙaddamar bayan sabunta reshe, da turawa zuwa ci gaba. Duk hanyoyin biyu sun samo asali ne a cikin muhallinsu daga ma'ajin Git.

Ba za mu iya aiki tare da ma'ajiyar abokin ciniki kai tsaye ba saboda muna buƙatar mahallin mu don haɓakawa da gwaji. Muna amfani da ma'ajiyar mu ta Git don waɗannan dalilai - yana aiki tare da ma'ajiyar su ta Git. Da zarar mai haɓakawa ya aika canje-canje zuwa reshen da ya dace na ma'ajiyar mu, GitLab nan da nan ya tura waɗannan canje-canje ga abokin ciniki.

Aiwatar da mu na ci gaba da ƙaddamarwa akan dandalin abokin ciniki

Bayan wannan kuna buƙatar yin taron. Ya ƙunshi matakai da yawa: taro na baya da gaba, gwaji da bayarwa zuwa samarwa.

3. Haɗa ƙarshen baya da gaba

Gina bangon baya da gaba ayyuka guda biyu ne masu kamanceceniya da ake yi a cikin tsarin GitLab Runner. Asalin tsarin haɗawar sa yana cikin ma'ajiya ɗaya.

Koyawa don rubuta rubutun YAML don gini a GitLab.

GitLab Runner yana ɗaukar lambar daga wurin ajiyar da ake buƙata, ya haɗa shi tare da umarnin gina aikace-aikacen Java kuma ya aika zuwa rajistar Docker. Anan muna harhada bangon baya da gaban gaba, samun hotunan Docker, waɗanda muka sanya a cikin ma'ajiya a gefen abokin ciniki. Don sarrafa hotunan Docker muna amfani da su Gradle plugin.

Muna aiki tare da nau'ikan hotunan mu tare da sigar sakin da za a buga a Docker. Domin aiki mai santsi mun yi gyare-gyare da yawa:

1. Ba a sake gina kwantena ba tsakanin yanayin gwaji da yanayin samarwa. Mun yi ma'auni ta yadda akwati ɗaya zai iya aiki tare da duk saituna, masu canjin yanayi da ayyuka duka a cikin yanayin gwaji da kuma samarwa ba tare da sake ginawa ba.

2. Don sabunta aikace-aikacen ta hanyar Helm, dole ne ka saka sigar sa. Muna gina bangon baya, gaba da sabunta aikace-aikacen - waɗannan ayyuka ne daban-daban guda uku, don haka yana da mahimmanci a yi amfani da nau'ikan aikace-aikacen iri ɗaya a ko'ina. Don wannan aikin, muna amfani da bayanai daga tarihin Git, tunda tsarin gungu na K8S da aikace-aikacenmu suna cikin ma'ajiyar 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 shine sabunta tarin K8S ta atomatik. Wannan yana faruwa muddin an gina dukkan aikace-aikacen kuma an buga duk kayan tarihi zuwa Docker Registry. Bayan wannan, sabunta yanayin gwajin yana farawa.

An fara amfani da sabuntawar tari Helm Sabuntawa. Idan, a sakamakon haka, wani abu bai tafi daidai da tsari ba, Helm zai sake jujjuya duk canje-canjen ta atomatik. Ba ya buƙatar sarrafa aikinsa.

Muna ba da daidaitaccen gungu na K8S tare da taron. Don haka, mataki na gaba shine sabunta ta: configMaps, turawa, ayyuka, sirri da duk wani tsarin K8S da muka canza.

Helm sannan yana gudanar da sabuntawar RollOut na aikace-aikacen kanta a cikin mahallin gwaji. Kafin a tura aikace-aikacen zuwa samarwa. Anyi wannan ne don masu amfani su iya gwada fasalin kasuwancin da hannu waɗanda muka sanya cikin yanayin gwaji.

5. Aiwatar da duk canje-canje ta atomatik zuwa samfur

Don tura sabuntawa zuwa yanayin samarwa, kawai kuna buƙatar danna maɓalli ɗaya a cikin GitLab - kuma ana isar da kwantena nan da nan zuwa yanayin samarwa.

Aikace-aikacen iri ɗaya na iya aiki 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.

Sassauƙan mizani na saitunan aikace-aikacen ya dogara da yanayin da za a aiwatar da aikace-aikacen. Mun matsar da duk saitunan muhalli a waje: komai yana daidaitawa ta hanyar daidaitawar K8S da sigogin Helm. Lokacin da Helm ya ƙaddamar da taro zuwa yanayin gwaji, ana amfani da saitunan gwaji akan shi, kuma ana amfani da saitunan samfurin zuwa yanayin samarwa.

Abu mafi wahala shi ne daidaita duk sabis ɗin da aka yi amfani da su da masu canji waɗanda suka dogara da muhalli, da fassara su zuwa masu canjin yanayi da kwatance-daidaita sigogin muhalli na Helm.

Saitunan aikace-aikacen suna amfani da masu canjin yanayi. An saita ƙimar su a cikin kwantena ta amfani da tsarin tsarin K8S, wanda aka tsara 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 ya cika ƙimar APP_EXTERNAL_DOMAIN tare da ƙimar da ake so dangane da yanayin da sabuntawar aikace-aikacen ke farawa. An riga an saita wannan canjin a cikin akwati. Ana iya samun dama daga aikace-aikacen, don haka kowane yanayi na aikace-aikacen zai sami ƙima daban-daban don wannan canjin.

Kwanan nan, tallafin K8S ya bayyana a cikin Spring Cloud, gami da aiki tare da configMaps: Spring Cloud Kubernetes. Duk da yake aikin yana tasowa sosai kuma yana canzawa sosai, ba za mu iya amfani da shi wajen samarwa ba. Amma muna saka idanu sosai akan yanayin sa kuma muna amfani dashi a cikin saitunan DEV. Da zaran ya daidaita, za mu canza daga amfani da masu canjin yanayi zuwa gare shi.

Jimlar

Don haka, ci gaba da ƙaddamarwa yana daidaitawa kuma yana aiki. Duk sabuntawa suna faruwa tare da bugun maɓalli ɗaya. Isar da canje-canje ga yanayin samfurin yana atomatik. Kuma, mahimmanci, sabuntawa ba su dakatar da tsarin ba.

Aiwatar da mu na ci gaba da ƙaddamarwa akan dandalin abokin ciniki

Shirye-shiryen gaba: ƙaura ta atomatik na bayanai

Mun yi tunani game da haɓaka ma'ajin bayanai da yuwuwar mirgina waɗannan canje-canje. Bayan haka, nau'ikan aikace-aikacen guda biyu daban-daban suna gudana a lokaci guda: tsohon yana gudana, sabon kuma yana aiki. Kuma za mu kashe tsohon ne kawai idan mun tabbata cewa sabon sigar yana aiki. Ya kamata ƙaura na bayanan bayanai ya ba ku damar yin aiki tare da nau'ikan aikace-aikacen biyu.

Saboda haka, ba za mu iya kawai canza sunan shafi ko wasu bayanai ba. Amma za mu iya ƙirƙirar sabon shafi, kwafin bayanai daga tsohon ginshiƙi a cikinsa kuma mu rubuta abubuwan da ke haifar da cewa, lokacin sabunta bayanan, za su kwafi su sabunta su a wani shafi. Kuma bayan nasarar ƙaddamar da sabon sigar aikace-aikacen, bayan lokacin ƙaddamar da tallafi, za mu iya share tsohon shafi da abin da ya zama ba dole ba.

Idan sabon sigar aikace-aikacen bai yi aiki daidai ba, 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 tare da nau'ikan aikace-aikacen da yawa.

Muna shirin sarrafa ƙaura na bayanai ta hanyar aikin K8S, haɗa shi cikin tsarin CD. Kuma tabbas za mu raba wannan gogewar akan Habré.

source: www.habr.com

Add a comment