Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Thòisich e uile nuair a dh’ iarr ceannard sgioba aon de na sgiobaidhean leasachaidh againn oirnn an tagradh ùr aca fheuchainn, a chaidh a chuir a-steach an latha roimhe. Chuir mi suas e. Às deidh timcheall air 20 mionaid, chaidh iarrtas fhaighinn airson an tagradh ùrachadh, oir chaidh rud gu math riatanach a chuir ris an sin. dh'ath-nuadhaich mi. Às deidh uair no dhà eile ... uill, faodaidh tu tomhas dè a thòisich air tachairt an ath rud...

Feumaidh mi aideachadh, tha mi caran leisg (nach do dh’aidich mi seo na bu thràithe? Chan eil?), agus leis gu bheil cothrom aig stiùirichean sgioba air Jenkins, anns a bheil CI/CD againn uile, shaoil ​​​​mi: leig leis a chleachdadh mar mar a tha e ag iarraidh! chuimhnich mi air fealla-dhà: thoir iasg do dhuine agus ithidh e airson latha; cuir fios gu Fed agus bidh e air a bhiadhadh fad a bheatha. Agus chaidh cleasan a chluich air an obair, a bhiodh comasach air soitheach a chuir a-steach anns a bheil dreach sam bith a chaidh a thogail gu soirbheachail a-steach gu Kuber agus luachan sam bith a ghluasad thuige ENV (bhiodh mo sheanair, eòlaiche-eòlaiche, tidsear Beurla san àm a dh’ fhalbh, a-nis a ’tionndadh a mheur aig an teampall aige agus a’ coimhead orm le faireachdainn gu math às deidh an abairt seo a leughadh).

Mar sin, anns an nota seo innsidh mi dhut mar a dh’ ionnsaich mi:

  1. Ùraich obraichean ann an Jenkins gu dinamach bhon obair fhèin no bho obraichean eile;
  2. Ceangail ris a’ chonsail sgòthan (Cloud shell) bho nód leis an àidseant Jenkins air a chuir a-steach;
  3. Cuir uallach obrach gu Google Kubernetes Engine.


Gu dearbh, tha mi, gu dearbh, rudeigin mì-mhodhail. Thathas a’ gabhail ris gu bheil co-dhiù pàirt den bhun-structar agad ann an sgòth Google, agus, mar sin, is tusa an neach-cleachdaidh agad agus, gu dearbh, tha cunntas GCP agad. Ach chan ann mu dheidhinn a tha an nota seo.

Seo an ath dhuilleag meallta agam. Chan eil mi airson a leithid de notaichean a sgrìobhadh ach ann an aon chùis: bha duilgheadas agam, cha robh fios agam an toiseach mar a dh ’fhuasgladh mi e, cha robh am fuasgladh deiseil le googled, agus mar sin rinn mi googled ann am pàirtean agus mu dheireadh dh’ fhuasgail mi an duilgheadas. Agus gus am bi san àm ri teachd, nuair a dhìochuimhnicheas mi mar a rinn mi e, chan fheum mi a h-uile càil a dhèanamh a-rithist pìos às deidh pìos agus a chuir ri chèile, bidh mi a’ sgrìobhadh a leithid de dhuilleagan meallta dhomh fhìn.

Àicheadh: 1. Chaidh an nota a sgrìobhadh “dhomh fhìn”, airson na dreuchd cleachdadh as fheàrr chan eil a 'buntainn. Tha mi toilichte na roghainnean “bhiodh e air a bhith nas fheàrr a dhèanamh mar seo” a leughadh anns na beachdan.
2. Ma tha am pàirt gnìomhach den nota air a mheas mar shalainn, an uairsin, mar a h-uile nota a bh 'agam roimhe, tha am fear seo na fhuasgladh salainn lag.

Ag ùrachadh suidheachadh obrach ann an Jenkins gu dinamach

Tha mi a’ dùileachadh do cheist: dè a th’ aig ùrachadh obrach fiùghantach ris? Cuir a-steach luach am paramadair sreang le làimh agus dheth falbh!

Tha mi a’ freagairt: Tha mi uamhasach leisg, cha toil leam e nuair a bhios iad a’ gearan: Misha, tha an cleachdadh a’ tuiteam, tha a h-uile càil air falbh! Tòisichidh tu a’ coimhead, agus tha typo ann an luach cuid de pharamadair cur air bhog gnìomh. Mar sin, is fheàrr leam a h-uile càil a dhèanamh cho èifeachdach sa ghabhas. Ma tha e comasach casg a chuir air an neach-cleachdaidh dàta a chuir a-steach gu dìreach le bhith a ’toirt seachad liosta de luachan airson taghadh, an uairsin bidh mi a’ cur an taghadh air dòigh.

Is e seo am plana: bidh sinn a’ cruthachadh obair ann an Jenkins, anns am b ’urrainn dhuinn, mus tèid a chuir air bhog, dreach a thaghadh bhon liosta, luachan a shònrachadh airson paramadairean a chaidh a chuir chun ghobhar tro ENV, an uairsin cruinnichidh e an soitheach agus ga phutadh a-steach don Chlàr Container. An uairsin às an sin tha an soitheach air a chuir air bhog ann an cuber mar uallach obrach leis na crìochan a tha air an sònrachadh san obair.

Cha bheachdaich sinn air a’ phròiseas airson obair a chruthachadh agus a stèidheachadh ann an Jenkins, chan eil seo na chuspair. Gabhaidh sinn ris gu bheil an obair deiseil. Gus liosta ùraichte le dreachan a chuir an gnìomh, feumaidh sinn dà rud: liosta stòr gnàthaichte le àireamhan tionndaidh dligheach priori agus caochladair mar Paramadair roghainn anns an obair. Anns an eisimpleir againn, leig leis an caochladair ainmeachadh BUILD_VERSION, cha ghabh sinn còmhnuidh air gu mion. Ach leig dhuinn sùil nas mionaidiche a thoirt air an liosta stòran.

Chan eil uiread de roghainnean ann. Thàinig dà rud gu inntinn sa bhad:

  • Cleachd an API ruigsinneachd iomallach a tha Jenkins a’ tabhann don luchd-cleachdaidh aige;
  • Iarr susbaint am pasgan ath-reic iomallach (anns a 'chùis againn is e seo JFrog Artifactory, nach eil cudromach).

Jenkins Remote access API

A rèir an traidisean sàr-mhath stèidhichte, b’ fheàrr leam mìneachaidhean fada a sheachnadh.
Cha cheadaich mi dhomh fhìn ach eadar-theangachadh an-asgaidh de phìos den chiad pharagraf a’ chiad duilleag de sgrìobhainnean API:

Tha Jenkins a’ toirt seachad API airson ruigsinneachd a ghabhas leughadh le inneal air a ghnìomhachd. <…> Tha ruigsinneachd iomallach air a thabhann ann an stoidhle coltach ri REST. Tha seo a’ ciallachadh nach eil aon àite inntrigidh ann airson a h-uile feart, ach an àite sin URL mar “.../api/", Càite"..." a 'ciallachadh an nì ris a bheil na comasan API air an cur an sàs.

Ann am faclan eile, ma tha an obair cleachdaidh air a bheil sinn a’ bruidhinn an-dràsta ri fhaighinn aig http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, an uairsin tha na fìdeagan API airson na h-obrach seo rim faighinn aig http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

An ath rud, tha roghainn againn dè an cruth a gheibh sinn an toradh. Nach cuir sinn fòcas air XML, leis nach eil an API a’ ceadachadh sìoladh ach sa chùis seo.

Feuchaidh sinn dìreach ri liosta fhaighinn den ruith obrach gu lèir. Chan eil ùidh againn ach ann an ainm a’ cho-chruinneachaidh (Ainm taisbeanaidh) agus a thoradh (thoradh air):

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]

Thàinig e a-mach?

A-nis leig leinn sìoladh a-mhàin na ruithean sin a thig gu crìch leis an toradh SEIRBHEIS. Cleachdamaid an argamaid &a-mach agus mar paramadair bheir sinn seachad e air an t-slighe gu luach nach eil co-ionann ris SEIRBHEIS. Seadh Tha. Is e aithris a th’ ann an àicheil dùbailte. Bidh sinn a’ dùnadh a-mach a h-uile càil nach eil inntinneach dhuinn:

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!='SUCCESS']

Glacadh-sgrìn den liosta soirbheachail
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Uill, dìreach airson spòrs, dèanamaid cinnteach nach do mheall an sìoltachan sinn (cha bhith sìoltachain a-riamh a’ laighe!)

http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result='SUCCESS']

Glacadh-sgrìn den liosta den fheadhainn nach do shoirbhich
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Liosta de dhreachan bho phasgan air frithealaiche iomallach

Tha dàrna dòigh ann airson liosta dreachan fhaighinn. Is toil leam e eadhon nas motha na bhith a’ faighinn cothrom air Jenkins API. Uill, oir ma chaidh an tagradh a thogail gu soirbheachail, tha e a ’ciallachadh gun deach a phacaigeadh agus a chuir san stòr sa phasgan iomchaidh. Coltach ri, is e stòr-dàta an stòradh bunaiteach de dhreachan obrach de thagraidhean. Like. Uill, faighnichidh sinn dha dè na dreachan a tha ann an stòradh. Bidh sinn a’ curl, grep agus dùisgidh sinn am pasgan iomallach. Ma tha ùidh aig duine anns an oneliner, tha e fon spoiler.

Òrdugh aon loidhne
Thoir an aire do dhà rud: bidh mi a’ dol seachad air mion-fhiosrachadh a’ cheangail anns a’ bhann-cinn agus chan eil feum agam air a h-uile dreach bhon phasgan, agus cha bhith mi a’ taghadh ach an fheadhainn a chaidh a chruthachadh taobh a-staigh mìos. Deasaich an àithne gus freagairt air na fìrinnean agus na feumalachdan agad:

curl -H "X-JFrog-Art-Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )

A’ stèidheachadh obraichean agus faidhle rèiteachaidh obrach ann an Jenkins

Dh'obraich sinn a-mach cò às a thàinig liosta nan dreachan. Leig leinn a-nis an liosta a thàinig às a thoirt a-steach don ghnìomh. Dhòmhsa, b’ e am fuasgladh follaiseach ceum a chur ris a’ ghnìomh togail thagraidhean. An ceum a bhiodh air a chur gu bàs ma bha an toradh "soirbheachas".

Fosgail na roghainnean gnìomh cruinneachaidh agus sgrolaich chun bhonn. Cliog air na putanan: Cuir ceum togail ris -> Ceum cumhach (singilte). Anns na roghainnean ceum, tagh an suidheachadh Inbhe togail gnàthach, suidhich an luach SEIRBHEIS, an gnìomh a thèid a choileanadh ma bhios e soirbheachail Ruith òrdugh slige.

Agus a-nis am pàirt spòrsail. Bidh Jenkins a’ stòradh rèiteachaidhean obrach ann am faidhlichean. Ann an cruth XML. Air an t-slighe http://путь-до-задания/config.xml Mar sin, faodaidh tu am faidhle rèiteachaidh a luchdachadh sìos, a dheasachadh mar a dh ’fheumar agus a chuir air ais far an d’ fhuair thu e.

Cuimhnich, dh'aontaich sinn gu h-àrd gun cruthaich sinn paramadair airson liosta nan dreachan BUILD_VERSION?

Luchdaich sìos sinn am faidhle rèiteachaidh agus thoir sùil air a-staigh. Dìreach gus dèanamh cinnteach gu bheil am paramadair na àite agus den t-seòrsa a tha thu ag iarraidh.

Glacadh-sgrìn fo spoiler.

Bu chòir don chriomag config.xml agad coimhead mar an ceudna. Ach a-mhàin gu bheil susbaint an eileamaid roghainnean a dhìth fhathast
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

A bheil thu cinnteach? Sin e, sgrìobhamaid sgriobt a thèid a chur gu bàs ma bhios an togail soirbheachail.
Gheibh an sgriobt liosta de dhreachan, luchdaich sìos am faidhle rèiteachaidh, sgrìobh liosta nan dreachan a-steach dha san àite a dh’ fheumas sinn, agus an uairsin cuir air ais e. Tha. Tha sin ceart. Sgrìobh liosta de na dreachan ann an XML anns an àite far a bheil mar-thà liosta de na dreachan (bidh san àm ri teachd, an dèidh a 'chiad cur air bhog an sgriobt). Tha fios agam gu bheil luchd-leantainn làidir de abairtean cunbhalach air an t-saoghal fhathast. Chan eil mi a 'buntainn riutha. Feuch an stàlaich thu rionnag xml chun inneal far an tèid an rèiteachadh a dheasachadh. Tha e coltach riumsa nach e prìs cho mòr a tha seo ri phàigheadh ​​gus deasachadh XML a sheachnadh a’ cleachdadh sed.

Fon spoiler, bidh mi a’ taisbeanadh a’ chòd a bhios a’ coileanadh an t-sreath gu h-àrd gu h-iomlan.

Sgrìobh liosta de dhreachan bho phasgan air an fhrithealaiche iomallach chun an config

#!/bin/bash
############## Скачиваем конфиг
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml

############## Удаляем и заново создаем xml-элемент для списка версий
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml

xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml

xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml

############## Читаем в массив список версий из репозитория
readarray -t vers < <( curl -H "X-JFrog-Art-Api:Api:VeryLongAPIKey" -s http://arts.myre.po/artifactory/awesomeapp/ | sed 's/a href=//' | grep "$(date +%b)-$(date +%Y)|$(date +%b --date='-1 month')-$(date +%Y)" | awk '{print $1}' | grep -oP '>K[^/]+' )

############## Пишем массив элемент за элементом в конфиг
printf '%sn' "${vers[@]}" | sort -r | 
                while IFS= read -r line
                do
                    xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
                done

############## Кладем конфиг взад
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml

############## Приводим рабочее место в порядок
rm -f appConfig.xml

Mas fheàrr leat an roghainn dreachan fhaighinn bho Jenkins agus gu bheil thu cho leisg riumsa, an uairsin fon spoiler tha an aon chòd, ach liosta bho Jenkins:

Sgrìobh liosta de dhreachan bho Jenkins chun an config
Dìreach cumaibh seo san amharc: tha an t-ainm cruinneachaidh agam air a dhèanamh suas de àireamh sreath agus àireamh tionndaidh, air a sgaradh le coloin. Mar sin, bidh awk a 'gearradh dheth a' phàirt neo-riatanach. Air do shon fhèin, atharraich an loidhne seo gus freagairt air na feumalachdan agad.

#!/bin/bash
############## Скачиваем конфиг
curl -X GET -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml -o appConfig.xml

############## Удаляем и заново создаем xml-элемент для списка версий
xmlstarlet ed --inplace -d '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' appConfig.xml

xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]' --type elem -n a appConfig.xml

xmlstarlet ed --inplace --insert '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a' --type attr -n class -v string-array appConfig.xml

############## Пишем в файл список версий из Jenkins
curl -g -X GET -u username:apiKey 'http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/xml?tree=allBuilds[displayName,result]&exclude=freeStyleProject/allBuild[result!=%22SUCCESS%22]&pretty=true' -o builds.xml

############## Читаем в массив список версий из XML
readarray vers < <(xmlstarlet sel -t -v "freeStyleProject/allBuild/displayName" builds.xml | awk -F":" '{print $2}')

############## Пишем массив элемент за элементом в конфиг
printf '%sn' "${vers[@]}" | sort -r | 
                while IFS= read -r line
                do
                    xmlstarlet ed --inplace --subnode '/project/properties/hudson.model.ParametersDefinitionProperty/parameterDefinitions/hudson.model.ChoiceParameterDefinition[name="BUILD_VERSION"]/choices[@class="java.util.Arrays$ArrayList"]/a[@class="string-array"]' --type elem -n string -v "$line" appConfig.xml
                done

############## Кладем конфиг взад
curl -X POST -u username:apiKey http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_k8s/config.xml --data-binary @appConfig.xml

############## Приводим рабочее место в порядок
rm -f appConfig.xml

Ann an teòiridh, ma tha thu air deuchainn a dhèanamh air a’ chòd sgrìobhte stèidhichte air na h-eisimpleirean gu h-àrd, an uairsin anns a’ ghnìomh cleachdadh bu chòir dhut liosta tuiteam-sìos le dreachan a bhith agad mu thràth. Tha e mar anns an dealbh-sgrìn fon spoiler.

Liosta de dhreachan crìochnaichte gu ceart
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Ma dh’ obraich a h-uile càil, dèan lethbhreac-pas a-steach don sgriobt Ruith òrdugh slige agus sàbhail atharrachaidhean.

A 'ceangal ri Cloud shell

Tha luchd-cruinneachaidh againn ann an soithichean. Bidh sinn a’ cleachdadh Ansible mar an inneal lìbhrigidh tagraidh agus am manaidsear rèiteachaidh againn. Mar sin, nuair a thig e gu bhith a’ togail shoithichean, thig trì roghainnean gu inntinn: stàlaich Docker in Docker, stàlaich Docker air inneal a tha a’ ruith Ansible, no tog soithichean ann an consol sgòth. Dh’ aontaich sinn fuireach sàmhach mu plugins airson Jenkins san artaigil seo. Cuimhnich?

Cho-dhùin mi: uill, leis gum faodar soithichean “a-mach às a’ bhogsa ”a chruinneachadh anns a’ chonsail sgòthan, carson a tha dragh ort? Cùm e glan, ceart? Tha mi airson soithichean Jenkins a chruinneachadh anns a’ chonsail sgòthan, agus an uairsin a chuir air bhog a-steach don chubair às an sin. A bharrachd air an sin, tha seanalan fìor bheairteach aig Google taobh a-staigh a bhun-structair, a bheir buaidh buannachdail air astar cleachdadh.

Gus ceangal ris a’ chonsal neòil, feumaidh tu dà rud: clod agus còraichean-slighe gu Google Cloud API airson an eisimpleir VM leis an tèid an aon cheangal seo a dhèanamh.

Dhaibhsan a tha an dùil ceangal a dhèanamh chan ann bho sgòth Google idir
Leigidh Google leis a’ chomas cead eadar-ghnìomhach a chuir dheth anns na seirbheisean aige. Leigidh seo leat ceangal ris a’ chonsail eadhon bho inneal cofaidh, ma tha e a’ ruith * nix agus gu bheil consol aige fhèin.

Ma tha feum agam air a’ chùis seo a chòmhdach nas mionaidiche taobh a-staigh frèam an nota seo, sgrìobh na beachdan. Ma gheibh sinn gu leòr bhòtaichean, sgrìobhaidh mi ùrachadh air a’ chuspair seo.

Is e an eadar-aghaidh lìn an dòigh as fhasa air còraichean a bhuileachadh.

  1. Cuir stad air an eisimpleir VM às an dèan thu ceangal às deidh sin ris a’ chonsal neòil.
  2. Fosgail Instance Details agus cliog atharrachadh.
  3. Aig fìor bhonn na duilleige, tagh an raon ruigsinneachd eisimpleir Cothrom iomlan air a h-uile Cloud API.

    Ð¡ÐºÑ € Ð¸Ð½ÑˆÐ¾Ñ ‚
    Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

  4. Sàbhail na h-atharrachaidhean agad agus cuir air bhog an eisimpleir.

Aon uair ‘s gu bheil an VM deiseil, ceangail ris tro SSH agus dèan cinnteach gun tachair an ceangal gun mhearachd. Cleachd an àithne:

gcloud alpha cloud-shell ssh

Tha ceangal soirbheachail a 'coimhead rudeigin mar seo
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Cuir a-steach gu GKE

Leis gu bheil sinn a’ dèanamh ar dìcheall anns a h-uile dòigh a ghabhas atharrachadh gu tur gu IaC (Bun-structair mar Chòd), tha na faidhlichean docker againn air an stòradh ann an Git. Tha seo air an aon làimh. Agus tha cleachdadh ann an kubernetes air a mhìneachadh le faidhle yaml, a tha air a chleachdadh a-mhàin leis a 'ghnìomh seo, a tha ann fhèin cuideachd mar chòd. Tha seo bhon taobh eile. San fharsaingeachd, tha mi a’ ciallachadh, is e seo am plana:

  1. Gabhaidh sinn luachan nan caochladairean BUILD_VERSION agus, gu roghnach, luachan nan caochladairean a thèid troimhe ENV.
  2. Luchdaich sìos an dockerfile bho Git.
  3. Cruthaich yaml airson a chleachdadh.
  4. Bidh sinn a’ luchdachadh suas an dà fhaidhle sin tro scp gu consol na sgòthan.
  5. Bidh sinn a 'togail soitheach an sin agus ga phutadh a-steach don chlàr Container
  6. Bidh sinn a’ cur am faidhle cleachdadh luchd air a’ chubair.

Leig leinn a bhith nas mionaidiche. Aon uair 's gun do thòisich sinn a' bruidhinn mu dheidhinn ENV, an uairsin is dòcha gum feum sinn a dhol seachad air luachan dà pharamadair: Param1 и Param2. Bidh sinn a’ cur ris an obair aca airson cleachdadh, seòrsa - Parameter sreang.

Ð¡ÐºÑ € Ð¸Ð½ÑˆÐ¾Ñ ‚
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Cruthaichidh sinn yaml le ath-stiùireadh sìmplidh echo faidhleadh. Thathas a’ gabhail ris, gu dearbh, gu bheil agad san dockerfile agad Param1 и Param2gum bi an t-ainm luchdan app uabhasach, agus tha an soitheach cruinn le cleachdadh an dreach ainmichte na laighe ann Clàradh container Air an t-slighe gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONcàite $BUILD_VERSION dìreach air a thaghadh bhon liosta tuiteam-sìos.

Clàr sgioba

touch deploy.yaml
echo "apiVersion: apps/v1" >> deploy.yaml
echo "kind: Deployment" >> deploy.yaml
echo "metadata:" >> deploy.yaml
echo "  name: awesomeapp" >> deploy.yaml
echo "spec:" >> deploy.yaml
echo "  replicas: 1" >> deploy.yaml
echo "  selector:" >> deploy.yaml
echo "    matchLabels:" >> deploy.yaml
echo "      run: awesomeapp" >> deploy.yaml
echo "  template:" >> deploy.yaml
echo "    metadata:" >> deploy.yaml
echo "      labels:" >> deploy.yaml
echo "        run: awesomeapp" >> deploy.yaml
echo "    spec:" >> deploy.yaml
echo "      containers:" >> deploy.yaml
echo "      - name: awesomeapp" >> deploy.yaml
echo "        image: gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION:latest" >> deploy.yaml
echo "        env:" >> deploy.yaml
echo "        - name: PARAM1" >> deploy.yaml
echo "          value: $PARAM1" >> deploy.yaml
echo "        - name: PARAM2" >> deploy.yaml
echo "          value: $PARAM2" >> deploy.yaml

Jenkins àidseant an dèidh a 'ceangal a' cleachdadh gcloud alpha sgòthan-slige ssh chan eil modh eadar-ghnìomhach ri fhaighinn, agus mar sin bidh sinn a’ cur òrdughan chun chonsail sgòthan a’ cleachdadh am paramadair --àithne.

Bidh sinn a’ glanadh am pasgan dachaigh sa chonsal neòil bhon t-seann dockerfile:

gcloud alpha cloud-shell ssh --command="rm -f Dockerfile"

Cuir am faidhle docker a chaidh a luchdachadh sìos às ùr ann am pasgan dachaigh a’ chonsail neòil a’ cleachdadh scp:

gcloud alpha cloud-shell scp localhost:./Dockerfile cloudshell:~

Bidh sinn a’ cruinneachadh, a’ tagadh agus a’ putadh an t-soithich a-steach don chlàr Container:

gcloud alpha cloud-shell ssh --command="docker build -t awesomeapp-$BUILD_VERSION ./ --build-arg BUILD_VERSION=$BUILD_VERSION --no-cache"
gcloud alpha cloud-shell ssh --command="docker tag awesomeapp-$BUILD_VERSION gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"
gcloud alpha cloud-shell ssh --command="docker push gcr.io/awesomeapp/awesomeapp-$BUILD_VERSION"

Bidh sinn a 'dèanamh an aon rud leis an fhaidhle cleachdadh. Thoir an aire gu bheil na h-òrdughan gu h-ìosal a’ cleachdadh ainmean meallta den bhuidheann far a bheil an cleachdadh (awsm-chnuasach) agus ainm a’ phròiseict (iongantach-phròiseact), far a bheil am buidheann suidhichte.

gcloud alpha cloud-shell ssh --command="rm -f deploy.yaml"
gcloud alpha cloud-shell scp localhost:./deploy.yaml cloudshell:~
gcloud alpha cloud-shell ssh --command="gcloud container clusters get-credentials awsm-cluster --zone us-central1-c --project awesome-project && 
kubectl apply -f deploy.yaml"

Bidh sinn a’ ruith na h-obrach, a’ fosgladh toradh a’ chonsail agus an dòchas gum faic sinn co-chruinneachadh soirbheachail an t-soithich.

Ð¡ÐºÑ € Ð¸Ð½ÑˆÐ¾Ñ ‚
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Agus an uairsin cleachdadh soirbheachail an t-soithich cruinnichte

Ð¡ÐºÑ € Ð¸Ð½ÑˆÐ¾Ñ ‚
Bidh sinn a’ cruthachadh gnìomh cleachdadh ann an GKE às aonais plugins, SMS no clàradh. Bheir sinn sùil fo sheacaid Jenkins

Dhiùlt mi an suidheachadh a dh’aona ghnothach Ingress. Airson aon adhbhar sìmplidh: aon uair ‘s gu bheil thu air a stèidheachadh uallach obrach le ainm ainmichte, fuirichidh e ag obair, ge bith cia mheud cleachdadh leis an ainm seo a nì thu. Uill, san fharsaingeachd, tha seo beagan nas fhaide na raon eachdraidh.

An àite co-dhùnaidhean

Is dòcha nach b 'urrainnear na ceumannan gu h-àrd a dhèanamh, ach dìreach chuir iad plugan a-steach airson Jenkins, am muuulion. Ach airson adhbhar air choireigin cha toil leam plugins. Uill, nas mionaidiche, bidh mi a’ tadhal orra a-mhàin ann an eu-dòchas.

Agus is toil leam dìreach cuspair ùr a thogail dhomh. Tha an teacsa gu h-àrd cuideachd na dhòigh air na co-dhùnaidhean a rinn mi fhad ‘s a bha mi a’ fuasgladh na duilgheadas a chaidh a mhìneachadh aig an fhìor thoiseach a cho-roinn. Co-roinn leis an fheadhainn nach eil, coltach ris, idir na mhadadh-allaidh uamhasach ann an devops. Ma chuidicheas na co-dhùnaidhean agam cuideigin co-dhiù, bidh mi toilichte.

Source: www.habr.com

Cuir beachd ann