Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Þetta byrjaði allt þegar liðsstjóri eins af þróunarteymi okkar bað okkur um að prófa nýja forritið þeirra, sem hafði verið sett í gáma daginn áður. Ég setti það inn. Eftir um 20 mínútur barst beiðni um að uppfæra forritið, því þar hafði verið bætt við mjög nauðsynlegu atriði. Ég endurnýjaði. Eftir nokkra klukkutíma í viðbót... jæja, þú getur giskað á hvað byrjaði að gerast næst...

Ég verð að viðurkenna að ég er frekar latur (viðurkenndi ég þetta ekki áðan? Nei?), og í ljósi þess að liðsforingjar hafa aðgang að Jenkins, þar sem við höfum öll CI/CD, hugsaði ég: láttu hann dreifa sem eins mikið og hann vill! Ég mundi eftir brandara: gefðu manni fisk og hann borðar í einn dag; kalla mann Fed og hann mun vera Fed allt sitt líf. Og fór leika brellur í vinnunni, sem gæti sett upp gám sem inniheldur umsókn um hvaða útgáfu sem hefur verið samsett með góðum árangri í Kuber og flutt hvaða gildi sem er til þess ENV (Afi minn, heimspekifræðingur, enskukennari í fortíðinni, myndi nú snúa fingri sínum við musterið og horfa á mig mjög svipmikið eftir að hafa lesið þessa setningu).

Svo, í þessari athugasemd mun ég segja þér hvernig ég lærði:

  1. Uppfærðu störf í Jenkins á virkan hátt úr starfinu sjálfu eða frá öðrum störfum;
  2. Tengstu við skýjatölvuna (skýjaskel) frá hnút með Jenkins umboðsmanninum uppsettan;
  3. Sendu vinnuálag á Google Kubernetes Engine.


Reyndar er ég auðvitað frekar ósanngjarn. Gert er ráð fyrir að þú hafir að minnsta kosti hluta af innviðum í Google skýinu og þess vegna ert þú notandi þess og að sjálfsögðu ertu með GCP reikning. En það er ekki það sem þessi athugasemd fjallar um.

Þetta er næsta svindlblaðið mitt. Ég vil bara skrifa svona athugasemdir í einu tilviki: Ég stóð frammi fyrir vandamáli, ég vissi í upphafi ekki hvernig ég ætti að leysa það, lausnin var ekki gúglað tilbúin, svo ég googlaði hana í pörtum og leysti vandamálið á endanum. Og til þess að í framtíðinni, þegar ég gleymi hvernig ég gerði það, þarf ég ekki að googla allt aftur stykki fyrir stykki og setja það saman, skrifa ég sjálfur svona svindlblöð.

Fyrirvari: 1. Seðillinn var skrifaður "fyrir sjálfan mig", fyrir hlutverkið bestu venjur á ekki við. Ég er ánægður með að lesa valkostina „það hefði verið betra að gera þetta á þennan hátt“ í athugasemdunum.
2. Ef notaður hluti seðilsins er talinn salt, þá er þessi, eins og allar fyrri athugasemdirnar mínar, veik saltlausn.

Uppfærir vinnustillingar á virkan hátt í Jenkins

Ég sé fyrir mér spurninguna þína: hvað hefur kraftmikil starfsuppfærsla með það að gera? Sláðu inn gildi strengsfæribreytunnar handvirkt og þú ferð af stað!

Ég svara: Ég er mjög latur, mér líkar ekki þegar þeir kvarta: Misha, dreifingin er að hrynja, allt er farið! Þú byrjar að leita og það er innsláttarvilla í gildi einhverrar ræsingarbreytu verkefnis. Þess vegna kýs ég að gera allt eins vel og hægt er. Ef það er hægt að koma í veg fyrir að notandinn slær inn gögn beint með því að gefa í staðinn lista yfir gildi til að velja úr, þá skipulegg ég valið.

Áætlunin er þessi: við búum til starf í Jenkins, þar sem við gætum, áður en ræst var, valið útgáfu af listanum, tilgreint gildi fyrir færibreytur sem sendar eru í gáminn í gegnum ENV, þá safnar það ílátinu og ýtir því inn í gámaskrána. Síðan er gámurinn hleypt af stokkunum í cuber as vinnuálag með þeim breytum sem tilgreindar eru í starfinu.

