ProHoster > Pūnaewele > Nā Administration > Ke hoʻāʻo nei i nā mea hana hou no ke kūkulu ʻana a me ka hoʻopololei ʻana i ka hoʻolaha ʻana ma Kubernetes
Ke hoʻāʻo nei i nā mea hana hou no ke kūkulu ʻana a me ka hoʻopololei ʻana i ka hoʻolaha ʻana ma Kubernetes
Aloha! I kēia mau lā, ua hoʻokuʻu ʻia nā mea hana automation maikaʻi loa no ke kūkulu ʻana i nā kiʻi Docker a no ka hoʻoili ʻana iā Kubernetes. Ma kēia mea, ua hoʻoholo wau e pāʻani me GitLab, e aʻo pono i kona hiki a, ʻoiaʻiʻo, hoʻonohonoho i ka pipeline.
Ua hoʻoikaika ʻia kēia hana e ka pūnaewele kubernetes.io, i hanaia mai code kumu 'akomi, a no kēlā me kēia noi wai i ho'ouna 'ia, ho'opuka 'akomi ka lopako i ka mana o ka paena me kāu mau ho'ololi a hā'awi i kahi loulou no ka nānā 'ana.
Ua hoʻāʻo wau e kūkulu i kahi kaʻina hana like mai ka wā ʻōpala, akā ua kūkulu ʻia ma Gitlab CI a me nā mea hana manuahi aʻu i hoʻohana ai e hoʻohana i nā noi i nā Kubernetes. I kēia lā e haʻi hope wau iā ʻoe e pili ana iā lākou.
E kūkākūkā ka ʻatikala i nā mea hana e like me: Hugo, qbec, kaniko, git-crypt и GitLab CI me ka hoʻokumu ʻana i nā kaiapuni dynamic.
Ma ke ʻano he laʻana o kā mākou papahana, e hoʻāʻo mākou e hana i kahi kahua paʻi palapala i kūkulu ʻia ma Hugo. ʻO Hugo kahi mea hana maʻiʻo paʻa.
No ka poʻe i kamaʻāina ʻole i nā generator static, e haʻi hou aku wau iā ʻoe e pili ana iā lākou. ʻAʻole like me nā ʻenekini pūnaewele maʻamau me kahi waihona a me kekahi PHP, i ka wā i noi ʻia e ka mea hoʻohana, e hoʻopuka i nā ʻaoʻao ma ka lele, ua hoʻolālā ʻia nā mea hana static. Hāʻawi lākou iā ʻoe e lawe i nā kumu, maʻamau i kahi hoʻonohonoho o nā faila ma Markdown markup a me nā kumu hoʻohālike, a laila e hōʻuluʻulu iā lākou i kahi pūnaewele paʻa.
ʻO ia, ma muli o ka hopena, e loaʻa iā ʻoe kahi papa kuhikuhi a me kahi hoʻonohonoho o nā faila HTML i hana ʻia, hiki iā ʻoe ke hoʻouka i kahi hoʻokipa haʻahaʻa a loaʻa kahi pūnaewele hana.
Hiki iā ʻoe ke hoʻokomo iā Hugo ma ka ʻāina a hoʻāʻo iā ia:
Ke hoʻomaka nei i kahi pūnaewele hou:
hugo new site docs.example.org
A i ka manawa like ka waihona git:
cd docs.example.org
git init
I kēia manawa, maʻemaʻe kā mākou pūnaewele a i mea e ʻike ʻia ai kekahi mea ma luna, pono mākou e hoʻohui i kahi kumumanaʻo; ʻo kahi kumumanaʻo he hoʻonohonoho o nā templates a me nā lula kikoʻī i hana ʻia ai kā mākou pūnaewele.
No ke kumuhana a mākou e hoʻohana ai E aʻo, ʻo ia, i koʻu manaʻo, kūpono loa no kahi kahua palapala.
Makemake wau e nānā nui i ka ʻoiaʻiʻo ʻaʻole pono mākou e mālama i nā faila kumuhana i kā mākou waihona papahana; akā, hiki iā mākou ke hoʻohui iā ia me ka hoʻohana ʻana. git submodule:
No laila, ʻo kā mākou waihona e loaʻa wale nā faila e pili pono ana i kā mākou papahana, a e mau ke kumuhana pili i kahi loulou i kahi waihona kikoʻī a me kahi hana i loko, ʻo ia hoʻi, hiki ke huki mau ʻia mai ke kumu kumu a ʻaʻole makaʻu. hoʻololi like ʻole.
E hoʻoponopono i ka config config.toml:
baseURL = "http://docs.example.org/"
languageCode = "en-us"
title = "My Docs Site"
theme = "learn"
I kēia manawa hiki iā ʻoe ke holo:
hugo server
A ma ka helu wahi http://localhost:1313/ e nānā i kā mākou pūnaewele hou i hana ʻia, nā hoʻololi a pau i hana ʻia i ka papa kuhikuhi e hoʻohou i ka ʻaoʻao wehe i ka polokalamu kele pūnaewele, kūpono loa!
E ho'āʻo kākou e hana i kahi ʻaoʻao uhi ma maʻiʻo/_index.md:
# My docs site
## Welcome to the docs!
You will be very smart :-)
Kiʻi kiʻi o ka ʻaoʻao hou i hana ʻia
No ka hana ʻana i kahi pūnaewele, holo wale:
hugo
Nā mea waihona lehulehu/ a ʻo ia kāu pūnaewele.
ʻAe, ma ke ala, e hoʻohui koke kākou iā ia .gigignore:
echo /public > .gitignore
Mai poina e hoʻokomo i kā mākou hoʻololi:
git add .
git commit -m "New site created"
2. Hoʻomākaukau i ka Dockerfile
ʻO ka manawa kēia e wehewehe i ke ʻano o kā mākou waihona. Hoʻohana pinepine au i kekahi mea e like me:
dockerfiles/ - loaʻa nā papa kuhikuhi me Dockerfiles a me nā mea āpau e pono ai no ke kūkulu ʻana i kā mākou kiʻi Docker.
kau aku/ — aia nā papa kuhikuhi no ka hoʻolele ʻana i kā mākou mau noi iā Kubernetes
No laila, e hana mākou i kā mākou Dockerfile mua ma ke ala 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" ]
E like me kāu e ʻike ai, aia i ka Dockerfile ʻelua FROM, kapa ʻia kēia hiʻohiʻona hana nui-pae a hiki iā ʻoe ke hoʻokaʻawale i nā mea āpau ʻole mai ke kiʻi docker hope loa.
No laila, e loaʻa wale ke kiʻi hope poulihttpd (māmā HTTP kikowaena) a lehulehu/ - ka ʻike o kā mākou pūnaewele i hoʻokumu ʻia.
Mai poina e hoʻokomo i kā mākou hoʻololi:
git add dockerfiles/website
git commit -m "Add Dockerfile for website"
3. ʻIke i kaniko
Ma ke ʻano he mea hana kiʻi docker, ua hoʻoholo wau e hoʻohana kaniko, no ka mea ʻaʻole pono kāna hana i kahi docker daemon, a hiki ke hana ʻia ke kūkulu ponoʻī ma luna o kekahi mīkini a hiki ke mālama pono ʻia ka cache i loko o ka papa inoa, a laila e hoʻopau i ka pono e loaʻa kahi waihona hoʻomau piha.
No ke kūkulu ʻana i ke kiʻi, e holo wale i ka ipu me kaniko executor a hāʻawi iā ia i ka pōʻaiapili kūkulu o kēia manawa; hiki ke hana ʻia kēia ma ka wahi, ma o docker:
'Ahea registry.gitlab.com/kvaps/docs.example.org/website - ka inoa o kāu kiʻi docker; ma hope o ke kūkulu ʻana, e hoʻokuʻu ʻia ia i loko o ka papa inoa docker.
ʻO ka pākuhi --cache hiki iā ʻoe ke hūnā i nā papa ma ka papa inoa docker; no ka laʻana i hāʻawi ʻia, e mālama ʻia lākou i loko registry.gitlab.com/kvaps/docs.example.org/website/cache, akā hiki iā ʻoe ke kuhikuhi i kahi ala ʻē aʻe me ka hoʻohana ʻana i ka parameter --cache-repo.
Kiʻi o ka docker-registry
4. Ka ike ana i qbec
Qbec he mea hana e hiki ai iā ʻoe ke wehewehe wehewehe i kāu mau palapala noi a kau iā lākou i nā Kubernetes. ʻO ka hoʻohana ʻana iā Jsonnet ma ke ʻano he syntax nui e hiki ai iā ʻoe ke maʻalahi i ka wehewehe ʻana i nā ʻokoʻa ma waena o nā kaiapuni he nui, a aneane hoʻopau loa i ka hana hou ʻana i nā code.
Hiki ke ʻoiaʻiʻo loa kēia i nā hihia kahi e pono ai ʻoe e kau i kahi noi i kekahi mau pūʻulu me nā ʻokoʻa ʻokoʻa a makemake e wehewehe wehewehe iā lākou ma Git.
ʻAe ʻo Qbec iā ʻoe e hāʻawi i nā palapala Helm ma ka hāʻawi ʻana iā lākou i nā palena kūpono a laila e hana iā lākou ma ke ʻano like me nā hōʻike maʻamau, me ka hiki iā ʻoe ke hoʻopili i nā ʻano like ʻole iā lākou, a ʻo ia hoʻi, hiki iā ʻoe ke hoʻopau i ka pono. hoʻohana i ChartMuseum. ʻO ia hoʻi, hiki iā ʻoe ke mālama a hāʻawi pololei i nā pakuhi mai git, kahi o lākou.
E like me kaʻu i ʻōlelo ai ma mua, e mālama mākou i nā deployments āpau i ka papa kuhikuhi kau aku/:
Maanei mākou makemake nui i spec.environments, ua hana mua ʻo qbec i kahi kaiapuni paʻamau no mākou a lawe i ka helu kikowaena, a me ka inoa inoa mai kā mākou kubeconfig o kēia manawa.
I kēia manawa i ka hoʻolaha ʻana i ka paʻamau kaiapuni, e hoʻoili mau ʻo qbec i ka puʻupuʻu Kubernetes i ʻōlelo ʻia a i ka inoa inoa i ʻōlelo ʻia, ʻo ia hoʻi, ʻaʻole pono ʻoe e hoʻololi i waena o nā pōʻaiapili a me nā inoa inoa i mea e hana ai i kahi hoʻolālā.
Inā pono, hiki iā ʻoe ke hoʻololi mau i nā hoʻonohonoho i kēia faila.
Ua wehewehe ʻia kāu mau kaiapuni a pau ma qbec.yaml, a ma ka waihona params.libsonnet, kahi e ʻōlelo ai kahi e loaʻa ai nā ʻāpana no lākou.
A laila ʻike mākou i ʻelua papa kuhikuhi:
eiiiiiaiou / - E mālama ʻia nā hōʻike a pau no kā mākou noi; hiki ke wehewehe ʻia ma jsonnet a me nā faila yaml maʻamau
kaiapuni/ - maanei e wehewehe mākou i nā ʻano like ʻole (parameters) no kā mākou kaiapuni.
Ma ka maʻamau, loaʻa iā mākou ʻelua faila:
environments/base.libsonnet - e loaʻa nā ʻāpana maʻamau no nā kaiapuni āpau
environments/default.libsonnet — loaʻa nā ʻāpana ʻokoʻa no ke kaiapuni ka paʻamau
e wehe kakou environments/base.libsonnet a hoʻohui i nā ʻāpana no kā mākou mea mua ma laila:
Ma kēia faila ua wehewehe mākou i ʻekolu hui Kubernetes i ka manawa hoʻokahi, penei: kuhikuhi i ka hana, Service и Pau. Inā makemake mākou, hiki iā mākou ke hoʻokomo iā lākou i loko o nā ʻāpana like ʻole, akā i kēia manawa e lawa ia no mākou.
Ka Mooolelo O jsonnet Ua like loa ia me ka json maʻamau, ma ke kumu, ua kūpono ʻo json maʻamau i ka jsonnet, no laila i ka wā mua e maʻalahi paha ʻoe e hoʻohana i nā lawelawe pūnaewele e like me yaml2json e hoʻololi i kāu yaml maʻamau i json, a i ʻole, inā ʻaʻole i loaʻa i kāu mau mea hoʻololi, a laila hiki ke wehewehe ʻia ma ke ʻano o ka yaml maʻamau.
Ke hana pū nei jsonnet Manaʻo nui wau e hoʻokomo i kahi plugin no kāu hoʻoponopono
No ka laʻana, aia kahi plugin no vim vim-jsonnet, e ho'ā ana i ka hōʻailona syntax a hoʻokō 'akomi jsonnet fmt i kēlā me kēia manawa āu e mālama ai (pono i hoʻokomo ʻia ʻo jsonnet).
Ua mākaukau nā mea a pau, i kēia manawa hiki iā mākou ke hoʻomaka e kau:
E ʻike i ka mea i loaʻa iā mākou, e holo kāua:
qbec show default
Ma ka hopena, e ʻike ʻoe i nā hōʻike yaml i hoʻohana ʻia i ka hui paʻamau.
Maikaʻi, e hoʻohana i kēia manawa:
qbec apply default
Ma ka hopena e ʻike mau ʻoe i nā mea e hana ʻia i kāu hui, e noi ʻo qbec iā ʻoe e ʻae i nā loli ma ke kākau ʻana. y hiki iā ʻoe ke hōʻoia i kou manaʻo.
Ua mākaukau a hoʻolālā ʻia kā mākou noi!
Inā hoʻololi ʻoe, hiki iā ʻoe ke hana i nā manawa a pau:
qbec diff default
e ʻike i ka hopena o kēia mau hoʻololi i ka hoʻolaha ʻana i kēia manawa
Mai poina e hoʻokomo i kā mākou hoʻololi:
cd ../..
git add deploy/website
git commit -m "Add deploy for website"
5. Ke ho'āʻo nei iā Gitlab-runner me Kubernetes-executor
A hiki i kēia manawa ua hoʻohana maʻamau wale au gitlab-runner ma ka mīkini i hoʻomākaukau mua ʻia (LXC pahu) me ka pūpū a i ʻole docker-executor. I ka wā mua, ua loaʻa iā mākou kekahi mau mea holo i ka honua i wehewehe ʻia i kā mākou gitlab. Ua hōʻiliʻili lākou i nā kiʻi docker no nā papahana āpau.
Akā, e like me ka hoʻomaʻamaʻa i hōʻike ʻia, ʻaʻole kēia koho ka mea kūpono loa, ma ke ʻano o ka pono a me ka palekana. ʻOi aku ka maikaʻi a me ka noʻonoʻo pono e hoʻokaʻawale ʻia nā mea holo kaʻawale no kēlā me kēia papahana, a i ʻole no kēlā me kēia kaiapuni.
ʻO ka mea pōmaikaʻi, ʻaʻole pilikia kēia, no ka mea i kēia manawa e hoʻolaha mākou gitlab-runner pololei ma ke ʻano he ʻāpana o kā mākou papahana ma Kubernetes.
Hāʻawi ʻo Gitlab i kahi pakuhi helm i mākaukau no ka hoʻoili ʻana i ka gitlab-runner iā Kubernetes. No laila ʻo ka ʻike wale nō āu e hana ai hōʻailona hōʻailona no kā mākou papahana ma Nā hoʻonohonoho -> CI / CD -> Nā mea holo a hāʻawi aku i ka hoʻokele.
yga8y-jdCusVDn_t4Wxc — hōʻailona hoʻopaʻa inoa no kāu papahana.
rbac.create=ʻoiaʻiʻo - hāʻawi i ka mea holo i ka nui o nā pono e hiki ai ke hana i nā pods e hana i kā mākou mau hana me ka hoʻohana ʻana i ka kubernetes-executor.
Inā hana pololei nā mea a pau, pono ʻoe e ʻike i kahi mea holo i hoʻopaʻa inoa ʻia ma ka ʻāpana Holoholo, ma kāu hoʻonohonoho papahana.
Kiʻi kiʻi o ka mea holo i hoʻohui ʻia
He maʻalahi anei ia? - ʻAe, maʻalahi kēlā! ʻAʻohe pilikia hou me ka hoʻopaʻa inoa ʻana i nā kukini me ka lima, mai kēia manawa e hana ʻia a luku ʻia nā mea holo.
6. E hoʻolālā i nā palapala Helm me QBEC
Mai ko makou manao e noonoo gitlab-runner ʻāpana o kā mākou papahana, ʻo ia ka manawa e wehewehe ai i kā mākou waihona Git.
Hiki iā mākou ke wehewehe ma ke ʻano he ʻāpana ʻokoʻa paena, akā i ka wā e hiki mai ana mākou e hoʻolālā e kau i nā kope like ʻole paena pinepine loa, like ole gitlab-runner, e kau ʻia hoʻokahi wale nō no ka hui Kubernetes. No laila e hoʻomaka kākou i kahi noi kaʻawale no ia:
cd deploy
qbec init gitlab-runner
cd gitlab-runner
I kēia manawa ʻaʻole mākou e wehewehe lima i nā hui Kubernetes, akā e lawe i kahi pakuhi Helm i mākaukau. ʻO kekahi o nā mea maikaʻi o qbec ka hiki ke hāʻawi pololei i nā palapala Helm mai kahi waihona Git.
E hoʻohui iā ia me ka hoʻohana ʻana i ka submodule git:
I kēia manawa ka papa kuhikuhi mea kūʻai/gitlab-runner Loaʻa iā mākou kahi waihona me kahi pakuhi no gitlab-runner.
Ma ke ʻano like, hiki iā ʻoe ke hoʻohui i nā waihona ʻē aʻe, no ka laʻana, ka waihona holoʻokoʻa me nā palapala kiʻi https://github.com/helm/charts
E wehewehe kākou i ka ʻāpana component/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,
}
)
ʻO ka hoʻopaʻapaʻa mua i expandHelmTemplate hele mākou i ke ala i ka pakuhi, a laila params.values, ka mea a mākou e lawe ai mai nā ʻāpana kaiapuni, a laila hele mai ka mea me
nameTemplate - inoa hoʻokuʻu
namespace - hoʻoili ʻia ka inoa inoa i ka hoʻokele
keiaPila - kahi ʻāpana e pono ai e hele i ke ala i ka faila o kēia manawa
haʻi waha - hōʻike i ke kauoha kāʻei hoʻokele me nā hoʻopaʻapaʻa a pau i ka wā e hāʻawi ai i ka pakuhi
I kēia manawa e wehewehe mākou i nā ʻāpana no kā mākou ʻāpana i environments/base.libsonnet:
Akā ʻaʻole palekana ka mālama ʻana i nā mea huna ma Git, ʻaʻole anei? No laila pono mākou e hoʻopili pono iā lākou.
ʻO ka mea maʻamau, no ka manaʻo o hoʻokahi hoʻololi, ʻaʻole kūpono kēia i nā manawa a pau. Hiki iā ʻoe ke hoʻololi i nā mea huna i qbec a ma o nā hoʻololi kaiapuni o kāu ʻōnaehana CI.
Akā he mea pono ke hoʻomaopopo ʻia aia kekahi mau papahana paʻakikī i hiki ke loaʻa i nā mea huna hou aʻe; e paʻakikī loa ka hoʻoili ʻana iā lākou āpau ma o nā ʻano hoʻololi.
Eia kekahi, i kēia hihia ʻaʻole hiki iaʻu ke haʻi iā ʻoe e pili ana i kahi mea hana kupanaha e like me git-crypt.
git-crypt He mea maʻalahi hoʻi ia e hiki ai iā ʻoe ke mālama i ka mōʻaukala holoʻokoʻa o nā mea huna, a me ka hoʻohālikelike ʻana, hoʻohui a hoʻoholo i nā paio e like me kā mākou maʻamau e hana ai i ka hihia o Git.
ʻO ka mea mua ma hope o ke kau ʻana git-crypt pono mākou e hana i nā kī no kā mākou waihona:
git crypt init
Inā loaʻa iā ʻoe kahi kī PGP, a laila hiki iā ʻoe ke hoʻohui koke iā ʻoe iho ma ke ʻano he hoa hana no kēia papahana:
Ma kēia ala hiki iā ʻoe ke hoʻokaʻawale i kēia waihona me ka hoʻohana ʻana i kāu kī pilikino.
Inā ʻaʻohe kī PGP a manaʻo ʻole ʻoe, a laila hiki iā ʻoe ke hele ma ke ala ʻē aʻe a hoʻokuʻu aku i ke kī pāhana:
git crypt export-key /path/to/keyfile
No laila, ʻo kēlā me kēia mea i lawe ʻia i waho waihona kī hiki iā ia ke hoʻokaʻawale i kāu waihona.
ʻO ka manawa kēia e hoʻonohonoho i kā mākou mea huna mua.
E hoʻomanaʻo wau iā ʻoe aia mākou i ka papa kuhikuhi deploy/gitlab-runner/, kahi i loaʻa iā mākou kahi papa kuhikuhi mea huna/, e hoʻopili kākou i nā faila a pau i loko, no kēia e hana mākou i faila mea huna/.gitattributes me keia mau mea:
E like me ka ʻike ʻia mai ka ʻike, ua uhi ʻia nā faila āpau * e hoʻokele ʻia git-crypt, koe wale no ka nui loa .gitattributes
Hiki iā mākou ke nānā i kēia ma ka holo ʻana:
git crypt status -e
He papa inoa o nā faila a pau i loko o ka waihona kahi i hiki ai ke hoʻopili ʻia
ʻO ia wale nō, i kēia manawa hiki iā mākou ke hana palekana i kā mākou mau hoʻololi:
cd ../..
git add .
git commit -m "Add deploy for gitlab-runner"
No ka pale ʻana i kahi waihona, holo wale:
git crypt lock
a e lilo koke nā faila i hoʻopili ʻia i mea binary, ʻaʻole hiki ke heluhelu iā lākou.
No ka wehe ʻana i ka waihona, holo:
git crypt unlock
8. E hana i kahi kiʻi pahu hana
ʻO ke kiʻi pahu pahu hana he kiʻi me nā mea hana a pau a mākou e hoʻohana ai no ka hoʻolālā ʻana i kā mākou papahana. E hoʻohana ʻia e ka mea holo Gitlab e hana i nā hana hoʻonohonoho maʻamau.
Maʻalahi nā mea a pau ma ʻaneʻi, e hana kākou i mea hou dockerfiles/toolbox/Dockerfile me keia mau mea:
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
E like me kāu e ʻike ai, ma kēia kiʻi mākou e hoʻokomo ai i nā pono āpau a mākou i hoʻohana ai e kau i kā mākou noi. ʻAʻole pono mākou ma ʻaneʻi ke ʻole kubectl, akā makemake paha ʻoe e pāʻani me ia i ka wā hoʻonohonoho pipeline.
Eia kekahi, i hiki iā mākou ke kamaʻilio me nā Kubernetes a kau aku iā ia, pono mākou e hoʻonohonoho i kahi kuleana no nā pods i hana ʻia e gitlab-runner.
No ka hana ʻana i kēia, e hele kāua i ka papa kuhikuhi me gitlab-runner:
Manaʻo wau hiki iā mākou ke kapa palekana i kēia he mana v0.0.1 a hoʻohui i ka tag:
git tag v0.0.1
E hoʻohui mākou i nā hōʻailona i ka wā e pono ai mākou e hoʻokuʻu i kahi mana hou. E hoʻopaʻa ʻia nā kiʻi ma nā kiʻi Docker i nā inoa Git. E hoʻomaka ana kēlā me kēia paʻi me kahi hōʻailona hou i ke kūkulu ʻana i nā kiʻi me kēia tag.
E hana kāua git push --tags, a e nānā kākou i kā mākou paipu mua:
Kiʻi kiʻi o ka paipu mua
He mea pono ke kau ʻana i kou manaʻo i ka ʻoiaʻiʻo o ka hui ʻana ma nā hōʻailona kūpono no ke kūkulu ʻana i nā kiʻi docker, akā ʻaʻole kūpono no ka hoʻoili ʻana i kahi noi iā Kubernetes. No ka mea hiki ke hāʻawi ʻia nā hōʻailona hou i nā hana kahiko, i kēia hihia, ʻo ka hoʻomaka ʻana i ka pipeline no lākou e alakaʻi i ka hoʻolaha ʻana o ka mana kahiko.
No ka hoʻoponopono ʻana i kēia pilikia, hoʻopaʻa ʻia ke kūkulu ʻana i nā kiʻi docker i nā hōʻailona, a me ka waiho ʻana o ka noi i kahi lālā. haku, kahi i hoʻopaʻa inoa ʻia ai nā mana o nā kiʻi i hōʻiliʻili ʻia. ʻO kēia kahi e hiki ai iā ʻoe ke hoʻomaka i ka rollback me kahi hoʻihoʻi maʻalahi haku- nā lālā.
10. 'Otomatika o ka hoʻolaha
I mea e hoʻokaʻawale ai ʻo Gitlab-runner i kā mākou mea huna, pono mākou e hoʻokuʻu aku i ke kī waihona a hoʻohui iā ia i kā mākou mau mea hoʻololi CI:
Eia mākou i hiki ai i kekahi mau koho hou no qbec:
--root kekahi/app - hiki iā ʻoe ke hoʻoholo i ka papa kuhikuhi o kahi noi kikoʻī
--ikaika:k8s-context __incluster__ - he mea hoʻololi kilokilo kēia e ʻōlelo ana e hoʻokō ʻia ka hoʻolaha ʻana i ka pūʻulu like kahi e holo ai ʻo gtilab-runner. Pono kēia no ka mea inā ʻaʻole e hoʻāʻo ʻo qbec e ʻimi i kahi kikowaena Kubernetes kūpono i kāu kubeconfig
--kali — hoʻoikaika iā qbec e kali a hiki i nā kumuwaiwai āna i hana ai e hele i loko o ke kūlana Mākaukau a laila e puka wale me kahi code exit-code.
-ʻAe - hoʻopau wale i ka pūpū pili He 'oiaʻiʻo kēnā? i ka wā i hoʻoili ʻia.
A mahope iho pahu kuʻi git e ʻike mākou pehea i kau ʻia ai kā mākou mau noi:
Kiʻi kiʻi o ka paipu lua
11. Nā mea hana a me ka hui ʻana i ka wā e paʻi ana i ka haku
ʻO ka maʻamau, lawa nā ʻanuʻu i hōʻike ʻia ma luna nei e kūkulu a hāʻawi i kahi microservice, akā ʻaʻole mākou makemake e hoʻohui i kahi hōʻailona i kēlā me kēia manawa e pono ai mākou e hoʻonui i ka pūnaewele. No laila, e lawe mākou i kahi ala ʻoi aku ka ikaika a hoʻonohonoho i kahi hoʻoili ʻana ma ka lālā kumu.
He maʻalahi ka manaʻo: i kēia manawa ke kiʻi o kā mākou paena e kūkulu hou ʻia i kēlā me kēia manawa āu e hoʻokomo ai haku, a laila hoʻopololei i nā Kubernetes.
E hōʻano hou i kēia mau hana ʻelua i kā mākou .gitlab-ci.yml:
E ʻoluʻolu, ua hoʻohui mākou i kahi pae haku к refs no na hana build_website a ke hoʻohana nei mākou i kēia manawa $CI_COMMIT_REF_NAME ma kahi o $CI_COMMIT_TAG, ʻo ia hoʻi, ua wehe ʻia mākou mai nā hōʻailona ma Git a i kēia manawa e pana mākou i kahi kiʻi me ka inoa o ka lālā commit i hoʻomaka i ka pipeline. He mea pono e hoʻomaopopo e hana pū kēia me nā hōʻailona, e hiki ai iā mākou ke mālama i nā kiʻi paʻi o kahi pūnaewele me kahi kikoʻī kikoʻī i ka docker-registry.
Ke hoʻololi ʻole ʻia ka inoa o ka docker tag no kahi mana hou o ka pūnaewele, pono mākou e wehewehe i nā loli i nā Kubernetes, inā ʻaʻole ia e hoʻihoʻi hou i ka noi mai ke kiʻi hou, ʻoiai ʻaʻole ia e ʻike i nā loli i ka hōʻike hoʻolaha.
Koho —vm:ext-str digest = “$DIGEST” no qbec - hiki iā ʻoe ke hāʻawi i kahi hoʻololi waho i jsonnet. Makemake mākou e hoʻihoʻi ʻia i loko o ka pūpū me kēlā me kēia hoʻokuʻu ʻana o kā mākou noi. ʻAʻole hiki iā mākou ke hoʻohana hou i ka inoa inoa, ʻaʻole hiki ke hoʻololi ʻia i kēia manawa, no ka mea pono mākou e hoʻopaʻa ʻia i kahi mana kikoʻī o ke kiʻi a hoʻomaka i ka hoʻoili ʻana i ka wā e loli ai.
Ma ʻaneʻi e kōkua ʻia mākou e ka hiki iā Kaniko ke mālama i kahi kiʻi digest i kahi faila (koho --digest-file)
A laila e hoʻoili mākou i kēia faila a heluhelu iā ia i ka manawa o ka waiho ʻana.
E hōʻano hou i nā ʻāpana no kā mākou deploy/website/environments/base.libsonnet e like me kēia:
Hana ʻia, i kēia manawa ke komo i loko haku hoʻomaka i ke kūkulu ʻana i ke kiʻi docker no paena, a laila e kau iā Kubernetes.
Mai poina e hoʻokomo i kā mākou hoʻololi:
git add .
git commit -m "Configure dynamic build"
E nānā mākou ma hope pahu kuʻi git pono mākou e ʻike i kekahi mea e like me kēia:
Kiʻi kiʻi o ka paipu no ka haku
Ma ke kumu, ʻaʻole pono mākou e hoʻihoʻi hou i ka gitlab-runner me kēlā me kēia pana, ke ʻole, ʻoiaʻiʻo, ʻaʻohe mea i loli i kāna hoʻonohonoho ʻana, e hoʻoponopono i loko. .gitlab-ci.yml:
ʻO ka manawa kēia e hoʻololi i kā mākou pipeline me nā kaiapuni ikaika.
ʻO ka mua, e hoʻohou i ka hana build_website i loko o kā mākou .gitlab-ci.yml, e wehe ana i ka poloka mai ia mea wale no, ka mea e koi ai iā Gitlab e hoʻomaka iā ia ma kekahi hana i kekahi lālā:
E hoʻokuʻu ʻia lākou ma ka pana ʻana i kekahi mau lālā koe wale nō ka haku a e kau i ka mana o ka paena.
ʻIke mākou i kahi koho hou no qbec: --app-tag - hiki iā ʻoe ke hoʻopaʻa inoa i nā mana o ka noi a hana wale i loko o kēia tag; i ka wā e hana ai a luku i nā kumuwaiwai ma Kubernetes, e hana wale ʻo qbec me lākou.
Ma kēia ala ʻaʻole hiki iā mākou ke hana i kahi kaʻawale no kēlā me kēia loiloi, akā hoʻohana hou i ka mea like.
Maʻaneʻi mākou hoʻohana qbec noi i ka loiloi, ma kahi o qbec hoʻohana paʻamau - ʻo kēia ka manawa e hoʻāʻo ai mākou e wehewehe i nā ʻokoʻa no kā mākou kaiapuni (nānā a me ka paʻamau):
E hoʻohui kākou manual kaiapuni i deploy/website/qbec.yaml
A laila e haʻi aku mākou i loko 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
A kākau iho i nā ʻāpana maʻamau no ia i loko 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',
},
},
}
E nānā pono kākou i ka jobu stop_review, e hoʻoulu ʻia i ka wā i holoi ʻia ai ka lālā a no laila ʻaʻole hoʻāʻo ʻo gitlab e nānā aku ua hoʻohana ʻia. GIT_STRATEGY: ʻaʻohe, ma hope mākou clone haku- lālā a holoi i ka loiloi ma o ia.
He mea huikau iki, akā, ʻaʻole au i ʻike i kahi ala ʻoi aku ka nani.
ʻO kahi koho ʻē aʻe, ʻo ia ke kau ʻana i kēlā me kēia loiloi i kahi inoa inoa hōkele, hiki ke hoʻopau loa ʻia.
Ke hana nei nā mea a pau? - maikaʻi, holoi i kā mākou lālā hoʻāʻo: haku ʻoki puka, git push kumu: ho'āʻo, ʻike mākou i ka hana ʻana o nā hana holoi kaiapuni me ka hewa ʻole.
Maʻaneʻi makemake wau e wehewehe koke e hiki i kekahi mea hoʻomohala i kahi papahana ke hana i nā lālā, hiki iā ia ke hoʻololi .gitlab-ci.yml waihona a komo i nā mea huna.
No laila, koi ikaika ʻia e ʻae i kā lākou hoʻohana wale ʻana no nā lālā i pale ʻia, no ka laʻana ma haku, a i ʻole e hana i kahi ʻokoʻa o nā mea hoʻololi no kēlā me kēia kaiapuni.
13. Nānā Apps
Nānā i nā polokalamu ʻO kēia kahi hiʻohiʻona GitLab e hiki ai iā ʻoe ke hoʻohui i kahi pihi no kēlā me kēia faila i loko o ka waihona e ʻike koke iā ia i kahi wahi i hoʻonohonoho ʻia.
I mea e ʻike ʻia ai kēia mau pihi, pono ʻoe e hana i kahi faila .gitlab/route-map.yml a wehewehe i nā hoʻololi ala āpau i loko; i kā mākou hihia he mea maʻalahi loa ia: