áááŚáľ 27 á á´ááŚááľáŽáá 2019 áŽááá¨ááľ áá á áłáŤá˝áŁ á¨á áá á áŤá á ááá
á¨ááá áą ááᎠá¨áĽá áááá፠(á¨ááľáá áłá á°áĽá á¨áá áŤá) áłáŞáŤá áááŤá áá á°ááˇá á GitHub áá 1000 áŽá¨áŚá˝ â áĽáŤá°á áŤáá á¨á°á ááá áá á á¨á°áĽ ááĽá DevOps áááá˛áśá˝ ááŽá ááá áĽáá°ááŤá°áá á°áľá áĽáá°ááááá˘
áĽááľá°ááá
áŽáľ áá° Kubernetes á ááľá¨áľ áá
áááአá¨á áá á áá áľá werf á ááááᣠááá áá áľá CI/CD Kubernetesᣠáá
á áááľ áśááľááŤá˝á á áśá¨á áŽáá´áááŽá˝ ááľáĽ áĽáá°áłá¸á áŤáłáŤáᢠ(áľááá
ááłá á°ááááŠá
á Kubernetes ááľá¨áľ áá áááľáá?
- á¨ááľ áá¨ááť áŽáľ áĽá áĽáąá áááááŁáľ áááŞáŤáá˝á á¨áŤá ááᢠá áááŹá˝á á Docker ááľá ááľáĽ á°áááĽáś á Docker áááἠááľáĽ áłáľááá˘
- á°ááłáłáŠ áá¨ááť áá°áá áŞáŤá áĽáá´áľ áá°ááŤáľ áĽá ááľáŹáľ áĽáá°áá˝á áááŞáŤáá˝á áááᢠá áá°ááŤáľ á°á¨á, áĽááá áááŞáŤáá˝ áá° Kubernetes áááŤá, áá á á¨áááááá ááľá á¨áááᥠááľáĽ á°ááĽá áŤáľááá¨áá.
- á á°á¨ááŞá, áĽááá áá áá°ááá˝ á á. á¨áĽááá ááľáĽ á ááłááśáš ááľá á ááłá°áá áľ áá áá°á¨á áá˝áá. áĽáá˛áá (á°ááłáłá áááŞáŤáá˝á á áá¨á°á) á¨áá°áá áŞáŤáá á á (á á°áᨠá¨K8s áľá áŚáł ááá á¨á°áᨠáááľá°á) áá°ááŤáľ áĽá áĽá፠áá¨áŤáá˝á ááŤááľ áá˝ááá˘
- á áá¨á¨áťáᣠᨠGit (ááá á¨á ááŤá á á áłáá˝) ááľá°áśá˝á á¨ááá á áĽá áááá á¨á°áá°áĄáľá á°á¨ááá˝ á¨áá ፠á¨CI áľáááľ áŤáľáááááłáᥠááááŁáľáŁ áá°áᣠáá°ááŤáľáŁ ááá¨áá˘
áĽáá
áĽááľ á áá ááľáłááťáá˝ á á:
- ááááŤáąá á¨ááááἠáá á¨á° áááľ áľááá ááᢠ(á¨ááááἠáá á¨á° áááľ)á ááá á°á¨ááá˝ (ááááᾠᣠááá¨áľ ᣠááá°) áĽá
á áá á¨áááá á¨áá°áá áŞáŤ ááľá ᣠá ááľ ááá á áá áľ. áľááá
ááłá á á áá áááá áĽá á ááłááá˝ á°ááááŠá.
áĽáá . - ááááŤáąá áá á¨á° áááľá áĽáá° áŽáľ á ááŤá¨áĽ áá á¨ááá¨á°ááᢠ(á áá˛á˛), á¨áá°áá áŞáŤ áŽáľ, á¨áááŁá á áĽá á¨ááľááá áááŞáŤáá˝ ááá á ááŁá¸á á áľááá á á ááľ áá¨ááť ááľáĽ. áľááá
ááłá á¨á áá áá¨á áááááľ áááá¨áą
á°ááłáłá ááᣠ. - á¨áááŞáŤ á°áá°ááľ (ááľá¨áľ) áĽá áĽááá áá áĽáá°áá áĽááŤáá-áá°áá áŞáŤá á°á°áĽáľáŚ ᣠá°áá°á ᣠá°ááá (á¨áááá á°á¨á) áĽá ፠áá - áááŞáŤ á°áŤááˇá. áá áĽáá° áĽáááą á¨áá á°á ááá áĽááľá áŤááĄáľá áŤáááᣠá áá°áá á¨ááŤá áá° áááľ á˛áŤá°ááąáľ áĽá áĽá፠áááľ á˛á˝á áĽá áá áááľ á ááˇá. áľááá á¨áááŞáŤ á°áá°ááľ áŤá áá áĽáŹ á ááááᢠá á°ááŁá á°á¨á áá áĽáť (áŠáŤ), ááá á áľááá ᣠáŽáą á¨áááľ á á°ááá°á áľ á á˝á áľ (á á á˛áľ áá°áŤáľ)á˘
áá° áŠá áááľáľ áá°áááá á¨ááľá¨á¨á˘áŤ áá´ áĽááááľáĄ á¨á°áá á¨á á áĽá áĽáť áłááá á áĽáŹá áá
áá á˝áá á á°áááá áá ááᢠá áĽááἠáá
áľááá°-áĽááľ á áá GitOps ááŁáá (áľá áá áĽá á¨áą á áľá°ááᣠáľááá ááłáŚá˝ á¨á áá ááá ἠáá˝ááá˘
á°á¨á ááááŁáľ
Dockerfiles áĽáá´áľ áĽáá°ááá áĽá áĽáá°ááŽáĽ ááá á°á á˛áŤáá
á 2019 áľá Docker ááľáá˝á áľáááááŁáľ áááŤáľ á¨ááľá˝á áááľááᢠdocker build
?... áľáŠá¨áľ áá°áĽáŁá¸á á¨ááááá¸á áááŽá˝ áĽáááĄ-
- á¨ááľá ááĽá°áľ ááłáŽá˝, áľááá
á°á áá
áŁááĽá-á°á¨á á ááľá áá á áľááá ááĽáŤá á áľááá á¨áááá áá°áá áŞáŤ áĽáť ááá°á. - á¨ááĽááĽáŽá˝ áĽááľ á°áá°ááśá˝á á ááŁáá ááááľ á áá áľ
RUN
- áĽáá° áľááá áľáááá˝. - ááá, áá á˝ááŽá˝á áá¨ááŤá áá¨á, ááááŤáąá áľáĽá°áŁá á˛á°áá¨á, á˝ááŠá á¨áá á¨á á°áá°ááľ áľáááááá áľááá ááááľ á ááĽááľ.
- á¨áá°áĽá°á˘áŤ ááĽááľ á áľááá ááááŤáąá áááŚá˝á á ááĽááľ ááááŁáľ áĽá áá¤áąá ááá¨áľ áĽáááááá. áááłáᣠáááá¨áť á ááááĄá áľ áá áá á ááá á¤á°-áá˝áááľ ááľáĽ áŤá áĽááá˝á áĽáá°áá ááááŁáľ á áááááá˘
- áĽá áá á¨á ááľ Git áá¨ááť áŤáľáááááłá áĽá ááľáá˝, áá á á Dockerfiles áľáĽáľáĽ (ááá á á ááľ ááá ááľáĽ á á°á°á¨á á°á¨ááá˝) áĽá á Bash áľááŞááľ á¨á°á¨áłáłá áľáĽá°áŁá¸á áá áááł áá˝áá.
áá ááá á°á á¨ááŤááĽáá á¨á á¨áś ááá áŤá áĽáť áá áᢠáá ááá˝ á˝ááŽá˝á á á, á á°ááá:
- áĽááá áá á áľáĽá°áŁá á°á¨á á ááľ ááá áĽáááááá á°áŤáŤ (áááłá ᣠá¨áśáľá°á ááá áá፠ááľáĽ áŤá á¨áľááá áá¤áľ áá¸ááŤ)á˘
- áĽáááááá á¨áá ፠á áźá ááľáĽ á¨ááťá ááá .
- áĽáááááá áŤá Docker áááᥠ(ááá áááá ááá áááá á¨ááŤáľáááá á°á¨á᪠á¨áášáá áá˝á ááá áŤáľááááá, á áľááľáá áŽáá´áááŽá˝á á¨áááľáŹáľá áľ á¨áŠá áááľáľ áááľá°á áĽáŤáá?).
- áľáአáľáĽá°áŁ, á á°ááŤáŠ ááááśá˝ áá¨áł á¨áá˝á: ᨠDockerfile á¨á°ááŤáŠ áľáááá˝ (áŁááĽá-á°á¨á áĽá á áá á¨áá), áĽá á°ááłáłá áá¨ááťáá˝, á ááŤáł Dockerfiles.
- á¨á°á¨ááá áľáĽá°áŁ: áááŽá˝á á ááłáá˝ ááľáĽ áá°áĽá°áĽ áĽáááááá ááááŤáąá "á¤ááá" áá¸á á¨áĽááą áá¸á፠áá áá, áá á áááľ á á°áᨠáŚáł áááἠá áá áľ.
- á áá¨á¨áťá á¨ááááśá˝á ááᎠáĽáŹ á áŤááľ á ááśáá˛á: áá° áá¨ááťá ááᾠᣠá ááłááľ áľáááá˝á áá°á¨áĽ áĽá áĽáá´áľ áĽá á áľááá áá ááľá¨á áĽááłáá áľ á áá¨áłáľ á°á°áĽáľáŚ á¨á°ááá ááľá ááááľ áĽáŠ ááᢠáááᣠáĽá á áá ááá ááŠááśá˝ á áá ááááľ á áľááľá ááłáŠ áĽáá°áá˝á áĽááá á á áá°áááá˘
áĽá ááŽáááśáš áĽáááááĄ-
-
moby/buildkit - áĽááá á áá á˝ááŽá˝ ááááłáľ áĽá¨áá¨á¨ áŤáá á¨áśá¨á á˘áá (á á áá á¨áśá¨á áľáŞáśá˝ ááľáĽ ááľááá á¨á°ááá°) ááá˘; -
áŤáᎠ- áŤá Docker áĽáá˛ááᥠá¨ááŤáľá˝áá ᨠGoogle ááá˘; -
Buildpacks.io - ᨠCNCF áá¨áŤ á ááśáá˛á á áľááľ áĽá á á°ááá á áľá°áłá˝ áááľá áááĽááĽáŽá˝ áłááá áá á¨áľ; - áĽá áĽáá° ááá˝ áááááŤáá˝ áľáĽáľáĽ
á¤ááłá ,genuinetools/img ...
... áĽá á GitHub áá áľááľ áŽá¨áŚá˝ áĽááłáá¸á á°ááá¨áľá˘ áááľá á á ááľ á áŠá. docker build
á á áĽá á¨áá ááá ááľá¨á áá˝áá, áá á áĽáááą ááłáŠ áá á áá á áá°ááłá á¨áá
áá¨áááŤá á¨á ááŤá á°áĽáłá˘áá˝ áľáአáĽáľááľ áá, áĽáŤááłááąá á¨á˝ááŽášá á ááłááľ áááá˝ áááłá.
á werf ááľáĽ áľáĽá°áŁ
áľááá
á°á¨áľáá˘
á á°ááŤá áĽá á¨á°á¸áááľ á˝ááŽá˝ ááľááá á°á°ááĽá¨áá, áľáአáááŁáłá á á°ááłáłá á áľá°ááá
ááľáĽ á°á ááˇá, áĽá á á˘áŤá áá á¨á°ááášáľ ááłáŽá˝ á á áá áá¨á¨áť áá ááá ááá
áłá
á°áá.
á áááἠá¤áľ ááľáĽ á¨á áľááľ á°á¨á (áá°á)
á°áááᢠdocker push
... - ááľáá áá° áááᥠá ááľáá áá áá á áľá¸á᪠ááá áá˝áá? áĽá áĽáá
áĽáŤáá á¨áááłá "á ááľá áá áá áá፠ááľá¨á á ááĽá?" áŁáá ááááŤáľ áááłá Gitflow (ááá áá á¨ááľ áľáľáŤá´á) áĽá áŠá áááľáľáŁ áĽá á˘áá°áľáľáŞá á áŠá áááľáľ ááľáĽ á¨áááá á ááľ ááľáĽ á¨ááááá áá¨á°áá ááá¨ááἠáĽá¨áá¨á¨ ááᢠáááአááľ á¨áĽáááľ áááŤá˝á áĽáť ááá˘
á áá ááłá áá áá á¨áŁáľ ááá á á? áĽáá°áá ááŁááľá áŤá¨áááĄá á°ááĽáŽ ááľáĽ á¨áááááἠá ááľ ááľáĽ áŤáá ááá áááľ (á¨áááááĽ), áá° áśá¨á ááľá, áĽáąá á°ááłáłá á áá ááአáááἠá áá áľ.
ááĽáá á áľááá áá áááťáá áááľá, ááááŤáąá á áŠá áááľáľ ááľáĽ á¨áá áŤá áá°áá áŞáŤ á¨á¨áľáá áĽáá°á°ááᣠááá¨áłáľ áľááááá (á¨ááŤá ááŠááśá˝á áĽá á°ááłáłá áááŽá˝á ááľá¨á áĽáá˝ááá)á˘
á¨áá፠áľááśá˝
á¨ááááŞáŤá ááá áá git áááŤ. áĽáá° ááľá áá፠á¨á°á°á¨áá áľ áááἠá ááᢠ1.0
. Kubernetes áá
ááľá á¨áá°ááá áľ ááľá¨á áĽá áááľ á ááᢠá ááľ ááľáĽ áá´áłáá˝á áĽáá°áŤáá áĽá á áá áá áá፠áĽáá°áŁáá 2.0
. á¨áá¨ááťá ááľáĽ á á°á°á á áááŞáŤ áá°á¨áľ áĽáá°á áľáŁáá áĽá á áááŤá ááľáĽ á áááἠááľáĽ áĽááľááá ááá 2.0
. áá° ááľá¨á áĽáá ááŁáá áĽá ááá ááá á°á
á á¨áá ᣠá¨á፠áá° áááľá˘
á¨áá
á ááŤá¨áĽ á˝áá á ááááŞáŤ áááŤáá áááááłá˝á áá, áĽá á¨á፠á áá áĽáť áá¨áá áĽá á°áá¨áŁá. ááá? á ááááŞáŤáŁ á ááá á ááááŽá á á áá°ááᥠáĽáľáŤáá áŤááá¨áááá á¨áśááľáá áľáŞáľ áĽá¨á°á á áá (áá ááľá¨á á áá˝ááᣠááááŤáąá áááá°á˝ áá፠ááľá¨á á ááĽá)ᢠá ááá°á á°á¨á, áá
áááᾠᨠGitflow áá á°áłáá á áá°áá.
ááá°áá á ááŤá áá áĄáĄ git ááá¸á + áááŤ. ááá á
áááŤá áá፠á ááᢠ1.0
; ááĽáą á ááááá˘áŤ ááľáĽ - áá° áááľ á¨á°áá¨á ááľá. á á°á¨ááŞá á¨áŠá áááľáľ áááľá°á á
áľá áĽááł áĽá á¨ááłáŤ á
áážá˝ á ááľá˘ á ááá á Gitflowá áĽáá¨á°ááá-á ááá á
áááŤá ááááľ (develop
) á á˛áľ áŁá
áŞáŤáľá áĽáá°áŤááᣠá áá
á ááááŤáľ á¨áá፠áá áá áŞáłá áĽáááŁááᢠ#c1
. áá
áá á᪠á°á á
áá áĽáá°á áľáŁáá áĽá á áááᥠááľáĽ áĽáá°ááá (#c1
). á á°ááłáłáŠ á᪠áá
áľá-áĽááł áĽáááááᢠáĽá á ááá áááľá áĽáá˛á áĽáá°áááá #c2
и #c3
.
á á áŁá
áŞáŤáľ áĽááłá áľááááἠáááá ááá áá¨áááľ áĽááááŤáá. á Git ááľáĽ á
áááŤá ááá አrelease_1.1
(áá°á¨áą áá #c3
ᨠdevelop
). áá
á áááľ áá°áĽá°áĽ á áŤáľááááᣠááááŤáąá... áá
á ááľáá á°á¨á á°á¨áááá. áľááá
ᣠá ááá áá° ááľá¨á áááá¨áá áĽáá˝áááᢠáłááŤáá˝á áĽááľá°áŤáááá #c4
áĽá á á°ááłáłá áááł áá° ááľá¨á ááá¨áŁááᢠá á°ááłáłá áá áááľ áĽá¨á°áŤáá° áá develop
, áááŚá˝ á á¨ááá á¨ááá°áąá áľ release_1.1
. á¨áá áá ááᣠááá áááľ á°á°áĽáľáŚ áá° ááľá¨á á°á°á
áááᣠáá
á á°áľá°áá˝ áá (#c25
).
á¨á፠á¨áááááŤáá á
áááŤá (á ááĽááľ áá°ááľ) áĽáááá
ááárelease_1.1
) á ááá
áááľá˘ á áá
áá áŞáłá áá á¨á á˛áą áľáŞáľ áá áá፠á á°á¨áá (1.1
). áá áá
ááľá ááľááá á áááᥠááľáĽ á°á°áĽáľá§á ᣠáľááá
áĽáá°áá áááá°áĽá°áĽ ᣠá áá áŁáá ááľá áá ááá°á áá፠áĽáá¨ááŤáá (á áá á áááᥠááľáĽ áááŤáá˝ á ááľ) #c25
и 1.1
). á¨á፠á áá áá° áááľ áĽáá ááŁáá.
áá° ááá
áľ á ááľ ááľá áĽáť áá°áá ááľááľ á á (#c25
) áĽá á áááľ ááľáĽ á¨á°áᨠáá (1.1
), ááá áá "á á áŤá" áĽááá
á¨áááᥠááľáĽ á°ááłáłá ááľá áááá¸áá áĽááááá.
áľááááá ááłáą áááááľ ááá áááľ ááá áľáá á¨áá ᣠá ááĽááľ áá°ááľ ááľá¨á á ááĽááľá˘
áá° ááľ áá°á áĽáááľá áĽáá°áŤáá...á¨ááá áśá¨áááá ááłá áĽáááá¨áľáĄ-
FROM ruby:2.3 as assets
RUN mkdir -p /app
WORKDIR /app
COPY . ./
RUN gem install bundler && bundle install
RUN bundle exec rake assets:precompile
CMD bundle exec puma -C config/puma.rb
FROM nginx:alpine
COPY --from=assets /app/public /usr/share/nginx/www/public
á áá¨á°áá ááá áá°á¨áľ á¨áĽáą ááá áĽááááŁ.
- SHA256 á¨á°á áááŁá¸á ááľáá˝ áááŤáá˝ (
ruby:2.3
иnginx:alpine
), á¨áááłá¸á áźáŽá˝ áá¸á; - ááá áĄáľáá˝ (
RUN
,CMD
áĽáá áááĽáá.); - SHA256 á¨á°á¨áአáááá˝á˘
... áĽá áźááąá (áĽáá°áá SHA256) á¨áĽáá°áá á áááľ ááá ááá°áąá˘ áá ááá ᨠDocker ááľáá áááľ á¨áááá˝ ááá ááá.
áá° áĽááá ááááŤá áĽááááľ áĽá á¨áááá ááá
ááááá˝á áĽáá ááááᣠáááľá áĽ.á¤.á . ááľáá˝á á ááááá˝ áá፠áŤáľááá˘
á ááᣠá áľááá áá á˛ááᣠáááłáᣠá¨á°ááááľ áá° áá áááŚá˝á áááááľáŁ áĽááá°á á¨áá
á°áľ áá ááá¸á áĽáá˝áááᥠá¨á°áᨠáá፠ááá¨ááᣠáá á°ááłáłá áááᢠá á°ááłáłáŠ áá፠ááľáá áá° áááľ áĽááá¨áááá˘
ááłáą á áá áá ááááľ ááá áááľ áá° áááľ áĽáá°á°áá ááá°á á ááťáá - áźáŽá˝ á á ááľ á á áŁáŤ áĽáť áá°áŤáᢠáá á˝áá á ááłáłáł á°á¨á᪠ááĽááĽá á°ááˇá - á áá áá á¨á áá áĽáááŤá˝áááá˘
á werf ááľáĽ áá፠ááľá áľ
á áááá á¨á áá ááľá áĽá á á ááľ áá˝á áá á ááá¨áá˝ áá¸á፠á¨á°á¨ááá áááŁáł áááľáŤáľ á ááá áľ áá áá...áľááá áááľ á áááľ á¨áśá¨á ááľáá˝á áĽá¨áááŁá áĽáá áŤá¸áááᢠááľá¨á и ááľá.
ᨠwerf Git áá¨ááť á¨á°ááŤáŠ á¨áááŁáł á°á¨ááá˝á á¨ááááš á áááŁáł-á°áŽá áááŞáŤáá˝á áŤá¨ááťá (á¨ááŤá á ááľ, áŤá, á¨áááá á ááľ, á áááááľ). á¨ááááŞáŤáá á°á¨á ááľá áĽáá° ááááŞáŤááš á°á¨ááá˝ áźá áľáá á¨á°ááḠááá áá áĽáá°á áľáŁáá. á¨ááŤá á¨ááá áŽáąá áĽáá¨ááŤáá, áá á˛áą á°á¨á ááľá á¨áĽáąá áźá áĽáá°ááá ... áĽááá ááááá˝ á ááá á°á¨ááá˝ áá°áááá, á áá á ááááŤáľ á¨ááľá¨á ááľáá˝ áľáĽáľáĽ áĽááááá. á¨ááŤá á¨áá¨á¨áťáá ááľá áĽáá°áŤáá, áĽáąá áľá á ááŁáĄá ááłáłáł ááá. áĽá áá á ááľá á á°ááŤá¨ ááááľ áá፠áĽáá°áŁáá (ááááŽá˝ á áá).
á¨áá
á áá á¨áá°áá áŞáŤá áŽáľ áĽáť á¨á°áá¨á¨á áľ á á˛áľ áá áłá¨ áĽáá áᢠáá áááá? ááŽáľ áááŚá˝áŁ ááŁá á፠ááá áŤá áĽá á á˛áľ á¨ááľá¨á ááľá áááááᢠáááá áĽáá° á áŽáá á¨ááľá¨á ááľá áĽá á¨á á˛áą á áá áźá áľáá ááá°ááᢠá¨áá
ááľá á á˛áľ á¨áá¨á¨áť ááľá ááá áŤáᢠá°ááłáłá áŁá
᪠á¨ááá˝ á°á¨ááá˝ áááŚá˝ áá áá¨á°áłá.
áľááá á¨ááľá¨á ááľáá˝ á áľáááľ áááᥠá¨áá˝á áá¸ááŤáá˝ áá¸á, áĽá á¨áĽáą á¨á°áá áŠáľ ááľáá˝ áá° áśá¨á áááἠá¤áľ áá°ááá.
ááááĄá áá˝áłáľ
á¨á°á°á¨á áááŤáá˝ á áá á¨á°áá áá á ááĽááĽáŽá˝á áľááá°á¨á áĽá¨á°ááááá á áá°áá - áá ᨠDocker áááἠá¤áľ áŤáą áá°á á áŁá ᪠ááᢠáľá á ááľ áááł áĽá¨á°ááááá áŤááá áĽá á¨áśá¨á áááŤáá˝ á˛á¨ááš áĽá á ááłááśášá áĽáá°ááááá á°á¨áľá°áá ááá áá áŚáł áááľáłá (áĽá/áááá áĽáá¨áááá)á˘
á¨á˝áłáľ áľááśá˝ áááľ áá¸á?
- ááá ááľá¨á á áá˝áá á áłá˝áą. á ááłááľ áá áĽá áááŤáá˝á á¨áááłáľ ááá áá°á¨á᪠áŚáł áľáá˝ áááá ááá ááᢠáá áá áĽáľá¨ á ááľ ááĽáĽ áľá¨áľ áĽáť áá á¨áá°áŤá.
- áá áłáá ááľááá. áááá ááľáá˝ á¨á°á¨á áĽá á CI áľáááľ ááľáĽ áŤááľá á áá áŤááľá áĽáť áĽáá°áá á¨á°ááᥠá˝áá ááá á áá˝áá. áŽáá´ááአá áááľ áá áĽáá°áá á¨á°ááá¨, ááĽáą á á˛áľ ááľá ááŤáá - áĽáľáŤáá á ááá áŤáá°á¨ááá . áá á¨ááááἠáá á¨á° áááľá áááľáá.
- á°ááŤá-á á¨ááá´. á ááľ áááἠááĽááľ ááᨠ- ááľáá˝á áá° áá áĽáá°á áááᢠáá áĽáá° ááľáá áá´ á°ááłáłá á˝áá: ááááľ á¨ááá¨áá áááἠá á¨áľáá áá áá˝áłáľ áá˝áá?
- á ááá. á¨1 áá á áá á¨áአááľáá˝ á áá áá°á¨á? áá á áĽááá áááľ áá ááľ áá áŤáááá á áááááľ áááŤá...
- á áĽá á áľááľá áá°á¨á á¨áá˝ááá áááľáá˘
áááľ áĽááá°á á áá á ááŤáŽá˝ á áᥠá áłá˝áą ááá á¨á°ááŤá-á á¨ááá´ + áĽáá¨áľ á áĽá ᢠá ááá°áá ááłá áá áľááá¨á°ááľ ááłáŽá˝ áĽá¨á°ááááá áá-ááááá˘áŤáá ááá˝áłáľ ááá áĽáá°á°á¨á° á˛á¨áą, á á˛áľ ááá አáĽá áááá á á˛áľ ááľáá˝ áá° áĽáą áááłá á áá ááľáĽ áá¨ááŤá. áĽá á¨á ááľ áá á áá á áŠá áááľáľ ááľáĽ á¨áľááš ááśá˝ á ááá á áŽááá áááἠáĽá¨á°á áá áĽáá°áá áááá¨áą áĽá áá° á á˛áą áááἠá¤áľ áŤáľá°áááá˘
áá áá á°áá°ááᢠwerf? áĽá áĽáá°á áľáŁáá:
- Git head: ááá áááŤáá˝, ááá á áááŤáá˝ - á ááľááš ááľáĽ á Git ááľáĽ áá፠á¨á°á°á¨ááŁá¸áá áááŽá˝ áá áĽáá°ááŤáľáááá á áá°áĽ (áĽá áŤááá, á Git áĽáŤáą ááľáĽ áá°á¨á á ááĽá);
- á á áá áá áá° áŠá áááľáľ á¨ááᥠááá áĽáááĽáá˝;
- á¨áľáŽ ReplicaSets (á á áἠáá á¨á°áááá)ᣠáĽá ᨠHelm áááśá˝á áááááľ áĽá á¨á áἠáá ááľáá˝á áĽá፠áááá¨áĽ á á á°ááá˘
... áĽá á¨áá áľáĽáľáĽ á¨á°ááá°áá¸á áááá áŤááá - á¨ááá°ááá¸áá á¨ááľáá˝ ááááᢠáááá ááá áĽáá¸áłáá, á¨á፠á áá ááá á áᣠá¨ááľá¨á ááľáá˝á áĽááááá áĽá áĽááąáá áĽáá°ááá¸ááá.
á°á¨á á á°ááŤ
á áľá°ááá ááááŤ
á áľááŞáľ ááľáĽ áľáŠá¨áľá áááłáĽ á¨ááááá á¨ááááŞáŤá ááĽáĽ á¨á°áťáťáá á¨ááĽá¨áľ áá á áááá ááᣠá á áá á¨á°ááá¸áᢠá¨áŠá áááľáľ ááĽáśá˝á á¨áááá˝ á¨ááááŞáŤá ᨠYAML á°ááľ áá áá á áĽáááą á áááľá°á ááľáĽ á¨áá°áŤá áá¤áľ á áŁá á¨á°áᨠááᢠáŠá áááľáľ áá° áá á áľááá¨áááĄ-
- áááŤáá˝;
- á¨á áááááľ áá¨á;
- áĽá ááŁáŞ áĽá´áśá˝;
- ááá á áá áŤáá áááł áá;
- áĽáá° á¨ááá˘áŤ webhook á áŤá á¨á°á°á¨á áááŚá˝;
- á¨á°ááŤáŠ á°ááŁáŁáŞáá˝ (áĽá á¨áá á°ááłá) áĽáŤ áá¤áľ.
áľááá , á á˛áľ á¨ááĽá¨áľ áá á á˛áᣠ(á á˛áľ) á áá áŤááá á¨"ááĽáł" áá á ááľá°á ááá á áá˝áá (ááá). áá áá áááľá¨á ááááá á ááĽá á á˛áľ á¨áá¨á¨áťá á¨á°á°áá á¨á áá á áá (ááá¨á¨áť áá á¨á°á°áá á¨) áĽá áá° áá ááá¨áŁáá ááá ááŁá á፠á°ááĽáá.
áá á áŤááľ ááŁáá áŁá 2-ááááľ áá á°áľ. áááłá á ááá ááľáĽ áĽá á áá áááá.
á á°á¨ááŞá á á áŁá 3-ááááľ áá á°áľá áá ááľáĽ á¨ááá¨ááĄ-
- áááłá°á ááá¨á¨áť áá á¨á°á°áá ᨠи á á˛áľ, á¨á°á°á¨ááá áĽáááá¨áłáá;
- áááłá°á á á˛áľ и ááá, á¨á°á¨áá¨áá ááá á¨á°ááá áá áĽáááá¨áłáá;
- á¨á°á°áá¨á áááľá°á á áá á°á°ááĽáŻá ááá.
1000+ á áááŹá˝áá˝á ᨠHelm áá á á°ááá°ááᣠáľááá á¨áááá¨á á 2-ááááľ áá á°áľ ááᢠááá ááᣠááá á áá°á áááľ áĽáá˛á ፠á¨áá¨áąá á ááá°áśáťá˝á á¨ááłáá¸á á ááŤáł á˝ááŽá˝ á ááľá˘
áĽááá°á á¨áłáá° áááľ áááł
á¨áĽá á¨á˛á á áľáááľ á áááĽáá ááľá°áľ áá á áááľá¨áľ á Kubernetes á á˛áľ áá
á áŤááᨠá áá áá áááááľ áŤáľá°áááá (á°ááĽá) áá° áááľá°á - Helm á áá áá ááá kubectl apply
. á ááá áᣠáá°á á˛á á¨á°ááá¸á á¨á¤á-ááááľ áá
á°áľ áá¨á°áłáᣠááá
á ᨠKubernetes API á CI áľáááľ áĽá áá°á ááá ááá˝ áá°áŁáá˘
ááá áá, á ááľ áľáá
á˝áá á á: á¨ááá á áá á¨á°áłáŤ áá°áá áŞáŤ áááľ á¨á°áłáŤ áááľ áááľ á áá°ááá˘. áŠá áááľáľ áá áááŚá˝ áá°áá á áĽááłááŁá¸á á¨á°á¨áł áĽá á¨á°á°áá ᨠáá¤áą áá áĽáá°ááá á ááá
á. áááłá á áá°áá ááá ááľáĽ áŤá ááľáá˝á áááá áĽá áĽáá°áá ááľááá áľáŹáłá ááá áá˝áá ááá áá á áááá ááľáĽ á áá°áá áĽá á ááľ á áááŹá˝á ááľáá˝á á¨á°ááŤáŠ áľáŞáśá˝ áĽáááááá˘
áááá ááá á áľááá áááľáŤáľ áá
áĽá
áľ á°á¨á᪠ááááá ááááá - ᨠKubernetes API á¨áááł áá¨á á¨ááá á áĽá á¨áááŽá˝á áľáááá áááł áá áá áľáá°á á¨ááŤáľá°ááá áአáá¨áłá°áŤá˘ á Go ááľáĽ á¨áááľ ááá á¤á°-áá˝áááľ áá áá -
á¨áá
áá¨áłá°áŤ áŁá
᪠á werf á°á¨á á¨á°ááá¨á á Deployments ááá StatefulSets áá á¨á°ááᥠááĽáŤáŞáŤáá˝á á áá áá ááᢠáá ááĽáŤáŞáŤ- fail-mode
- á¨áá¨á°ááľá áľáááá˝ áá¨áłá:
-
IgnoreAndContinueDeployProcess
- áá áá á áŤá á¨áááŁáľá á˝ááŽá˝ á˝á áĽáá áá°ááŤáąá áĽáááĽááá; -
FailWholeDeployProcessImmediately
- á áá á áŤá ááľáĽ áŤá áľá á°áľ á¨áá°ááŤáľ áá°áąá áŤááá; -
HopeUntilEndOfDeployProcess
- áá á áŤá á áá°ááŤáľ áá¨á¨áť áá áĽáá°áá°áŤ á°áľá áĽáá°áááá.
áááłáᣠáá
á¨ááĽáśá˝ áĽá á¨ááĽáŤáŞáŤ áĽá´áśá˝ áĽáá¨áľ fail-mode
:
áááááŞáŤ áá áľáá°áŤá á¨áá¨á ááą (MongoDB) áá ááá áááá áá˝áá - áá°ááŤáľ á ááłáŤáᢠáá áĽáľáŞááá áľá¨áľ áááá áá á á
áľá˝ááá˝áᣠáĽá áá°ááŤáą á ááá áá¨ááááá˘
á werf ááľáĽ ááŠá¤áśá áááľ á°á¨á᪠ááĽáŤáŞáŤáá˝ á áá˘
-
failures-allowed-per-replica
- ááĽáŤááłááą á á á¨áááá°á ááĽá; -
show-logs-until
- á¨ááá á¨áłáá ááľáá˝ ááá (á stdout) áááἠááľáłááťáá˝ áĽáľá¨ááŤáłáŠá áľ áá áľá¨áľ áááŁá áŤáᢠááŁáŞá ááá˘PodIsReady
(áľáŤáá áá° ááľ áááŁáľ á˛ááá á¨áááááá¸áá áááááśá˝ á˝á ááááľ) ááá áá áĽá´áśá˝ áĽáá˛á áá áá¸ááĄControllerIsReady
иEndOfDeploy
.
á¨áá°ááŤáľ áá áá áĽáááááá?
áá°á á˛á á¨á°ááášáľ áááľ ááĽáŚá˝ á á°á¨á᪠áĽá áĽáááááá-
- ááá¨áľá˘ ááááŚá˝ - áĽá á áľááá á¨áááľá áĽáť, áĽá áááá ááá á á°á¨áłáłá á áá°áá;
- áľáŤá áĽáľááľ, ááááŤáąá áľáŤá ááĽá á°áááá˝ "á ááĽáł" á¨á°á°áá, áĽá፠áá áĽá¨á°áá ᨠáĽááłá áá¨áłáľ á áľááá áá;
- á á á ááśáá˛á áááś ááááľ á¨áá á˝áá á¨á°áá ᨠ(áĽá áľááá á¨áá°ááŤáąá áľáááá áááł ááá á áŁá á áľááá áá). áááą á áśáá ááá á áá áľáĄ áá áĽáľá¨ áá¨á¨áťá áŤáááᣠááá ááá ááá áá° ááľáá áááłá ââááááłáá˘
áá¤áśá˝
ááĽá áĽáá° áŠáŁá፠ᣠáááá á¨á°ááášáľá ááŠááśá˝ á á°ááŤáŠ á¨ááľá¨á¨á˘áŤ á°á¨ááá˝ (áááŁáł ᣠáá°á ᣠáá°ááŤáľ) ááá°áá á ᨠCI áľáááľ áĽá áááá፠á á áá¸á á˘
á¨áá°áá°á፠ááá -
á werf áĽáá áá´ááŚááľ áááá˛áśá˝ áĽá á˝ááŽá˝á á áááłáľ á¨ááľ áĽáŠ ááťáťá á áłáá°áá áĽáá á°áá áá
á á¨á°áĽ á˘áŤááľ áá
áá áááá፠á á°ááŁá á˘ááá á°áľ ááááᢠá ááľ áá áĽáŠ áá¤áľ áááááľ ááá áááá.
áŞá˛áŽáá˝ áĽá áľáááśá˝
áŞá˛áŽ á¨á áááá (~ 47 á°áááá˝):
á¨ááá áľ á ááŤá¨áĽá áŞáááľ áŤáľáááĄ
PS
á áĽááá˝á ááľáĽ áľá áŠá áááľáľ ááá˝ áááŁáá˝áĄ-
- ÂŤ
á áŠá áááľáľ ááľáĽ á¨áŤáľ-áľáŹá áĽá á¨ááĽá¨áľ á áľá°áłá°á Âť (á˛ááľáŞ áľáśááŤáŽáᤠá¤ááŞá 27ᣠ2019 á "á áľá" áá); - ÂŤ
Kubernetes ááŤáá áĽá áá፠ (á ááľáŹ áááŽáᣠá¤ááŞá 8ᣠ2019 á Saint HighLoad++ áá); - ÂŤ
á¨ááἠááłáá˝ áĽá Kubernetes Âť (á˛ááľáŞ áľáśááŤáŽáᣠááŹáá á 8ᣠ2018 á ááááľ++ áá); - ÂŤ
ááľáľá áĽá Kubernetes Âť (á˛ááľáŞ áľáśááŤáŽáᣠáá 28ᣠ2018 á RootConf); - ÂŤ
CI/á˛á˛ ᨠKubernetes áĽá GitLab áá áŤá ááἠáááśá˝ Âť (á˛ááľáŞ áľáśááŤáŽáᣠááŹáá á 7ᣠ2017 á ááááľ++ áá); - ÂŤ
á áľáá˝ ááŽáááśá˝ ááľáĽ ᨠKubernetes áá áŤáá áááľ Âť (á˛ááľáŞ áľáśááŤáŽáᣠá°á 6ᣠ2017 á RootConf).
ááá: hab.com