ProHoster > Блог > Nchịkwa > Na-anwale ngwaọrụ ọhụrụ maka iwulite na nhazi ọkwa na Kubernetes
Na-anwale ngwaọrụ ọhụrụ maka iwulite na nhazi ọkwa na Kubernetes
Nnọọ! N'oge na-adịbeghị anya, ewepụtala ọtụtụ ngwaọrụ akpaaka dị mma maka iwulite onyonyo Docker yana maka ibuga na Kubernetes. N'akụkụ a, ekpebiri m igwu egwu na GitLab, mụọ nke ọma ike ya na, n'ezie, guzobe pipeline.
Ọrụ a sitere na weebụsaịtị webụsaịtị kubernets.io, nke sitere na koodu isi mmalite na-akpaghị aka, na maka ọdọ mmiri ọ bụla a na-ezigara ya, robot na-ewepụta ụdị nlele nke saịtị ahụ na mgbanwe gị ma na-enye njikọ maka ikiri.
Agbalịrị m ịmepụta usoro yiri nke ahụ site na ọkọ, mana arụnyere kpamkpam na Gitlab CI na ngwaọrụ efu nke m na-eji na-ebuga ngwa na Kubernetes. Taa, m ga-emecha gwa gị ihe gbasara ha.
Isiokwu a ga-atụle ngwaọrụ ndị dị ka: Hugo, qbec, kaniko, git-crypt и GitLab CI na okike nke gburugburu ebe obibi.
Dịka ọmụmaatụ nke ọrụ anyị, anyị ga-agbalị ịmepụta saịtị mbipụta akwụkwọ nke e wuru na Hugo. Hugo bụ ihe na-emepụta ọdịnaya kwụ ọtọ.
Maka ndị na-amaghị nke ọma na ndị na-emepụta static, m ga-agwa gị ntakịrị banyere ha. N'adịghị ka engines webụsaịtị nwere nchekwa data na ụfọdụ PHP, nke, mgbe onye ọrụ rịọrọ ya, na-emepụta ibe na ofufe, a na-emepụta ndị na-emepụta ihe dị iche iche. Ha na-enye gị ohere iwere isi mmalite, na-abụkarị otu faịlụ dị na Markdown markup na ndebiri isiokwu, wee chịkọta ha na webụsaịtị emechachara.
Nke ahụ bụ, n'ihi ya, ị ga-enweta usoro ndekọ aha yana otu faịlụ HTML emepụtara, nke ị nwere ike bulite na nnabata ọ bụla dị ọnụ ala wee nweta ebe nrụọrụ weebụ na-arụ ọrụ.
Ị nwere ike iwunye Hugo na mpaghara wee nwalee ya:
Ịmalite saịtị ọhụrụ:
hugo new site docs.example.org
Ma n'otu oge ahụ git repository:
cd docs.example.org
git init
Ka ọ dị ugbu a, saịtị anyị dị ọcha ma ka ihe wee pụta na ya, anyị ga-ebu ụzọ jikọọ isiokwu; isiokwu bụ naanị ndebiri na iwu akọwapụtara nke sitere na saịtị anyị.
Maka isiokwu anyị ga-eji ịmụta, nke, n'echiche m, dabara nke ọma maka saịtị akwụkwọ.
Ọ ga-amasị m itinye uche pụrụ iche na eziokwu ahụ adịghị anyị mkpa ịchekwa faịlụ isiokwu na ebe nchekwa ọrụ anyị; kama, anyị nwere ike ijikọ ya naanị site na iji. git submodule:
Ya mere, ebe nchekwa anyị ga-enwe naanị faịlụ ndị metụtara ọrụ anyị kpọmkwem, isiokwu ahụ jikọtara ya ga-anọgide dị ka njikọ nke otu ebe nchekwa na ntinye n'ime ya, ya bụ, enwere ike ịdọrọ ya mgbe niile site na isi mmalite ma ghara ịtụ egwu. mgbanwe ekwekọghị.
Ka anyị dozie nhazi ahụ config.toml:
baseURL = "http://docs.example.org/"
languageCode = "en-us"
title = "My Docs Site"
theme = "learn"
Ugbua na ọkwa a ị nwere ike ịgba ọsọ:
hugo server
Na na adreesị http://localhost:1313/ lelee webụsaịtị anyị emepụtara ọhụrụ, mgbanwe niile emere na ndekọ na-akpaghị aka melite ibe mepere emepe na ihe nchọgharị ahụ, dịkwa mma!
Ka anyị gbalịa ịmepụta ibe mkpuchi n'ime ọdịnaya/_index.md:
# My docs site
## Welcome to the docs!
You will be very smart :-)
nseta ihuenyo nke ibe emepụtara ọhụrụ
Iji mepụta saịtị, gbaa ọsọ:
hugo
Ndekọ ọdịnaya ọha/ ma ga-abụ weebụsaịtị gị.
Ee, n'agbanyeghị, ka anyị tinye ya ozugbo .gitigo:
echo /public > .gitignore
Echefula ime mgbanwe anyị:
git add .
git commit -m "New site created"
2. Na-akwado Dockerfile
Ọ bụ oge ịkọwapụta nhazi nke ebe nchekwa anyị. M na-ejikarị ihe dị ka:
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" ]
Dị ka ị pụrụ ịhụ, Dockerfile nwere abụọ SITE, a na-akpọ ohere a multi-ogbo ewu ma na-enye gị ohere iwepụ ihe niile na-adịghị mkpa na foto docker ikpeazụ.
Ya mere, onyonyo ikpeazụ ga-enwe naanị ọchịchịrịhttpd (ihe nkesa HTTP dị arọ) na ọha/ - ọdịnaya nke webụsaịtị anyị emepụtara nke ọma.
Echefula ime mgbanwe anyị:
git add dockerfiles/website
git commit -m "Add Dockerfile for website"
3. Ịmata kaniko
Dịka onye na-ewu ihe onyonyo docker, ekpebiri m iji kaniko, ebe ọ bụ na ọrụ ya adịghị achọ docker daemon, na-ewu n'onwe ya nwere ike ịrụ na igwe ọ bụla na cache nwere ike ịchekwa ozugbo na ndekọ, si otú ahụ na-ewepụ mkpa ọ dị inwe nchekwa na-adịgide adịgide zuru oke.
Iji wuo ihe onyonyo a, naanị were were gbaa akpa ahụ kaniko executor ma nyefee ya ọnọdụ ụlọ ugbu a; nke a nwekwara ike ime na mpaghara, site na docker:
Ebee registry.gitlab.com/kvaps/docs.example.org/website - aha onyonyo docker gị; mgbe emechara ya, a ga-ewepụta ya na-akpaghị aka na ndekọ docker.
Ogologo --cache na-enye gị ohere ịchebe akwa akwa na ndekọ docker; maka ọmụmaatụ enyere, a ga-echekwa ha na registry.gitlab.com/kvaps/docs.example.org/website/cache, mana ị nwere ike ịkọwa ụzọ ọzọ site na iji paramita --cache-repo.
Nseta ihuenyo nke docker-registry
4. Ịmata qbec
Qbec bụ ngwa mbugharị nke na-enye gị ohere ịkọwapụta ngwa ngwa gị n'ụzọ doro anya wee bufee ya na Kubernetes. Iji Jsonnet dị ka syntax bụ isi na-enye gị ohere ime ka nkọwa dị iche iche dị mfe n'ofe gburugburu ebe dị iche iche, yana ọ fọrọ nke nta ka ọ kwụsị kpamkpam ikwughachi koodu.
Nke a nwere ike bụrụ eziokwu n'ọnọdụ ebe ịchọrọ ibuga ngwa n'ọtụtụ ụyọkọ nwere oke dị iche iche ma chọọ ịkọwapụta ha na Git.
Qbec na-enye gị ohere ịnye chaatị Helm site na ịfefe ha ihe ndị dị mkpa wee rụọ ọrụ n'otu ụzọ ahụ dị ka ihe ngosi mgbe niile, gụnyere ị nwere ike itinye mgbanwe dị iche iche na ha, nke a, n'aka nke ya, na-enye gị ohere iwepụ mkpa ọ dị. jiri ChartMuseum. Ya bụ, ị nwere ike chekwaa ma nyekwa eserese ozugbo site na git, ebe ha nwere.
Dị ka m kwuru na mbụ, anyị ga-echekwa ihe niile n'ime akwụkwọ ndekọ aha tinye/:
Ebe a anyị bụ isi mmasị spec.gburugburu, qbec emebelarị anyị ọnọdụ ndabara wee were adreesị nkesa, yana oghere aha site na kubeconfig anyị ugbu a.
Ugbu a mgbe ebuga na ndabara gburugburu ebe obibi, qbec ga-ebuga naanị na ụyọkọ Kubernetes akọwapụtara yana na oghere aha akọwapụtara, ya bụ, ị gaghịzi agbanwe n'etiti ọnọdụ na oghere aha iji bugharịa.
Ọ bụrụ na ọ dị mkpa, ị nwere ike imelite ntọala dị na faịlụ a mgbe niile.
A kọwapụtara gburugburu gị niile na qbec.yaml, na faịlụ params.libsonnet, ebe ọ na-ekwu ebe a ga-enweta paramita maka ha.
Ọzọ anyị na-ahụ akwụkwọ ndekọ aha abụọ:
akụrụngwa/ - A ga-echekwa ihe ngosi niile maka ngwa anyị ebe a; enwere ike ịkọwa ha na jsonnet na faịlụ yaml oge niile
gburugburu/ - ebe a anyị ga-akọwa ihe niile variables (parameters) maka gburugburu anyị.
Site na ndabara anyị nwere faịlụ abụọ:
gburugburu/base.libsonnet - ọ ga-enwe paramita nkịtị maka gburugburu niile
gburugburu/default.libsonnet - nwere paramita ndị agbaghapụrụ maka gburugburu ebe obibi ndabara
ka anyị mepee gburugburu/base.libsonnet ma tinye parampat maka akụrụngwa mbụ anyị ebe ahụ:
Na faịlụ a anyị kọwara ụlọ ọrụ Kubernetes atọ n'otu oge, ndị a bụ: Ịnye ọrụ, Service и Nje. Ọ bụrụ na anyị chọrọ, anyị nwere ike itinye ha n'ime akụkụ dị iche iche, ma n'oge a otu ga-ezuru anyị.
syntax jsonnet yiri json nkịtị, n'ụkpụrụ, regular json adịlarị jsonnet, yabụ na mbụ ọ nwere ike dịrị gị mfe iji ọrụ ịntanetị dị ka. yaml2json iji tọghata yaml gị ka ọ bụrụ json, ma ọ bụ, ọ bụrụ na akụrụngwa gị enweghị mgbanwe ọ bụla, mgbe ahụ enwere ike ịkọwa ya n'ụdị yaml oge niile.
Mgbe ị na -arụ ọrụ jsonnet Ana m akwado ịwụnye ngwa mgbakwunye maka onye ndezi gị
Dịka ọmụmaatụ, enwere ngwa mgbakwunye maka vim vim-jsonnet, nke na-agbanye akara syntax ma na-eme ya ozugbo jsonnet fmt oge ọ bụla ị na-echekwa (chọrọ ka etinyere jsonnet).
Ihe niile dị njikere, ugbu a anyị nwere ike ịmalite ibuga:
Ka anyị hụ ihe anyị nwetara, ka anyị gbaa ọsọ:
qbec show default
Na mmepụta, ị ga-ahụ ngosipụta yaml egosipụtara nke a ga-etinye na ụyọkọ ndabara.
Ọ dị mma, tinye ugbu a:
qbec apply default
Na mmepụta, ị ga-ahụ mgbe niile ihe a ga-eme na ụyọkọ gị, qbec ga-ajụ gị ka ị kwenye na mgbanwe ndị ahụ site na ịpị. y ị ga-enwe ike kwado ebumnobi gị.
Ngwa anyị adịla njikere ma ebuga ya!
Ọ bụrụ na ịmee mgbanwe, ị nwere ike ime:
qbec diff default
ka ịhụ ka mgbanwe ndị a ga-esi metụta ntinye nke ugbu a
Echefula ime mgbanwe anyị:
cd ../..
git add deploy/website
git commit -m "Add deploy for website"
5. Na-agbalị Gitlab-ọsọ na Kubernetes-executor
Ruo n'oge na-adịbeghị anya, naanị m na-eji oge niile gitlab-ọsọ n'igwe akwadoro akwadoro (akpa LXC) nwere shei ma ọ bụ docker-executor. Na mbido, anyị nwere ọtụtụ ndị ọgba ọsọ akọwapụtara n'ụwa niile na gitlab anyị. Ha chịkọtara onyonyo docker maka ọrụ niile.
Ma dị ka omume gosipụtara, nhọrọ a abụghị nke kachasị mma, ma n'ihe gbasara uru na nchekwa. Ọ ka mma na echiche ziri ezi ka ewepụta ndị ọgba ọsọ dị iche iche maka ọrụ ọ bụla, ma ọ bụ ọbụna maka gburugburu ebe ọ bụla.
Ọ dabara nke ọma, nke a abụghị nsogbu ma ọlị, ebe ọ bụ na ugbu a anyị ga-ebuga gitlab-ọsọ ozugbo dị ka akụkụ nke ọrụ anyị na Kubernetes.
Gitlab na-enye eserese hel dị njikere maka ibuga gitlab-ọsọ na Kubernetes. Yabụ na ihe ị ga - eme bụ ịchọpụta ndebanye aha maka oru ngo anyi in Ntọala -> CI / CD -> Ndị na-agba ọsọ ma nyefee ya n'isi:
rbac.create=ezi - na-enye onye na-agba ọsọ ohere dị mkpa iji nwee ike ịmepụta pods iji rụọ ọrụ anyị site na iji kubernetes-executor.
Ọ bụrụ na emechara ihe niile nke ọma, ị ga-ahụ onye na-agba ọsọ edebanyere aha na ngalaba Ndị na-agba ọsọ, na ntọala oru ngo gị.
Nseta ihuenyo nke onye na-agba ọsọ agbakwunyere
Ọ dị mfe otú ahụ? - ee, ọ dị mfe! Enweghị nsogbu ọzọ na ịdebanye aha ndị ọgba ọsọ aka, site ugbu a gaa n'ihu, a ga-emepụta ndị na-agba ọsọ ma bibie ya ozugbo.
6. Tinye chaatị Helm na QBEC
Ebe ọ bụ na anyị kpebiri ịtụle gitlab-ọsọ akụkụ nke ọrụ anyị, oge eruola ịkọwa ya na ebe nchekwa Git anyị.
Anyị nwere ike ịkọwa ya dị ka akụkụ dị iche iche website, ma n'ọdịnihu anyị na-eme atụmatụ ibuga mbipụta dị iche iche website ọtụtụ mgbe, n'adịghị ka gitlab-ọsọ, nke a ga-ebuga naanị otu ugboro kwa ụyọkọ Kubernetes. Yabụ ka anyị bido ngwa dị iche maka ya:
cd deploy
qbec init gitlab-runner
cd gitlab-runner
Oge a anyị agaghị eji aka kọwaa ụlọ ọrụ Kubernetes, mana anyị ga-ewere chaatị Helm emebere. Otu n'ime uru qbec bụ ikike ịmegharị chaatị Helm ozugbo site na ebe nchekwa Git.
Ugbu a ndekọ onye na-ere ere/gitlab-ọsọ Anyị nwere ebe nchekwa nwere eserese maka gitlab-ọsọ.
N'otu aka ahụ, ị nwere ike jikọọ ebe nchekwa ndị ọzọ, dịka ọmụmaatụ, ebe nchekwa niile nwere chaatị ndị ọrụ https://github.com/helm/charts
Ka anyị kọwaa akụkụ ahụ 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,
}
)
Arụmụka mbụ ka gbasaaHelmTemplate anyị na-agafe ụzọ na chaatị ahụ, mgbe ahụ params.uru, nke anyị na-ewere site na paramita gburugburu ebe obibi, wee bịa ihe ahụ
aha Template - aha ntọhapụ
aha - aha oghere agafere na helm
faịlụ a - oke achọrọ nke na-agafe ụzọ faịlụ dị ugbu a
ngwaa - na-egosi iwu template helm na arụmụka niile mgbe ị na-enye eserese ahụ
Ugbu a, ka anyị kọwaa paramita maka akụrụngwa anyị gburugburu/base.libsonnet:
Mana ịchekwa ihe nzuzo na Git adịghị mma, ọ bụ ya? Yabụ na anyị kwesịrị izobe ha nke ọma.
Ọtụtụ mgbe, n'ihi otu mgbanwe, nke a anaghị eme mgbe niile. Ị nwere ike ịnyefe ihe nzuzo na qbec yana site na mgbanwe gburugburu ebe obibi nke usoro CI gị.
Mana ọ dị mma ịmara na enwerekwa ọrụ dị mgbagwoju anya nke nwere ike ịnwe ọtụtụ ihe nzuzo ndị ọzọ; ibufe ha niile site na mgbanwe gburugburu ebe obibi ga-esi ezigbo ike.
Ọzọkwa, na nke a, agaghị m enwe ike ịgwa gị banyere ngwá ọrụ dị ebube dị ka git-crypt.
git-crypt Ọ dịkwa mma n'ihi na ọ na-enye gị ohere ịchekwa akụkọ ihe mere eme nke nzuzo niile, yana atụnyere, jikọta na dozie esemokwu n'otu ụzọ ahụ anyị si eme n'ihe banyere Git.
Ihe mbụ mgbe echichi git-crypt anyị kwesịrị ịmepụta igodo maka ebe nchekwa anyị:
git crypt init
Ọ bụrụ na ị nwere igodo PGP, ị nwere ike tinye onwe gị ozugbo ka onye na-arụkọ ọrụ maka ọrụ a:
Otu a ị nwere ike iji igodo nzuzo gị decrypto ebe nchekwa a mgbe niile.
Ọ bụrụ na ịnweghị igodo PGP ma atụghị anya ya, ị nwere ike ịga n'ụzọ ọzọ wee bupụ igodo ọrụ ahụ:
git crypt export-key /path/to/keyfile
Ya mere, onye ọ bụla nwere mbupụ igodo faịlụ ga-enwe ike decrypt gị ebe nchekwa.
Oge erugo ịtọlite ihe nzuzo mbụ anyị.
Ka m chetara gị na anyị ka nọ na ndekọ aha tinye / gitlab-ọsọ /, ebe anyị nwere ndekọ nzuzo/, ka anyị zoo faịlụ niile dị na ya, maka nke a anyị ga-emepụta faịlụ nzuzo / .gitattributes ya na ọdịnaya ndị a:
Dị ka a na-ahụ site na ọdịnaya, faịlụ niile na-ekpuchi * a ga-ebufe ya git-crypt, ma e wezụga nke kacha .gitattributes
Anyị nwere ike ịlele nke a site na ịgba ọsọ:
git crypt status -e
Mpụta ga-abụ ndepụta faịlụ niile dị na ebe nchekwa nke enyere ezoro ezo
Nke ahụ bụ naanị, ugbu a anyị nwere ike ịme mgbanwe anyị n'enweghị nsogbu:
cd ../..
git add .
git commit -m "Add deploy for gitlab-runner"
Iji gbochie ebe nchekwa, dị nnọọ ọsọ:
git crypt lock
na ozugbo faịlụ niile ezoro ezo ga-aghọ ọnụọgụ abụọ, ọ gaghị ekwe omume ịgụ ha.
Iji mebie ebe nchekwa ahụ, gbaa ọsọ:
git crypt unlock
8. Mepụta ihe oyiyi igbe ngwaọrụ
Onyonyo igbe ngwaọrụ bụ onyonyo nwere ngwa niile anyị ga-eji wepụta ọrụ anyị. Onye na-agba ọsọ Gitlab ga-eji ya rụọ ọrụ mbugharị ahụkarị.
Ihe niile dị mfe ebe a, ka anyị mepụta nke ọhụrụ dockerfiles/igbe ngwaọrụ/Dockerfile ya na ọdịnaya ndị a:
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
Dịka ị na-ahụ, n'onyinyo a anyị wụnye ngwa ngwa niile anyị ji ebubata ngwa anyị. Anyị achọghị ya ebe a belụsọ kubectl, ma ị nwere ike ịchọrọ iji ya gwuo egwu n'oge nhazi pipeline.
Ọzọkwa, ka anyị na Kubernetes nwee ike ịkparịta ụka na ibuga ya, anyị kwesịrị ịhazi ọrụ maka pọd nke gitlab-runner mepụtara.
Iji mee nke a, ka anyị gaa na ndekọ na gitlab-runner:
Echere m na anyị nwere ike ịkpọ nke a ụdị v0.0.1 ma tinye mkpado:
git tag v0.0.1
Anyị ga-agbakwunye mkpado mgbe ọ bụla anyị kwesịrị ịhapụ ụdị ọhụrụ. A ga-ejikọta mkpado dị na onyonyo Docker na mkpado Git. Ntugharị ọ bụla nwere mkpado ọhụrụ ga-eji mkpado a malite nrụpụta onyonyo.
Ka anyị mee ya git push --tags, ka anyị leba anya na pipeline nke mbụ anyị:
Nseta ihuenyo nke pipeline mbụ
Ọ bara uru ịdọrọ uche gị n'eziokwu na mgbakọ site na mkpado dabara adaba maka iwuli ihe onyonyo docker, mana ọ dabaraghị maka ibuga ngwa na Kubernetes. Ebe ọ bụ na enwere ike kenye mkpado ọhụrụ maka ihe ochie, na nke a, ịmalite pipeline maka ha ga-eduga na ntinye nke ụdị ochie.
Iji dozie nsogbu a, a na-ejikọkarị ihe owuwu docker na mkpado, yana ibuga ngwa ahụ na ngalaba. nwe-, nke ụdị ihe onyonyo a na-anakọta bụ hardcode. Nke a bụ ebe ị nwere ike ibido nlọghachi azụ site na iji ntụgharị dị mfe nwe-- alaka.
10. Akpaaka nke ntinye
Ka Gitlab-ọsọ wee mebie ihe nzuzo anyị, anyị ga-ebupụ igodo nchekwa ma tinye ya na mgbanwe gburugburu CI anyị:
N'ebe a, anyị enyerela ọtụtụ nhọrọ ọhụrụ maka qbec:
--mgbọrọgwụ ụfọdụ/ngwa - na-enye gị ohere ikpebi ndekọ nke otu ngwa
--ike:k8s-okwu __incluster__ - nke a bụ mgbanwe anwansi nke na-ekwu na ntinye ga-eme na otu ụyọkọ nke gtilab-ọsọ na-agba ọsọ. Nke a dị mkpa n'ihi na ma ọ bụghị qbec ga-anwa ịchọta sava Kubernetes kwesịrị ekwesị na kubeconfig gị
--echere - na-amanye qbec ka ọ chere ruo mgbe akụrụngwa ọ na-emepụta ga-abanye na steeti njikere wee jiri koodu ọpụpụ na-aga nke ọma pụọ.
— ee - naanị gbanyụọ shei mmekọrịta O doro gị anya? mgbe etinyere ya.
Na mgbe gbaa ọsọ anyị ga-ahụ ka esi etinye ngwa anyị:
Nseta ihuenyo nke pipeline nke abụọ
11. Artifacts na mgbakọ mgbe ị na-akwagharị ka nna ukwu
Dịka, usoro ndị a kọwara n'elu zuru ezu iji wuo ma nyefee ihe fọrọ nke nta ka ọ bụrụ microservice ọ bụla, mana anyị achọghị itinye mkpado oge ọ bụla anyị chọrọ imelite saịtị ahụ. Ya mere, anyị ga-aga n'ụzọ dị ike karị ma guzobe ntinye ngwa ngwa na alaka ụlọ ọrụ.
Echiche dị mfe: ugbu a oyiyi nke anyị website a ga-ewughachi mgbe ọ bụla ị na-agbanye n'ime nwe-, wee bugharịa na Kubernetes na-akpaghị aka.
Ka anyị kwalite ọrụ abụọ a na nke anyị .gitlab-ci.yml:
Biko mara na anyị atụkwasịla eri nwe- к zaghachi maka ọrụ build_website na anyị na-eji ugbu a $CI_COMMIT_REF_NAME kama nke $CI_COMMIT_TAG, ya bụ, a tọhapụrụ anyị site na mkpado na Git ma ugbu a, anyị ga-atụgharị ihe oyiyi na aha ngalaba ntinye nke malitere pipeline. Ọ dị mma ịmara na nke a ga-arụkwa ọrụ na mkpado, nke ga-enye anyị ohere ịchekwa foto nke saịtị nwere ụdị dị na docker-registry.
Mgbe aha mkpado docker maka ụdị saịtị ọhụrụ ahụ enweghị ike ịgbanwe, anyị ka ga-akọwa mgbanwe ndị ahụ na Kubernetes, ma ọ bụghị ya, ọ gaghị emegharị ngwa ahụ site na onyonyo ọhụrụ, ebe ọ bụ na ọ gaghị achọpụta mgbanwe ọ bụla na ntinye. gosi.
Nhọrọ —vm:ext-str digest=”$ DIGEST” maka qbec - na-enye gị ohere ịnyefe mgbanwe mpụga na jsonnet. Anyị chọrọ ka ewegharịa ya na ụyọkọ na mwepụta ọ bụla nke ngwa anyị. Anyị enweghị ike iji aha mkpado ahụ, nke nwere ike ugbu a enweghị ike ịgbanwe, ebe ọ bụ na ọ dị anyị mkpa ijikọ na ụdị onyonyo a kapịrị ọnụ wee kpalite ntinye mgbe ọ gbanwere.
N'ebe a, ikike Kaniko ga-enyere anyị aka ịchekwa onyonyo mgbari na faịlụ (nhọrọ --dijist-faịlụ)
Mgbe ahụ, anyị ga-ebufe faịlụ a ma gụọ ya n'oge ebuga ya.
Ka anyị melite parameters maka anyị deploy/website/environments/base.libsonnet nke ga-adị ugbu a dị ka nke a:
Emechaala, ugbu a tinye aka ọ bụla nwe- na-ebido wuo onyonyo docker maka website, wee bunye ya na Kubernetes.
Echefula ime mgbanwe anyị:
git add .
git commit -m "Configure dynamic build"
Anyị ga-elele ya ma emechaa gbaa ọsọ anyị kwesịrị ịhụ ihe dị ka nke a:
Nseta ihuenyo nke pipeline maka nna ukwu
N'ụkpụrụ, ọ dịghị mkpa ka anyị degharịa gitlab-agba ọsọ na ntanye ọ bụla, ọ gwụla ma, n'ezie, ọ dịghị ihe gbanwere na nhazi ya, ka anyị dozie ya. .gitlab-ci.yml:
Oge erugo iji gbanwee pipeline anyị na gburugburu dị ike.
Mbụ, ka anyị melite ọrụ build_website n'ime anyị .gitlab-ci.yml, wepụ ihe mgbochi ahụ na ya naanị, nke ga-amanye Gitlab ịkpalite ya na ntinye aka ọ bụla na alaka ọ bụla:
A ga-ewepụta ha n'ịkwanye alaka ọ bụla ma e wezụga nna ukwu ma wepụta ụdị nlele nke saịtị ahụ.
Anyị na-ahụ nhọrọ ọhụrụ maka qbec: --app mkpado - ọ na-enye gị ohere ịkpado ụdị ngwa ahụ etinyere ma rụọ ọrụ naanị n'ime mkpado a; mgbe ị na-eke ma na-emebi akụrụngwa na Kubernetes, qbec ga-eji ha rụọ ọrụ naanị.
N'ụzọ dị otú a, anyị enweghị ike ịmepụta ebe dị iche iche maka nyocha ọ bụla, mana naanị iji otu ihe ahụ.
Ebe a anyị na-ejikwa qbec tinye nyocha, kama qbec tinye ndabara - Nke a bụ oge anyị ga-agbalị ịkọwapụta ọdịiche maka gburugburu anyị (nyocha na ndabara):
Ka anyị tinye review gburugburu ebe obibi deploy/webụsaịtị/qbec.yaml
Mgbe ahụ, anyị ga-ekwupụta ya na deploy/webụsaịtị/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
Ma dee paramita omenala maka ya n'ime 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',
},
},
}
Ka anyị lebakwuo anya na jobu stop_review, a ga-akpalite ya mgbe ehichapụ alaka ahụ ka gitlab ghara ịnwa ịlele ya, a na-eji ya. GIT_STRATEGY: onweghị, emesia anyị clone nwe--alaka ma hichapụ nyochaa site na ya.
Ọ dị ntakịrị mgbagwoju anya, mana ahụbeghị m ụzọ mara mma karịa.
Nhọrọ ọzọ ga-abụ ibugharị nyocha ọ bụla na oghere aha ụlọ oriri na ọṅụṅụ, nke enwere ike ịkwatu kpamkpam.
Ihe niile na-arụ ọrụ? - Ọ dị mma, hichapụ ngalaba nnwale anyị: nna ukwu ndenye ego, git push origin:ule, anyị na-enyocha na ọrụ mkpochapụ gburugburu ebe obibi na-arụ ọrụ na-enweghị njehie.
N'ebe a, m ga-achọ ịkọwa ozugbo na onye ọ bụla na-emepụta ihe na ọrụ nwere ike ịmepụta alaka, ọ nwekwara ike ịgbanwe .gitlab-ci.yml faịlụ na ịnweta mgbanwe nzuzo.
Ya mere, a na-atụ aro ike ikwe ka ojiji ha naanị maka alaka ndị echekwara, dịka ọmụmaatụ na nwe-, ma ọ bụ mepụta ụdị mgbanwe dị iche iche maka gburugburu ọ bụla.
13. Nyochaa ngwa
Nyochaa ngwa Nke a bụ njirimara GitLab nke na-enye gị ohere itinye bọtịnụ maka faịlụ ọ bụla na ebe nchekwa iji lelee ya ngwa ngwa na gburugburu ebe ebugara.
Ka bọtịnụ ndị a pụta, ịkwesịrị ịmepụta faịlụ .gitlab/ụzọ-map.yml ma kọwaa mgbanwe ụzọ niile n'ime ya; n'ọnọdụ anyị ọ ga-adị nnọọ mfe: