ProHoster > Blog > Rêveberî > Amûrên nû ji bo avakirin û otomatîzekirina li Kubernetes ceribandin
Amûrên nû ji bo avakirin û otomatîzekirina li Kubernetes ceribandin
Slav! Di van demên dawî de, hem ji bo avakirina wêneyên Docker û hem jî ji bo bicihkirina Kubernetes gelek amûrên xweseriya xweş hatine berdan. Di vî warî de, min biryar da ku ez bi GitLab-ê re bilîzim, kapasîteyên wê bi baldarî lêkolîn bikim û, bê guman, boriyê saz bikim.
Ev xebat ji hêla malperê ve hatî îlhama kirin kubernetes.io, ku ji hatî çêkirin kodên çavkaniyê bixweber, û ji bo her daxwazek hewzê ku hatî şandin, robot bixweber bi guheztinên we ve guhertoyek pêşdîtinê ya malperê çêdike û ji bo temaşekirinê girêdanek peyda dike.
Min hewl da ku pêvajoyek wekhev ji sifrê ava bikim, lê bi tevahî li ser Gitlab CI û amûrên belaş ên ku ez bikar tînim ji bo bicihkirina sepanan li Kubernetes bikar tînim ava kir. Îro ez ê di dawiyê de ji we re bêtir li ser wan bibêjim.
Gotar dê li ser amûrên wekî: Hugo, qbec, kaniko, git-crypt и GitLab CI bi afirandina derdorên dînamîk.
Wekî mînakek projeya xwe, em ê hewl bidin ku malperek weşana belgeyan ku li ser Hugo hatî çêkirin biafirînin. Hugo hilberînerek naveroka statîk e.
Ji bo yên ku bi jeneratorên statîk nizanin, ez ê ji we re hinekî bêtir li ser wan bibêjim. Berevajî motorên malperê yên kevneşopî yên bi databas û hin PHP-ê, ku dema ku ji hêla bikarhênerek ve tê xwestin, rûpelan di firînê de çêdikin, jeneratorên statîk hinekî cûda têne sêwirandin. Ew dihêlin hûn çavkaniyan bigirin, bi gelemperî komek pelan di nîşankirin û şablonên mijarê de Markdown, dûv re wan li malperek bi tevahî qediya berhev bikin.
Ango, wekî encam, hûn ê avahiyek pelrêça û komek pelên HTML-ê yên hilberandî bistînin, ku hûn dikarin bi hêsanî li her mêvandariyek erzan bar bikin û malperek xebitandinê bistînin.
Hûn dikarin Hugo herêmî saz bikin û wê biceribînin:
Destpêkirina malperek nû:
hugo new site docs.example.org
Û di heman demê de depoya git:
cd docs.example.org
git init
Heya nuha, malpera me paqij e û ji bo ku tiştek li ser xuya bibe, em pêşî hewce ne ku mijarek ve girêbidin; mijarek tenê komek şablon û qaîdeyên diyarkirî ye ku malpera me pê tê çêkirin.
Ji bo mijarê em ê bikar bînin Fêrbûn, ku, bi dîtina min, ji bo malperek belgekirinê bêkêmasî ye.
Ez dixwazim bi taybetî bala xwe bidim ser vê yekê ku em ne hewce ne ku pelên mijarê di depoya projeya xwe de hilînin; li şûna wê, em dikarin bi hêsanî wê bi karanîna wê ve girêbidin. git submodule:
Ji ber vê yekê, depoya me dê tenê pelên ku rasterast bi projeya me ve girêdayî ne vehewîne, û mijara girêdayî dê wekî girêdanek ji depoyek taybetî re bimîne û di wê de peywirdariyek bimîne, ango, ew her gav dikare ji çavkaniya bingehîn were derxistin û jê netirse. guhertinên lihevhatî.
Ka em konfigurasyonê rast bikin config.toml:
baseURL = "http://docs.example.org/"
languageCode = "en-us"
title = "My Docs Site"
theme = "learn"
Jixwe di vê qonaxê de hûn dikarin birevin:
hugo server
Û li navnîşanê http://localhost:1313/ malpera meya nû hatî afirandin kontrol bikin, hemî guhertinên ku di pelrêçê de têne çêkirin bixweber rûpela vekirî ya di gerokê de nûve bikin, pir rehet!
Ka em hewl bidin ku di nav de rûpelek serpêhatiyek çêbikin naveroka/_index.md:
# My docs site
## Welcome to the docs!
You will be very smart :-)
Dîmenê rûpela nû hatî afirandin
Ji bo afirandina malperek, tenê bimeşînin:
hugo
naveroka Directory alenî/ û dê bibe malpera we.
Erê, bi awayê, em tavilê wê lê zêde bikin .gitignore:
echo /public > .gitignore
Ji bîr nekin ku guhertinên me bikin:
git add .
git commit -m "New site created"
2. Amadekirina Dockerfile
Wext e ku em strukturê depoya xwe diyar bikin. Ez bi gelemperî tiştek wekî bikar tîne:
dockerfiles/ - pelrêçan bi Dockerfiles û her tiştê ku ji bo avakirina wêneyên me yên Docker hewce ne vedihewîne.
bikaranîn/ - pelrêçan ji bo bicihkirina sepanên me li Kubernetes vedihewîne
Bi vî rengî, em ê di rê de Dockerfile-ya xweya yekem biafirînin dockerfiles/malper/Dockerfile
FROM alpine:3.11 as builder
ARG HUGO_VERSION=0.62.0
RUN wget -O- https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_${HUGO_VERSION}_linux-64bit.tar.gz | tar -xz -C /usr/local/bin
ADD . /src
RUN hugo -s /src
FROM alpine:3.11
RUN apk add --no-cache darkhttpd
COPY --from=builder /src/public /var/www
ENTRYPOINT [ "/usr/bin/darkhttpd" ]
CMD [ "/var/www" ]
Wekî ku hûn dikarin bibînin, Dockerfile du hene JI, ev taybetmendî tê gotin avakirina pir-qonaxa û dihêle hûn her tiştê nehewce ji wêneya paşîn a dokerê derxînin.
Bi vî rengî, wêneya paşîn dê tenê hebe tarîhttpd (pêşkêşkara HTTP ya sivik) û alenî/ - naveroka malpera me ya statîkî hatî çêkirin.
Ji bîr nekin ku guhertinên me bikin:
git add dockerfiles/website
git commit -m "Add Dockerfile for website"
3. Naskirina kaniko
Wekî çêkerek wêneya docker, min biryar da ku bikar bînim kaniko, ji ber ku xebata wê ne hewceyî damemonek dokerê ye, û avahî bixwe dikare li ser her makîneyê were bicîh kirin û cache rasterast di qeydê de were hilanîn, bi vî rengî hewcedariya xwedan hilanîna domdar a bêkêmasî ji holê radike.
Ji bo avakirina wêneyê, tenê konteynerê bi rêve bikin kaniko îcrakar û wê çarçoweya avakirina heyî derbas bikin; ev jî dikare li herêmê, bi rêya docker ve were kirin:
Derê registry.gitlab.com/kvaps/docs.example.org/website - Navê wêneya dokera we; piştî çêkirinê, ew ê bixweber di nav tomara dokerê de were destpêkirin.
Parîsê --cache destûrê dide te ku hûn qatan di qeyda dokerê de cache bikin; ji bo mînaka hatî dayîn, ew ê tê de bêne tomar kirin registry.gitlab.com/kvaps/docs.example.org/website/cache, lê hûn dikarin rêyek din bi karanîna pîvanê diyar bikin --cache-repo.
Dîmenê docker-qeydê
4. Naskirina qbec
Qbec amûrek bicîhkirinê ye ku dihêle hûn bi eşkereyî diyardeyên serîlêdana xwe diyar bikin û wan li Kubernetes bicîh bikin. Bikaranîna Jsonnet wekî hevoksaziya sereke dihêle hûn danasîna cûdahiyan di nav gelek hawîrdoran de pir hêsan bikin, û her weha hema hema bi tevahî dubarekirina kodê ji holê radike.
Ev dikare bi taybetî di rewşên ku hûn hewce ne ku serîlêdanek li gelek koman bi parametreyên cihêreng bicîh bikin û dixwazin wan bi eşkereyî di Git de binav bikin rast be.
Qbec di heman demê de dihêle hûn nexşeyên Helm bi derbaskirina wan pîvanên pêwîst re bidin çêkirin û dûv re wan bi heman awayê diyardeyên birêkûpêk bixebitînin, di nav de hûn dikarin mutasyonên cihêreng li wan bicîh bikin, û ev, di encamê de, dihêle hûn ji hewcedariyê xilas bibin. ChartMuseum bikar bînin. Ango, hûn dikarin nexşeyan rasterast ji git, cihê ku ew in, hilînin û bidin.
Wekî ku min berê jî got, em ê hemî bicîhkirinan di pelrêçek de hilînin bikaranîn/:
Li vir em di serî de eleqedar in spec.hawirdoran, qbec jixwe ji me re hawîrdorek xwerû çêkiriye û navnîşana serverê, û hem jî cîhê navan ji kubeconfiga meya heyî girtiye.
Niha dema ku li destçûnî jîngehê, qbec dê her gav tenê li koma Kubernetes a diyarkirî û li cîhê navên diyarkirî bicîh bike, ango, hûn êdî neçar in ku hûn di navbera çarçove û cîhên navan de biguhezînin da ku bicîh bikin.
Ger hewce be, hûn dikarin her gav mîhengên vê pelê nûve bikin.
Hemî derdorên we di nav de têne diyar kirin qbec.yaml, û di pelê de params.libsonnet, li ku derê dibêje ku meriv ji bo wan parametreyan li ku derê bigire.
Piştre em du peldankan dibînin:
pêkhate/ - Hemî diyardeyên ji bo serîlêdana me dê li vir werin hilanîn; ew dikarin hem di pelên jsonnet û hem jî di pelên yaml yên birêkûpêk de bêne şirove kirin
hawirdor/ - li vir em ê hemî guherbarên (parametreyên) ji bo hawîrdora xwe diyar bikin.
Bi xwerû du pelên me hene:
derdorên/base.libsonnet - ew ê ji bo hemî hawîrdoran pîvanên hevpar hebe
derdorên/default.libsonnet - Parametreyên ku ji bo jîngehê hatine dorpêç kirin vedihewîne destçûnî
em vekin derdorên/base.libsonnet û ji bo pêkhateya meya yekem li wir parametreyan zêde bikin:
Di vê pelê de me sê hebûnên Kubernetes yekcar rave kir, ev in: Dêrîn, Xizmetkar и Ingress. Ger me bixwesta me dikarîbû wan bixista nav pêkhateyên cuda, lê di vê qonaxê de yek têra me dike.
syntax jsonnet pir dişibihe json-ya birêkûpêk, di prensîbê de, json-ya birêkûpêk jixwe jsonnet derbasdar e, ji ber vê yekê di destpêkê de dibe ku ji we re hêsantir be ku hûn karûbarên serhêl ên mîna bikar bînin yaml2json ji bo veguhertina yaml-ya xweya adetî nav json, an jî, heke pêkhateyên we tu guhêrbar negirin, wê hingê ew dikarin di forma yaml-a birêkûpêk de bêne şirove kirin.
Dema ku kar bi jsonnet Ez pir pêşniyar dikim ku pêvekek ji bo edîtorê xwe saz bikin
Mînakî, pêvekek ji bo vim heye vim-jsonnet, ku ronîkirina hevoksaziyê vedike û bixweber dike jsonnet fmt her gava ku hûn hilînin (ji bo sazkirina jsonnet hewce dike).
Her tişt amade ye, naha em dikarin dest bi belavkirinê bikin:
Ji bo ku em bibînin ka me çi girt, em birevin:
qbec show default
Di encam de, hûn ê diyardeyên yaml-ê yên ku dê li koma xwerû werin sepandin bibînin.
Mezin, naha serlêdan bikin:
qbec apply default
Di encam de hûn ê her gav bibînin ka dê di koma we de çi were kirin, qbec dê ji we bixwaze ku hûn bi nivîsandina guhertinan bipejirînin. y hûn ê bikaribin niyeta xwe piştrast bikin.
Serlêdana me amade ye û belav bûye!
Ger hûn guhertinan bikin, hûn dikarin her gav bikin:
qbec diff default
ji bo dîtina van guhertinan dê çawa bandorê li bicihkirina heyî bike
Ji bîr nekin ku guhertinên me bikin:
cd ../..
git add deploy/website
git commit -m "Add deploy for website"
5. Hewldana Gitlab-runner bi Kubernetes-îcrakar
Heta vê dawiyê min tenê bi rêkûpêk bikar anî gitlab-runner li ser makîneyek pêş-amadekirî (konteynerê LXC) bi şêl an doker-îcrakar. Di destpêkê de, me di gitlabê de çend bezvanên weha li seranserê cîhanê diyar kirin. Wan ji bo hemî projeyan wêneyên doker berhev kirin.
Lê wekî ku pratîkê destnîşan kiriye, ev vebijark hem ji hêla pratîkî û hem jî ji hêla ewlehiyê ve ne ya herî îdeal e. Pir çêtir û ji hêla îdeolojîkî ve rasttir e ku ji bo her projeyê, an jî ji bo her hawîrdorê bezvanên cihêreng werin bicîh kirin.
Xweşbextane, ev qet ne pirsgirêkek e, ji ber ku niha em ê bicîh bikin gitlab-runner rasterast wekî beşek projeya me ya rast li Kubernetes.
Gitlab ji bo bicîhkirina gitlab-runner li Kubernetes nexşeyek helmê ya amade peyda dike. Ji ber vê yekê ya ku hûn hewce ne bikin ev e ku hûn fêr bibin nîşana tomarkirinê ji bo projeya me li Settings -> CI / CD -> Runners û jê re derbas bikin:
yga8y-jdCusVDn_t4Wxc - nîşana qeydkirinê ji bo projeya we.
rbac.create=rast - ji bo ku bikaribe bi karanîna kubernetes-executor peywirên xwe pêk bîne, rêjeyeka pêwîst îmtiyazên bezê peyda dike.
Ger her tişt bi rêkûpêk hatî çêkirin, divê hûn di beşê de bezek qeydkirî bibînin Runners, di mîhengên projeya xwe de.
Dîmena bezê ya lêzêdekirî
Ma ew qas hêsan e? - Erê, ew qas hêsan e! Bi qeydkirina bezê bi destan re êdî alozî nema, ji niha û pê ve dê bazdan bixweber werin afirandin û hilweşandin.
6. Bi QBEC re nexşeyên Helm bicîh bikin
Ji ber ku me biryar da ku em bifikirin gitlab-runner beşek ji projeya me ye, ew dem e ku em wê di depoya xweya Git de rave bikin.
Em dikarin wê wekî pêkhateyek cuda binav bikin malpera, lê di pêşerojê de em plan dikin ku kopiyên cûda belav bikin malpera pir caran, berevajî gitlab-runner, ku dê li her komek Kubernetes tenê carekê were bicîh kirin. Ji ber vê yekê bila em ji bo wê serîlêdanek cihê dest pê bikin:
cd deploy
qbec init gitlab-runner
cd gitlab-runner
Vê carê em ê saziyên Kubernetes bi destan rave nekin, lê dê nexşeyek Helm a amade bistînin. Yek ji avantajên qbec ev e ku meriv nexşeyên Helm rasterast ji depoyek Git veguhezîne.
Lê hilanîna sirên li Git ne ewle ye, ne wusa? Ji ber vê yekê divê em wan bi rêkûpêk şîfre bikin.
Bi gelemperî, ji bo xatirê yek guhêrbar, ev her gav wate nake. Hûn dikarin sirên veguhezînin qbec û bi navgîniya guhêrbarên jîngehê yên pergala weya CI.
Lê hêjayî gotinê ye ku di heman demê de projeyên tevlihevtir jî hene ku dikarin gelek sirên din jî bihewînin; veguheztina wan hemî bi guhêrbarên hawîrdorê dê pir dijwar be.
Wekî din, di vê rewşê de ez ê nikaribim ji we re qala amûrek wusa ecêb bikim git-crypt.
git-crypt Di heman demê de hêsan e ku ew dihêle hûn tevahiya dîroka nehêniyan hilînin, û hem jî bi heman awayê ku em di doza Git de didin ber hev, hev bikin û nakokiyan çareser bikin.
Tişta yekem piştî sazkirinê git-crypt divê em ji bo depoya xwe mifteyan biafirînin:
git crypt init
Heke we mifteyek PGP heye, wê hingê hûn dikarin tavilê xwe wekî hevkarek ji bo vê projeyê zêde bikin:
Bi vî rengî hûn her gav dikarin vê depoyê bi karanîna mifteya xweya taybet deşîfre bikin.
Heke we mifteyek PGP tune û li hêviya we ne, wê hingê hûn dikarin rêyek din biçin û mifteya projeyê derxînin:
git crypt export-key /path/to/keyfile
Bi vî awayî, her kesê ku îxracat heye keyfile dê bikaribe depoya xwe deşîfre bike.
Wext e ku em sira xwe ya yekem saz bikin.
Bihêle ez ji we re bînim bîra we ku em hîn jî di pelrêça de ne deploy/gitlab-runner/, li ku derê pelrêçek me heye razên/, em hemî pelên tê de şîfre bikin, ji bo vê yekê em ê pelek çêbikin razên/.gitattributes bi naveroka jêrîn:
Wekî ku ji naverokê tê dîtin, hemî pelan têne mask kirin * dê bi rê ve bibin git-crypt, ji bilî yên herî .gitattributes
Em dikarin vê bi xebitandinê kontrol bikin:
git crypt status -e
Hilber dê navnîşek hemî pelên di depoyê de be ku şîfrekirina wan çalak e
Ew hemî ye, naha em dikarin bi ewlehî guhartinên xwe bikin:
cd ../..
git add .
git commit -m "Add deploy for gitlab-runner"
Ji bo astengkirina depoyek, tenê bimeşînin:
git crypt lock
û tavilê hemî pelên şîfrekirî dê bibin tiştek binary, xwendina wan dê ne gengaz be.
Ji bo şîfrekirina depoyê, bixebitin:
git crypt unlock
8. Wêneyek toolboxê çêbikin
Wêneyek toolbox wêneyek bi hemî amûrên ku em ê bikar bînin da ku projeya xwe bicîh bikin. Ew ê ji hêla gerokê Gitlab ve were bikar anîn da ku peywirên bicîhkirina tîpîk pêk bîne.
Li vir her tişt hêsan e, em yekî nû biafirînin dockerfiles / toolbox / Dockerfile bi naveroka jêrîn:
FROM alpine:3.11
RUN apk add --no-cache git git-crypt
RUN QBEC_VER=0.10.3
&& wget -O- https://github.com/splunk/qbec/releases/download/v${QBEC_VER}/qbec-linux-amd64.tar.gz
| tar -C /tmp -xzf -
&& mv /tmp/qbec /tmp/jsonnet-qbec /usr/local/bin/
RUN KUBECTL_VER=1.17.0
&& wget -O /usr/local/bin/kubectl
https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VER}/bin/linux/amd64/kubectl
&& chmod +x /usr/local/bin/kubectl
RUN HELM_VER=3.0.2
&& wget -O- https://get.helm.sh/helm-v${HELM_VER}-linux-amd64.tar.gz
| tar -C /tmp -zxf -
&& mv /tmp/linux-amd64/helm /usr/local/bin/helm
Wekî ku hûn dikarin bibînin, di vê wêneyê de em hemî karûbarên ku me bikar anîn da ku serlêdana xwe bicîh bikin saz dikin. Heya ku em li vir ne hewce ne kubectl, lê dibe ku hûn bixwazin di qonaxa sazkirina boriyê de pê re bilîzin.
Di heman demê de, ji bo ku em karibin bi Kubernetes re têkilî daynin û jê re bicîh bikin, pêdivî ye ku em ji bo podên ku ji hêla gitlab-runner ve têne hilberandin rolek mîheng bikin.
Ji bo vê yekê, em biçin pelrêça bi gitlab-runner:
cd deploy/gitlab-runner
û hêmanek nû lê zêde bike pêkhateyên/rbac.jsonnet:
Ji kerema xwe bala xwe bidin ku em bikar tînin GIT_SUBMODULE_STRATEGY: normal ji bo wan karên ku hûn hewce ne ku berî darvekirinê bi eşkereyî binemodulan dest pê bikin.
Ez difikirim ku em dikarin bi ewlehî vê guhertoyek binav bikin v0.0.1 û tagê lê zêde bike:
git tag v0.0.1
Em ê etîketan lê zêde bikin her ku hewce bike ku guhertoyek nû derxînin. Etîketên di wêneyên Docker de dê bi etîketên Git ve werin girêdan. Her pêvekek bi tagek nû dê avakirina wêneyan bi vê tagê dest pê bike.
Werin em bikin git push --etîketan, û werin em li xeta xweya yekem binêrin:
Screenshot ji boriya yekem
Hêja ye ku bala we bikişîne ser vê yekê ku kombûna bi etîketan ji bo avakirina wêneyên dokerê maqûl e, lê ji bo bicîhkirina serîlêdanek li Kubernetes ne maqûl e. Ji ber ku etîketên nû dikarin li peywirên kevin werin danîn, di vê rewşê de, destpêkirina boriyê ji bo wan dê bibe sedema bicîhkirina guhertoya kevn.
Ji bo çareserkirina vê pirsgirêkê, bi gelemperî avakirina wêneyên docker bi nîşanan ve girêdayî ye, û bicîhkirina serîlêdanê li şaxek mamoste, ku tê de guhertoyên wêneyên berhevkirî bi hişk têne kod kirin. Li vir e ku hûn dikarin bi vegerandinek hêsan ve vegerandinê dest pê bikin mamoste- şaxên.
10. Xweseriya belavkirinê
Ji bo ku Gitlab-runner razên me veşêre, em ê hewce bikin ku mifteya depoyê derxînin û wê li guhêrbarên hawîrdora xweya CI-yê zêde bikin:
Li vir me ji bo qbec çend vebijarkên nû çalak kirine:
- hindek/app root - dihêle hûn pelrêça serîlêdanek taybetî diyar bikin
--force:k8s-context __incluster__ - ev guhêrbarek efsûnî ye ku dibêje ku bicîhkirin dê di heman komê de ku gtilab-runner tê de dixebite pêk were. Ev pêdivî ye ji ber ku wekî din qbec dê hewl bide ku di kubeconfig-a we de serverek Kubernetes-a minasib bibîne
--payin - zorê dide qbec ku li bendê bimîne heya ku çavkaniyên ku ew diafirîne bikeve rewşa Amade û tenê dûv re bi kodek derketinê ya serfiraz derkeve.
-erê - bi tenê şêlê înteraktîf asteng dike Piştrastin? dema belav kirin.
Û piştî git push em ê bibînin ka serlêdanên me çawa hatine bicîh kirin:
Dîmenê lûleya duyemîn
11. Artifacts û civîn dema ku ji bo masterê dehf dikin
Bi gelemperî, gavên ku li jor hatine destnîşan kirin ji bo avakirina û radestkirina hema hema her mîkroxizmetê bes in, lê em naxwazin her gava ku em hewce ne ku malperê nûve bikin etîketek zêde bikin. Ji ber vê yekê, em ê rêgezek dînamîktir bavêjin û di şaxê masterê de veqetandinek digest saz bikin.
Fikir hêsan e: niha wêneyê me malpera her gava ku hûn têxin hundur dê ji nû ve were çêkirin mamoste, û dûv re bixweber li Kubernetes bicîh bikin.
Ka em van her du karan di nav xwe de nûve bikin .gitlab-ci.yml:
Ji kerema xwe not bikin ku me mijarek zêde kiriye mamoste к refs ji bo karan build_website û em niha bikar tînin $CI_COMMIT_REF_NAME li gorî $CI_COMMIT_TAG, ango, em ji etîketên Git veqetandî ne û naha em ê wêneyek bi navê şaxê commit ku boriyê dest pê kiriye bişopînin. Hêjayî gotinê ye ku ev ê bi etîketan re jî bixebite, ku dê bihêle ku em dîmenên malperek bi guhertoyek taybetî di doker-qeyda tomar bikin.
Gava ku navê etîketa dockerê ya ji bo guhertoyek nû ya malperê bê guheztin, em hîn jî neçar in ku guheztinên Kubernetes diyar bikin, wekî din ew ê bi hêsanî serîlêdanê ji wêneya nû ji nû ve neke, ji ber ku ew ê di nav wêneyê de ti guhertinan nebîne. eşkerekirina belavbûnê.
Dibe —vm:ext-str digest="$DIGEST" ji bo qbec - dihêle hûn guhêrbarek derveyî ji jsonnet re derbas bikin. Em dixwazin ku ew bi her serbestberdana serîlêdana me re di komê de ji nû ve were bicîh kirin. Em êdî nekarin navê etîketê bikar bînin, ku naha dikare bê guhêrbar be, ji ber ku pêdivî ye ku em bi guhertoyek taybetî ya wêneyê ve girêdayî bin û gava ku ew diguhezîne veqetandinê bişopînin.
Li vir em ê ji kapasîteya Kaniko re bibin alîkar ku wêneyek hûrgulî li pelek tomar bike (vebijark --digest-pel)
Dûv re em ê vê pelê veguhezînin û di dema danînê de bixwînin.
Ka em parametreyên xwe nûve bikin deploy/malper/hawirdor/base.libsonnet ku niha dê bi vî rengî xuya bike:
Qediya, niha her tedbîrek tê mamoste avakirina wêneya docker ji bo dest pê dike malpera, û paşê wê li Kubernetes bicîh bikin.
Ji bîr nekin ku guhertinên me bikin:
git add .
git commit -m "Configure dynamic build"
Em ê paşê kontrol bikin git push divê em tiştekî wiha bibînin:
Dîmenê boriyê ji bo master
Di prensîbê de, em ne hewce ne ku bi her pêvekê re gitlab-runner ji nû ve saz bikin, heya ku, bê guman, tiştek di veavakirina wê de neguheriye, em wê di nav de rast bikin. .gitlab-ci.yml:
Wext e ku em xeta boriyê xwe bi hawîrdorên dînamîkî re cihêreng bikin.
Pêşîn, bila em kar nûve bikin build_website di me de .gitlab-ci.yml, rakirina blokê jê re bes, ku dê zorê bide Gitlab ku wê li ser her commitek ji her şaxek re bixebitîne:
Ew ê li ser her şaxên ji bilî masterê werin destpêkirin û dê guhertoya pêşdîtinê ya malperê bicîh bikin.
Em ji bo qbec vebijarkek nû dibînin: --app-tag - ew dihêle hûn guhertoyên bicîhkirî yên serîlêdanê etîket bikin û tenê di hundurê vê tagê de bixebitin; dema ku çavkaniyên li Kubernetes çêbikin û hilweşînin, qbec dê tenê bi wan re bixebite.
Bi vî rengî em nekarin ji bo her vekolînê jîngehek cihê biafirînin, lê tenê heman yek ji nû ve bikar bînin.
Li vir em jî bikar tînin qbec serlêdana nirxandinê, di şona qbec standard bicîh bikin - ev tam ew kêlî ye ku em ê hewl bidin ku cûdahiyên ji bo hawîrdorên xwe diyar bikin (nirxandin û xwerû):
Em lê zêde bikin axaftin jîngehê di deploy/website/qbec.yaml
Wê demê em ê di nav de ragihînin deploy/website/params.libsonnet:
local env = std.extVar('qbec.io/env');
local paramsMap = {
_: import './environments/base.libsonnet',
default: import './environments/default.libsonnet',
review: import './environments/review.libsonnet',
};
if std.objectHas(paramsMap, env) then paramsMap[env] else error 'environment ' + env + ' not defined in ' + std.thisFile
Û ji bo wê pîvanên xwerû binivîsin deploy/malper/environments/review.libsonnet:
// this file has the param overrides for the default environment
local base = import './base.libsonnet';
local slug = std.extVar('qbec.io/tag');
local subdomain = std.extVar('subdomain');
base {
components+: {
website+: {
name: 'example-docs-' + slug,
domain: subdomain + '.docs.example.org',
},
},
}
Werin em ji nêz ve li jobu jî binêrin stop_review, dema ku şax were jêbirin ew ê were xebitandin û ji ber ku gitlab neceribîne ku bişopîne ew tê bikar anîn GIT_STRATEGY: tune, paşê em klon dikin mamoste-şaxê û bi riya wê vekolînê jêbirin.
Ew hinekî tevlihev e, lê min hîn rêyek xweşiktir nedîtiye.
Vebijarkek alternatîf dê ev be ku her vekolînek li cîhek navek otêlê were bicîh kirin, ku her gav dikare bi tevahî were hilweşandin.
Ji bîr nekin ku guhertinên me bikin:
git add .
git commit -m "Enable automatic review"
git push, git checkout -b test, git push test original, kontrol bikin:
Dîmenê derdorên ku li Gitlab hatine afirandin
Her tişt dixebite? - mezin, şaxê ceribandina me jêbirin: master git checkout, git push eslê :ceribandin, em kontrol dikin ku karên jêbirina jîngehê bêyî xeletî dixebitin.
Li vir ez dixwazim tavilê zelal bikim ku her pêşdebirek di projeyekê de dikare şaxan biafirîne, ew jî dikare biguhezîne .gitlab-ci.yml pel û gihîştina guherbarên veşartî.
Ji ber vê yekê, bi tundî tê pêşniyar kirin ku destûr bidin karanîna wan tenê ji bo şaxên parastî, mînakî di mamoste, an jî ji bo her hawîrdorê komek cûda cûda biafirînin.
13. Apps Review
Apps Review Ev taybetmendiyek GitLab-ê ye ku dihêle hûn ji bo her pelê di depoyê de bişkokek zêde bikin da ku bi lez wê li hawîrdorek belavkirî bibînin.
Ji bo ku ev bişkok xuya bibin, hûn hewce ne ku pelek çêbikin .gitlab/route-map.yml û hemî veguherînên rêgezê di wê de diyar bikin; di rewşa me de ew ê pir hêsan be: