
Bliadhna gu leth air ais, air 5 Màrt 2018, leig Google a-mach a’ chiad dreach alpha den phròiseact Open Source CI/CD aige leis an ainm… , aig an robh an t-amas “leasachadh Kubernetes sìmplidh is ath-aithriseach” a chruthachadh gus am b’ urrainn do luchd-leasachaidh fòcas a chuir air leasachadh seach rianachd. Dè tha cho sònraichte mu Skaffold? Tha e a’ tionndadh a-mach gu bheil grunn chleasan aige, ga dhèanamh na inneal cumhachdach do luchd-leasachaidh, agus is dòcha eadhon innleadairean obrachaidh. Bheir sinn sùil nas mionaidiche air a’ phròiseact agus na comasan aige.
NBCo-dhiù, bhruidhinn sinn goirid mu Skaffold mu thràth san artaigil choitcheann againn , aig a bheil am beatha ceangailte ri Kubernetes.
Teòiridh. Adhbhar agus comasan
Mar sin, san fharsaingeachd, bidh Skaffold a’ fuasgladh na trioblaid a thaobh fèin-ghluasad a dhèanamh air cearcall CI/CD (ìrean togail, putadh, cleachdaidh), a’ tabhann fios-air-ais sa bhad do luchd-leasachaidh, i.e., a’ chomas toraidhean nan atharrachaidhean còd as ùire aca fhaighinn gu sgiobalta - ann an cruth aplacaid ùraichte a’ ruith ann an cruinneachadh Kubernetes. Faodaidh an aplacaid seo ruith thar diofar àrainneachdan (leasachadh, ìre, cinneasachadh, msaa.), agus cuidichidh Skaffold le bhith a’ mìneachadh nam loidhnichean-phìoban co-fhreagarrach airson an cleachdaidh.
Tha còd tùsail Skaffold sgrìobhte ann an Go, fo chumhachan Cead Apache 2.0 (GitHub) an-asgaidh.
Seallaidh sinn air na prìomh ghnìomhan agus fheartan. Seo cuid de na ciad fheadhainn:
- Tha innealan aig Skaffold airson loidhnichean-phìoban CI/CD a chruthachadh.
- Leigidh seo leat sùil a chumail air atharrachaidhean sa chòd tùsail agad air a’ chùlaibh agus pròiseas fèin-ghluasadach a chur air bhog airson còd a thogail ann an ìomhaighean container, na h-ìomhaighean sin fhoillseachadh gu Clàr Docker, agus an cur an gnìomh ann an cruinneachadh Kubernetes.
- Sioncronaichidh e faidhlichean san stòr-dàta leis an eòlaire-obrach anns a’ chontair.
- Dèan deuchainnean gu fèin-ghluasadach le container-structure-test.
- Puirt air adhart.
- A’ leughadh logaichean aplacaid a tha a’ ruith ann an soitheach.
- A’ cuideachadh le bhith a’ dì-bhugachadh aplacaidean a chaidh a sgrìobhadh ann an Java, Node.js, Python, Go.
A-nis, mu na feartan:
- Chan eil co-phàirtean taobh a’ chnuic aig an sgafaill fhèin.Tha seo a’ ciallachadh nach eil feum air rèiteachadh a bharrachd de Kubernetes gus an goireas seo a chleachdadh.
- Pìoban eadar-dhealaichte airson an tagraidh agadA bheil feum agad còd a chur gu Minikube ionadail fhad ’s a tha thu a’ leasachadh, agus an uairsin a chur gu àrd-ùrlar no riochdachadh? Tha roghainnean ann airson sin. agus rèiteachaidhean luchd-cleachdaidh, caochladairean àrainneachd, agus brataichean, a leigeas leat diofar loidhnichean-phìoban a mhìneachadh airson aon tagradh.
- CLIGoireas console agus rèiteachaidhean YAML a-mhàin. Tha iomradh ann air oidhirpean gus an cruthachadh air-loidhne. , ach an-dràsta tha seo glè choltach a’ ciallachadh gu bheil feum aig cuideigin air, ach chan ann gu mòr.
- ModularityChan e inneal-buana leis fhèin a th’ ann an Skaffold, ach an àite sin tha e ag amas air modalan fa leth no fuasglaidhean a th’ ann mar-thà a chleachdadh airson gnìomhan sònraichte.
Dealbh den fhear mu dheireadh:
- Aig ìre an t-seata, faodaidh tu a chleachdadh:
- togail docker gu h-ionadail, ann an cruinneachadh a’ cleachdadh kaniko, no ann an Google Cloud Build;
- Bazel gu h-ionadail;
- Jib Maven agus Jib Gradle gu h-ionadail no ann an Google Cloud Build;
- Bidh sgriobtaichean togail gnàthaichte a’ ruith gu h-ionadail. Ma dh’fheumas tu fuasgladh togail eadar-dhealaichte (nas sùbailte/aithnichte/...) a ruith, faodaidh tu a mhìneachadh anns an sgriobt gus an ruith Skaffold e gu sònraichte (). Leigidh seo leat cruinneadair sam bith a chleachdadh a ghabhas gairm le sgriobt;
- Aig ìre na deuchainn, tha taic ri fhaighinn don fhear a chaidh ainmeachadh mar-thà ;
- Tha na leanas air an toirt seachad airson an cur an gnìomh:
- Kubectl;
- Clogad;
- gnàthaich.
Taing dha seo, faodar Scaffold a ghairm gun samhail frèam-obrach airson CI/CD a thogailSeo eisimpleir den t-sruth-obrach nuair a bhios tu ga chleachdadh (bhon sgrìobhainnean pròiseict):

Cò ris a tha obair Scaffold coltach san fharsaingeachd?
- Bidh an goireas a’ cumail sùil air atharrachaidhean anns an eòlaire còd tùsail. Ma thèid atharrachaidhean a dhèanamh air faidhlichean, thèid an sioncronachadh leis a’ pod tagraidh ann an cruinneachadh Kubernetes. Ma ghabhas e dèanamh, thèid seo a dhèanamh gun an ìomhaigh ath-thogail. Rud eile, thèid ìomhaigh ùr a thogail.
- Thèid an ìomhaigh thogte a dhearbhadh le bhith a’ cleachdadh container-structure-test, thèid a tagadh, agus thèid a chur a-steach don Docker Registry.
- Às dèidh seo, thèid an ìomhaigh a chleachdadh ann an cruinneachadh Kubernetes.
- Ma chaidh an cur air bhog a thòiseachadh leis an àithne
skaffold dev, an uairsin bidh sinn a’ tòiseachadh a’ faighinn logaichean bhon tagradh, agus bidh Skaffold a’ feitheamh ri atharrachaidhean gus na gnìomhan uile ath-aithris a-rithist.

Dealbh de na prìomh ìrean ann an obair Skaffold
Cleachdadh. A’ feuchainn sgafaill
Gus cleachdadh Skaffold a shealltainn, gabhaidh mi eisimpleir bho . A bharrachd air an sin, Gheibh thu mòran eisimpleirean eile a bheir aire do dhiofar rudan sònraichte. Bidh mi a’ dèanamh a h-uile ceum gu h-ionadail ann am Minikube. Tha an stàladh sìmplidh agus bheir e beagan mhionaidean, agus feumaidh tu kubectl gus tòiseachadh.
Stàlaicheamaid Scaffold:
curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64
chmod +x skaffold
sudo mv skaffold /usr/local/bin
skaffold version
v0.37.1
Dèanamaid clòn den stòr-tasgaidh Scaffold leis na h-eisimpleirean riatanach:
git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices
Thagh mi eisimpleir le dà phod, gach fear anns a bheil aon aplacaid bheag Go. Is e aon aplacaid an aghaidh-lìn (leeroy-web), a chuireas iarrtasan air adhart chun dàrna aplacaid, an cùl-lìn (leeroy-app). Feuchaidh sinn ri seo a bhith coltach:
~/skaffold/examples/microservices # tree
.
├── leeroy-app
│ ├── app.go
│ ├── Dockerfile
│ └── kubernetes
│ └── deployment.yaml
├── leeroy-web
│ ├── Dockerfile
│ ├── kubernetes
│ │ └── deployment.yaml
│ └── web.go
├── README.adoc
└── skaffold.yaml
4 directories, 8 files
Tha còd Go agus Dockerfiles sìmplidh ann an leeroy-app agus leeroy-web airson a’ chòd seo a thogail gu h-ionadail:
~/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 .
Cha toir mi seachad còd an tagraidh - is leòr fios a bhith agad air sin leeroy-web a’ gabhail ri iarrtasan agus gan toirt gu riochdairean leeroy-appMar sin, anns na faidhlichean Deployment.yaml Chan eil Seirbheis ann ach airson app (airson sligheadh a-staigh). Port pod web Cuiridh sinn air adhart e thugainn fhìn airson ruigsinneachd luath chun an tagraidh.
A rèir coltais skaffold.yaml:
~/skaffold/examples/microservices # cat skaffold.yaml
apiVersion: skaffold/v1beta13
kind: Config
build:
artifacts:
- image: leeroy-web
context: ./leeroy-web/
- image: leeroy-app
context: ./leeroy-app/
deploy:
kubectl:
manifests:
- ./leeroy-web/kubernetes/*
- ./leeroy-app/kubernetes/*
portForward:
- resourceType: deployment
resourceName: leeroy-web
port: 8080
localPort: 9000
Tha na h-ìrean uile a chaidh ainmeachadh gu h-àrd air am mìneachadh an seo. A bharrachd air an rèiteachadh seo, tha faidhle ann cuideachd le roghainnean cruinneil: ~/.skaffold/configFaodar a dheasachadh le làimh no tron CLI—mar eisimpleir, mar seo:
skaffold config set --global local-cluster true
Suidhichidh an àithne seo caochladair cruinneil local-cluster ann an ciall true, agus às dèidh sin cha bhith Skaffold a’ feuchainn ri ìomhaighean a phutadh chun chlàr iomallach. Ma tha thu a’ leasachadh gu h-ionadail, faodaidh tu an àithne seo a chleachdadh gus ìomhaighean a thogail gu h-ionadail.
Air ais gu skaffold.yaml:
- Air an àrd-ùrlar
buildTha sinn a’ sònrachadh gum bu chòir an ìomhaigh a thogail agus a shàbhaladh gu h-ionadail. Às dèidh don togail ruith airson a’ chiad uair, chì sinn na leanas:// т.к. 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.1MBMar a chì thu, chuir Skaffold tagaichean air na h-ìomhaighean gu fèin-ghluasadach. A rèir coltais, tha e a’ toirt taic do ghrunn phoileasaidhean tagaichean.
- Nas fhaide air adhart anns an rèiteachadh tha e air a chomharrachadh
context: ./leeroy-app/, i.e. tha an co-theacsa anns a bheil an ìomhaigh air a chruinneachadh air a shònrachadh. - Aig ìre an cleachdaidh, bidh sinn a’ dearbhadh gun cleachd sinn kubectl agus masg airson nam manifestos a tha a dhìth.
-
PortForwardcoltach ris an dòigh sa bhios sinn mar as trice a’ cur puirt air adhart a’ cleachdadhkubectl port-forward, bheir sinn stiùireadh do Skaffold an àithne seo a ghairm. Anns a’ chùis seo, thèid port ionadail 9000 a chuir air adhart gu 8080 san Deployment leis an ainmleeroy-web.
Tha an t-àm ann airson cur air bhog skaffold devCruthaichidh an àithne “lùb fios-air-ais” leantainneach, a’ ciallachadh nach e a-mhàin gun cruinnich e a h-uile càil agus gun cuir e chun a’ chruinneachaidh e, ach gun cuir e aithris air staid làithreach nam pods, gun dèan e sgrùdadh air atharrachaidhean, agus gun ùraich e staid nam pods.
Seo toradh an cur air bhog skaffold dev --port-forward nuair a bhios tu ga ath-chruinneachadh:

An toiseach, tha e soilleir gu bheil an tasgadan ga chleachdadh. An uairsin, thèid an aplacaid a thogail, a chleachdadh, agus thèid puirt a chur air adhart. Bho --port-forward, Chuir Skaffold am port air adhart gu web, mar a chaidh iarraidh air, ach an seo app Chuir e air adhart e aig a thoil fhèin (a’ taghadh an tè as fhaisge a bha ri fhaighinn). Às dèidh sin, gheibh sinn a’ chiad logaichean bho na h-aplacaidean.
Feuch sinn a bheil e ag obair?
~/skaffold/examples/microservices # kubectl get po
NAME READY STATUS RESTARTS AGE
leeroy-app-6998dfcc95-2nxvf 1/1 Running 0 103s
leeroy-web-69f7d47c9d-5ff77 1/1 Running 0 103s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy app!!!
A’ cur atharrachadh air an fhaidhle leeroy-app/app.go — bidh beagan dhiog a’ dol seachad... agus:
~/skaffold/examples/microservices # kubectl get po
NAME READY STATUS RESTARTS AGE
leeroy-app-ffd79d986-l6nwp 1/1 Running 0 11s
leeroy-web-69f7d47c9d-5ff77 1/1 Running 0 4m59s
~/skaffold/examples/microservices # curl localhost:9000
leeroooooy Habr!!!
Aig an aon àm, chuir Skaffold fhèin an aon rud a-mach chun chonsól ’s a bha e roimhe, ach a-mhàin aon rud: cha deach a chuir a-mach ach leeroy-app, agus chan ann uile aig an aon àm.
Barrachd cleachdaidh
Is fhiach iomradh a thoirt cuideachd, nuair a chruthaicheas tu pròiseact ùr, gum faodar rèiteachaidhean airson Skaffold a thòiseachadh a’ cleachdadh an àithne init, rud a tha glè ghoireasach. A bharrachd air sin, faodaidh tu iomadh rèiteachadh a sgrìobhadh: leasaich air an rèiteachadh bunaiteach, agus an uairsin cuir air bhog chun àrd-ùrlar leis an àithne run (an aon phròiseas ri dev, ach chan eil e a’ cumail sùil air atharrachaidhean), a’ cleachdadh rèiteachadh eadar-dhealaichte.
Tha fear ann air Katacoda Tha an eisimpleir eadhon nas sìmplidh. Ach, tha e a’ tabhann bogsa-gainmhich deiseil le Kubernetes, aplacaid, agus Skaffold. ’S e deagh roghainn a th’ ann ma tha ùidh agad na bunaitean fheuchainn thu fhèin.
Is e aon chleachdadh a dh’ fhaodadh a bhith aig Skaffold leasachadh air cruinneachadh iomallach. Chan eil a h-uile duine comhfhurtail a’ ruith Minikube air a’ bhathar-chruaidh aca fhèin, an uairsin an aplacaid a chuir a-mach agus feitheamh gus an obraich e gu ceart. Anns a’ chùis seo, tha Skaffold na fhuasgladh sàr-mhath, mar a dh’ fhaodar a dhearbhadh le innleadairean Reddit, mar a bhruidhinn sinn mu thràth. anns a' bhlog againn.
Рђ РІ Tha eisimpleir aig Weaveworks air mar a chruthaicheas tu loidhne-phìoban cinneasachaidh.
co-dhùnadh
’S e inneal goireasach a th’ ann an Skaffold airson loidhnichean-phìoban a thogail airson aplacaidean a chleachdadh ann an Kubernetes, ag amas sa mhòr-chuid air feumalachdan leasachaidh. Tha e furasta loidhne-phìoban ghoirid a chruthachadh a bhios a’ freagairt air feumalachdan bunaiteach leasaiche, ach faodar a chleachdadh cuideachd gus pròiseasan nas motha a chuir air dòigh. Is e deagh eisimpleir de chleachdadh Skaffold ann am pròiseasan CI/CD: leithid de de 10 microservices a’ cleachdadh Kubernetes, gRPC, Istio, agus OpenCensus Tracing.
Tha faisg air 8000+ rionnag air a bhith aig Skaffold air GitHub mu thràth, air a leasachadh le Google agus tha e na phàirt de — San fharsaingeachd, an-dràsta tha a h-uile adhbhar ann a bhith a’ creidsinn gun tèid am pròiseact air adhart airson ùine fhada agus gu toilichte.
PS
Leugh cuideachd air ar blog:
- «";
- «";
- «";
- «".
Source: www.habr.com