Við munum ekki íhuga ferlið við að búa til og setja upp starf í Jenkins, þetta er utan við efnið. Við munum gera ráð fyrir að verkefnið sé tilbúið. Til að innleiða uppfærðan lista með útgáfum þurfum við tvennt: fyrirliggjandi heimildalista með a priori gild útgáfunúmer og breytu eins og Valfæribreyta í verkefninu. Í dæminu okkar, láttu breytuna heita BUILD_VERSION, við munum ekki fjalla um það í smáatriðum. En lítum nánar á heimildalistann.

Það eru ekki svo margir möguleikar. Tvennt kom strax upp í hugann:

  • Notaðu fjaraðgangsforritaskil sem Jenkins býður notendum sínum;
  • Biðjið um innihald ytri geymslumöppunnar (í okkar tilfelli er þetta JFrog Artifactory, sem er ekki mikilvægt).

Jenkins fjaraðgangsforritaskil

Samkvæmt viðurkenndri ágætri hefð vil ég helst forðast langar útskýringar.
Ég leyfi mér aðeins frjálsa þýðingu á hluta af fyrstu málsgrein fyrstu síðu API skjala:

Jenkins veitir API fyrir ytri véllæsanlegan aðgang að virkni þess. <…> Fjaraðgangur er í boði í REST-líkum stíl. Þetta þýðir að það er enginn einn aðgangsstaður fyrir alla eiginleika, heldur vefslóð eins og ".../api/", Hvar "..." þýðir hlutinn sem API-getunni er beitt á.

Með öðrum orðum, ef dreifingarverkefnið sem við erum að tala um er tiltækt kl http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build, þá eru API flauturnar fyrir þetta verkefni fáanlegar á http://jenkins.mybuild.er/view/AweSomeApp/job/AweSomeApp_build/api/

Næst höfum við val í hvaða formi við fáum úttakið. Við skulum einbeita okkur að XML, þar sem API leyfir aðeins síun í þessu tilfelli.

Við skulum bara reyna að fá lista yfir öll störf. Við höfum aðeins áhuga á nafni þingsins (skjánafn) og niðurstaða þess (leitt):

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

Það kom í ljós?

Nú skulum við sía aðeins þær keyrslur sem enda með niðurstöðuna ÁRANGUR. Notum rökin &útiloka og sem færibreytu munum við senda henni leiðina að gildi sem er ekki jafnt og ÁRANGUR. Já já. Tvöföld neikvæð er staðhæfing. Við útilokum allt sem vekur ekki áhuga okkar:

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

Skjáskot af listanum yfir vel heppnaðar
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Jæja, bara til gamans, við skulum ganga úr skugga um að sían hafi ekki blekkt okkur (síur ljúga aldrei!) og birtum lista yfir „misheppnaðar“:

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

Skjáskot af listanum yfir þær sem ekki hafa tekist
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Listi yfir útgáfur úr möppu á ytri netþjóni

Það er önnur leið til að fá lista yfir útgáfur. Mér líkar það jafnvel meira en að fá aðgang að Jenkins API. Jæja, vegna þess að ef forritið var búið til, þýðir það að það var pakkað og sett í geymsluna í viðeigandi möppu. Eins og geymsla er sjálfgefin geymsla fyrir virka útgáfur af forritum. Eins og. Jæja, við skulum spyrja hann hvaða útgáfur eru í geymslu. Við munum krulla, grep og awk ytri möppuna. Ef einhver hefur áhuga á oneliner þá er hann undir spoilernum.

Ein lína skipun
Vinsamlegast athugaðu tvennt: Ég sendi tengingarupplýsingarnar í hausnum og ég þarf ekki allar útgáfur úr möppunni, og ég vel aðeins þær sem voru búnar til innan mánaðar. Breyttu skipuninni til að henta þínum veruleika og þörfum:

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

Setja upp störf og stillingarskrá í Jenkins

Við komumst að uppruna lista yfir útgáfur. Við skulum nú fella listann sem myndast í verkefnið. Fyrir mig var augljós lausnin að bæta við skrefi í forritasmíðaverkefninu. Skrefið sem yrði framkvæmt ef niðurstaðan væri „árangur“.

Opnaðu stillingar samsetningarverkefna og skrunaðu alveg neðst. Smelltu á hnappana: Bæta við byggingarstigi -> Skilyrt skref (eitt). Veldu ástandið í skrefastillingunum Núverandi byggingarstaða, stilltu gildið ÁRANGUR, aðgerðin sem á að framkvæma ef vel tekst til Keyra skel skipun.

Og nú skemmtilegi þátturinn. Jenkins geymir vinnustillingar í skrám. Á XML sniði. Á leiðinni http://путь-до-задания/config.xml Í samræmi við það geturðu hlaðið niður stillingarskránni, breytt henni eftir þörfum og sett hana aftur þar sem þú fékkst hana.

Mundu að við samþykktum hér að ofan að við munum búa til færibreytu fyrir listann yfir útgáfur BUILD_VERSION?

Við skulum hlaða niður stillingarskránni og skoða hana. Bara til að ganga úr skugga um að færibreytan sé á sínum stað og af viðkomandi gerð.

Skjáskot undir spoiler.

config.xml brotið þitt ætti að líta eins út. Nema að innihald valþáttarins vantar ennþá
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Ertu viss? Það er það, við skulum skrifa handrit sem verður keyrt ef smíðin gengur vel.
Handritið mun fá lista yfir útgáfur, hlaða niður stillingarskránni, skrifa útgáfulistann inn í hana á þeim stað sem við þurfum og setja hana svo aftur. Já. Það er rétt. Skrifaðu lista yfir útgáfur í XML á þeim stað þar sem nú þegar er listi yfir útgáfur (verður í framtíðinni, eftir fyrstu kynningu á handritinu). Ég veit að það eru enn grimmir aðdáendur reglulegra tjáninga í heiminum. Ég tilheyri þeim ekki. Vinsamlegast settu upp xmlstarler í vélina þar sem stillingunni verður breytt. Mér sýnist að þetta sé ekki svo mikið verð að borga til að forðast að breyta XML með sed.

Undir spoilernum kynni ég kóðann sem framkvæmir ofangreinda röð í heild sinni.

Skrifaðu lista yfir útgáfur úr möppu á ytri þjóninum yfir í stillinguna

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

Ef þú vilt frekar hafa möguleika á að fá útgáfur frá Jenkins og þú ert jafn latur og ég, þá er sami kóðann undir spoilernum, en listi frá Jenkins:

Skrifaðu lista yfir útgáfur frá Jenkins til stillingar
Hafðu þetta bara í huga: Samsetningarnafnið mitt samanstendur af raðnúmeri og útgáfunúmeri, aðskilið með tvípunkti. Í samræmi við það sker awk óþarfa hlutann af. Fyrir sjálfan þig, breyttu þessari línu til að henta þínum þörfum.

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

Í orði, ef þú hefur prófað kóðann sem skrifaður er út frá dæmunum hér að ofan, þá ættirðu nú þegar að hafa fellilista með útgáfum í dreifingarverkefninu. Þetta er eins og á skjáskotinu undir spoilernum.

Rétt útfylltur listi yfir útgáfur
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Ef allt virkaði, þá copy-pasteðu handritið inn í Keyra skel skipun og vista breytingar.

Tengist skýjaskel

Við erum með safnara í gámum. Við notum Ansible sem forritaafhendingartæki og stillingarstjóra. Í samræmi við það, þegar kemur að því að byggja gáma, koma þrír valkostir upp í hugann: setja upp Docker í Docker, setja upp Docker á vél sem keyrir Ansible eða byggja gáma í skýjatölvu. Við samþykktum að þegja um viðbætur fyrir Jenkins í þessari grein. Manstu?

Ég ákvað: jæja, þar sem hægt er að safna ílátum „úr kassanum“ í skýjaborðinu, hvers vegna þá að nenna? Haltu því hreinu, ekki satt? Ég vil safna Jenkins gámum í skýjatölvuna og ræsa þau síðan inn í kúberinn þaðan. Þar að auki hefur Google mjög ríkar rásir innan innviða sinna, sem mun hafa jákvæð áhrif á hraða dreifingar.

Til að tengjast skýjatölvunni þarftu tvennt: gcloud og aðgangsrétt að Forritaskil Google Cloud fyrir VM tilvikið sem þessi sama tenging verður gerð við.

Fyrir þá sem ætla að tengjast alls ekki frá Google skýinu
Google leyfir möguleika á að slökkva á gagnvirkri heimild í þjónustu sinni. Þetta gerir þér kleift að tengjast stjórnborðinu jafnvel úr kaffivél, ef það er í gangi *nix og er með stjórnborði sjálft.

Ef það er þörf fyrir mig að fjalla nánar um þetta mál innan ramma þessarar athugasemdar, skrifaðu í athugasemdir. Ef við fáum nóg atkvæði mun ég skrifa uppfærslu um þetta efni.

Auðveldasta leiðin til að veita réttindi er í gegnum vefviðmótið.

  1. Stöðvaðu VM tilvikið sem þú tengist síðan við skýjatölvuna.
  2. Opnaðu Tilviksupplýsingar og smelltu breyta.
  3. Neðst á síðunni velurðu aðgangssvið tilviks Fullur aðgangur að öllum Cloud API.

    Skjámynd
    Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

  4. Vistaðu breytingarnar þínar og ræstu tilvikið.

