ProHoster > Blog > Adminisztráció > Új eszközök kipróbálása a Kubernetes telepítésének felépítéséhez és automatizálásához
Új eszközök kipróbálása a Kubernetes telepítésének felépítéséhez és automatizálásához
Helló! A közelmúltban számos nagyszerű automatizálási eszköz jelent meg mind a Docker-képképek készítéséhez, mind a Kubernetes-be való telepítéshez. Ezzel kapcsolatban úgy döntöttem, hogy eljátszom a GitLabot, alaposan megvizsgálom a képességeit, és természetesen felállítom a folyamatot.
Ezt a munkát a weboldal ihlette kubernetes.io, amelyből generálódik forráskódok automatikusan, és minden egyes elküldött készletkéréshez a robot automatikusan létrehozza a webhely előnézeti verzióját az Ön módosításaival, és egy hivatkozást biztosít a megtekintéshez.
Megpróbáltam a semmiből felépíteni egy hasonló folyamatot, de teljes egészében a Gitlab CI-re és az ingyenes eszközökre építettem, amelyeket az alkalmazások Kubernetes rendszerbe való telepítéséhez szoktam használni. Ma végre többet mesélek róluk.
A cikk olyan eszközöket tárgyal, mint például: Hugo, qbec, kaniko, git-crypt и GitLab CI dinamikus környezetek kialakításával.
Projektünk példájaként megpróbálunk létrehozni egy Hugo-ra épített dokumentációs publikációs oldalt. A Hugo egy statikus tartalomgenerátor.
Azok számára, akik nem ismerik a statikus generátorokat, mesélek egy kicsit többet róluk. Ellentétben az adatbázissal és néhány PHP-val rendelkező hagyományos webhelymotorokkal, amelyek a felhasználó kérésére menet közben generálnak oldalakat, a statikus generátorok egy kicsit másképp vannak kialakítva. Lehetővé teszik a források, általában a Markdown jelölő- és témasablonok fájlkészletének felvételét, majd ezekből egy teljesen kész webhelyté való fordítást.
Ez azt jelenti, hogy ennek eredményeként kap egy könyvtárstruktúrát és egy generált HTML-fájlkészletet, amelyet egyszerűen feltölthet bármely olcsó tárhelyre, és működő webhelyet kaphat.
Helyben telepítheti a Hugo-t, és kipróbálhatja:
Új webhely inicializálása:
hugo new site docs.example.org
És ugyanakkor a git tárház:
cd docs.example.org
git init
Eddig az oldalunk tiszta, és ahhoz, hogy valami megjelenjen rajta, először egy témát kell összekapcsolnunk, a téma csak sablonok és meghatározott szabályok halmaza, amelyek alapján az oldalunk létrejön.
A témához használjuk Tanul, ami véleményem szerint tökéletesen alkalmas dokumentációs oldalnak.
Külön szeretném felhívni a figyelmet arra, hogy a témafájlokat nem kell a projekttárunkba mentenünk, hanem egyszerűen csatlakoztathatjuk git almodul:
Így a repositorynk csak a projektünkhöz közvetlenül kapcsolódó fájlokat fog tartalmazni, a kapcsolódó téma pedig egy adott tárhelyre mutató hivatkozásként és abban egy commit marad, vagyis mindig az eredeti forrásból lehívható és nem kell félni összeférhetetlen változások.
Javítsuk ki a konfigurációt config.toml:
baseURL = "http://docs.example.org/"
languageCode = "en-us"
title = "My Docs Site"
theme = "learn"
Már ebben a szakaszban futhat:
hugo server
És a címen http://localhost:1313/ nézze meg újonnan létrehozott weboldalunkat, a címtárban végrehajtott változtatások automatikusan frissítik a böngészőben megnyitott oldalt, nagyon kényelmes!
Próbáljunk meg létrehozni egy fedőlapot content/_index.md:
# My docs site
## Welcome to the docs!
You will be very smart :-)
Képernyőkép az újonnan létrehozott oldalról
Webhely létrehozásához futtassa:
hugo
Könyvtár tartalma nyilvános/ és az Ön webhelye lesz.
Igen, mellesleg azonnal tegyük hozzá .gitignore:
echo /public > .gitignore
Ne felejtse el végrehajtani a változtatásainkat:
git add .
git commit -m "New site created"
2. A Dockerfile előkészítése
Itt az ideje, hogy meghatározzuk adattárunk szerkezetét. Általában valami ilyesmit használok:
dockerfiles/ — Dockerfiles-könyvtárakat és mindent, ami a Docker-képképeink elkészítéséhez szükséges.
telepíteni/ — olyan könyvtárakat tartalmaz, amelyek segítségével telepíthetjük alkalmazásainkat a Kubernetes rendszerbe
Így létrehozzuk az első Docker-fájlunkat az útvonal mentén 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" ]
Mint látható, a Dockerfile kettőt tartalmaz FROM, ezt a funkciót hívják többlépcsős felépítés és lehetővé teszi minden szükségtelen kizárását a végső docker-képből.
Így a végső kép csak tartalmaz sötéthttpd (könnyű HTTP szerver) és nyilvános/ — statikusan generált weboldalunk tartalma.
Ne felejtse el végrehajtani a változtatásainkat:
git add dockerfiles/website
git commit -m "Add Dockerfile for website"
3. Kaniko megismerése
Docker image-készítőként a használata mellett döntöttem kaniko, mivel működéséhez nincs szükség docker démonra, maga a build pedig bármilyen gépen végrehajtható, a gyorsítótár pedig közvetlenül a registry-ben tárolható, így nincs szükség teljes értékű perzisztens tárolóra.
A kép elkészítéséhez futtassa a tárolót a következővel kaniko végrehajtó és adja át neki az aktuális összeállítási környezetet; ez helyileg is megtehető, a docker segítségével:
ahol registry.gitlab.com/kvaps/docs.example.org/website — a docker-kép neve; felépítés után automatikusan elindul a docker-nyilvántartásba.
Paraméter --gyorsítótár lehetővé teszi a rétegek gyorsítótárazását a docker rendszerleíró adatbázisában; a megadott példában ezek mentésre kerülnek registry.gitlab.com/kvaps/docs.example.org/website/cache, de a paraméter segítségével más elérési utat is megadhat --cache-repo.
Képernyőkép a docker-nyilvántartásról
4. A qbec megismerése
Qbec egy üzembe helyezési eszköz, amely lehetővé teszi az alkalmazás jegyzékfájljainak deklaratív leírását, és azok üzembe helyezését a Kubernetesben. A Jsonnet fő szintaxisként való használata lehetővé teszi, hogy nagymértékben leegyszerűsítse a különböző környezetek közötti különbségek leírását, és szinte teljesen kiküszöböli a kódismétlést.
Ez különösen igaz lehet olyan esetekben, amikor egy alkalmazást több, különböző paraméterekkel rendelkező fürthöz kell telepítenie, és deklaratív módon szeretné leírni azokat a Gitben.
A Qbec lehetővé teszi a Helm diagramok megjelenítését is úgy, hogy átadja nekik a szükséges paramétereket, majd ugyanúgy kezelheti őket, mint a normál manifeszteket, beleértve különféle mutációkat is alkalmazva rajtuk, és ez pedig lehetővé teszi, hogy megszabaduljon a szükséges paraméterektől. használja a ChartMuseumot. Ez azt jelenti, hogy közvetlenül a git-ből tárolhatja és renderelheti a diagramokat, ahol azok tartoznak.
Ahogy korábban mondtam, az összes telepítést egy könyvtárban fogjuk tárolni telepíteni/:
Itt elsősorban az érdekel minket spec.environments, a qbec már létrehozott nekünk egy alapértelmezett környezetet, és átvette a szerver címét, valamint a névteret a jelenlegi kubeconfigunkból.
Most a telepítéskor alapértelmezett környezetben, a qbec mindig csak a megadott Kubernetes-fürtre és a megadott névtérre telepíti, vagyis többé nem kell váltania a környezetek és a névterek között a telepítés végrehajtásához.
Ha szükséges, bármikor frissítheti a beállításokat ebben a fájlban.
Az összes környezet leírása itt található qbec.yaml, és a fájlban params.libsonnet, ahol azt írja, hogy hol lehet beszerezni hozzájuk a paramétereket.
Ezután két könyvtárat látunk:
alkatrészek / - az alkalmazásunk összes manifestje itt lesz tárolva; leírhatók jsonnet és normál yaml fájlokban is
környezetek/ — itt leírjuk a környezetünk összes változóját (paraméterét).
Alapértelmezés szerint két fájlunk van:
Environments/base.libsonnet - minden környezethez közös paramétereket fog tartalmazni
Environments/default.libsonnet — a környezet számára felülírt paramétereket tartalmaz alapértelmezett
nyissuk ki Environments/base.libsonnet és adja hozzá az első komponensünk paramétereit:
Ebben a fájlban három Kubernetes entitást írtunk le egyszerre, ezek a következők: bevetés, szolgáltatás и Bemenetel. Ha akarjuk, különböző komponensekbe rakhatjuk őket, de ebben a szakaszban egy is elég lesz nekünk.
szintaxis jsonnet nagyon hasonlít a normál json-hoz, elvileg a normál json már érvényes jsonnet, így eleinte könnyebb lehet az online szolgáltatások használata, mint pl. yaml2json a szokásos yaml json-ba konvertálásához, vagy ha a komponensei nem tartalmaznak változókat, akkor leírhatók normál yaml formájában.
Amikor dolgozik jsonnet Erősen javaslom egy bővítmény telepítését a szerkesztőhöz
Például van egy plugin a vim-hez vim-jsonnet, amely bekapcsolja a szintaktikai kiemelést és automatikusan végrehajtja jsonnet fmt minden mentéskor (telepített jsonnet szükséges).
Minden készen áll, elkezdhetjük a telepítést:
Hogy lássuk, mit kaptunk, futtassuk:
qbec show default
A kimeneten megjelennek a renderelt yaml-jegyzékek, amelyek az alapértelmezett fürtre lesznek alkalmazva.
Remek, most jelentkezz:
qbec apply default
A kimeneten mindig látni fogja, hogy mi fog történni a fürtben, a qbec megkéri, hogy fogadja el a változtatásokat y meg tudja majd erősíteni szándékait.
Alkalmazásunk elkészült és bevezetett!
Ha változtatásokat hajt végre, mindig megteheti:
qbec diff default
hogy megtudja, hogyan érintik ezek a változtatások a jelenlegi telepítést
Ne felejtse el végrehajtani a változtatásainkat:
cd ../..
git add deploy/website
git commit -m "Add deploy for website"
Egészen mostanáig csak rendszeresen használtam gitlab-runner előre elkészített gépen (LXC konténer) shell-el vagy docker-végrehajtóval. Kezdetben több ilyen futót határoztunk meg globálisan a gitlabunkban. Docker képeket gyűjtöttek minden projekthez.
De amint a gyakorlat megmutatta, ez a lehetőség nem a legideálisabb, mind a praktikum, mind a biztonság szempontjából. Sokkal jobb és ideológiailag helyesebb, ha minden projekthez, vagy akár minden környezethez külön futókat telepítenek.
Szerencsére ez egyáltalán nem probléma, hiszen most bevetjük gitlab-runner közvetlenül a projektünk részeként közvetlenül Kubernetesben.
A Gitlab kész sisakdiagramot biztosít a gitlab-runner Kubernetes rendszerbe történő telepítéséhez. Tehát csak annyit kell tennie, hogy megtudja regisztrációs token projektünkhöz Beállítások -> CI / CD -> Futók és add át a kormánynak:
yga8y-jdCusVDn_t4Wxc — regisztrációs token a projekthez.
rbac.create=true — biztosítja a futtatónak a szükséges mennyiségű jogosultságot ahhoz, hogy a kubernetes-executor segítségével podokat tudjon létrehozni feladataink elvégzéséhez.
Ha mindent jól csinált, akkor egy regisztrált futót kell látnia a részben Futók, a projekt beállításaiban.
Képernyőkép a hozzáadott futóról
Ilyen egyszerű? - Igen, ez ilyen egyszerű! Nincs több gond a futók manuális regisztrációjával, mostantól a futók létrehozása és megsemmisítése automatikusan történik.
6. Telepítse a Helm diagramokat a QBEC segítségével
Mivel úgy döntöttünk, hogy megfontoljuk gitlab-runner projektünk része, itt az ideje, hogy leírjuk a Git adattárunkban.
Leírhatnánk külön komponensként , de a jövőben különböző példányok telepítését tervezzük nagyon gyakran, ellentétben gitlab-runner, amely Kubernetes-fürtönként csak egyszer lesz üzembe helyezve. Tehát inicializáljunk hozzá egy külön alkalmazást:
cd deploy
qbec init gitlab-runner
cd gitlab-runner
Ezúttal nem manuálisan írjuk le a Kubernetes entitásokat, hanem egy kész Helm diagramot veszünk. A qbec egyik előnye, hogy a Helm diagramokat közvetlenül egy Git tárolóból lehet renderelni.
Most a könyvtár szállító/gitlab-runner Van egy adattárunk a gitlab-runner diagramjával.
Hasonló módon csatlakoztathat más tárolókat, például a teljes tárat hivatalos diagramokkal https://github.com/helm/charts
Leírjuk az összetevőt Components/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,
}
)
Az első érv, hogy expandHelmTemplate akkor átadjuk az utat a diagramhoz paraméterek.értékek, amelyet a környezeti paraméterekből veszünk, majd jön az objektum
nameSablon - kiadás neve
névtér — névtér átkerült a kormányra
ez a fájl — egy kötelező paraméter, amely átadja az aktuális fájl elérési útját
bőbeszédű - mutatja a parancsot sisak sablon az összes érvvel a diagram megjelenítése során
Most írjuk le a komponensünk paramétereit Environments/base.libsonnet:
De a titkok tárolása a Gitben nem biztonságos, igaz? Tehát megfelelően titkosítanunk kell őket.
Általában egy változó miatt ennek nem mindig van értelme. A titkokat átviheti ide qbec és a CI-rendszer környezeti változóin keresztül.
De érdemes megjegyezni, hogy vannak bonyolultabb projektek is, amelyek sokkal több titkot tartalmazhatnak, ezeknek a környezeti változókon keresztül történő átvitele rendkívül nehéz lesz.
Ráadásul ebben az esetben nem tudnék mesélni egy olyan csodálatos eszközről, mint git-crypt.
git-crypt Ez abból a szempontból is kényelmes, hogy lehetővé teszi a titkok teljes történetének elmentését, valamint a konfliktusok összehasonlítását, összevonását és feloldását, ahogyan azt a Git esetében megszoktuk.
Az első dolog a telepítés után git-crypt kulcsokat kell generálnunk a tárhelyünkhöz:
git crypt init
Ha rendelkezik PGP-kulccsal, azonnal felveheti magát együttműködőként ehhez a projekthez:
Így mindig visszafejtheti ezt a tárolót a privát kulcsával.
Ha nem rendelkezik PGP-kulccsal, és nem is vár rá, akkor a másik irányba mehet, és exportálhatja a projektkulcsot:
git crypt export-key /path/to/keyfile
Így bárki, akinek van egy exportált kulcsfájlt képes lesz visszafejteni az adattárat.
Ideje feltárni első titkunkat.
Hadd emlékeztesselek arra, hogy még mindig a címtárban vagyunk deploy/gitlab-runner/, ahol van egy könyvtárunk titkok/, titkosítsuk az összes benne lévő fájlt, ehhez készítünk egy fájlt titkok/.gitattributes a következő tartalommal:
Amint a tartalomból látható, minden fájl maszkolt * keresztül fogják hajtani git-crypt, kivéve a legtöbbet .gitattributes
Ezt a következő futtatással ellenőrizhetjük:
git crypt status -e
A kimenet a lerakatban lévő összes olyan fájl listája lesz, amelynél engedélyezve van a titkosítás
Ennyi, most már nyugodtan végrehajthatjuk változtatásainkat:
cd ../..
git add .
git commit -m "Add deploy for gitlab-runner"
Egy adattár blokkolásához futtassa:
git crypt lock
és azonnal az összes titkosított fájl binárissá válik, lehetetlen lesz elolvasni őket.
A tároló visszafejtéséhez futtassa:
git crypt unlock
8. Hozzon létre egy eszköztár képet
Az eszköztár kép egy olyan kép, amely tartalmazza az összes olyan eszközt, amelyet a projektünk telepítéséhez használunk. A Gitlab futtatója fogja használni a tipikus telepítési feladatok elvégzésére.
Itt minden egyszerű, hozzunk létre egy újat dockerfiles/toolbox/Dockerfile a következő tartalommal:
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
Amint láthatja, ezen a képen telepítjük az összes olyan segédprogramot, amelyet az alkalmazásunk telepítéséhez használtunk. Itt nincs rá szükségünk, hacsak nem kubectl, de érdemes lehet vele játszani a csővezeték beállítási szakaszában.
Továbbá, hogy kommunikálni tudjunk a Kubernetes-szel és telepíteni tudjunk rá, be kell állítanunk egy szerepet a gitlab-runner által generált podokhoz.
Ehhez menjünk a gitlab-runner könyvtárba:
cd deploy/gitlab-runner
és adjunk hozzá egy új összetevőt Components/rbac.jsonnet:
Felhívjuk figyelmét, hogy használjuk GIT_SUBMODULE_STRATEGY: normál azokhoz a feladatokhoz, ahol az almodulokat kifejezetten inicializálni kell a végrehajtás előtt.
Azt hiszem, nyugodtan nevezhetjük ezt egy verziónak v0.0.1 és add hozzá a címkét:
git tag v0.0.1
Amikor új verziót kell kiadnunk, címkéket adunk hozzá. A Docker-képekben lévő címkék Git-címkékhez lesznek kötve. Minden új címkével történő leküldés inicializálja a képek összeállítását ezzel a címkével.
teljesít git push --tags, és nézzük az első folyamatot:
Képernyőkép az első csővezetékről
Érdemes felhívni a figyelmet arra, hogy a címkék szerinti összeállítás alkalmas docker képek készítésére, de nem alkalmas alkalmazás Kubernetes-be való telepítésére. Mivel új címkék rendelhetők a régi véglegesítésekhez, ebben az esetben a folyamat inicializálása a régi verzió telepítéséhez vezet.
A probléma megoldása érdekében általában a docker-képek felépítése címkékhez van kötve, és az alkalmazás telepítése egy ágra mester, amelyben az összegyűjtött képek változatai hardkódolva vannak. Itt inicializálhatja a visszaállítást egy egyszerű visszaállítással mester-ágak.
10. A telepítés automatizálása
Annak érdekében, hogy a Gitlab-runner visszafejtse titkainkat, exportálnunk kell a tárolókulcsot, és hozzá kell adnunk a CI környezeti változókhoz:
Itt több új lehetőséget is engedélyeztünk a qbec számára:
--root some/app — lehetővé teszi egy adott alkalmazás könyvtárának meghatározását
--force:k8s-context __incluster__ - ez egy mágikus változó, amely azt mondja, hogy a telepítés ugyanabban a fürtben történik, amelyben a gtilab-runner fut. Erre azért van szükség, mert különben a qbec megpróbál megfelelő Kubernetes szervert találni a kubeconfigban
--várjon — arra kényszeríti a qbec-et, hogy várjon, amíg az általa létrehozott erőforrások kész állapotba kerülnek, és csak ezután lépnek ki sikeres kilépési kóddal.
-Igen - egyszerűen letiltja az interaktív héjat Biztos vagy benne? bevetéskor.
És utána git push meglátjuk, hogyan kerültek telepítésre az alkalmazásaink:
Képernyőkép a második csővezetékről
11. Műtermékek és összeszerelés a masterre tolásakor
Általában a fent leírt lépések elegendőek szinte bármilyen mikroszolgáltatás létrehozásához és biztosításához, de nem szeretnénk minden alkalommal címkét hozzáadni, amikor frissíteni kell az oldalt. Ezért egy dinamikusabb útvonalat választunk, és beállítunk egy kivonat telepítést a fő ágban.
Az ötlet egyszerű: most a mi képünk minden alkalommal újjáépítik, amikor belépsz mester, majd automatikusan telepíti a Kubernetesre.
Frissítsük ezt a két munkát nálunk .gitlab-ci.yml:
Felhívjuk figyelmét, hogy hozzáadtunk egy szálat mester к refs munkahelyekre build_website és most használjuk $CI_COMMIT_REF_NAME helyett $CI_COMMIT_TAG, vagyis a Gitben leválasztjuk a címkéket, és most egy képet fogunk tolni a folyamatot inicializáló commit ág nevével. Érdemes megjegyezni, hogy ez a címkékkel is működik, ami lehetővé teszi számunkra, hogy pillanatképeket mentsünk egy adott verziójú webhelyről a docker-nyilvántartásba.
Ha a webhely új verziójához tartozó docker címke neve változatlanul hagyható, akkor is le kell írnunk a változtatásokat a Kubernetesben, különben egyszerűen nem telepíti át az alkalmazást az új lemezképről, mivel nem észlel semmilyen változást a telepítési jegyzék.
választási lehetőség —vm:ext-str digest=”$DIGEST” qbec esetén - lehetővé teszi egy külső változó átadását a jsonnet számára. Azt akarjuk, hogy az alkalmazásunk minden egyes kiadásával újratelepítsék a fürtben. A címkenevet már nem használhatjuk, ami mostantól megváltoztathatatlan, mivel a kép egy adott verziójához kell kapcsolódnunk, és ha az megváltozik, elindítjuk a telepítést.
Itt segítségünkre lesz Kaniko azon képessége, hogy egy kivonatképet fájlba menthet (opció --kivonat-fájl)
Ezután átvisszük ezt a fájlt, és a telepítéskor elolvassuk.
Frissítsük a paramétereinket deploy/website/environments/base.libsonnet ami most így fog kinézni:
Kész, most bármilyen kötelezettséget vállaljon mester inicializálja a docker lemezkép felépítését , majd telepítse a Kubernetesre.
Ne felejtse el végrehajtani a változtatásainkat:
git add .
git commit -m "Configure dynamic build"
Később ellenőrizzük git push valami ilyesmit kellene látnunk:
Képernyőkép a fő csővezetékről
Elvileg nem kell újratelepítenünk a gitlab-runnert minden egyes lenyomásnál, kivéve, ha természetesen semmi nem változott a konfigurációjában, javítsuk meg .gitlab-ci.yml:
Itt az ideje, hogy dinamikus környezetekkel diverzifikáljuk a folyamatot.
Először frissítsük a munkát build_website a mi .gitlab-ci.yml, távolítsa el róla a blokkot csak, ami arra kényszeríti a Gitlabot, hogy elindítsa azt bármely ágon végrehajtott commit esetén:
Leküldéskor bármely ágra elindulnak, kivéve a mestert, és telepítik a webhely előnézeti verzióját.
Látunk egy új lehetőséget a qbec számára: --app-tag — lehetővé teszi az alkalmazás telepített verzióinak címkézését és csak ezen a címkén belüli működését; a Kubernetes erőforrásainak létrehozásakor és megsemmisítésekor a qbec csak ezekkel fog működni.
Így nem tudunk minden áttekintéshez külön környezetet létrehozni, hanem egyszerűen újra felhasználhatjuk ugyanazt.
Itt is használjuk qbec alkalmazza a felülvizsgálatot, ahelyett qbec alapértelmezett alkalmazása - pontosan ez az a pillanat, amikor megpróbáljuk leírni a környezetünkben tapasztalható különbségeket (áttekintés és alapértelmezett):
Tegyük hozzá Kritika környezet be deploy/website/qbec.yaml
Akkor bejelentjük 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
És írja le az egyéni paramétereket 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',
},
},
}
Nézzük meg közelebbről is a jobu-t stop_review, akkor aktiválódik, amikor az ágat töröljük, és hogy a gitlab ne próbálja meg a fizetést GIT_STRATEGY: nincs, később klónozzuk mester-elágazás, és ezen keresztül törölje a véleményt.
Kicsit zavaró, de ennél szebb módot még nem találtam.
Egy másik lehetőség az, hogy minden értékelést egy szállodanévtérbe helyeznek el, amely mindig teljesen lebontható.
Képernyőkép a Gitlabban létrehozott környezetekről
Minden működik? - remek, töröld a tesztágunkat: git pénztár mester, git push eredet :teszt, ellenőrizzük, hogy a környezettörlési feladatok hiba nélkül működtek-e.
Itt azonnal szeretném tisztázni, hogy egy projektben bármely fejlesztő létrehozhat ágakat, ő is változtathat .gitlab-ci.yml fájlokat és hozzáférést biztosít a titkos változókhoz.
Ezért erősen ajánlott, hogy csak védett ágakban engedélyezzék a használatukat, például in mester, vagy hozzon létre külön változókészletet minden környezethez.
13. Tekintse át az alkalmazásokat
Tekintse át az alkalmazásokat Ez egy GitLab-funkció, amely lehetővé teszi, hogy a tárolóban lévő minden egyes fájlhoz egy gombot adjon hozzá, hogy gyorsan megtekinthesse azokat egy telepített környezetben.
Ahhoz, hogy ezek a gombok megjelenjenek, létre kell hoznia egy fájlt .gitlab/route-map.yml és írja le benne az összes útvonal-transzformációt; esetünkben ez nagyon egyszerű lesz: