Recensio Skaffold pro Kubernetes evolutionis

Recensio Skaffold pro Kubernetes evolutionis

Ante annum et dimidium, die V mensis Martii, anno MMXVIII Google primum alpha dimisit versionem Open Source propositi CI/CD vocati Skaffoldcuius finis erat "supremam ac iterabilem Kubernetes" creare ut tincidunt potius progressionem quam administrationem intendere possent. What might be interesting about Skaffold? Cum evenit, paucas praestigias manicas habet quae validum instrumentum ad cinematographicum efficere possunt, ac fortasse etiam in machinatione operationum. Demus consilium eiusque facultates cognoscere.

NBObiter iam breviter de Scaffold in generali nostro locuti sumus review of elit instrumentaquorum vita cum Kubernetibus coniuncta est.

Theoria. Propositum et facultates

Ita, generaliter loquendo, Skaffold problema solvit cycli CI/CD automandi (ad structuram, dis, gradus explicandi), elit promptum feedback offerens, i.e. facultas cito proventum recipiendi mutationes codicis subsequentis - in forma applicationis renovationis currentis in botro Kubernetes. Et potest operari in variis circuitibus (dev, scaena, productione...), pro quo Skaffold adiuvat ad describendas fistulas respondentes pro rollout.

Codex Skaffold fons scribitur in Go; per distribui sub libera Apache License 2.0 (GitHub).

Intueamur principalia munera et lineamenta. Prima includit quae sequuntur;

  • Skaffold instrumenta praebet ad pipelines conficiendas CI/CD.
  • Permittit ut monitor mutationes in fonte codice in curriculo currens automated processum conveniendi in codicem in imagines continens, imagines has in Docker Subcriptio typis editas easque ad uvam Kubernetes disponas.
  • Fasciculi synchronises in repositorio cum directorio operario in continente.
  • Automatice probat usura receptaculum-structura test.
  • Progredior portus.
  • Tigna applicationis currit in vase legit.
  • Adjuvat in applicationibus debugging scriptum in Java, Node.js, Python, Go.

Nunc de liniamentis;

  • Scaffold botri laterum non habet. Hoc est^ nihil opus est Kubernetes ad hanc utilitatem configurare amplius uti.
  • Alia pipelines pro applicatione. Num debes emittere codicem ad Minikube localem, dum progrediaris, deinde ad scaenam vel productionem? Ad hanc rem sunt profiles et schematismi utentis, variabilium ambitum et vexilla, quae tibi permittunt diversas fistulas pro una applicatione describere.
  • CLI. Sola utilitas et configurationes consolantur in YAML. In Internet invenire references to conatus creare experimentum GUItamen extemporalis maxime probabile significat aliquem eo indigere, non autem realiter.
  • modularity. Skaffold messor non est stans, sed singulos modulos vel solutiones ad munus specifica exsistens nititur uti.

Illustration of the latter:

  • In comitio scaena uti potes;
    • docker localiter aedificare, in botro utens kaniko vel in Google Cloud Build;
    • Bazel localiter;
    • Jib Maven et Jib Gradle localiter vel in Google Cloud Build;
    • consuetudo scripta construendi localiter currunt. Si aliam solutionem (flexibilior/familiaris/...) currere debes, in scriptione describitur ut Skaffold eam immittat (exempli gratia ex documentis). Hoc tibi permittit uti quemlibet decumanum, qui scriptione utens dici potest;
  • In gradu probationis, de quo iam dictum est continens-structura-test;
  • Ad instruendum ea quae sequuntur sunt providenda:
    • Kubectl;
    • Helm;
    • mos.

Propter hoc, Scaffold dici potest singulare compage ad aedificationem CI / CD *. Hic est exemplum workflow cum eo utendo (ex documentis documentis);

Recensio Skaffold pro Kubernetes evolutionis

Quid opus Skaffold simile generaliter?

  1. Utilitas monitores in indice principii codicis mutatur. Si modificationes ad fasciculos factae sunt, cum applicatione vasculi in Kubernetes botri conformantur. Si fieri potest, sine imagine coeundi. Alioquin nova imago colligitur.
  2. Convenerunt imago adhibita testi-structura, tagged et mittitur ad Subcriptio Docker.
  3. Post hoc imago explicatur — in Kubernetes botrus instruxit.
  4. Si launch cum initialized per mandatum skaffold devtunc incipimus ligna ab applicatione accipientes, et Scaffold mutationes ut iterum actiones omnes repetamus.

Recensio Skaffold pro Kubernetes evolutionis
Illustratio praecipuorum gradus operationis Skaffold

Usu. Conatur Skaffold

Ad usum Skaffold demonstrandum, exemplum sumo ex GitHub project repositio... Viam ibi Multa alia exempla invenire potes quae varias particulares rationes considerant. Omnes actiones localiter in Minikube faciam. Installatio simplex est et pauca minuta accipit, et kubectl ut incipiat opust.

Skaffold install:

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

Clone Skaffold in repositorio sit cum exemplis necessariis:

git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices

Exemplum delegi cum siliquis duobus, unumquodque cum uno parvo Vade applicatione. Una applicatio est frontis (leeroy-web), quae petitio ad alteram applicationem - tergum (leeroy-app). Videamus quid is vultus amo:

~/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 and leeroy-web continent Go codicem ac simplicem Dockerfiles ad aedificandum hunc codicem localiter:

~/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 .

Codicem applicationis non dabo - scire satis est leeroy-web postulata et eorum procuratores ad leeroy-app. Itaque in actis Deployment.yaml Service est solum app (Ad excitandas internus). Vasculum port web nos ad nosmetipsos transmittere promptum accessum ad applicandum.

Is vultus amo 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

Omnes mansiones supra scriptae hic describuntur. Praeter hanc config, fasciculus in uncinis globali est etiam. ~/.skaffold/config. Edere potest manually vel per CLI - exempli gratia, hoc modo:

skaffold config set --global local-cluster true

Hoc mandatum erit in global variabilis local-cluster in significatione truepost quod Skaffold imagines ad subcriptio longinqua impellere non conabitur. Si localiter promoveris, hoc iussu uti potes imagines localiter aedificare.

ad skaffold.yaml:

  • In scaena build denotamus te localiter imaginem colligere et salvare. Post primum edificare currat, sequentia videbimus;
    // т.к. 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

    Ut videre potes, imagines ipse Skaffold tagged. Viam tagging lobortis multa sustentantur.

  • Praeterea in aboutconfig indicatur context: ./leeroy-app/, i.e. contextus in quo imago colligitur specificatur.
  • In scaena instruere, definitum est ut kubectl utemur et larva ad manifestas necessarias.
  • PortForward: Similes quomodo nos solere deinceps portubus utendo kubectl port-forwardpraecipimus ut Skaffold ut hoc mandatum. Hoc in casu, portus loci 9000 ad 8080 transmittuntur in instruere nomine leeroy-web.

Aliquam launch skaffold dev: Turma perennem creabit "ansa feedback", i.e. non solum omnia colliget et ad botrum explicabit, sed etiam indicabit tibi de statu leguminis ad momentum, monitor mutationes et statum siliquae renovabit.

Hic est Lorem effectus skaffold dev --port-forward cum coeundi;

Recensio Skaffold pro Kubernetes evolutionis

Primum videre potes quod cella adhibetur. Deinde congregatur applicatio, explicantur, portus transmittuntur. Cum certa --port-forward, Scaffold portum transmisit to web, ut rogabatur, hic app arbitrio suo proiecit (proximum liberum elegit). Postea tigna ab applicationibus accipimus.

Sit scriptor reprehendo si operatur?

~/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!!!

Modifying tabella leeroy-app/app.go — brevi tempore transierunt... et;

~/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!!!

Eodem tempore Skaffold in console hoc, quod prius, excepto uno puncto ostendit: tantum evolvit. leeroy-appneque subito.

More usu

Illud etiam memorabile est quod, cum novum consilium inierit, confis pro Skaffold, posse praecepto uti bootstrapped initquod est commodum. Praeterea plura scribere potes config: perficiendum progressionem in config defalta, et postea cum mandato evolve in scaenam. run (Idem processus quod dev, modo mutat monitorem non mutat), alia config utens.

De katacoda est ducis Facilius est exemplo. Sed paratam arenam cum Kubernetes, applicationem et Skaffold, praebet. Optio magna, si in ipsis fundamentis te ipsum experiendo es interested.

Usus casus possibilis est pro Skaffold ad progressionem in remoto botro ducere. Non omnes commodius est cursus Minikube in suis ferramentis, deinde evolvit applicationem et exspectans ad munus sufficienter... In hoc casu, Skaffold problema perfecte solvit, quod confirmari potest, exempli gratia, per Reddit fabrum, ut supra iam dictum est scripsit in nostro blog.

et in hoc publication e tela tela exemplum invenias creandi fistulam producendi.

conclusio,

Skaffold instrumentum opportunum est ad fistulas aedificandas quae applicationes ad Kubernetes involvunt et imprimis ad necessitates evolutionis notantur. Perfacile facillime facit pipeline creare quod "brevis" postulata fundamentalia elit attentat, sed, si placet, processus ampliores ordinare potest. Ut una manifesta exempla utendi Skaffold in CI/CD processibus datum est huiusmodi test project of 10 microservices utentes facultates Kubernetes, gRPC, Istio et OpenCensus Tracing.

Skaffold iam fere 8000+ stellas in GitHub habet, a Google evoluta est et pars est GoogleContainerTools — generatim, in momento omni de causa credendum est propositum feliciter semper post futurum.

PS

Lege etiam in nostro diario:

Source: www.habr.com

Add a comment