Якуним сол пеш, 5 марти соли 2018, Google версияи аввалини алфа лоиҳаи Open Source CI/CD-и худро бо номи Скаффолд, ки ҳадафи он эҷод кардани "таҳияи оддӣ ва такроршавандаи Kubernetes" буд, то таҳиягарон на ба маъмурият, балки ба рушд тамаркуз кунанд. Дар бораи Skaffold чӣ ҷолиб буда метавонад? Тавре маълум мешавад, он дорои чанд ҳиллаест, ки метавонад онро як абзори пурқувват барои таҳиягар ва шояд ҳатто муҳандиси амалиёт гардонад. Биёед бо лоиха ва имкониятхои он шинос шавем.
Биёед анбори Скаффолдро бо мисолҳои зарурӣ клон кунем:
git clone https://github.com/GoogleContainerTools/skaffold
cd skaffold/examples/microservices
Ман як мисолро бо ду подка интихоб кардам, ки ҳар яки онҳо як барномаи хурди Go дорад. Яке аз барномаҳо frontend (leeroy-web) мебошад, ки дархостро ба барномаи дуюм - backend (leeroy-app) равона мекунад. Биёед бубинем, ки он чӣ гуна аст:
leeroy-app ва leeroy-web дорои рамзи Go ва файлҳои оддии Docker барои сохтани ин код мебошанд:
~/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 .
Ман рамзи барномаро намедиҳам - донистани он кифоя аст leeroy-web дархостҳоро қабул мекунад ва ба онҳо ваколатнома мерасонад leeroy-app. Аз ин рӯ, дар файлҳо Deployment.yaml танҳо барои он хидмат вуҷуд дорад app (барои масири дохилӣ). Порти подк web барои дастрасии зуд ба барнома мо онро ба худамон мефиристем.
Дар сахна build мо муайян мекунем, ки шумо бояд тасвирро ба таври маҳаллӣ ҷамъоварӣ ва захира кунед. Пас аз он ки сохтмон бори аввал иҷро мешавад, мо инҳоро мебинем:
// т.к. 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
~/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!!!
Дар айни замон, худи Скаффолд дар консол ҳамон чизеро, ки қаблан буд, намоиш дод, ба истиснои як нукта: он танҳо паҳн шуд leeroy-app, ва на ҳама якбора.
Амалияи бештар
Инчунин бояд қайд кард, ки ҳангоми сохтани лоиҳаи нав конфигуратсияҳоро барои Skaffold бо истифода аз фармон пурбор кардан мумкин аст. init, ки хеле қулай аст. Илова бар ин, шумо метавонед якчанд конфигуратсия нависед: коркардро аз рӯи конфигуратсияи пешфарз анҷом диҳед ва сипас бо фармон ба марҳила гузаред. run (ҳамон раванд ҳамчун dev, танҳо тағиротро назорат намекунад), бо истифода аз конфигуратсияи дигар.
Дар катакода вуҷуд дорад роҳнамо Бо як мисол боз ҳам осонтар аст. Аммо он қуттии тайёрро бо Kubernetes, барнома ва Skaffold пешниҳод мекунад. Варианти олӣ, агар шумо ба худатон кӯшиш кардан мехоҳед.