Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° CICD ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ ΡΠ΅ΡΡΠΎ ΠΏΠΎΡΠΎΡΠ²Π°Ρ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΊΠ°ΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ - Microsoft, Oculus, Red Hat, Π΄ΠΎΡΠΈ Ferrari ΠΈ NASA. ΠΠ·Π³Π»Π΅ΠΆΠ΄Π°, ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠ°ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡΡ ΡΠ°ΠΌΠΎ ΡΡΡ ΡΠΊΡΠΏΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ°ΡΡΡΠΏ, ΡΡΡΡΠΎΡΡ ΡΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ. ΠΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° ΡΠ°ΡΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈΡΠ΅ ΡΠ° Π΄ΠΎΡΡΡΠΏΠ½ΠΈ Π·Π° ΠΌΠ°Π»ΠΊΠΈ Π΅ΠΊΠΈΠΏΠΈ.
Π©Π΅ Π²ΠΈ ΠΊΠ°ΠΆΠ΅ΠΌ Π½Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΎΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
Π‘Π½ΠΈΠΌΠΊΠ° -
PHP ΡΠ΅Π½Π·ΠΎΡ
CI ΡΡΡΠ²ΡΡ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² PHP. Π’ΠΎΠ²Π° Π΅ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
PHP Censor ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ Ρ GitHub, GitLab, Mercurial ΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΡΠ³ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°. ΠΠ° Π΄Π° ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ Atoum, PHP Spec, Behat, Codeception. Π’ΡΠΊ
test:
atoum:
args: "command line arguments go here"
config: "path to config file"
directory: "directory to run tests"
executable: "path to atoum executable"
Rex
Rex Π΅ ΡΡΠΊΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Remote Execution. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½Π° ΠΎΡ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ Π€Π΅ΡΠ΅Π½Ρ ΠΡΠΊΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ΅ Π² ΡΠ΅Π½ΡΡΡΠ° Π·Π° Π΄Π°Π½Π½ΠΈ. Rex ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° Perl ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, Π½ΠΎ Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π½Π°Π΅ΡΠ΅ ΡΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ, Π·Π° Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°ΡΠ΅ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° - ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅) ΡΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° Ρ ΡΡΠ½ΠΊΡΠΈΠΈ, Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΠΏΠΎΠ±ΠΈΡΠ°Ρ Π² Π΄Π΅ΡΠ΅Ρ ΡΠ΅Π΄Π°. ΠΡΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π²Π»ΠΈΠ·Π°Π½Π΅ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ²ΡΡΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ Π²ΡΠ΅ΠΌΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ°:
use Rex -feature => ['1.3'];
user "my-user";
password "my-password";
group myservers => "mywebserver", "mymailserver", "myfileserver";
desc "Get the uptime of all servers";
task "uptime", group => "myservers", sub {
my $output = run "uptime";
say $output;
};
ΠΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π·Π°ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ΡΠΎ ΡΠΈ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°
Open Build Service (OBS)
Π’ΠΎΠ²Π° Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° Π½Π° Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠΈ. ΠΠΎΠ΄ΡΡ ΠΌΡ Π΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΈ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° Π² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π°
ΠΠΎ ΠΏΡΠ΅Π· ΡΡΠ»ΠΎΡΠΎ ΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ Π½ΠΈΠΊΠΎΠ³Π° Π½Π΅ Π΅ ΠΏΡΠΈΠ΄ΠΎΠ±ΠΈΠ» ΡΠΈΡΠΎΠΊΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ. ΠΠ°ΠΊΠ°Ρ ΡΠ΅
Rundeck
ΠΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° (
Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π²
The Walt Disney Company ,Salesforce ΠΈTicketmaster . ΠΠΎ ΠΏΡΠΎΠ΅ΠΊΡΡΡ Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΈ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠΈ ΡΠΈΡΠΌΠΈ. Π’ΠΎΠ²Π° Π΅ ΡΠ°ΠΊΠ°, Π·Π°ΡΠΎΡΠΎ Rundeck Π΅ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Apache v2.0. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡΡ Π΅ Π΄ΠΎΡΡΠ° Π»Π΅ΡΠ΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.
ΠΠΈΡΠ΅Π» Π½Π° Reddit, ΠΊΠΎΠΉΡΠΎ ΡΠ°Π±ΠΎΡΠΈ Ρ Rundeck,
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΠΊΡΠ°ΡΠΊΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π·Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΎΠ½Π»Π°ΠΉΠ½:
Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΡΡΡΠΏΠΊΠ° ΠΏΠΎ ΡΡΡΠΏΠΊΠ°: ΠΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Rundeck ΠΠ΅Ρ ΡΡΡΠΏΠΊΠΈ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈ ΠΌΠ΅ΡΡΠ°
GoCD
ΠΡΠ²Π°ΡΡΠ½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° (
GoCD ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠΈ ΠΎΡ ΡΠ°ΠΉΡΠ° Π·Π° ΠΎΠ½Π»Π°ΠΉΠ½ ΠΏΡΠΎΠ΄Π°ΠΆΠ±Π° Π½Π° Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ AutoTrader, Π³Π΅Π½Π΅Π°Π»ΠΎΠ³ΠΈΡΠ½Π°ΡΠ° ΡΡΠ»ΡΠ³Π° Ancestry ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ° Π½Π° ΠΊΡΠ΅Π΄ΠΈΡΠ½ΠΈ ΠΊΠ°ΡΡΠΈ Barclaycard. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π΅Π΄Π½Π° ΡΠ΅ΡΠ²ΡΡΡ ΠΎΡ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ
ΠΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ° ΡΡΠ΅Π΄ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΡΠ½ΠΈ Ρ Π½Π΅ΠΉΠ½Π°ΡΠ° ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎΡΡ - ΡΡ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π· Apache v2.0. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅ GoCD
Π‘Π½ΠΈΠΌΠΊΠ° -
ΠΠΊΠΎ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ°ΡΠ΅ GoCD Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ Π½Π° ΡΠ΅Π±ΡΠ°ΠΉΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°
ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ
ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΈ
ΠΠ½Π΅Ρ Ρ ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ
ΠΡΠ΅Π· ΡΡΠ»ΠΎΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΎΠΊΠΎΠ»ΠΎ Π½Π΅Π³ΠΎ ΡΠ΅ ΡΠΎΡΠΌΠΈΡΠ° Π³ΠΎΠ»ΡΠΌΠ° ΠΎΠ±ΡΠ½ΠΎΡΡ. ΠΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈΡΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠΈΡΠ°Ρ Π² ΡΠ΅ΠΌΠΈ Π½Π°
ΠΡΡΠ²ΠΈ ΡΡΡΠΏΠΊΠΈ Ρ ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ: ΠΡΠΈΡΠΈΠ°Π»Π½ΠΎΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ;ΠΡΠ»Π½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π·Π° ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ ;- Π ΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ
ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ Π·Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΠΈ - ΠΠ½ΠΈΠ³Π°ΡΠ° Π½Π° ΠΡΠ΅Π½Ρ ΠΡΡΡΡΡ
ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ 2. ΠΠ° Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ Β»; - ΠΠ½ΠΈΠ³Π° ΠΎΡ Π Π°ΡΠ°Π» ΠΠ΅ΡΠΊΠΎ "
ΠΠ΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° Π΄ΠΎΡΡΠ°Π²ΠΊΠ° Ρ Docker ΠΈ Jenkins: ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΌΠ°ΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ".
ΠΠΆΠ΅Π½ΠΊΠΈΠ½Ρ ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΡΡΠ²ΠΈΡΡ Π΅ ΠΏΠ»ΡΠ³ΠΈΠ½
Buildbot
Π’ΠΎΠ²Π° Π΅ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° Π½Π΅ΠΏΡΠ΅ΠΊΡΡΠ½Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΊΡΠ»Π° Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ ΠΈ ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’ΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠΎΠ΄Π° Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΏΡΠ°Π²ΡΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² Π½Π΅Π³ΠΎ.
ΠΠ²ΡΠΎΡΡΡ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π±Π΅ΡΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ ΠΡΠ°ΠΉΡΠ½ Π£ΠΎΡΠ½ΡΡ. ΠΠ½Π΅Ρ Π΅ Π΄Π΅ΠΆΡΡΠ΅Π½
Buildbot
Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΠΎΠ²Π° Π½Π΅ Π΅ Π²ΡΠΈΡΠΊΠΎ DevOps ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ, Π½Π° ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΠΎΠ±ΡΡΠ½Π°Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΌΠ°Π»ΠΊΠΈΡΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΡΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. ΠΠ°ΠΉΡΠ΅ Π»ΡΠ±ΠΈΠΌΠΈΡΠ΅ ΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π² ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΈ Π½ΠΈΠ΅ ΡΠ΅ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° Π³ΠΎΠ²ΠΎΡΠΈΠΌ Π·Π° ΡΡΡ Π² Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ.
ΠΠ° ΠΊΠ°ΠΊΠ²ΠΎ ΠΏΠΈΡΠ΅ΠΌ Π² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΈΡ Π±Π»ΠΎΠ³:
Π’Π΅ΡΡΠ²Π°Π½Π΅ Π·Π° ΠΏΡΠΎΠ½ΠΈΠΊΠ²Π°Π½Π΅ - Π²ΡΠ½ΡΠ΅Π½ ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡΡΠ° NetApp MAX DATA: ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠΎ ΠΡΠ°ΡΠΊΠ° ΠΈΡΡΠΎΡΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΡΠ΅: ΠΎΡ Chroot Π΄ΠΎ Kubernetes DDoS Π·Π°ΡΠΈΡΠ° Π² ΠΎΠ±Π»Π°ΠΊΠ° Π½Π° Π΄ΠΎΡΡΠ°Π²ΡΠΈΠΊΠ°
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com