ProHoster > Блог > Administrasi > Nyoba alat anyar kanggo mbangun lan ngotomatisasi penyebaran ing Kubernetes
Nyoba alat anyar kanggo mbangun lan ngotomatisasi penyebaran ing Kubernetes
Hello! Bubar, akeh alat otomatisasi sing keren wis dirilis kanggo nggawe gambar Docker lan kanggo penyebaran menyang Kubernetes. Ing babagan iki, aku mutusake kanggo muter-muter karo GitLab, sinau kanthi teliti kemampuane lan, mesthine, nyetel pipa.
Karya iki diilhami dening situs web kubernetes.io, kang kui saka kode sumber kanthi otomatis, lan kanggo saben panjalukan blumbang dikirim, robot kanthi otomatis ngasilake versi pratinjau situs kanthi owah-owahan sampeyan lan menehi link kanggo ndeleng.
Aku nyoba mbangun proses sing padha saka awal, nanging kabeh dibangun ing Gitlab CI lan alat gratis sing wis digunakake kanggo nyebarake aplikasi menyang Kubernetes. Dina iki pungkasane aku bakal ngandhani luwih akeh babagan dheweke.
Artikel kasebut bakal ngrembug piranti kayata: Hugo, qbec, kaniko, git-crypt и GitLab CI kanthi nggawe lingkungan dinamis.
Minangka conto proyek kita, kita bakal nyoba nggawe situs penerbitan dokumentasi sing dibangun ing Hugo. Hugo minangka generator konten statis.
Kanggo sing ora menowo generator statis, Aku bakal pitutur marang kowe sethitik liyane babagan. Ora kaya mesin situs web konvensional kanthi basis data lan sawetara PHP, sing, nalika dijaluk pangguna, ngasilake kaca kanthi cepet, generator statis dirancang rada beda. Dheweke ngidini sampeyan njupuk sumber, biasane sakumpulan file ing markup Markdown lan template tema, banjur ngumpulake menyang situs web sing wis rampung.
Dadi, minangka asil, sampeyan bakal nampa struktur direktori lan set file HTML sing digawe, sing mung bisa diunggah menyang hosting sing murah lan entuk situs web sing bisa digunakake.
Sampeyan bisa nginstal Hugo sacara lokal lan nyoba:
Miwiti situs anyar:
hugo new site docs.example.org
Lan ing wektu sing padha repositori git:
cd docs.example.org
git init
Nganti saiki, situs kita resik lan supaya ana sing katon, mula kita kudu nyambungake tema; tema mung sakumpulan template lan aturan tartamtu sing digawe situs kita.
Kanggo tema sing bakal kita gunakake sinau, kang, ing mratelakake panemume, iku sampurna cocog kanggo situs dokumentasi.
Aku pengin menehi perhatian khusus kanggo kasunyatan manawa kita ora perlu nyimpen file tema ing repositori proyek kita; tinimbang, kita mung bisa nyambungake nggunakake submodul git:
Mangkono, repositori kita mung bakal ngemot file sing ana hubungane langsung karo proyek kita, lan tema sing disambungake bakal tetep minangka link menyang repositori tartamtu lan komitmen, yaiku, bisa ditarik saka sumber asli lan ora wedi. owah-owahan sing ora cocog.
Ayo mbenerake konfigurasi config.toml:
baseURL = "http://docs.example.org/"
languageCode = "en-us"
title = "My Docs Site"
theme = "learn"
Wis ing tahap iki sampeyan bisa mbukak:
hugo server
Lan ing alamat http://localhost:1313/ mriksa situs web sing mentas digawe, kabeh owah-owahan sing digawe ing direktori kanthi otomatis nganyari kaca mbukak ing browser, trep banget!
Ayo nyoba nggawe kaca panutup ing isi/_index.md:
# My docs site
## Welcome to the docs!
You will be very smart :-)
Screenshot kaca sing mentas digawe
Kanggo nggawe situs, mung mbukak:
hugo
Isi direktori umum/ lan bakal dadi situs web sampeyan.
Ya wis, ayo langsung ditambahi .giignore:
echo /public > .gitignore
Aja lali kanggo nindakake owah-owahan kita:
git add .
git commit -m "New site created"
2. Nyiapake Dockerfile
Wektu kanggo nemtokake struktur repositori kita. Aku biasane nggunakake kaya:
dockerfiles/ - ngemot direktori karo Dockerfiles lan kabeh sing dibutuhake kanggo nggawe gambar Docker.
masang/ — ngemot direktori kanggo nyebarake aplikasi kita menyang Kubernetes
Mangkono, kita bakal nggawe Dockerfile pisanan kita ing dalan dockerfiles/website/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" ]
Kaya sing sampeyan ngerteni, Dockerfile ngemot loro saka, kesempatan iki diarani mbangun multi-tataran lan ngidini sampeyan ngilangi kabeh sing ora perlu saka gambar Docker pungkasan.
Mangkono, gambar pungkasan mung bakal ngemot petenghttpd (server HTTP entheng) lan umum/ — isi situs web sing digawe statis.
Aja lali kanggo nindakake owah-owahan kita:
git add dockerfiles/website
git commit -m "Add Dockerfile for website"
3. Ngerti kaniko
Minangka tukang gambar docker, aku mutusake kanggo nggunakake kaniko, amarga operasi kasebut ora mbutuhake daemon docker, lan mbangun dhewe bisa ditindakake ing mesin apa wae lan cache bisa disimpen langsung ing registri, saéngga ngilangi kabutuhan panyimpenan sing terus-terusan.
Kanggo mbangun gambar, mung mbukak wadhah karo kaniko pelaksana lan pass konteks mbangun saiki; iki uga bisa ditindakake sacara lokal, liwat docker:
Ngendi registry.gitlab.com/kvaps/docs.example.org/website - jeneng gambar docker sampeyan; sawise mbangun, bakal diluncurake kanthi otomatis menyang registri docker.
Parameter --cache ngijini sampeyan kanggo cache lapisan ing pendaptaran docker; kanggo conto diwenehi, padha bakal disimpen ing registry.gitlab.com/kvaps/docs.example.org/website/cache, nanging sampeyan bisa nemtokake path liyane nggunakake parameter --cache-repo.
Screenshot saka docker-registry
4. Ngerti qbec
Qbec minangka alat panyebaran sing ngidini sampeyan njlèntrèhaké manifests aplikasi lan nyebar menyang Kubernetes. Nggunakake Jsonnet minangka sintaks utama ngidini sampeyan nyederhanakake katrangan babagan beda ing pirang-pirang lingkungan, lan uga meh ngilangi pengulangan kode.
Iki bisa uga bener ing kasus nalika sampeyan kudu masang aplikasi menyang sawetara klompok kanthi paramèter sing beda-beda lan pengin njlèntrèhaké kanthi deklaratif ing Git.
Qbec uga ngijini sampeyan kanggo nerjemahake denah Helm dening maringaken paramèter sing perlu lan banjur operate ing cara sing padha karo manifests biasa, kalebu sampeyan bisa aplikasi macem-macem mutasi kanggo wong-wong mau, lan iki, siji, ngijini sampeyan kanggo njaluk nyisihaken saka perlu nggunakake ChartMuseum. Yaiku, sampeyan bisa nyimpen lan nerjemahake grafik langsung saka git, ing ngendi wae.
Kaya sing dakkandhakake sadurunge, kita bakal nyimpen kabeh penyebaran ing direktori masang/:
Kene kita utamané kasengsem ing spec.lingkungan, qbec wis nggawe lingkungan standar kanggo kita lan njupuk alamat server, uga namespace saka kubeconfig kita saiki.
Saiki nalika deploying kanggo standar lingkungan, qbec bakal tansah nyebarke mung kanggo kluster Kubernetes sing ditemtokake lan kanggo spasi jeneng sing ditemtokake, yaiku, sampeyan ora kudu ngalih ing antarane konteks lan spasi jeneng kanggo nindakake penyebaran.
Yen perlu, sampeyan bisa tansah nganyari setelan ing berkas iki.
Kabeh lingkungan sampeyan diterangake ing qbec.yaml, lan ing file params.libsonnet, ngendi ngandika ngendi kanggo njaluk paramèter kanggo wong-wong mau.
Sabanjure kita ndeleng rong direktori:
komponen / - kabeh manifests kanggo aplikasi kita bakal disimpen ing kene; bisa diterangake ing file jsonnet lan yaml biasa
lingkungan/ - ing kene kita bakal njlèntrèhaké kabeh variabel (parameter) kanggo lingkungan kita.
Kanthi gawan, kita duwe rong file:
environments/base.libsonnet - bakal ngemot paramèter umum kanggo kabeh lingkungan
lingkungan/default.libsonnet - ngandhut paramèter overridden kanggo lingkungan standar
ayo mbukak environments/base.libsonnet lan tambahake paramèter kanggo komponen pisanan kita ing kana:
Ing file iki kita nerangake telung entitas Kubernetes bebarengan, yaiku: penyebaran prajurit, Service и Ingress. Yen kita pengin, kita bisa nyelehake menyang komponen sing beda-beda, nanging ing tahap iki, siji bakal cukup kanggo kita.
sintaks jsonnet mirip banget karo json biasa, ing prinsip, json biasa wis dadi jsonnet sing sah, mula bisa uga luwih gampang sampeyan nggunakake layanan online kaya yaml2json Ngonversi yaml biasa dadi json, utawa, yen komponen sampeyan ora ngemot variabel, mula bisa diterangake ing wangun yaml biasa.
Nalika nggarap jsonnet Aku banget nyaranake nginstal plugin kanggo editor sampeyan
Contone, ana plugin kanggo vim vim-jsonnet, sing ngaktifake panyorot sintaks lan dieksekusi kanthi otomatis jsonnet fmt saben-saben sampeyan nyimpen (mbutuhake jsonnet diinstal).
Kabeh wis siyap, saiki kita bisa miwiti nyebarake:
Kanggo ndeleng apa sing entuk, ayo mbukak:
qbec show default
Ing output, sampeyan bakal weruh manifests yaml render sing bakal diterapake ing kluster standar.
Apik, saiki aplikasi:
qbec apply default
Ing output sampeyan bakal tansah ndeleng apa sing bakal ditindakake ing kluster sampeyan, qbec bakal njaluk sampeyan setuju karo owah-owahan kanthi ngetik y sampeyan bakal bisa kanggo konfirmasi niat.
Aplikasi kita wis siyap lan disebarake!
Yen sampeyan nggawe owah-owahan, sampeyan bisa nindakake:
qbec diff default
kanggo ndeleng carane owah-owahan iki bakal mengaruhi penyebaran saiki
Aja lali kanggo nindakake owah-owahan kita:
cd ../..
git add deploy/website
git commit -m "Add deploy for website"
5. Nyoba Gitlab-runner karo Kubernetes-eksekutor
Nganti saiki aku mung nganggo biasa gitlab-runner ing mesin sing wis disiapake (wadhah LXC) karo cangkang utawa docker-executor. Kaping pisanan, kita duwe sawetara pelari sing ditetepake sacara global ing gitlab kita. Dheweke nglumpukake gambar docker kanggo kabeh proyek.
Nanging minangka praktik wis ditampilake, pilihan iki ora paling becik, ing babagan kepraktisan lan safety. Iku luwih apik lan ideologically luwih bener duwe pelari kapisah tugasaken kanggo saben project, utawa malah kanggo saben lingkungan.
Untunge, iki ora dadi masalah, amarga saiki kita bakal nyebarake gitlab-runner langsung minangka bagéan saka project kita tengen ing Kubernetes.
Gitlab nyedhiyakake grafik helm sing wis siap kanggo nyebarake gitlab-runner menyang Kubernetes. Dadi kabeh sing kudu ditindakake yaiku ngerteni token registrasi kanggo proyek kita ing Setelan -> CI / CD -> Runners lan liwati menyang setir:
yga8y-jdCusVDn_t4Wxc - token registrasi kanggo proyek sampeyan.
rbac.create=bener - nyedhiyakake pelari kanthi jumlah hak istimewa sing dibutuhake supaya bisa nggawe pods kanggo nindakake tugas kita nggunakake kubernetes-executor.
Yen kabeh wis rampung kanthi bener, sampeyan kudu ndeleng runner kadhaptar ing bagean kasebut Pelatih, ing setelan proyek sampeyan.
Screenshot saka runner ditambahaké
Apa iku prasaja? - ya, iku sing prasaja! Ora ana repot ndhaptar pelari kanthi manual, wiwit saiki pelari bakal digawe lan dirusak kanthi otomatis.
6. Nyebar denah Helm karo QBEC
Awit kita mutusaké kanggo nimbang gitlab-runner bagean saka project kita, iku wektu kanggo njlèntrèhaké ing repositori Git kita.
Kita bisa njlèntrèhaké minangka komponen kapisah situs, nanging ing mangsa ngarep kita rencana kanggo nyebarake salinan sing beda-beda situs asring banget, ora kaya gitlab-runner, sing bakal disebarake mung sapisan saben kluster Kubernetes. Dadi ayo miwiti aplikasi sing kapisah:
cd deploy
qbec init gitlab-runner
cd gitlab-runner
Wektu iki kita ora bakal njlèntrèhaké entitas Kubernetes kanthi manual, nanging bakal njupuk bagan Helm sing wis siap. Salah sawijining kaluwihan qbec yaiku kemampuan kanggo nggawe grafik Helm langsung saka gudang Git.
Saiki direktori vendor / gitlab-runner Kita duwe repositori kanthi grafik kanggo gitlab-runner.
Kanthi cara sing padha, sampeyan bisa nyambungake repositori liyane, umpamane, kabeh repositori kanthi grafik resmi https://github.com/helm/charts
Ayo dadi njlèntrèhaké komponen komponen/gitlab-runner.jsonnet:
local env = {
name: std.extVar('qbec.io/env'),
namespace: std.extVar('qbec.io/defaultNs'),
};
local p = import '../params.libsonnet';
local params = p.components.gitlabRunner;
std.native('expandHelmTemplate')(
'../vendor/gitlab-runner',
params.values,
{
nameTemplate: params.name,
namespace: env.namespace,
thisFile: std.thisFile,
verbose: true,
}
)
Argumentasi pisanan kanggo expandHelmTemplate kita pass path menyang grafik, banjur params.nilai, sing kita njupuk saka paramèter lingkungan, banjur nerangake obyek karo
nameTemplate - jeneng release
namespace - namespace ditransfer menyang setir
File iki - parameter sing dibutuhake sing ngliwati path menyang file saiki
tembung kriya - nuduhake printah Cithakan helm karo kabeh argumen nalika nggawe grafik
Saiki ayo njlèntrèhaké paramèter kanggo komponen kita ing environments/base.libsonnet:
Nanging nyimpen rahasia ing Git ora aman, ta? Dadi kita kudu ndhelik kanthi bener.
Biasane, kanggo siji variabel, iki ora mesthi ana akal. Sampeyan bisa nransfer rahasia menyang qbec lan liwat variabel lingkungan sistem CI sampeyan.
Nanging kudu dicathet yen ana uga proyek sing luwih rumit sing bisa ngemot luwih akeh rahasia; nransfer kabeh liwat variabel lingkungan bakal angel banget.
Menapa malih, ing kasus iki, aku ora bakal bisa nyritakake babagan alat sing apik banget git-crypt.
git-crypt Sampeyan uga trep amarga ngidini sampeyan nyimpen kabeh sejarah rahasia, uga mbandhingake, nggabungake lan ngrampungake konflik kanthi cara sing padha kaya sing biasa ditindakake ing kasus Git.
Kaping pisanan sawise instalasi git-crypt kita kudu ngasilake kunci kanggo repositori kita:
git crypt init
Yen sampeyan duwe kunci PGP, sampeyan bisa langsung nambah dhewe minangka kolaborator kanggo proyek iki:
Kanthi cara iki sampeyan bisa tansah dekripsi gudang iki nggunakake kunci pribadi.
Yen sampeyan ora duwe kunci PGP lan ora ngarep-arep, sampeyan bisa ngekspor kunci proyek kasebut:
git crypt export-key /path/to/keyfile
Mangkono, sapa sing wis diekspor file kunci bakal bisa dekripsi repositori sampeyan.
Iku wektu kanggo nyetel rahasia pisanan kita.
Ayo kula ngelingake yen kita isih ana ing direktori deploy/gitlab-runner/, ngendi kita duwe direktori rahasia/, ayo enkripsi kabeh file ing kono, kanggo iki kita bakal nggawe file rahasia/.gitattributes kanthi isi ing ngisor iki:
Kaya sing bisa dideleng saka konten kasebut, kabeh file ditutupi * bakal mimpin liwat git-crypt, kajaba sing paling .gitattributes
Kita bisa mriksa iki kanthi mlaku:
git crypt status -e
Output bakal dadi dhaptar kabeh file ing repositori sing enkripsi diaktifake
Iku kabeh, saiki kita bisa nindakake owah-owahan kanthi aman:
cd ../..
git add .
git commit -m "Add deploy for gitlab-runner"
Kanggo mblokir repositori, mung mbukak:
git crypt lock
lan langsung kabeh file sing dienkripsi bakal dadi binar, mula ora bisa diwaca.
Kanggo dekripsi repositori, bukak:
git crypt unlock
8. Nggawe gambar kothak piranti
Gambar kothak piranti minangka gambar kanthi kabeh alat sing bakal digunakake kanggo nyebarake proyek. Bakal digunakake dening pelari Gitlab kanggo nindakake tugas panyebaran khas.
Kabeh gampang ing kene, ayo nggawe sing anyar dockerfiles/toolbox/Dockerfile kanthi isi ing ngisor iki:
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
Kaya sing sampeyan ngerteni, ing gambar iki, kita nginstal kabeh utilitas sing digunakake kanggo nyebarake aplikasi. Kita ora butuh ing kene kajaba kubectl, nanging sampeyan bisa uga pengin muter-muter nalika fase persiyapan pipa.
Uga, supaya bisa komunikasi karo Kubernetes lan nyebarake, kita kudu ngatur peran kanggo polong sing digawe dening gitlab-runner.
Kanggo nindakake iki, ayo pindhah menyang direktori nganggo gitlab-runner:
Wigati dimangerteni yen kita nggunakake GIT_SUBMODULE_STRATEGY: normal kanggo proyek sing sampeyan kudu nginisialisasi submodul kanthi jelas sadurunge eksekusi.
Aku kita bisa kanthi aman nelpon iki versi v0.0.1 lan nambah tag:
git tag v0.0.1
Kita bakal nambah tag kapan kita kudu ngeculake versi anyar. Tag ing gambar Docker bakal diikat karo tag Git. Saben push kanthi tag anyar bakal nggawe wiwitan gambar kanthi tag iki.
Ayo padha nindakake git push --tags, lan ayo goleki pipa pertama kita:
Screenshot saka pipeline pisanan
Iku worth tarik manungsa waé kanggo kasunyatan sing perakitan dening tags cocok kanggo mbangun gambar docker, nanging ora cocok kanggo deploying aplikasi kanggo Kubernetes. Amarga tag anyar bisa ditugasake menyang komitmen lawas, ing kasus iki, nginisialisasi pipa kasebut bakal nyebabake penyebaran versi lawas.
Kanggo ngatasi masalah iki, biasane mbangun gambar docker diikat karo tag, lan panyebaran aplikasi menyang cabang. Master, kang versi gambar sing diklumpukake hardcoded. Iki ngendi sampeyan bisa initialize rollback karo bali prasaja Master- cabang.
10. Otomatisasi penyebaran
Supaya Gitlab-runner bisa dekripsi rahasia kita, kita kudu ngekspor kunci repositori lan ditambahake menyang variabel lingkungan CI kita:
Ing kene kita wis ngaktifake sawetara opsi anyar kanggo qbec:
--root sawetara / app — ngidini sampeyan nemtokake direktori aplikasi tartamtu
--force:k8s-context __incluster__ - iki variabel tenung sing ngandika sing penyebaran prajurit bakal kelakon ing kluster padha kang gtilab-runner mlaku. Iki perlu amarga yen qbec bakal nyoba golek server Kubernetes cocok ing kubeconfig Panjenengan
--ngenteni - meksa qbec ngenteni nganti sumber daya sing digawe menyang negara Siap lan mung banjur metu karo sukses metu-kode.
— ya - mung mateni cangkang interaktif Sampeyan yakin? nalika disebarake.
Lan sawise git push kita bakal weruh carane aplikasi kita wis disebarake:
Screenshot saka pipa kapindho
11. Artefak lan Déwan nalika meksa nindakake perkara master
Biasane, langkah-langkah sing diterangake ing ndhuwur cukup kanggo mbangun lan ngirim meh kabeh layanan mikro, nanging kita ora pengin nambah tag saben-saben kita kudu nganyari situs kasebut. Mulane, kita bakal njupuk rute sing luwih dinamis lan nyiyapake penyebaran pencernaan ing cabang master.
Ide iki prasaja: saiki gambar kita situs bakal dibangun maneh saben-saben sampeyan push menyang Master, banjur disebarake kanthi otomatis menyang Kubernetes.
Ayo nganyari loro proyek iki ing kita .gitlab-ci.yml:
Wigati dimangerteni yen kita wis nambahake thread Master к refs kanggo proyek mbangun_situs web lan saiki kita nggunakake $CI_COMMIT_REF_NAME tinimbang $CI_COMMIT_TAG, yaiku, kita dibubarake saka tag ing Git lan saiki kita bakal push gambar kanthi jeneng cabang commit sing miwiti pipa. Wigati dicathet yen iki uga bakal bisa digunakake karo tag, sing bakal ngidini kita nyimpen jepretan situs kanthi versi tartamtu ing pendaptaran docker.
Nalika jeneng tag docker kanggo versi anyar saka situs bisa ora diganti, kita isih kudu njlèntrèhaké owah-owahan ing Kubernetes, yen ora, iku mung ora bakal redeploy aplikasi saka gambar anyar, amarga ora bakal sok dong mirsani owah-owahan ing panyebaran manifest.
Pilihan —vm:ext-str digest=”$DIGEST” kanggo qbec - ngijini sampeyan kanggo pass variabel external kanggo jsonnet. Kita pengin supaya redeployed ing kluster karo saben release saka aplikasi kita. Kita ora bisa nggunakake jeneng tag maneh, sing saiki ora bisa diganti, amarga kita kudu diikat menyang versi tartamtu saka gambar lan micu penyebaran nalika owah-owahan.
Ing kene kita bakal dibantu dening kemampuan Kaniko kanggo nyimpen gambar sing dicerna menyang file (opsi --digest-file)
Banjur kita bakal nransfer file iki lan maca ing wektu penyebaran.
Ayo nganyari paramèter kanggo kita deploy/website/environments/base.libsonnet sing saiki bakal katon kaya iki:
Rampung, saiki ana komitmen apa wae Master initializes mbangun gambar docker kanggo situs, banjur pasang menyang Kubernetes.
Aja lali kanggo nindakake owah-owahan kita:
git add .
git commit -m "Configure dynamic build"
Dipriksa mengko git push kita kudu ndeleng kaya iki:
Screenshot saka pipeline kanggo master
Ing asas, kita ora perlu redeploy gitlab-runner karo saben push, kajaba, mesthi, ora ana owah-owahan ing konfigurasi sawijining, ayo ndandani ing .gitlab-ci.yml:
Iku wektu kanggo diversifikasi pipa karo lingkungan dinamis.
Pisanan, ayo nganyari proyek mbangun_situs web ing kita .gitlab-ci.yml, mbusak blok saka iku mung, sing bakal meksa Gitlab kanggo micu ing sembarang komit menyang cabang apa wae:
Dheweke bakal diluncurake kanthi push menyang cabang apa wae kajaba master lan bakal masang versi pratinjau situs kasebut.
Kita ndeleng opsi anyar kanggo qbec: --app-tag - ngidini sampeyan menehi tag versi aplikasi sing wis disebarake lan mung bisa digunakake ing tag iki; nalika nggawe lan ngrusak sumber daya ing Kubernetes, qbec mung bisa digunakake.
Kanthi cara iki, kita ora bisa nggawe lingkungan sing kapisah kanggo saben review, nanging mung nggunakake maneh lingkungan sing padha.
Kene kita uga nggunakake qbec aplikasi review, tinimbang qbec aplikasi standar - iki persis nalika kita bakal nyoba kanggo njlèntrèhaké beda kanggo lingkungan kita (review lan standar):
Ayo ditambahake review lingkungan ing deploy/website/qbec.yaml
Banjur kita bakal ngumumake ing 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
Lan tulisake paramèter khusus ing deploy/website/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',
},
},
}
Ayo uga nliti jobu stop_review, bakal dipicu nalika cabang dibusak lan supaya gitlab ora nyoba mriksa metu digunakake GIT_STRATEGY: ora ana, mengko kita kloning Master-cabang lan mbusak review liwat.
Iku rada bingung, nanging aku durung nemokake cara sing luwih apik.
Pilihan alternatif yaiku masang saben review menyang ruang jeneng hotel, sing bisa dibongkar kabeh.
Kabeh bisa digunakake? - apik, mbusak cabang tes kita: master checkout git, git push asal: test, kita priksa manawa proyek pambusakan lingkungan bisa digunakake tanpa kesalahan.
Ing kene aku pengin langsung njlentrehake manawa pangembang ing proyek bisa nggawe cabang, dheweke uga bisa ngganti .gitlab-ci.yml file lan ngakses variabel rahasia.
Mulane, dianjurake kanggo nggunakake mung kanggo cabang sing dilindhungi, contone ing Master, utawa nggawe set variabel sing kapisah kanggo saben lingkungan.
13. Priksa Aplikasi
Deleng Aplikasi Iki minangka fitur GitLab sing ngidini sampeyan nambah tombol kanggo saben file ing repositori supaya bisa ndeleng kanthi cepet ing lingkungan sing disebarake.
Supaya tombol kasebut katon, sampeyan kudu nggawe file .gitlab/rute-map.yml lan njlèntrèhaké kabeh transformasi path ing; ing kasus kita bakal gampang banget: