Lèirmheas air Skaffold airson leasachadh Kubernetes

Lèirmheas air Skaffold airson leasachadh Kubernetes

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… Sgeadaich, 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 lèirmheas air innealan luchd-leasachaidh, 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, air a sgaoileadh le 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. Eadar-aghaidh cleachdaiche deuchainneach, 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 (eisimpleir bho sgrìobhainnean). 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à container-structar-deuchainn;
  • 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):

Lèirmheas air Skaffold airson leasachadh Kubernetes

Cò ris a tha obair Scaffold coltach san fharsaingeachd?

  1. 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.
  2. 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.
  3. Às dèidh seo, thèid an ìomhaigh a chleachdadh ann an cruinneachadh Kubernetes.
  4. 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.

Lèirmheas air Skaffold airson leasachadh Kubernetes
Dealbh de na prìomh ìrean ann an obair Skaffold

Cleachdadh. A’ feuchainn sgafaill

Gus cleachdadh Skaffold a shealltainn, gabhaidh mi eisimpleir bho Stòr-tasgaidh GitHub a’ phròiseict. A bharrachd air an sin, ann 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 build Tha 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.1MB

    Mar 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’ cleachdadh kubectl 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 ainm leeroy-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:

Lèirmheas air Skaffold airson leasachadh Kubernetes

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 stiùireadh 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. sgrìobh anns a' bhlog againn.

Рђ РІ am foillseachadh seo 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: air a thoirt seachad leithid de pròiseact deuchainn 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 Innealan Container Google — 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

Ceannaich aoigheachd earbsach airson làraich le dìon DDoS, frithealaichean VPS VDS 🔥 Ceannaich aoigheachd làrach-lìn earbsach le dìon DDoS, frithealaichean VPS VDS | ProHoster