Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Zonse zidayamba pomwe otsogolera gulu la gulu lathu lachitukuko adatipempha kuti tiyese pulogalamu yawo yatsopano, yomwe idasungidwa dzulo lake. Ndinazilemba. Pambuyo pa mphindi pafupifupi 20, pempho linalandiridwa kuti lisinthe mafomuwo, chifukwa panali chinthu chofunikira kwambiri chomwe chidawonjezedwa pamenepo. Ndinapanganso. Pambuyo pa maola angapo ... chabwino, mutha kulingalira zomwe zidayamba kuchitika kenako ...

Ndiyenera kuvomereza, ndine waulesi (kodi sindinavomereze izi poyamba? Ayi?), Ndipo chifukwa chakuti otsogolera gulu ali ndi mwayi wopita ku Jenkins, momwe tili ndi CI / CD yonse, ndinaganiza kuti: momwe amafunira! Ndinakumbukira nthabwala: patsani munthu nsomba ndipo adzadya tsiku limodzi; muyitane munthu Wodyetsedwa ndipo adzadyetsedwa moyo wake wonse. Ndipo anapita sewera masewera pa ntchito, yomwe ingathe kuyika chidebe chokhala ndi kugwiritsa ntchito mtundu uliwonse womangidwa bwino ku Kuber ndikusamutsa chilichonse kwa icho ENV (agogo anga aamuna, a philologist, mphunzitsi wachingelezi m'mbuyomu, tsopano amatembenuzira chala chake pakachisi wake ndikundiyang'ana momveka bwino atawerenga chiganizochi).

Kotero, mu cholemba ichi ndikuuzani momwe ndinaphunzirira:

  1. Sinthani mwachangu ntchito ku Jenkins kuchokera kuntchito yokha kapena ku ntchito zina;
  2. Lumikizani kumtambo wamtambo (chipolopolo chamtambo) kuchokera ku node yokhala ndi wothandizira wa Jenkins;
  3. Ikani ntchito ku Google Kubernetes Engine.


M'malo mwake, ndine wosakhulupirika. Zimaganiziridwa kuti muli ndi gawo limodzi lazomangamanga mumtambo wa Google, chifukwa chake, ndinu ogwiritsa ntchito ndipo, ndithudi, muli ndi akaunti ya GCP. Koma izi sindizo zomwe kalatayi ikunena.

Ili ndi pepala langa lotsatira lachinyengo. Ndikungofuna kulemba zolemba zotere pamutu umodzi: Ndinakumana ndi vuto, poyamba sindinkadziwa momwe ndingathetsere, yankho silinapangidwe ndi google, kotero ndinayiyika m'magawo ndipo pamapeto pake ndinathetsa vutoli. Ndipo kotero kuti m'tsogolomu, ndikayiwala momwe ndinachitira, sindiyenera kubwereza google chirichonse pang'onopang'ono ndikuchiphatikiza pamodzi, ndimadzilembera ndekha mapepala onyenga.

Chodzikanira: 1. Cholembacho chinalembedwa β€œkwa ine ndekha” pa ntchitoyo chizoloΕ΅ezi chabwino sizikugwira ntchito. Ndine wokondwa kuwerenga "zikanakhala bwino kuchita izi" mu ndemanga.
2. Ngati gawo logwiritsidwa ntchito la cholembacho likuonedwa kuti ndi mchere, ndiye, monga zolemba zanga zonse zam'mbuyomu, iyi ndi yankho la mchere wofooka.

Kusintha kosintha kwa ntchito ku Jenkins

Ndikuwoneratu funso lanu: Kodi kukonzanso ntchito kwamphamvu kukugwirizana ndi chiyani? Lowetsani mtengo wa zingwe pamanja ndikuchokapo!

Ndimayankha: Ndine waulesi kwambiri, sindimakonda akamadandaula: Misha, kutumizidwa kukuwonongeka, zonse zapita! Mumayamba kuyang'ana, ndipo pali typo pamtengo wagawo loyambitsa ntchito. Chifukwa chake, ndimakonda kuchita zonse moyenera momwe ndingathere. Ngati ndi kotheka kuletsa wosuta kuti alowetse deta mwachindunji popereka m'malo mwake mndandanda wazinthu zomwe angasankhe, ndiye ndikukonza zosankhidwazo.

Dongosolo ndi ili: timapanga ntchito ku Jenkins, momwe, tisanayambe, titha kusankha mtundu kuchokera pamndandandawo, tchulani zofunikira za magawo omwe amaperekedwa ku chidebecho kudzera. ENV, kenako imasonkhanitsa chidebecho ndikuchikankhira mu Registry ya Container. Kenako kuchokera pamenepo chidebecho chimatulutsidwa mu cuber ngati ntchito ndi magawo omwe afotokozedwa mu ntchitoyo.

Sitiganizira za njira yopangira ndi kukhazikitsa ntchito ku Jenkins, izi sizili pamutu. Tidzaganiza kuti ntchitoyi yakonzeka. Kuti tigwiritse ntchito mndandanda womwe wasinthidwa ndi matembenuzidwe, timafunikira zinthu ziwiri: mndandanda wazomwe ulipo kale wokhala ndi manambala ovomerezeka amtundu woyamba komanso zosintha ngati Chosankha parameter mu ntchito. Mu chitsanzo chathu, lolani kusinthika kutchulidwe BUILD_VERSION, sitidzafotokoza mwatsatanetsatane. Koma tiyeni tione bwinobwino mndandanda wa magwero.

Palibe zosankha zambiri. Nthawi yomweyo ndinakumbukira zinthu ziwiri:

  • Gwiritsani ntchito API yofikira kutali yomwe Jenkins amapereka kwa ogwiritsa ntchito;
  • Funsani zomwe zili mufoda yakutali (kwa ife iyi ndi JFrog Artifactory, zomwe sizofunika).

Jenkins Remote access API

Malinga ndi mwambo wokhazikitsidwa bwino, ndingakonde kupeΕ΅a mafotokozedwe aatali.
Ndidzilola ndekha kumasulira kwaulere kwa chidutswa cha ndime yoyamba tsamba loyamba la zolemba za API:

Jenkins amapereka API yofikira kutali ndi makina ogwiritsira ntchito. <…> Kufikira patali kumaperekedwa mwanjira ya REST. Izi zikutanthauza kuti palibe malo amodzi olowera pazinthu zonse, koma m'malo mwake URL ngati ".../api/", ku"..." amatanthauza chinthu chomwe mphamvu za API zimagwiritsidwa ntchito.

Mwa kuyankhula kwina, ngati ntchito yotumizira yomwe tikukambayi ikupezeka http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, ndiye malikhweru a API a ntchitoyi akupezeka pa http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

Kenako, tili ndi kusankha mu mawonekedwe oti tilandire zotuluka. Tiyeni tiyang'ane pa XML, popeza API imangolola kusefa pankhaniyi.

Tiyeni tingoyesa kupeza mndandanda wa ntchito zonse. Timangofuna dzina la msonkhano (dzina lowonetsa) ndi zotsatira zake (chifukwa):

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

Zachitika?

Tsopano tiyeni tisefe maulendo omwe amathera ndi zotsatira KUCHITA. Tiyeni tigwiritse ntchito mkangano &kupatula ndipo monga parameter tidzadutsa njira yopita ku mtengo wosafanana nawo KUCHITA. Inde Inde. Kutsutsa kawiri ndi mawu. Timapatula zonse zomwe sizikutisangalatsa:

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

Chithunzi chamndandanda wa opambana
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Chabwino, kuti tingosangalala, tiyeni tiwonetsetse kuti fyulutayo sinatinyenge (zosefera sizinama!) ndikuwonetsa mndandanda wa "osapambana":

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

Chithunzi chamndandanda wa omwe sanachite bwino
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Mndandanda wamitundu kuchokera mufoda pa seva yakutali

Pali njira yachiwiri kupeza mndandanda wa Mabaibulo. Ndimakonda kuposa kupeza Jenkins API. Chabwino, chifukwa ngati ntchitoyo idamangidwa bwino, zikutanthauza kuti idapakidwa ndikuyikidwa muzosungira mufoda yoyenera. Monga, chosungira ndi chosungira chosasinthika cha mitundu yogwira ntchito. Monga. Chabwino, tiyeni timufunseni matembenuzidwe omwe ali mu yosungirako. Tidzapiringa, grep ndi awk chikwatu chakutali. Ngati wina ali ndi chidwi ndi oneliner, ndiye kuti ili pansi pa wowononga.

Lamulo la mzere umodzi
Chonde dziwani zinthu ziwiri: Ndimapereka zolumikizira pamutu ndipo sindikufuna matembenuzidwe onse kuchokera pafoda, ndikusankha okhawo omwe adapangidwa mkati mwa mwezi umodzi. Sinthani lamulolo kuti ligwirizane ndi zenizeni ndi zosowa zanu:

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[^/]+' )

Kukhazikitsa ntchito ndi fayilo yosinthira ntchito ku Jenkins

Tinapeza gwero la mndandanda wa zomasulira. Tiyeni tsopano aphatikize mndandanda wotsatira mu ntchito. Kwa ine, yankho lodziwikiratu linali kuwonjezera sitepe mu ntchito yomanga ntchito. Njira yomwe ingachitike ngati zotsatira zake zinali "kupambana".

Tsegulani zoikamo za ntchito ya msonkhano ndikusunthira mpaka pansi. Dinani pa mabatani: Onjezani sitepe yomanga -> Gawo lokhazikika (limodzi). Mu masitepe zoikamo, kusankha chikhalidwe Zomwe zilipo panopa, ikani mtengo KUCHITA, zomwe ziyenera kuchitidwa ngati zapambana Thamangani chipolopolo lamulo.

Ndipo tsopano gawo losangalatsa. Jenkins amasunga masinthidwe a ntchito m'mafayilo. Mu mtundu wa XML. Panjira http://ΠΏΡƒΡ‚ΡŒ-Π΄ΠΎ-задания/config.xml Chifukwa chake, mutha kutsitsa fayilo yosinthira, kuyisintha ngati kuli kofunikira ndikuyiyika pomwe mudayipeza.

Kumbukirani, tidagwirizana pamwambapa kuti tipanga gawo la mndandanda wamitundu BUILD_VERSION?

Tiyeni titsitse fayilo yosinthira ndikuyang'ana mkati mwake. Kungoonetsetsa kuti parameter ili m'malo komanso mtundu womwe mukufuna.

Screenshot pansi spoiler.

Chidutswa chanu cha config.xml chiyenera kuwoneka chimodzimodzi. Kupatula kuti zomwe zili muzosankha zikusowabe
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Mukutsimikiza? Ndizo zonse, tiyeni tilembe script yomwe idzachitike ngati kumangako kukuyenda bwino.
Zolembazo zilandila mndandanda wamitundu, kukopera fayilo yosinthira, lembani mndandanda wamitunduyo m'malo omwe tikufuna, ndikuyibwezeretsanso. Inde. Ndichoncho. Lembani mndandanda wamitundu mu XML pamalo pomwe pali mndandanda wamitundu yonse (idzakhala mtsogolomo, pambuyo poyambitsa script). Ndikudziwa kuti padziko lapansi pano pali anthu okonda mawu okhazikika. Ine sindine wawo. Chonde yikani xmlstarler ku makina omwe config idzasinthidwa. Zikuwoneka kwa ine kuti uwu si mtengo waukulu kulipira kuti mupewe kusintha XML pogwiritsa ntchito sed.

Pansi pa wowononga, ndimapereka code yomwe imapanga ndondomeko yomwe ili pamwambayi yonse.

Lembani mndandanda wamitundu kuchokera pafoda pa seva yakutali kupita ku 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

Ngati mukufuna mwayi wopeza matembenuzidwe kuchokera ku Jenkins ndipo ndinu waulesi ngati ine, ndiye pansi pa wowononga pali code yomweyi, koma mndandanda wochokera ku Jenkins:

Lembani mndandanda wamitundu kuchokera ku Jenkins kupita ku config
Ingokumbukirani izi: dzina langa la msonkhano lili ndi nambala yotsatizana ndi nambala yamtundu, yolekanitsidwa ndi colon. Chifukwa chake, awk amadula gawo losafunika. Kwa inu nokha, sinthani mzerewu kuti ugwirizane ndi zosowa zanu.

#!/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

Mwachidziwitso, ngati mwayesa kachidindo kolembedwa kutengera zitsanzo zomwe zili pamwambapa, ndiye kuti muntchito yotumizira muyenera kukhala ndi mndandanda wotsitsa ndi mitundu. Zili ngati mu skrini pansi pa spoiler.

Mndandanda wamabaibulo omalizidwa bwino
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Ngati zonse zikuyenda bwino, koperani-matani script mu Thamangani chipolopolo lamulo ndi kusunga zosintha.

Kulumikiza ku Cloud shell

Tili ndi otolera mu makontena. Timagwiritsa ntchito Ansible ngati chida chathu choperekera mapulogalamu ndi kasinthidwe kake. Chifukwa chake, zikafika pakumanga zotengera, zosankha zitatu zimabwera m'maganizo: kukhazikitsa Docker ku Docker, kukhazikitsa Docker pamakina omwe akuyendetsa Ansible, kapena pangani zotengera mumtambo wamtambo. Tinavomera kukhala chete za mapulagini a Jenkins m'nkhaniyi. Mukukumbukira?

Ndinaganiza: chabwino, popeza zotengera "zakunja" zitha kusonkhanitsidwa mumtambo wamtambo, ndiye bwanji mukuvutikira? Khalani aukhondo, sichoncho? Ndikufuna kusonkhanitsa zotengera za Jenkins mumtambo wamtambo, ndikuziyika mu cuber kuchokera pamenepo. Kuphatikiza apo, Google ili ndi njira zolemera kwambiri mkati mwazomangamanga zake, zomwe zitha kukhala ndi phindu pa liwiro la kutumiza.

Kuti mugwirizane ndi cloud console, mukufunikira zinthu ziwiri: gcloud ndi ufulu wopeza Google Cloud API pamwambo wa VM womwe kulumikizana komweku kudzapangidwira.

Kwa iwo omwe akukonzekera kulumikizana osati kuchokera ku Google Cloud konse
Google imalola kuthekera koletsa kuvomereza kolumikizana muzinthu zake. Izi zikuthandizani kuti mulumikizane ndi kontrakitala ngakhale kuchokera pamakina a khofi, ngati ikuyenda * nix ndipo ili ndi cholumikizira chokha.

Ngati pakufunika kuti ndifotokoze nkhaniyi mwatsatanetsatane mkati mwa ndondomekoyi, lembani mu ndemanga. Ngati tipeza mavoti okwanira, ndilemba zosintha pamutuwu.

Njira yosavuta yoperekera ufulu ndi kudzera pa intaneti.

  1. Imitsani chitsanzo cha VM komwe mudzalumikizane ndi mtambo wamtambo.
  2. Tsegulani Zambiri za Instance ndikudina kukonzanso.
  3. Pansi penipeni pa tsamba, sankhani kukula kwachitsanzo Kufikira kwathunthu ku Cloud APIs.

    MALANGI
    Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

  4. Sungani zosintha zanu ndikuyambitsa chitsanzo.

VM ikamaliza kutsitsa, lumikizani nayo kudzera pa SSH ndikuwonetsetsa kuti kulumikizana kukuchitika popanda cholakwika. Gwiritsani ntchito lamulo:

gcloud alpha cloud-shell ssh

Kulumikizana kopambana kumawoneka motere
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Pitani ku GKE

Popeza tikuyesetsa mwanjira iliyonse kusinthiratu ku IaC (Infrastucture as Code), mafayilo athu a docker amasungidwa ku Git. Izi ndi mbali imodzi. Ndipo kutumizidwa ku kubernetes kumafotokozedwa ndi fayilo yaml, yomwe imagwiritsidwa ntchito ndi ntchitoyi yokha, yomwe imakhalanso ngati code. Izi zikuchokera mbali inayo. Mwambiri, ndikutanthauza, pulani ndi iyi:

  1. Timatenga ma values ​​a zosinthika BUILD_VERSION ndipo, mwakufuna, zosintha zomwe zidzadutsidwe ENV.
  2. Tsitsani fayilo ya docker kuchokera ku Git.
  3. Pangani yaml kuti mutumizidwe.
  4. Timayika mafayilo onsewa kudzera pa scp kumtambo wamtambo.
  5. Timamanga chidebe pamenepo ndikuchikankhira mu registry ya Container
  6. Timayika fayilo yotumiza katundu ku cuber.

Tiyeni tifotokoze molunjika. Kamodzi tinayamba kulankhula za ENV, ndiye tiyerekeze kuti tikufunika kupititsa patsogolo magawo awiri: PARAM1 ΠΈ PARAM2. Timawonjezera ntchito yawo kuti atumizidwe, mtundu - Chingwe Parameter.

MALANGI
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Tipanga yaml ndi njira yosavuta yolowera Tchulani ku file. Zimaganiziridwa, zachidziwikire, kuti muli nazo mu dockerfile yanu PARAM1 ΠΈ PARAM2kuti dzina la katundu lidzakhala zodabwitsaapp, ndipo chidebe chosonkhanitsidwa ndikugwiritsa ntchito mtundu womwe watchulidwawo chili mkati Container registry panjira gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONkumene $BUILD_VERSION adangosankhidwa kuchokera pamndandanda wotsikira pansi.

Mndandanda wamagulu

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 wothandizira pambuyo polumikiza pogwiritsa ntchito gcloud alpha cloud-shell ssh njira yolumikizirana palibe, chifukwa chake timatumiza malamulo kumtambo wamtambo pogwiritsa ntchito parameter -- command.

Timatsuka chikwatu chakunyumba mumtambo wamtambo kuchokera ku dockerfile yakale:

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

Ikani dockerfile yomwe yatsitsidwa kumene mufoda yakunyumba ya cloud console pogwiritsa ntchito scp:

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

Timasonkhanitsa, kuyika ndikukankhira chidebecho ku registry ya 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"

Timachita chimodzimodzi ndi fayilo yotumiza. Chonde dziwani kuti malamulo omwe ali pansipa amagwiritsa ntchito mayina abodza a gulu lomwe kutumizidwa kumachitika (awsm-gulu) ndi dzina la polojekiti (zodabwitsa-ntchito), pomwe gululi lili.

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"

Timayendetsa ntchitoyi, tsegulani zotulutsa za console ndikuyembekeza kuwona msonkhano wopambana wa chidebecho.

MALANGI
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Ndiyeno kutumizidwa bwino kwa chidebe chosonkhanitsidwa

MALANGI
Timapanga ntchito yotumizira ku GKE popanda mapulagini, SMS kapena kulembetsa. Tiyeni tiyang'ane pansi pa jekete la Jenkins

Ndinanyalanyaza dala mmene zinthu zinalili Ingress. Chifukwa chimodzi chophweka: mukangoyikhazikitsa ntchito ndi dzina lopatsidwa, ikhala ikugwira ntchito, ngakhale mutakhala ndi ma deployments angati ndi dzina ili. Chabwino, kawirikawiri, izi ndizopitirira pang'ono pa mbiri yakale.

M'malo momaliza

Masitepe onse omwe ali pamwambawa mwina sakanatheka, koma adangoyika pulogalamu yowonjezera ya Jenkins, maulion awo. Koma pazifukwa zina sindimakonda mapulagini. Chabwino, ndendende, ndimapita kwa iwo chifukwa cha kusimidwa.

Ndipo ndimangokonda kunditengera mutu wina watsopano. Mawu omwe ali pamwambawa ndi njira yogawana zomwe ndidapeza ndikuthana ndi vuto lomwe lafotokozedwa poyambirira. Gawani ndi iwo omwe, monga iye, sali nkhandwe yoopsa kwambiri. Ngati zomwe ndapeza zithandiza wina, ndikhala wokondwa.

Source: www.habr.com

Kuwonjezera ndemanga