Chaka ndi theka chapitacho, pa Marichi 5, 2018, Google idatulutsa mtundu woyamba wa alpha wa projekiti yake ya Open Source ya CI/CD yotchedwa. Skaffold, omwe cholinga chawo chinali kupanga "chitukuko chosavuta komanso chobwerezabwereza cha Kubernetes" kotero kuti opanga athe kuyang'ana pa chitukuko m'malo moyang'anira. Ndi chiyani chomwe chingakhale chosangalatsa ndi Skaffold? Zotsatira zake, ili ndi zidule zingapo zomwe zingapangitse kuti ikhale chida champhamvu kwa wopanga, ndipo mwina ngakhale injiniya wa ntchito. Tiyeni tidziwe bwino za polojekitiyi komanso kuthekera kwake.
NB: Mwa njira, takambirana kale mwachidule za Skaffold mu general yathu kuwunika kwa zida zamapulogalamu, omwe moyo wawo umagwirizana ndi Kubernetes.
Chiphunzitso. Cholinga ndi luso
Chifukwa chake, nthawi zambiri, Skaffold amathetsa vuto lakusintha kuzungulira kwa CI/CD (pakumanga, kukankhira, kuyika magawo), kupereka mayankho mwachangu kwa wopanga, i.e. Kutha kulandira mwachangu zotsatira zakusintha kwa code - mu mawonekedwe a pulogalamu yosinthidwa yomwe ikuyenda mu gulu la Kubernetes. Ndipo imatha kugwira ntchito m'mabwalo osiyanasiyana (dev, siteji, kupanga ...), komwe Skaffold imathandizira kufotokozera mapaipi ofananirako.
Khodi ya Skaffold yalembedwa mu Go, wogawidwa ndi pansi pa Apache License 2.0 yaulere (GitHub).
Tiyeni tione ntchito zikuluzikulu ndi mbali. Zoyamba ndi izi:
Skaffold imapereka zida zopangira mapaipi a CI/CD.
Imakulolani kuti muwunikire kusintha kwa gwero lakumbuyo ndikuyendetsa njira yophatikizira yosonkhanitsira ma code kukhala zithunzi zotengera, kusindikiza zithunzizi mu Docker Registry ndikuzitumiza ku gulu la Kubernetes.
Amagwirizanitsa mafayilo omwe ali munkhokwe ndi chikwatu chogwirira ntchito mu chidebe.
Chifukwa cha izi, Skaffold akhoza kutchedwa wapadera chimango chomanga CI/CD. Pano pali chitsanzo cha kayendedwe ka ntchito mukamagwiritsa ntchito (kuchokera ku zolemba za polojekiti):
Kodi ntchito ya Skaffold imawoneka bwanji mwanthawi zonse?
Oyang'anira othandizira amasintha mu code source directory. Ngati zosinthidwa zisinthidwa pamafayilo, amalumikizidwa ndi poda yogwiritsira ntchito mgulu la Kubernetes. Ngati n'kotheka, popanda kukonzanso chithunzicho. Apo ayi, chithunzi chatsopano chasonkhanitsidwa.
Tiyeni tifanizire malo a Skaffold ndi zitsanzo zofunika:
git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices
Ndinasankha chitsanzo ndi ma pod awiri, iliyonse ili ndi pulogalamu yaing'ono ya Go. Ntchito imodzi ndi frontend (leeroy-web), yomwe imatumizanso pempho ku pulogalamu yachiwiri - backend (leeroy-app). Tiyeni tiwone momwe zimawonekera:
leeroy-app ndi leeroy-web zili ndi Go code ndi ma Dockerfiles osavuta opangira khodiyi kwanuko:
~/skaffold/examples/microservices # cat leeroy-app/Dockerfile
FROM golang:1.12.9-alpine3.10 as builder
COPY app.go .
RUN go build -o /app .
FROM alpine:3.10
CMD ["./app"]
COPY --from=builder /app .
Sindipereka nambala yofunsira - ndizokwanira kudziwa izi leeroy-web amavomereza zopempha ndikuzitumizira leeroy-app. Chifukwa chake mumafayilo Deployment.yaml pali Service yokhayo app (zolowera mkati). Pod port web tidzatumiza kwa ife tokha kuti tipeze mwayi wogwiritsa ntchito pulogalamuyi.
Lamuloli lidzakhazikitsa kusintha kwapadziko lonse local-cluster mu mtengo true, pambuyo pake Skaffold sadzayesa kukankhira zithunzi ku registry yakutali. Ngati mukupanga kwanuko, mutha kugwiritsa ntchito lamulo ili kupanga zithunzi kwanuko.
Bwererani ku skaffold.yaml:
Pa siteji build timafotokozera kuti muyenera kusonkhanitsa ndi kusunga chithunzicho kwanuko. Pambuyo pomanga koyamba, tiwona zotsatirazi:
// т.к. Minikube создает кластер в отдельной виртуальной машине,
// придется проникнуть внутрь, чтобы найти образы
# minikube ssh
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
leeroy-app 7d55a50803590b2ff62e47e6f240723451f3ef6f8c89aeb83b34e661aa287d2e 7d55a5080359 4 hours ago 13MB
leeroy-app v0.37.1-171-g0270a0c-dirty 7d55a5080359 4 hours ago 13MB
leeroy-web 5063bfb29d984db1ff70661f17d6efcc5537f2bbe6aa6907004ad1ab38879681 5063bfb29d98 5 hours ago 13.1MB
leeroy-web v0.37.1-171-g0270a0c-dirty 5063bfb29d98 5 hours ago 13.1MB
Ndikoyeneranso kutchula kuti popanga pulojekiti yatsopano, ma configs a Skaffold akhoza kukhazikitsidwa pogwiritsa ntchito lamulo. init, yomwe ili yabwino kwambiri. Kuphatikiza apo, mutha kulemba ma config angapo: chitani chitukuko pazikhazikiko zosasinthika, ndiyeno tulutsani siteji ndi lamulo. run (njira yofanana ndi dev, samangoyang'anira kusintha), pogwiritsa ntchito kasinthidwe kosiyana.
Pa katacoda pali kalozera Ndikosavuta ndi chitsanzo. Koma imapereka bokosi la mchenga lopangidwa kale ndi Kubernetes, ntchito ndi Skaffold. Njira yabwino ngati mukufuna kuyesa zoyambira nokha.
Njira imodzi yogwiritsira ntchito Skaffold ndikuchita chitukuko pamagulu akutali. Sikuti aliyense ali womasuka kuthamanga Minikube pa hardware yawo, kenaka akutulutsa pulogalamuyo ndikuyembekezera kuti igwire ntchito mokwanira ... Pankhani iyi, Skaffold amathetsa vutoli mwangwiro, zomwe zingathe kutsimikiziridwa, mwachitsanzo, ndi akatswiri a Reddit, monga momwe tachitira. takambirana kale analemba mu blog yathu.
Skaffold ndi chida chosavuta chopangira mapaipi omwe amaphatikizapo kutumiza mapulogalamu ku Kubernetes ndipo amayang'ana kwambiri pazachitukuko. Zimapangitsa kukhala kosavuta kupanga payipi "yachidule" yomwe imaganizira zofunikira za wopanga, koma ngati mungafune, mutha kukonza njira zazikulu. Monga chimodzi mwa zitsanzo zomveka bwino zogwiritsira ntchito Skaffold mu njira za CI / CD amapatsidwa yotero test project ya 10 microservices pogwiritsa ntchito Kubernetes, gRPC, Istio ndi OpenCensus Tracing.
Skaffold ili kale ndi nyenyezi pafupifupi 8000+ pa GitHub, yopangidwa ndi Google ndipo ndi gawo la GoogleContainerTools - kawirikawiri, pakali pano pali zifukwa zonse zokhulupirira kuti polojekitiyi idzakhala yosangalala mpaka kalekale.