Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг развСртывания Π² Kubernetes – это Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ вашСго прилоТСния Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅. Π’ этой сСрии ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· нСбольшого ΠΈ бСзопасного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.
Благодаря Docker, созданиС ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½ΠΈΠΊΠΎΠ³Π΄Π° Π΅Ρ‰Π΅ Π½Π΅ Π±Ρ‹Π»ΠΎ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ простым. Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ свои измСнСния ΠΈ создайтС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹, использованиС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ нСбСзопасной Ρ€Π°Π±ΠΎΡ‚Π΅ с большими ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ, ΠΏΠΎΠ»Π½Ρ‹ΠΌΠΈ уязвимостСй.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Π² Docker ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Debian ΠΈΠ»ΠΈ Ubuntu, ΠΈ хотя это обСспСчиваСт ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ Π»Π΅Π³ΠΊΡƒΡŽ Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΡŽ (Ρ„Π°ΠΉΠ» Docker Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ всСго Π΄Π²Π΅ строки ΠΊΠΎΠ΄Π°), Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ способны Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ сотни ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ΠΎΠ² Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² ваш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. НапримСр, простой Ρ„Π°ΠΉΠ» node.js прилоТСния Go Β«hello-worldΒ» Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 700 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ собствСнно вашСго прилоТСния составляСт всСго лишь нСсколько ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ΠΎΠ².

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вся эта Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠ° – пустая Ρ‚Ρ€Π°Ρ‚Π° Ρ†ΠΈΡ„Ρ€ΠΎΠ²ΠΎΠ³ΠΎ пространства ΠΈ ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ‚Π°ΠΉΠ½ΠΈΠΊ для уязвимостСй ΠΈ ошибок Π² систСмС бСзопасности. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄Π²Π° способа ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ – это использованиС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² малСнького Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π²Ρ‚ΠΎΡ€ΠΎΠΉ – использованиС шаблона проСктирования Builder Pattern. ИспользованиС ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, вСроятно, самый простой способ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° вашСго ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π‘ΠΊΠΎΡ€Π΅Π΅ всСго, ваш язык ΠΈΠ»ΠΈ стСк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅, обСспСчиваСт ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· прилоТСния Π³ΠΎΡ€Π°Π·Π΄ΠΎ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ€Π°Π· ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Π”Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° наш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ node.js.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Docker Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° node:8 Ρ€Π°Π²Π΅Π½ 670 ΠœΠ‘, Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ node: 8-alpine составляСт всСго 65 ΠœΠ‘, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² 10 Ρ€Π°Π· мСньшС. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ мСньший Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Alpine, Π²Ρ‹ сущСствСнно сократитС Ρ€Π°Π·ΠΌΠ΅Ρ€ вашСго ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Alpine -это нСбольшой ΠΈ Π»Π΅Π³ΠΊΠΈΠΉ дистрибутив Linux, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΡ‡Π΅Π½ΡŒ популярСн срСди ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Docker, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ совмСстим со ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ прилоТСниями, сохраняя ΠΏΡ€ΠΈ этом нСбольшой Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стандартного ΠΎΠ±Ρ€Π°Π·Π° Docker Β«nodeΒ», Β«node:alpineΒ» удаляСт мноТСство слуТСбных Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, оставляя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… достаточно для запуска вашСго прилоТСния.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΌΡƒ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π·Ρƒ, просто ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚Π΅ Docker-Ρ„Π°ΠΉΠ» для Π½Π°Ρ‡Π°Π»Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΎΠ²Ρ‹ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ:

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ старого ΠΎΠ±Ρ€Π°Π·Π° onbuild, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ свой ΠΊΠΎΠ΄ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΈ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ зависимости. Π’ Π½ΠΎΠ²ΠΎΠΌ Docker-Ρ„Π°ΠΉΠ»Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ начинаСтся с ΠΎΠ±Ρ€Π°Π·Π° node:alpine, Π·Π°Ρ‚Π΅ΠΌ создаСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для ΠΊΠΎΠ΄Π°, устанавливаСт зависимости с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² NPM ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, запускаСт server.js.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого обновлСния получаСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² 10 Ρ€Π°Π· мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Если ваш язык программирования ΠΈΠ»ΠΈ стСк Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Alpine Linux. Он Ρ‚Π°ΠΊΠΆΠ΅ прСдоставит Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ содСрТимым ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. ИспользованиС Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² малСнького Ρ€Π°Π·ΠΌΠ΅Ρ€Π° β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹ΠΉ способ быстрого создания Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ². Но ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π΅Ρ‰Π΅ большСго ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Builder Pattern.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π’ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках исходный ΠΊΠΎΠ΄ сначала пСрСдаСтся ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€Ρƒ, Π° Π·Π°Ρ‚Π΅ΠΌ ΡƒΠΆΠ΅ нСпосрСдствСнно выполняСтся. Π’ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… языках исходный ΠΊΠΎΠ΄ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ прСвращаСтся Π² скомпилированный ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ этом компиляция часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ инструмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹ для запуска ΠΊΠΎΠ΄Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ эти инструмСнты ΠΈΠ· Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Для этого ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Builder Pattern.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Код создаСтся Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΈ компилируСтся. Π—Π°Ρ‚Π΅ΠΌ скомпилированный ΠΊΠΎΠ΄ упаковываСтся Π² ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π±Π΅Π· компиляторов ΠΈ инструмСнтов, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для компиляции этого ΠΊΠΎΠ΄Π°. Π”Π°Π²Π°ΠΉΡ‚Π΅ пропустим Ρ‡Π΅Ρ€Π΅Π· этот процСсс ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Go. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π·Π° onbuild ΠΊ Alpine Linux.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π’ Π½ΠΎΠ²ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ начинаСтся с ΠΎΠ±Ρ€Π°Π·Π° golang:alpine. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ создаСт ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π³ΠΎ Π² исходный ΠΊΠΎΠ΄, создаСт этот исходный ΠΊΠΎΠ΄ ΠΈ запускаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ мСньшС, Ρ‡Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ onbuild, Π½ΠΎ ΠΎΠ½ всС Π΅Ρ‰Π΅ содСрТит компилятор ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ инструмСнты Go, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ просто ΠΈΠ·Π²Π»Π΅Ρ‡Π΅ΠΌ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ ΡƒΠ»ΠΎΠΆΠΈΠΌ Π΅Π΅ Π² свой собствСнный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Π½Π΅Ρ‡Ρ‚ΠΎ странноС Π² этом Ρ„Π°ΠΉΠ»Π΅ Docker: ΠΎΠ½ содСрТит Π΄Π²Π΅ строки FROM. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π» ΠΈΠ· 4-Ρ… строк выглядит Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» Docker Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово AS, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄Π°Ρ‚ΡŒ имя этому этапу. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ€Π°Π·Π΄Π΅Π»Π΅ имССтся новая строка FROM, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ Π½Π°Ρ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·, ΠΏΡ€ΠΈ этом вмСсто ΠΎΠ±Ρ€Π°Π·Π° golang:alpine Π² качСствС Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Raw alpine.

Raw Alpine Linux Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… установлСнных SSL сСртификатов, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ сбою Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² API ΠΏΠΎ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρƒ HTTPS, поэтому Π΄Π°Π²Π°ΠΉΡ‚Π΅ установим нСсколько ΠΊΠΎΡ€Π½Π΅Π²Ρ‹Ρ… сСртификатов CA.

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ самоС интСрСсноС: для копирования скомпилированного ΠΊΠΎΠ΄Π° ΠΈΠ· ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ COPY, Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡƒΡŽ Π² 5-ΠΉ строкС Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°. Она скопируСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ„Π°ΠΉΠ» прилоТСния ΠΈ Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅Ρ‚ слуТСбныС инструмСнты Go. Новый многоступСнчатый Ρ„Π°ΠΉΠ» Docker Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ всСго лишь 12 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ исходный ΠΎΠ±Ρ€Π°Π· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° составлял 700 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚, Π° это большая Ρ€Π°Π·Π½ΠΈΡ†Π°!
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, использованиС Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ Builder Pattern β€” ΠΎΡ‚Π»ΠΈΡ‡Π½Ρ‹Π΅ способы ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π³ΠΎΡ€Π°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡŒΡˆΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π±Π΅Π· большого объСма Ρ€Π°Π±ΠΎΡ‚Ρ‹.
Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π² зависимости ΠΎΡ‚ стСка прилоТСния, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ способы ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π·Π° ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π½ΠΎ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π»ΠΈ малСнькиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌΠΎΠ΅ прСимущСство? Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим Π΄Π²Π° аспСкта, Π³Π΄Π΅ малСнькиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Ρ‡Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ эффСктивны – это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ рост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, рассмотрим Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ процСсса создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, вставки Π΅Π³ΠΎ Π² рССстр (push) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ извлСчСния ΠΎΡ‚Ρ‚ΡƒΠ΄Π° (pull). Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ нСоспоримым прСимущСством ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ большСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Docker Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слои, поэтому ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сборки Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ быстро. Однако Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… систСмах CI, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для сборки ΠΈ тСстирования ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², слои Π½Π΅ ΠΊΡΡˆΠΈΡ€ΡƒΡŽΡ‚ΡΡ, поэтому здСсь имССтся Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Как Π²ΠΈΠ΄Π½ΠΎ, врСмя построСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° большого Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π² зависимости ΠΎΡ‚ мощности вашСй ΠΌΠ°ΡˆΠΈΠ½Ρ‹ составляСт ΠΎΡ‚ 34 Π΄ΠΎ 54 сСкунд, Π° ΠΏΡ€ΠΈ использовании ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Builder Pattern – ΠΎΡ‚ 23 Π΄ΠΎ 28 сСкунд. Для ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° прирост ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ составит 40-50%. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ просто ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, сколько Ρ€Π°Π· Π²Ρ‹ создаСтС ΠΈ тСстируСтС свой ΠΊΠΎΠ΄.

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ построСн, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΎΠ±Ρ€Π°Π· (push container image) Π² рССстр ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² своСм кластСрС Kubernetes. Π― Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рССстр ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Google.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Google Container Registry (GCR), Π²Ρ‹ ΠΏΠ»Π°Ρ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π° «сыроС» Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ ΡΠ΅Ρ‚ΡŒ, Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΏΠ»Π°Ρ‚Π° Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π½Π΅ взимаСтся. Π­Ρ‚ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ, бСзопасно ΠΈ ΠΎΡ‡Π΅Π½ΡŒ быстро. GCR ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Ρ€ΡŽΠΊΠΎΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ pull. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, вставка ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Docker Container Image ΠΏΡ€ΠΈ использовании go:onbuild Π² зависимости ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° Π·Π°ΠΉΠΌΠ΅Ρ‚ ΠΎΡ‚ 15 Π΄ΠΎ 48с, Π° Ρ‚Π° ΠΆΠ΅ опСрация с ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° – ΠΎΡ‚ 14 Π΄ΠΎ 16с, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ для ΠΌΠ΅Π½Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин прСимущСство Π² скорости ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ увСличиваСтся Π² 3 Ρ€Π°Π·Π°. Для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… машин врСмя ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ GCR ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ кэш для ΠΎΠ±Ρ‰Π΅ΠΉ Π±Π°Π·Ρ‹ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π²Π°ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡ… Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ. Π’ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΌΠ°Π»ΠΎΠΉ мощности CPU являСтся ΡƒΠ·ΠΊΠΈΠΌ мСстом, поэтому прСимущСство использования ΠΌΠ°Π»Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² здСсь Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠ΅ΠΉ.

Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ GCR, я Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Google Container Builder (GCB) ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ вашСй систСмы сборки.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π΅Π³ΠΎ использованиС позволяСт Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π»ΡƒΡ‡ΡˆΠΈΡ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π² ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠΈ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Build+Push, Ρ‡Π΅ΠΌ Π΄Π°ΠΆΠ΅ Ρƒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ – Π² этом случаС процСсс построСния ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π° хост ускоряСтся ΠΏΠΎΡ‡Ρ‚ΠΈ Π² 2 Ρ€Π°Π·Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ дСнь Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ 120 ΠΌΠΈΠ½ΡƒΡ‚ сборки бСсплатно, Ρ‡Ρ‚ΠΎ Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв удовлСтворяСт потрСбности создания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

Π”Π°Π»Π΅Π΅ ΠΈΠ΄Π΅Ρ‚ самая ваТная ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ – ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ извлСчСния, ΠΈΠ»ΠΈ скачивания ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Pull. И Ссли вас Π½Π΅ особо Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ врСмя, Π·Π°Ρ‚Ρ€Π°Ρ‡ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ push, Ρ‚ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ процСсса pull ΡΠ΅Ρ€ΡŒΠ΅Π·Π½ΠΎ влияСт Π½Π° ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ систСмы. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ вас Π΅ΡΡ‚ΡŒ кластСр ΠΈΠ· Ρ‚Ρ€Π΅Ρ… ΡƒΠ·Π»ΠΎΠ² ΠΈ с ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½ΠΈΡ… происходит сбой. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ систСму управлСния, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Google Kubernetes Engine, Ρ‚ΠΎ ΠΎΠ½Π° автоматичСски Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ Π½Π΅Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ ΡƒΠ·Π΅Π» Π½ΠΎΠ²Ρ‹ΠΌ. Однако этот Π½ΠΎΠ²Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ пустым, ΠΈ Π²Π°ΠΌ придСтся ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Π² Π½Π΅Π³ΠΎ всС ваши ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Если опСрация pull Π±ΡƒΠ΄Π΅Ρ‚ достаточно Π΄ΠΎΠ»Π³ΠΎΠΉ, Ρ‚ΠΎ всС это врСмя ваш кластСр Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с мСньшСй ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ.

БущСствуСт ΠΌΠ½ΠΎΠ³ΠΎ случаСв, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅: это Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° Π² кластСр, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡƒΠ·Π»ΠΎΠ² ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для развСртывания. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, минимизация Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ извлСчСния pull становится ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ. НСоспоримо Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ малСнький ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ скачиваСтся Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС большого. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ нСсколько ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² кластСрС Kubernetes, экономия Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ сущСствСнной.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

ВзглянитС Π½Π° ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ сравнСниС: опСрация pull ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с малСнькими ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ Π² 4-9 Ρ€Π°Π· мСньшС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² зависимости ΠΎΡ‚ мощности ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‡Π΅ΠΌ такая ΠΆΠ΅ опСрация с использованиСм go:onbuild. ИспользованиС ΠΎΠ±Ρ‰ΠΈΡ… Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΌΠ°Π»ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ускоряСт врСмя ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΠΎΠ²Ρ‹Π΅ ΡƒΠ·Π»Ρ‹ Kubernetes ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.

Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим вопрос бСзопасности. БчитаСтся, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ мСньшСго Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ бСзопаснСС Π±ΠΎΠ»ΡŒΡˆΠΈΡ…, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ Π½ΠΈΡ… мСньшая ΠΏΠΎΠ²Π΅Ρ€Ρ…Π½ΠΎΡΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ. Π’Π°ΠΊ Π»ΠΈ это Π½Π° самом Π΄Π΅Π»Π΅? Одна ΠΈΠ· ΠΏΠΎΠ»Π΅Π·Π½Π΅ΠΉΡˆΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Google Container Registry Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² возмоТности автоматичСски ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваши ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ уязвимостСй. НСсколько мСсяцСв Π½Π°Π·Π°Π΄ я создал ΠΊΠ°ΠΊ onbuild, Ρ‚Π°ΠΊ ΠΈ многоступСнчатыС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим, Π΅ΡΡ‚ΡŒ Π»ΠΈ Ρ‚Π°ΠΌ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ уязвимыС мСста.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠΉ: Π² нСбольшом ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ всСго 3 срСдних уязвимости, Π° Π² большом β€” 16 критичСских ΠΈ 376 ΠΏΡ€ΠΎΡ‡ΠΈΡ… уязвимостСй. Если Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ содСрТимоС большого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бСзопасности Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ ΠΎΠ±Ρ‰Π΅Π³ΠΎ с нашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° связаны с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π΄Π°ΠΆΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΊΠΎΠ³Π΄Π° люди говорят ΠΎ большой повСрхности для Π°Ρ‚Π°ΠΊ, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π²ΠΈΠ΄Ρƒ ΠΈΠΌΠ΅Π½Π½ΠΎ это.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Π’Ρ‹Π²ΠΎΠ΄ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π΅Π½: создавайтС малСнькиС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ Π΄Π°ΡŽΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Π΅ прСимущСства Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ бСзопасности вашСй систСмы.

Π›ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ Kubernetes. ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Kubernetes с пространством ΠΈΠΌΠ΅Π½

НСмного Ρ€Π΅ΠΊΠ»Π°ΠΌΡ‹ πŸ™‚

Бпасибо, Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Ρ‘Ρ‚Π΅ΡΡŒ с Π½Π°ΠΌΠΈ. Π’Π°ΠΌ нравятся наши ΡΡ‚Π°Ρ‚ΡŒΠΈ? Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ большС интСрСсных ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ²? ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΡ‚Π΅ нас, ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ² Π·Π°ΠΊΠ°Π· ΠΈΠ»ΠΈ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π² Π·Π½Π°ΠΊΠΎΠΌΡ‹ΠΌ, ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ VPS для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‚ $4.99, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΎΠ³ entry-level сСрвСров, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΡ€ΠΈΠ΄ΡƒΠΌΠ°Π½ Π½Π°ΠΌΠΈ для Вас: Вся ΠΏΡ€Π°Π²Π΄Π° ΠΎ VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ΠΎΡ‚ $19 ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π΄Π΅Π»ΠΈΡ‚ΡŒ сСрвСр? (доступны Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ с RAID1 ΠΈ RAID10, Π΄ΠΎ 24 ядСр ΠΈ Π΄ΠΎ 40GB DDR4).

Dell R730xd Π² 2 Ρ€Π°Π·Π° дСшСвлС Π² Π΄Π°Ρ‚Π°-Ρ†Π΅Π½Ρ‚Ρ€Π΅ Equinix Tier IV Π² АмстСрдамС? Волько Ρƒ нас 2 Ρ… Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 Π’Π’ ΠΎΡ‚ $199 Π² НидСрландах! Dell R420 β€” 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB β€” ΠΎΡ‚ $99! Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΎ Ρ‚ΠΎΠΌ Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ инфраструктуру ΠΊΠΎΡ€ΠΏ. класса c ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ сСрвСров Dell R730xd Π•5-2650 v4 ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ 9000 Π΅Π²Ρ€ΠΎ Π·Π° ΠΊΠΎΠΏΠ΅ΠΉΠΊΠΈ?

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