Gore nehafu rapfuura, munaKurume 5, 2018, Google yakaburitsa yekutanga alpha vhezheni yayo Open Source purojekiti yeCI/CD inonzi.
NB: Nenzira, takatotaura muchidimbu nezveSkaffold mune yedu general
Dzidziso. Chinangwa uye kugona
Saka, kazhinji kutaura, Skaffold inogadzirisa dambudziko rekuita otomatiki kutenderera kweCI/CD (pakuvaka, kusunda, kuendesa matanho), ichipa mugadziri wemhinduro yekukurumidza, i.e. kugona kukurumidza kugamuchira mhedzisiro yeanotevera kodhi shanduko - muchimiro cheyakagadziridzwa application inomhanya muKubernetes cluster. Uye inogona kushanda mumasekete akasiyana (dev, nhanho, kugadzirwa ...), iyo Skaffold inobatsira kutsanangura mapaipi anoenderana ekuburitsa.
Skaffold's source code yakanyorwa muGo,
Ngatitarisei mabasa makuru uye maitiro. Yekutanga inosanganisira zvinotevera:
- Skaffold inopa maturusi ekugadzira CI/CD mapaipi.
- Inokutendera kuti utarise shanduko mune kodhi kodhi kumashure uye kumhanya otomatiki maitiro ekuunganidza kodhi mumidziyo mifananidzo, kuburitsa iyi mifananidzo muDocker Registry uye nekuiendesa kune Kubernetes cluster.
- Inowiriranisa mafaera mudura nedhairekitori rekushanda mumudziyo.
- Edza otomatiki uchishandisa mudziyo-chimiro-bvunzo.
- Forwards ports.
- Inoverenga matanda ekushandisa ari mugaba.
- Inobatsira mukugadzirisa zvikumbiro zvakanyorwa muJava, Node.js, Python, Go.
Zvino nezve maficha:
- Skaffold pachayo haina cluster-side components. Ndiko kuti, hapana chikonzero chekuwedzera kugadzirisa Kubernetes kushandisa iyi yekushandisa.
- Mapaipi akasiyana ekushandisa kwako. Iwe unofanirwa kuburitsa kodhi kune yemuno Minikube iwe uchigadzira, uye wozoenda pachinhanho kana kugadzira? Nechinangwa ichi pane
profiles uye zvigadziriso zvemushandisi, nharaunda dzakasiyana uye mireza, izvo zvinokutendera iwe kutsanangura mapaipi akasiyana kune imwe application. - CLI. Chete console utility uye zvigadziriso muYAML. PaInternet unogona kuwana mareferensi ekuedza kugadzira
yekuedza GUI , zvisinei, panguva ino izvi zvingangoreva chete kuti mumwe munhu anomuda, asi kwete chaizvoizvo. - Modularity. Skaffold haisi yekukohwa yakamira yega, asi inovavarira kushandisa mamodule ega kana mhinduro dziripo dzemamwe mabasa.
Mufananidzo wekupedzisira:
- Muchikamu chekutanga unogona kushandisa:
- docker inovaka munharaunda, musumbu uchishandisa kaniko kana muGoogle Cloud Build;
- Bazel locally;
- Jib Maven naJib Gradle munharaunda kana muGoogle Cloud Build;
- tsika kuvaka zvinyorwa zvinomhanya munharaunda. Kana iwe uchida kumhanyisa imwe (inochinjika / yakajairwa /...) kuvaka mhinduro, inotsanangurwa mune script kuitira kuti Skaffold itange iyo (
muenzaniso kubva pazvinyorwa ) Izvi zvinokubvumira kushandisa chero muunganidzi anogona kunzi uchishandisa script;
- Padanho rekuyedza, izvo zvatotaurwa
mudziyo-chimiro-bvunzo ; - Kuti zvitumirwe zvinotevera zvinopihwa:
- Kubectl;
- Helm;
- gadzirisa.
Nekuda kweizvi, Skaffold inogona kunzi yakasarudzika chimiro chekuvaka CI/CD. Heino muenzaniso wekufambisa kana uchiishandisa (kubva pane zvinyorwa zveprojekiti):
Basa raSkaffold rinotaridzika sei mune zvakajairika?
- Iyo yekushandisa monitors inochinja mune source code dhairekitori. Kana magadzirirwo akaitwa kumafaira, anowiriraniswa neiyo application pod muKubernetes cluster. Kana zvichibvira, pasina kubatanidzazve mufananidzo. Zvikasadaro, chifananidzo chitsva chinounganidzwa.
- Mufananidzo wakaunganidzwa unotariswa uchishandisa mudziyo-chimiro-bvunzo, wamaka uye unotumirwa kuDocker Registry.
- Mushure meizvi, chifananidzo chinoiswa - chakaiswa muKubernetes cluster.
- Kana kuvhurwa kwakatangwa uchishandisa murairo
skaffold dev
, ipapo tinotanga kugamuchira matanda kubva pachikumbiro, uye Skaffold inomirira shanduko kuti idzokorore zviito zvese zvakare.
Mufananidzo wematanho makuru eSkaffold oparesheni
Dzidzira. Kuedza Skaffold
Kuratidza kushandiswa kweSkaffold, ini ndichatora muenzaniso kubva
Isa Skaffold:
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
Ngatitorei repository yeSkaffold nemienzaniso inodiwa:
git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices
Ndakasarudza muenzaniso nemapodhi maviri, imwe neimwe iine imwe diki Go application. Imwe application ndeyekumberi (leeroy-web), iyo inodzosera chikumbiro kune yechipiri application - iyo backend (leeroy-app). Ngatione kuti zvinoita sei:
~/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
leeroy-app uye leeroy-web ine Go kodhi uye akareruka Dockerfiles ekuvaka iyi kodhi munharaunda:
~/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 .
Ini handisi kuzopa kodhi yekushandisa - zvakakwana kuziva izvozvo leeroy-web
inogamuchira zvikumbiro uye inozvitumira kune leeroy-app
. Saka mune mafaira Deployment.yaml
pane Sevhisi chete app
(yekutenderera kwemukati). Pod port web
isu tichazvitumira kune isu kuti tiwane nekukurumidza kune application.
Zvinotarisa 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
Matanho ese ataurwa pamusoro anotsanangurwa pano. Pamusoro peiyo gadziriso, kune zvakare faira rine pasi rose marongero - ~/.skaffold/config
. Inogona kugadziridzwa nemaoko kana kuburikidza neCLI - semuenzaniso, seizvi:
skaffold config set --global local-cluster true
Uyu murairo uchaisa shanduko yepasi rose local-cluster
muchirevo true
, mushure mezvo Skaffold haizoedzi kusundira mifananidzo kune kure registry. Kana iwe uri kusimudzira munharaunda, unogona kushandisa murairo uyu kuvaka mifananidzo munharaunda.
Dzokera ku skaffold.yaml
:
- Padariro
build
isu tinotsanangura kuti iwe unofanirwa kuunganidza uye kuchengetedza chifananidzo munharaunda. Mushure mekunge kuvaka kwaita kekutanga, tichaona zvinotevera:// т.к. 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
Sezvauri kuona, Skaffold akamaka iyo mifananidzo pachake. Nenzira, mitemo yakawanda yekumaka inotsigirwa.
- Kuwedzera mune iyo config inoratidzwa
context: ./leeroy-app/
, i.e. mamiriro ezvinhu umo mufananidzo unounganidzwa unotsanangurwa. - Padanho rekuendesa, zvinotemerwa kuti isu tichashandisa kubectl uye mask kune inodiwa inoratidzira.
-
PortForward
: zvakafanana nemaitiro atinowanzo kuendesa madoko tichishandisakubectl port-forward
, tinopa mirairo kuSkaffold kudana uyu murairo. Muchiitiko ichi, chiteshi chemuno 9000 chinoendeswa kune 8080 muDeployment ine zita.leeroy-web
.
Yasvika nguva yekutanga skaffold dev
: Chikwata chichagadzira inoenderera mberi "feedback loop", i.e. kwete chete iyo ichaunganidza zvese nekuzviendesa kune sumbu, asi zvakare ichakuudza nezve mamiriro emapods panguva ino, tarisa shanduko uye kugadzirisa mamiriro epods.
Heino mhedzisiro yekuvhurwa skaffold dev --port-forward
pakuunganidza zvakare:
Kutanga, iwe unogona kuona kuti cache iri kushandiswa. Tevere, chishandiso chinounganidzwa, chinoiswa, uye madoko anotumirwa. Kubva zvatsanangurwa --port-forward
, Skaffold akaendesa chiteshi kune web
, sezvaakabvunzwa, asi pano app
akakanda pakuda kwake (akasarudza ari pedyo akasununguka). Mushure meizvi, tinogashira matanda ekutanga kubva kune zvikumbiro.
Ngatitarisei kuti inoshanda here?
~/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!!!
Kugadzirisa faira leeroy-app/app.go
- masekonzi mashoma anopfuura ... uye:
~/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!!!
Panguva imwecheteyo, Skaffold pachayo yakaratidza chinhu chimwe chete mukoni sepakutanga, kunze kwepoindi imwe chete: yakangobuda. leeroy-app
, uye kwete zvose panguva imwe chete.
More kudzidzira
Izvo zvakakoshawo kutaura kuti kana uchigadzira purojekiti nyowani, configs yeSkaffold inogona kubhutsurwa uchishandisa rairo. init
, iyo iri nyore kwazvo. Uye zvakare, iwe unogona kunyora akati wandei ma configs: ita budiriro pane default config, uye wobva wabuda kuenda pachikuva nemurairo. run
(maitiro akafanana ne dev
, haingotarise shanduko), uchishandisa imwe gadziriso.
Pa katacoda pane
Imwe inogona kushandiswa kesi yeSkaffold ndeyekuita budiriro pane iri kure cluster. Haasi munhu wese akasununguka kumhanyisa Minikube pane yavo hardware, vobva vaburitsa iyo application uye vachitarisira kuti ishande zvakaringana ... Muchiitiko ichi, Skaffold inogadzirisa dambudziko racho zvakakwana, izvo zvinogona kusimbiswa, semuenzaniso, nevanjiniya veReddit, sezvatakaita. zvatokurukurwa
Uye mukati
mhedziso
Skaffold chishandiso chiri nyore chekuvaka mapaipi anosanganisira kuburitsa zvikumbiro kuKubernetes uye anonyanya kutarisana nezvinodiwa zvebudiriro. Zvinoita kuti zvive nyore kugadzira pombi "pfupi" iyo inofunga nezve zvakakosha zvemugadziri, asi kana zvichidikanwa, unogona kuronga maitiro akakura. Semumwe wemienzaniso yakajeka yekushandisa Skaffold muCI / CD maitiro
Skaffold yatove neinoda kusvika 8000+ nyeredzi paGitHub, inogadzirwa neGoogle uye chikamu che
PS
Verenga zvakare pablog yedu:
- «
Zvishandiso zvevagadziri vezvishandiso zvinomhanya paKubernetes "; - «
werf - chishandiso chedu cheCI / CD muKubernetes (muongorori uye mushumo wevhidhiyo) "; - «
Gadheni v0.10.0: Laptop yako haidi Kubernetes "; - «
Kubernetes matipi & matipi: nezve budiriro yenzvimbo uye Telepresence ".
Source: www.habr.com