Þegar VM hefur lokið hleðslu skaltu tengjast honum í gegnum SSH og ganga úr skugga um að tengingin eigi sér stað án villu. Notaðu skipunina:

gcloud alpha cloud-shell ssh

Vel heppnuð tenging lítur einhvern veginn svona út
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Senda til GKE

Þar sem við kappkostum á allan mögulegan hátt að skipta algjörlega yfir í IaC (Infrastucture as a Code), eru docker skrárnar okkar geymdar í Git. Þetta er annars vegar. Og uppsetningu í kubernetes er lýst með yaml skrá, sem er aðeins notuð af þessu verkefni, sem sjálft er líka eins og kóða. Þetta er frá hinni hliðinni. Almennt, ég meina, er áætlunin þessi:

  1. Við tökum gildi breytanna BUILD_VERSION og, valfrjálst, gildi breytanna sem fara í gegnum ENV.
  2. Sæktu dockerskrána frá Git.
  3. Búðu til yaml fyrir dreifingu.
  4. Við hlóðum báðum þessum skrám upp í gegnum scp á skýjatölvuna.
  5. Þar byggjum við gám og ýtum því inn í gámaskrána
  6. Við notum hleðsludreifingarskrána á kúberinn.

Við skulum vera nákvæmari. Einu sinni fórum við að tala um ENV, segjum svo að við þurfum að fara framhjá gildum tveggja breytu: PARAM1 и PARAM2. Við bætum við verkefni þeirra fyrir dreifingu, sláðu inn - Strengjabreyta.

Skjámynd
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Við munum búa til yaml með einfaldri tilvísun sakna að skrá. Það er auðvitað gert ráð fyrir að þú hafir í dockerfile þinni PARAM1 и PARAM2að hleðsluheitið verði æðislegt app, og samansetti ílátið með beitingu tilgreindrar útgáfu liggur í Gámaskrá á leiðinni gcr.io/awesomeapp/awesomeapp-$BUILD_VERSIONhvar $BUILD_VERSION var bara valið af fellilistanum.

Liðsskráning

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 umboðsmaður eftir tengingu við notkun gcloud alfa skýjaskel ssh gagnvirk stilling er ekki í boði, þannig að við sendum skipanir til skýjaborðsins með því að nota færibreytuna --skipun.

Við hreinsum heimamöppuna í skýjaborðinu úr gömlu dockerfile:

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

Settu ný niðurhalaða dockerfile í heimamöppu skýjatölvunnar með því að nota scp:

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

Við söfnum, merkjum og ýtum gámnum í gámaskrána:

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"

Við gerum það sama með dreifingarskrána. Vinsamlegast athugaðu að skipanirnar hér að neðan nota gerviheiti þyrpingarinnar þar sem dreifingin á sér stað (awsm-þyrping) og heiti verkefnis (æðislegt-verkefni), þar sem þyrpingin er staðsett.

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"

Við keyrum verkefnið, opnum stjórnborðsúttakið og vonumst til að sjá farsæla samsetningu ílátsins.

Skjámynd
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Og svo vel heppnuð dreifing á samansetta ílátinu

Skjámynd
Við búum til dreifingarverkefni í GKE án viðbóta, SMS eða skráningar. Við skulum kíkja undir jakkann hans Jenkins

Ég hunsaði stillinguna viljandi Innstreymi. Af einni einfaldri ástæðu: þegar þú hefur sett það upp vinnuálag með tilteknu nafni mun það halda áfram að virka, sama hversu margar dreifingar með þessu nafni þú framkvæmir. Jæja, almennt séð er þetta aðeins út fyrir ramma sögunnar.

Í stað niðurstaðna

Öll ofangreind skref hefði líklega ekki verið hægt að gera, heldur einfaldlega sett upp einhverja viðbót fyrir Jenkins, muuulion þeirra. En af einhverjum ástæðum líkar mér ekki viðbætur. Jæja, nánar tiltekið, ég gríp til þeirra aðeins af örvæntingu.

Og mér finnst bara gaman að taka upp nýtt efni fyrir mig. Textinn hér að ofan er líka leið til að deila niðurstöðunum sem ég gerði þegar ég leysti vandamálið sem lýst var í upphafi. Deildu með þeim sem, eins og hann, eru alls ekki hræðilegur úlfur í devops. Ef niðurstöður mínar hjálpa að minnsta kosti einhverjum, mun ég vera ánægður.

Heimild: www.habr.com

Bæta við athugasemd