ΠΠΎΠ·Π΄ΡΠ°Π² ΡΠ²ΠΈΠΌΠ° Π½Π° ΠΎΠ²ΠΎΠΌ Π±Π»ΠΎΠ³Ρ! ΠΠ²ΠΎ ΡΠ΅ ΡΡΠ΅ΡΠΈ ΠΏΠΎΡΡ Ρ Π½ΠΈΠ·Ρ Ρ ΠΊΠΎΡΠ΅ΠΌ ΠΏΠΎΠΊΠ°Π·ΡΡΠ΅ΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΠΌΠΎΠ΄Π΅ΡΠ½Π΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π½Π° Π Π΅Π΄ Π₯Π°Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ.
Π£ ΠΏΡΠ΅ΡΡ
ΠΎΠ΄Π½Π° Π΄Π²Π° ΠΏΠΎΡΡΠ° ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΡΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ ΠΌΠΎΠ΄Π΅ΡΠ½Π΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Ρ ΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠΎΡΠ°ΠΊΠ° ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ Π½ΠΎΠ²Ρ Π‘2Π ΡΠ»ΠΈΠΊΡ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΈΠΌΠΈΡΠΎΠΌ Π₯Π’Π’Π ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΠΠΠΠΠ‘, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ»Π°Π½ΡΠ°Π½Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ Π·Π° ΠΎΡΠΊΠ΅ΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΠ΅ .
ΠΠ°Π½Π°Ρ ΡΠ΅ΠΌΠΎ ΠΏΠΎΠΊΠ°Π·Π°ΡΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π²Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π½Π° ΠΠΏΠ΅Π½Π‘Ρ
ΠΈΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΠΈ Π΄Π° Π³Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΡΡΠ΅ΡΠ΅ ΡΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, Π° ΡΠ°ΠΊΠΎΡΠ΅ ΡΠ΅ΠΌΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡΠΈ ΠΎ ΡΠΎΠΌΠ΅ ΡΡΠ° ΡΡ ΠΠΏΠ΅Π½Π‘Ρ
ΠΈΡΡ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠ°ΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈΠΌ ΡΠΊΠ»ΠΎΠΏΠΎΠ²ΠΈΠΌΠ°.
ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΊΠ°ΠΎ ΡΠ°Π·Π²ΠΎΡΠ½ΠΎ ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅
Π’ΠΎΠΊ ΡΠ°Π΄Π° ΡΠ°Π·Π²ΠΎΡΠ°
ΠΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Π²Π΅Ρ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Ρ
Π£ Π²Π΅ΡΠΈΠ½ΠΈ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΡ ΠΎΠΊΠ²ΠΈΡΠ°, ΡΠ°ΠΊΠ°Π² βΡΠ΅ΡΠ²Π΅Ρ Π·Π° ΡΠ°Π·Π²ΠΎΡβ ΡΠ΅ ΡΠ³ΡΠ°ΡΠ΅Π½ Ρ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ Π°Π»Π°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅.
ΠΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΡΠ²ΠΎ, Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΠΎΠ²ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅ ΠΊΠ°Π΄Π° Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅. Π£Π·ΠΌΠΈΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΊΠ°ΠΎ ΠΏΡΠΈΠΌΠ΅Ρ
ΠΠ°ΠΊΠ»Π΅, Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ βΠ΄Π΅Π² ΡΠ΅ΡΠ²Π΅Ρβ Ρ Π½Π°ΡΠ΅ΠΌ Π Π΅Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, ΡΠ½Π΅ΡΠ΅ΠΌΠΎ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ npm run start
ΠΠ°ΡΠΈΠΌ ΡΠ΅ΠΌΠΎ Ρ ΠΏΡΠΎΠ·ΠΎΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π²ΠΈΠ΄Π΅ΡΠΈ Π½Π΅ΡΡΠΎ ΠΎΠ²Π°ΠΊΠΎ:
Π Π½Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΡΠ΅ ΠΎΡΠ²ΠΎΡΠΈΡΠΈ Ρ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎΠΌ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ:
Π‘Π°Π΄Π°, Π°ΠΊΠΎ ΡΠ½Π΅ΡΠ΅ΠΌΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π±ΠΈ ΡΡΠ΅Π±Π°Π»ΠΎ Π΄Π° ΡΠ΅ Π°ΠΆΡΡΠΈΡΠ° Ρ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ.
ΠΠ, ΡΠ²Π΅ ΡΠ΅ ΡΠ°ΡΠ½ΠΎ ΡΠ° ΡΠ°Π·Π²ΠΎΡΠ΅ΠΌ Ρ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΡ, Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠΎ ΠΏΠΎΡΡΠΈΡΠΈ Π½Π° ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ-Ρ?
Π Π°Π·Π²ΠΎΡΠ½ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π½Π° ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ-Ρ
ΠΠΊΠΎ ΡΠ΅ ΡΠ΅ΡΠ°ΡΠ΅, Ρ
ΠΠ΅ΡΡΡΠΈΠΌ, Π°ΠΊΠΎ Π±ΠΎΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΌΠΎΠ΄ΡΠ» Π½ΠΎΠ΄Π΅ΡΡ ΠΈΡΡ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎ Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ:
$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app
ΠΠ°ΠΏΠΎΠΌΠ΅Π½Π°: ΠΠΎΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΡΠΊΡΠ°ΡΠ΅Π½ Π΄Π° Π±ΠΈ ΠΈΠ»ΡΡΡΡΠΎΠ²Π°ΠΎ ΠΎΠΏΡΡΡ ΠΈΠ΄Π΅ΡΡ.
ΠΠ²Π΄Π΅ ΡΠΌΠΎ Π΄ΠΎΠ΄Π°Π»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠΠ_Π Π£Π Ρ Π½Π°ΡΡ ΠΏΡΠΈΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠ° Π³ΠΎΠ²ΠΎΡΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Ρ ΠΈΠ·Π²ΠΎΡΠ΅ΡΠ° Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π·Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΠΈΠ°ΡΠ½, ΠΊΠΎΡΠ° ΠΏΠΎΠΊΡΠ΅ΡΠ΅ Π Π΅Π°ΡΡ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΡΠ½ΡΡΠ°Ρ Π½Π°ΡΠ΅Π³ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΏΠΎΠ΄.
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΡΡΠΊΠ°ΡΠΊΠ΅ ΠΊΠ°ΠΏΡΡΠ»Π΅, ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:
ΠΠ°ΡΠ°Π²Π½ΠΎ, ΡΠ²Π΅ ΠΎΠ²ΠΎ Π½Π΅ΡΠ΅ Π±ΠΈΡΠΈ Π½ΠΈΡΡΠ° Π΄ΠΎΠΊ Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΡΡΠ΅ΠΌΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΊΠΎΠ΄ ΡΠ° ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΏΡΠ°ΡΠΈ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π΅, Π°Π»ΠΈ ΠΆΠΈΠ²ΠΈ Π½Π° ΡΠ΄Π°ΡΠ΅Π½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ.
Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π΄Π°ΡΠΈΠ½ΡΠΊΠΎΠ³ ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠ³ ΠΊΠΎΠ΄Π°
Π‘ΡΠ΅ΡΠΎΠΌ, Π½ΠΎΠ΄Π΅ΡΡ ΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π»Π°ΠΊΠΎ ΠΏΠΎΠΌΠΎΡΠΈ Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠΈ, Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π²Π°ΡΡΡ Π΄Π° Π±ΠΈΡΡΠ΅ ΠΏΡΠ°ΡΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅.
ΠΠ°ΠΊΠ»Π΅, Π½Π°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ Π½Π°ΡΠ΅Π΄Π±Ρ Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΎΠ³ ΡΠ΅ΡΠ²Π΅ΡΠ° Π·Π° Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ npx nodeshift watch
ΠΠ°ΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΡΠΎΠ³Π°, Π±ΠΈΡΠ΅ ΡΡΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½Π° Π²Π΅Π·Π° ΡΠ° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠΌ ΠΊΠΎΡΠΈ ΡΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ ΠΌΠ°Π»ΠΎ ΡΠ°Π½ΠΈΡΠ΅, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π°ΡΠΈΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ° ΡΠ΄Π°ΡΠ΅Π½ΠΈΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ ΡΠ΅ Π±ΠΈΡΠΈ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π°, Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π½Π° Π½Π°ΡΠ΅ΠΌ Π»ΠΎΠΊΠ°Π»Π½ΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅ ΠΏΠΎΡΠ΅ΡΠΈ Π΄Π° ΡΠ΅ Π½Π°Π΄Π³Π»Π΅Π΄Π°ΡΡ Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π΅.
Π‘ΡΠΎΠ³Π°, Π°ΠΊΠΎ ΡΠ°Π΄Π° Π°ΠΆΡΡΠΈΡΠ°ΠΌΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΡΡΡ/ΠΠΏΠΏ.ΡΡ, ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅ ΡΠ΅Π°Π³ΠΎΠ²Π°ΡΠΈ Π½Π° ΠΎΠ²Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅, ΠΊΠΎΠΏΠΈΡΠ°ΡΠΈ ΠΈΡ Π½Π° ΡΠ΄Π°ΡΠ΅Π½ΠΈ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΈ ΡΠ΅ Π·Π°ΡΠΈΠΌ Π°ΠΆΡΡΠΈΡΠ°ΡΠΈ Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Ρ ΠΏΡΠ΅ΡΡΠ°ΠΆΠΈΠ²Π°ΡΡ.
ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΏΠΎΡΠΏΡΠ½ΠΈΠ»ΠΈ ΡΠ»ΠΈΠΊΡ, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠΎ ΠΊΠ°ΠΊΠΎ ΠΈΠ·Π³Π»Π΅Π΄Π°ΡΡ ΡΠ΅Π»Π΅ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
$ npx nodeshift --strictSSL=false --dockerImage=nodeshift/ubi8-s2i-web-app --build.env YARN_ENABLED=true --expose --deploy.env NPM_RUN="yarn start" --deploy.port 3000
$ npx nodeshift watch --strictSSL=false
ΠΠΎΠΌΠ°Π½Π΄Π° Π²Π°ΡΡΡ
ΡΠ΅ Π°ΠΏΡΡΡΠ°ΠΊΡΠΈΡΠ° Π½Π° Π²ΡΡ
Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΎΡ ΡΡΠΈΠ½Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π½Π°ΡΠΈ Π²ΠΈΡΠ΅ ΠΎ ΡΠΎΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅
ΠΠ²ΠΎ ΡΠ΅ Π±ΠΈΠΎ ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° Π Π΅Π°ΡΡ, Π°Π»ΠΈ ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌ ΠΎΠΊΠ²ΠΈΡΠΈΠΌΠ°, ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄Π΅ΡΠΈΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ ΠΎΠΊΡΡΠΆΠ΅ΡΠ° ΠΠΠ_Π Π£Π ΠΏΠΎ ΠΏΠΎΡΡΠ΅Π±ΠΈ.
β
ΠΠΏΠ΅Π½ΡΡ ΠΈΡΡ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Ρ
ΠΠ°ΡΠΈΠΌ ΡΠ΅ΠΌΠΎ ΠΏΡΠΈΡΠ°ΡΠΈ ΠΎ Π°Π»Π°ΡΡ ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Ρ ΠΈ ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠ°ΠΎ Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΠ»Π°Π½ΡΠ°Π½ΠΈΠΌ Π³ΡΠ°Π΄ΡΠ°ΠΌΠ°.
Π¨ΡΠ° ΡΡ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ
ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Ρ ΡΠ΅ Π¦Π/Π¦Π ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΠΈΠ½ΡΠΈΡΠ°Π½Π΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡΠ΅ ΠΈ ΠΈΡΠΏΠΎΡΡΠΊΠ΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΠ΅ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π’Π΅ΠΊΡΠΎΠ½. Π’Π΅ΠΊΡΠΎΠ½ ΡΠ΅ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π°Π½ Π¦Π/Π¦Π ΠΎΠΊΠ²ΠΈΡ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎΠ³ ΠΊΠΎΠ΄Π° ΠΊΠΎΡΠΈ ΡΠ΅ ΡΡΠΎΡΠ΅Π½ Ρ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅ΡΡ ΠΊΠΎΡΠΈ Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° Π°ΡΡΠΎΠΌΠ°ΡΠΈΠ·ΡΡΠ΅ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Ρ Π½Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠ° (ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ, Π±Π΅Π· ΡΠ΅ΡΠ²Π΅ΡΠ°, Π²ΠΈΡΡΡΠ΅Π»Π½Π΅ ΠΌΠ°ΡΠΈΠ½Π΅, ΠΈΡΠ΄.) Π°ΠΏΡΡΡΠ°Ρ ΠΎΠ²Π°ΡΠ΅ΠΌ ΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ ΡΠ»ΠΎΡΠ°.
Π Π°Π·ΡΠΌΠ΅Π²Π°ΡΠ΅ ΠΎΠ²ΠΎΠ³ ΡΠ»Π°Π½ΠΊΠ° Π·Π°Ρ
ΡΠ΅Π²Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎ Π·Π½Π°ΡΠ΅ ΠΎ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠ°, ΠΏΠ° Π²Π°ΠΌ ΡΠΎΠΏΠ»ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌΠΎ Π΄Π° ΠΏΡΠ²ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΠ΅
ΠΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ Π²Π°ΡΠ΅Π³ ΡΠ°Π΄Π½ΠΎΠ³ ΠΎΠΊΡΡΠΆΠ΅ΡΠ°
ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠ΅ ΠΈΠ³ΡΠ°Π»ΠΈ ΡΠ° ΠΏΡΠΈΠΌΠ΅ΡΠΈΠΌΠ° Ρ ΠΎΠ²ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ, ΠΏΡΠ²ΠΎ ΠΌΠΎΡΠ°ΡΠ΅ Π΄Π° ΠΏΡΠΈΠΏΡΠ΅ΠΌΠΈΡΠ΅ ΡΠ²ΠΎΡΠ΅ ΡΠ°Π΄Π½ΠΎ ΠΎΠΊΡΡΠΆΠ΅ΡΠ΅:
- ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΈΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΠΏΠ΅Π½Π‘Ρ
ΠΈΡΡ 4. ΠΠ°ΡΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π¦ΠΎΠ΄Π΅Π Π΅Π°Π΄ΠΈ ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ (Π¦Π Π) Π·Π° ΠΎΠ²ΠΎ, ΡΠΏΡΡΡΡΠ²Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ Π·Π° ΠΊΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ
ΠΎΠ²Π΄Π΅ . - ΠΠ°ΠΊΠΎΠ½ ΡΡΠΎ ΡΠ΅ ΠΊΠ»Π°ΡΡΠ΅Ρ ΡΠΏΡΠ΅ΠΌΠ°Π½, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° Π½Π° ΡΠ΅Π³Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅ ΠΠΏΠ΅ΡΠ°ΡΠΎΡ. ΠΠ΅ ΠΏΠ»Π°ΡΠΈΡΠ΅ ΡΠ΅, Π»Π°ΠΊΠΎ ΡΠ΅, ΡΠΏΡΡΡΡΠ²Π° Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡ
ΠΎΠ²Π΄Π΅ . - ΠΡΠ΅ΡΠ·ΠΈΠΌΠ°ΡΠ΅
Π’Π΅ΠΊΡΠΎΠ½ Π¦ΠΠ (ΡΠΊΠ½)ΠΎΠ²Π΄Π΅ . - ΠΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°Π»Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π½Π΅ Π»ΠΈΠ½ΠΈΡΠ΅ ΡΡΠ΅Π°ΡΠ΅-ΡΠ΅Π°ΡΡ-Π°ΠΏΠΏ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΊΠΎΡΡ ΡΠ΅ΡΠ΅ Π·Π°ΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠΈ (ΠΎΠ²ΠΎ ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°
Π Π΅Π°Π³ΠΎΠ²Π°ΡΠΈ ). - (ΠΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎ) ΠΠ»ΠΎΠ½ΠΈΡΠ°ΡΡΠ΅ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ Π΄Π° Π±ΠΈΡΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ ΠΏΡΠΈΠΌΠ΅Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ ΡΠ° Π½ΠΏΠΌ ΠΈΠ½ΡΡΠ°Π»Π», Π° Π·Π°ΡΠΈΠΌ Π½ΠΏΠΌ ΡΡΠ°ΡΡ.
Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΊ8Ρ ΡΠΎΠ»Π΄Π΅Ρ, ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ°Π΄ΡΠΆΠ°ΡΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ/ΠΠΏΠ΅Π½Π‘Ρ
ΠΈΡΡ ΠΠΠΠ-ΠΎΠ²Π΅ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅. ΠΠΎΡΡΠΎΡΠ°ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ, Π·Π°Π΄Π°ΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, ΡΠ΅ΡΡΡΡΠΈ ΠΈ ΠΊΠ°Π½Π°Π»ΠΈ ΠΊΠΎΡΠ΅ ΡΠ΅ΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ Ρ ΠΎΠ²ΠΎΠΌ
ΠΠ΅ΡΡΠΈΠ½Π³ ΡΡΠ°ΡΡΠ΅Π΄
ΠΡΠ²ΠΈ ΠΊΠΎΡΠ°ΠΊ Π·Π° Π½Π°Ρ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ²ΠΎΠ³ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΡ. ΠΠ°Π·ΠΎΠ²ΠΈΠΌΠΎ ΠΎΠ²Π°Ρ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ Π²Π΅Π±Π°ΠΏΠΏ-ΠΏΠΈΠΏΠ΅Π»ΠΈΠ½Π΅ ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΌΠΎ Π³Π° ΡΠ»Π΅Π΄Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:
$ oc new-project webapp-pipeline
ΠΠ²ΠΎ ΠΈΠΌΠ΅ ΠΏΡΠΎΡΠ΅ΠΊΡΠ° ΡΠ΅ ΡΠ΅ ΠΊΠ°ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈΡΠΈ Ρ ΠΊΠΎΠ΄Ρ, ΠΏΠ° Π°ΠΊΠΎ ΠΎΠ΄Π»ΡΡΠΈΡΠ΅ Π΄Π° Π³Π° Π½Π°Π·ΠΎΠ²Π΅ΡΠ΅ Π½Π΅ΠΊΠΈΠΌ Π΄ΡΡΠ³ΠΈΠΌ, Π½Π΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ Π΄Π° Ρ ΡΠΊΠ»Π°Π΄Ρ Ρ ΡΠΈΠΌ ΡΡΠ΅Π΄ΠΈΡΠ΅ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°. ΠΠΎΡΠ΅Π²ΡΠΈ ΠΎΠ΄ ΠΎΠ²Π΅ ΡΠ°ΡΠΊΠ΅, Π½Π΅ΡΠ΅ΠΌΠΎ ΠΈΡΠΈ ΠΎΠ΄ΠΎΠ·Π³ΠΎ Π½Π°Π΄ΠΎΠ»Π΅, Π²Π΅Ρ ΠΎΠ΄ΠΎΠ·Π΄ΠΎ ΠΏΡΠ΅ΠΌΠ° Π³ΠΎΡΠ΅: ΡΠΎ ΡΠ΅ΡΡ, ΠΏΡΠ²ΠΎ ΡΠ΅ΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΡΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ΅ΡΠ°, Π° ΡΠ΅ΠΊ ΠΎΠ½Π΄Π° ΡΠ°ΠΌ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ΅Ρ.
ΠΠ°ΠΊΠ»Π΅, ΠΏΡΠ΅ ΡΠ²Π΅Π³Π°...
ΠΠ°Π΄Π°ΡΠΈ
Π₯Π°ΡΠ΄Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊΠ°, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΎΠ½Π΄Π° ΠΏΠΎΠΌΠΎΡΠΈ Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Ρ ΠΎΠΊΠ²ΠΈΡΡ Π½Π°ΡΠ΅Π³ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π°. ΠΡΠ²ΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ - Π°ΠΏΠΏΠ»ΠΈ_ΠΌΠ°Π½ΠΈΡΠ΅ΡΡΡ_ΡΠ°ΡΠΊ - ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ°Π½ Π·Π° ΠΏΡΠΈΠΌΠ΅Π½Ρ ΠΠΠΠ-Π° ΠΎΠ½ΠΈΡ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ ΡΠ΅ΡΡΡΡΠ° (ΡΡΠ»ΡΠ³Π°, ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠΈΠ²Π°ΡΠ΅ ΠΈ ΡΡΡΠ°) ΠΊΠΎΡΠΈ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ ΠΊ8Ρ ΡΠ°ΡΡΠΈΠΊΠ»ΠΈ Π½Π°ΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅. ΠΡΡΠ³ΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ β ΡΠΏΠ΄Π°ΡΠ΅_Π΄Π΅ΠΏΠ»ΠΎΠΈΠΌΠ΅Π½Ρ_ΡΠ°ΡΠΊ β ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ°Π½ ΡΠ΅ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ Π²Π΅Ρ ΠΏΠΎΡΡΠ°Π²ΡΠ΅Π½Π΅ ΡΠ»ΠΈΠΊΠ΅ Π½Π° ΠΎΠ½Ρ ΠΊΠΎΡΡ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΠΎ Π½Π°Ρ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄.
ΠΠ΅ Π±ΡΠΈΠ½ΠΈΡΠ΅ Π°ΠΊΠΎ ΡΠΎΡ Π½ΠΈΡΠ΅ ΡΠ°ΡΠ½ΠΎ. Π£ ΡΡΠ²Π°ΡΠΈ, ΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΡ Π½Π΅ΡΡΠΎ ΠΏΠΎΠΏΡΡ ΡΡΠ»ΡΠΆΠ½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, Π° ΠΌΠΈ ΡΠ΅ΠΌΠΎ ΠΈΡ Π΄Π΅ΡΠ°ΡΠ½ΠΈΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ ΠΌΠ°Π»ΠΎ ΠΊΠ°ΡΠ½ΠΈΡΠ΅. ΠΠ° ΡΠ°Π΄Π°, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΈΡ ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/update_deployment_task.yaml
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/tasks/apply_manifests_task.yaml
ΠΠ°ΡΠΈΠΌ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠΊΠ½ Π¦ΠΠ, ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ΠΌΠΎ Π΄Π° Π»ΠΈ ΡΡ Π·Π°Π΄Π°ΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΈ:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
ΠΠ°ΠΏΠΎΠΌΠ΅Π½Π°: ΠΠ²ΠΎ ΡΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π·Π° Π²Π°Ρ ΡΡΠ΅Π½ΡΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ.
ΠΠ°Π΄Π°ΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°
ΠΠ»Π°ΡΡΠ΅ΡΡΠΊΠΈ Π·Π°Π΄Π°ΡΠΈ ΡΡ Ρ ΠΎΡΠ½ΠΎΠ²ΠΈ ΠΈΡΡΠΈ ΠΊΠ°ΠΎ ΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ. Π’ΠΎ ΡΠ΅ΡΡ, ΡΠΎ ΡΠ΅ Π²ΠΈΡΠ΅ΠΊΡΠ°ΡΠ½Π° ΠΊΠΎΠ»Π΅ΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ°ΠΊΠ° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΡΡΡ Π½Π° ΠΎΠ²Π°Ρ ΠΈΠ»ΠΈ ΠΎΠ½Π°Ρ Π½Π°ΡΠΈΠ½ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΠ°Π²Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ. Π Π°Π·Π»ΠΈΠΊΠ° ΡΠ΅ Ρ ΡΠΎΠΌΠ΅ ΡΡΠΎ ΡΠ΅ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π΄ΠΎΡΡΡΠΏΠ°Π½ ΡΠ²ΡΠ΄Π° Ρ ΠΎΠΊΠ²ΠΈΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°. ΠΠ° Π±ΠΈΡΠΌΠΎ Π²ΠΈΠ΄Π΅Π»ΠΈ Π»ΠΈΡΡΡ Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΊΠΎΡΠΈ ΡΠ΅ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ Π΄ΠΎΠ΄Π°Π²Π°ΡΠ° ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠ° ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π°, ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠΊΠ½ Π¦ΠΠ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ tkn clustertask ls
NAME AGE
buildah 1 day ago
buildah-v0-10-0 1 day ago
jib-maven 1 day ago
kn 1 day ago
maven 1 day ago
openshift-client 1 day ago
openshift-client-v0-10-0 1 day ago
s2i 1 day ago
s2i-go 1 day ago
s2i-go-v0-10-0 1 day ago
s2i-java-11 1 day ago
s2i-java-11-v0-10-0 1 day ago
s2i-java-8 1 day ago
s2i-java-8-v0-10-0 1 day ago
s2i-nodejs 1 day ago
s2i-nodejs-v0-10-0 1 day ago
s2i-perl 1 day ago
s2i-perl-v0-10-0 1 day ago
s2i-php 1 day ago
s2i-php-v0-10-0 1 day ago
s2i-python-3 1 day ago
s2i-python-3-v0-10-0 1 day ago
s2i-ruby 1 day ago
s2i-ruby-v0-10-0 1 day ago
s2i-v0-10-0 1 day ago
Π‘Π°Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ Π΄Π²Π° ΠΊΠ»Π°ΡΡΠ΅Ρ Π·Π°Π΄Π°ΡΠΊΠ°. ΠΡΠ²ΠΈ ΡΠ΅ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠΈ Π‘2Π ΡΠ»ΠΈΠΊΡ ΠΈ ΠΏΠΎΡΠ»Π°ΡΠΈ ΡΠ΅ Ρ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΠ°Ρ; Π΄ΡΡΠ³ΠΈ ΡΠ΅ Π΄Π° ΠΈΠ·Π³ΡΠ°Π΄ΠΈΠΌΠΎ Π½Π°ΡΡ ΡΠ»ΠΈΠΊΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΠΠΠΠΠ‘-Ρ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΊΠΎΡΡ ΡΠΌΠΎ Π²Π΅Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ ΠΊΠ°ΠΎ ΡΠ°Π΄ΡΠΆΠ°Ρ.
ΠΡΠ΅ΠΈΡΠ°ΡΡΠ΅ ΠΈ ΠΏΠΎΡΠ°ΡΠΈΡΠ΅ ΡΠ»ΠΈΠΊΡ
ΠΠ°Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΠΏΡΠ²ΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ, ΠΏΠΎΠ½ΠΎΠ²ΠΈΡΠ΅ΠΌΠΎ ΠΎΠ½ΠΎ ΡΡΠΎ ΡΠΌΠΎ Π²Π΅Ρ ΡΡΠ°Π΄ΠΈΠ»ΠΈ Ρ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΡΠ»Π°Π½ΠΊΡ ΠΎ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈΠΌ ΡΠΊΠ»ΠΎΠΏΠΎΠ²ΠΈΠΌΠ°. ΠΠΎΠ΄ΡΠ΅ΡΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠ»ΠΈ Π‘2Π ΡΠ»ΠΈΠΊΡ (ΡΠ±ΠΈ8-Ρ2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ) Π΄Π° βΠ½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎβ Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ Π·Π°Π²ΡΡΠΈΠ»ΠΈ ΡΠ° ΡΠ»ΠΈΠΊΠΎΠΌ ΡΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅Π½ΠΎΠΌ Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΡΡΡΡ. Π‘Π°Π΄Π° ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΎΠ²Ρ ΡΠ»ΠΈΠΊΡ Π‘2Π Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΠΠΎΡΠΊΠ΅ΡΠ€ΠΈΠ»Π΅ Π·Π° Π½Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, Π° Π·Π°ΡΠΈΠΌ ΡΠ΅ΠΌΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΡΠΈΠ»Π΄Π°Ρ Π΄Π° ΡΡΠ°Π΄ΠΈΠΌΠΎ ΡΡΠ²Π°ΡΠ½Ρ ΠΈΠ·Π³ΡΠ°Π΄ΡΡ ΠΈ Π³ΡΡΠ½Π΅ΠΌΠΎ ΡΠ΅Π·ΡΠ»ΡΡΡΡΡΡ ΡΠ»ΠΈΠΊΡ Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΈΠ½ΡΠ΅ΡΠ½ΠΈ ΡΠ΅Π³ΠΈΡΡΠ°Ρ, ΠΏΠΎΡΡΠΎ ΡΠ΅ ΡΠΎ ΡΠΏΡΠ°Π²ΠΎ ΠΎΠ½ΠΎ ΡΡΠΎ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΡΠ°Π΄ΠΈ ΠΊΠ°Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ ΡΠ²ΠΎΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΎΠ΄Π΅Π‘Ρ ΠΈΡΡ .
ΠΠ°ΠΊΠΎ ΡΠΌΠΎ ΡΠ²Π΅ ΠΎΠ²ΠΎ Π·Π½Π°Π»ΠΈ, ΠΏΠΈΡΠ°ΡΠ΅ ΡΠ΅? ΠΠ΄
ΠΠ°ΠΊΠ»Π΅, ΡΠ°Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Ρ2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml
ΠΠ΅ΡΠ΅ΠΌΠΎ ΠΎΠ²ΠΎ Π΄Π΅ΡΠ°ΡΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ, Π²Π΅Ρ ΡΠ΅ΠΌΠΎ ΡΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°ΡΠΈ ΡΠ°ΠΌΠΎ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΠΠ£Π’ΠΠ£Π’_ΠΠΠ :
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΠΎΠ²Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠ΅ ΡΠ΅Π΄Π½Π°ΠΊ Π±ΡΠΈΠ»Π΄-Ρ, Π³Π΄Π΅ Π Π΅Π°ΡΡ ΡΡΠ°Π²ΡΠ° ΡΠ°ΡΡΠ°Π²ΡΠ΅Π½ΠΈ ΡΠ°Π΄ΡΠΆΠ°Ρ. ΠΡΡΠ³ΠΈ ΠΎΠΊΠ²ΠΈΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ ΠΏΡΡΠ°ΡΠ΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΠΌΠ±Π΅ΡΡ ΡΠ΅ Π΄ΠΈΡΡ. Π Π΅Π·ΡΠ»ΡΠ°Ρ Π½Π°ΡΠ΅Π³ ΠΏΡΠ²ΠΎΠ³ Π·Π°Π΄Π°ΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π±ΠΈΡΠ΅ ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΡΠ° ΡΠ°Π΄ΡΠΆΠΈ Π₯Π’ΠΠ, ΠΠ°Π²Π°Π‘ΡΡΠΈΠΏΡ ΠΈ Π¦Π‘Π‘ ΠΊΠΎΡΠ΅ ΡΠΌΠΎ ΠΏΡΠΈΠΊΡΠΏΠΈΠ»ΠΈ.
ΠΠ°ΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ»ΠΈΠΊΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΠΠΠΠΠ‘-Ρ
Π¨ΡΠΎ ΡΠ΅ ΡΠΈΡΠ΅ Π½Π°ΡΠ΅Π³ Π΄ΡΡΠ³ΠΎΠ³ Π·Π°Π΄Π°ΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, ΡΡΠ΅Π±Π°Π»ΠΎ Π±ΠΈ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠ»ΠΈΠΊΡ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΠΠΠΠΠ‘-Ρ, ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΡΠ°Π΄ΡΠΆΠ°Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΡ ΡΠΌΠΎ Π²Π΅Ρ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΈ. Π£ ΡΡΡΡΠΈΠ½ΠΈ, ΠΎΠ²ΠΎ ΡΠ΅ Π΄Π΅ΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ ΠΎΠ΄Π΅ΡΠΊΠ° Π³Π΄Π΅ ΡΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ ΡΠ»Π°Π½ΡΠ°Π½Π΅ Π³ΡΠ°Π΄ΡΠ΅.
ΠΠ° Π±ΠΈΡΠΌΠΎ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΌΠΈ ΡΠ΅ΠΌΠΎ - ΠΏΠΎΡΠΏΡΠ½ΠΎ ΠΈΡΡΠΎ ΠΊΠ°ΠΎ ΠΌΠ°Π»ΠΎΠΏΡΠ΅ - ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΠΊΠ»Π°ΡΡΠ΅Ρ Π·Π°Π΄Π°ΡΠ°ΠΊ Π²Π΅Π±Π°ΠΏΠΏ-Π±ΡΠΈΠ»Π΄-ΡΡΠ½ΡΠΈΠΌΠ΅:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml
ΠΠΊΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ ΠΊΠΎΠ΄ ΠΎΠ²ΠΈΡ Π·Π°Π΄Π°ΡΠ°ΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π΄Π° ΠΎΠ½ Π½Π΅ Π½Π°Π²ΠΎΠ΄ΠΈ ΠΠΈΡ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΡΠ° ΠΊΠΎΡΠΈΠΌ ΡΠ°Π΄ΠΈΠΌΠΎ Π½ΠΈΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ. ΠΠΈ ΡΠ°ΠΌΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°ΠΌΠΎ ΡΡΠ° ΡΠ°ΡΠ½ΠΎ ΠΏΡΠ΅Π½ΠΎΡΠΈΠΌΠΎ Ρ ΠΠΈΡ, ΠΈΠ»ΠΈ ΠΎΠ΄ΡΠ΅ΡΠ΅Π½Ρ ΡΠ»ΠΈΠΊΡ Π³Π΄Π΅ ΡΡΠ΅Π±Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·Π»Π°Π·Π½Π° ΠΊΠΎΠ½Π°ΡΠ½Π° ΡΠ»ΠΈΠΊΠ°. ΠΠ±ΠΎΠ³ ΡΠΎΠ³Π° ΡΠ΅ ΠΎΠ²ΠΈ Π·Π°Π΄Π°ΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΌΠΎΠ³Ρ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠ°Π΄Π° ΡΠ°Π΄ΠΈΡΠ΅ ΡΠ° Π΄ΡΡΠ³ΠΈΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΠΌΠ°.
Π ΠΎΠ²Π΄Π΅ Π³ΡΠ°ΡΠΈΠΎΠ·Π½ΠΎ ΠΏΡΠ΅Π»Π°Π·ΠΈΠΌΠΎ Π½Π° ΡΠ»Π΅Π΄Π΅ΡΡ ΡΠ°ΡΠΊΡ...
Π Π΅ΡΡΡΡΠΈ
ΠΠ°ΠΊΠ»Π΅, ΠΏΠΎΡΡΠΎ, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠΌΠΎ ΡΠΏΡΠ°Π²ΠΎ ΡΠ΅ΠΊΠ»ΠΈ, Π·Π°Π΄Π°ΡΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΡΠ΅Π±Π° Π΄Π° Π±ΡΠ΄Ρ ΡΡΠΎ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅ ΠΎΠΏΡΡΠΈΡΠΈ, ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΡΠ΅ΡΡΡΡΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΊΠ°ΠΎ ΡΠ»Π°Π· (ΠΠΈΡ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅) ΠΈ ΠΊΠ°ΠΎ ΠΈΠ·Π»Π°Π· (ΠΊΠΎΠ½Π°ΡΠ½Π΅ ΡΠ»ΠΈΠΊΠ΅). ΠΡΠ²ΠΈ ΡΠ΅ΡΡΡΡ ΠΊΠΎΡΠΈ Π½Π°ΠΌ ΡΡΠ΅Π±Π° ΡΠ΅ ΠΠΈΡ, Π³Π΄Π΅ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ Π½Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΎΡΠΏΡΠΈΠ»ΠΈΠΊΠ΅ ΠΎΠ²Π°ΠΊΠΎ:
# This resource is the location of the git repo with the web application source
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: web-application-repo
spec:
type: git
params:
- name: url
value: https://github.com/nodeshift-starters/react-pipeline-example
- name: revision
value: master
ΠΠ²Π΄Π΅ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Π Π΅ΡΠΎΡΡΡΠ΅ ΡΠ΅ ΡΠΈΠΏΠ° Π³ΠΈΡ. Π£ΡΠ» ΠΊΡΡΡ Ρ ΠΎΠ΄Π΅ΡΠΊΡ ΠΏΠ°ΡΠ°ΠΌΡ ΡΠΊΠ°Π·ΡΡΠ΅ Π½Π° ΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎ ΡΠΏΡΠ΅ΠΌΠΈΡΡΠ΅ ΠΈ Π½Π°Π²ΠΎΠ΄ΠΈ Π³Π»Π°Π²Π½Ρ Π³ΡΠ°Π½Ρ (ΠΎΠ²ΠΎ ΡΠ΅ ΠΎΠΏΡΠΈΠΎΠ½ΠΎ, Π°Π»ΠΈ ΠΌΠΈ Π³Π° ΠΏΠΈΡΠ΅ΠΌΠΎ ΡΠ°Π΄ΠΈ ΠΏΠΎΡΠΏΡΠ½ΠΎΡΡΠΈ).
Π‘Π°Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΡΠ΅ΡΡΡΡ Π·Π° ΡΠ»ΠΈΠΊΡ Π³Π΄Π΅ ΡΠ΅ Π±ΠΈΡΠΈ ΡΠ°ΡΡΠ²Π°Π½ΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ Π·Π°Π΄Π°ΡΠΊΠ° Ρ2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ, ΠΎΠ²ΠΎ ΡΠ΅ ΡΠ°Π΄ΠΈ ΠΎΠ²Π°ΠΊΠΎ:
# This resource is the result of running "npm run build", the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: built-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest
ΠΠ²Π΄Π΅ ΡΠ΅ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Π Π΅ΡΠΎΡΡΡΠ΅ ΡΠΈΠΏΠ° ΠΈΠΌΠ°Π³Π΅, Π° Π²ΡΠ΅Π΄Π½ΠΎΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΠ» ΡΠΊΠ°Π·ΡΡΠ΅ Π½Π° ΠΈΠ½ΡΠ΅ΡΠ½ΠΈ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΠΌΠ°Π³Π΅ Π Π΅Π³ΠΈΡΡΡΠΈ, ΠΏΠΎΡΠ΅Π±Π½ΠΎ ΠΎΠ½Π°Ρ ΠΊΠΎΡΠΈ ΡΠ΅ Π½Π°Π»Π°Π·ΠΈ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ Π²Π΅Π±Π°ΠΏΠΏ-ΠΏΠΈΠΏΠ΅Π»ΠΈΠ½Π΅-Π°. ΠΠ΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΎΠ²ΠΎ ΠΏΠΎΠ΄Π΅ΡΠ°Π²Π°ΡΠ΅ Π°ΠΊΠΎ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π΄ΡΡΠ³ΠΈ ΠΈΠΌΠ΅Π½ΡΠΊΠΈ ΠΏΡΠΎΡΡΠΎΡ.
Π Π½Π° ΠΊΡΠ°ΡΡ, ΠΏΠΎΡΠ»Π΅Π΄ΡΠΈ ΡΠ΅ΡΡΡΡ ΠΊΠΎΡΠΈ Π½Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½ Π±ΠΈΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ ΡΠΈΠΏΠ° ΠΈΠΌΠ°Π³Π΅ ΠΈ ΠΎΠ²ΠΎ ΡΠ΅ Π±ΠΈΡΠΈ ΠΊΠΎΠ½Π°ΡΠ½Π° ΠΠΠΠΠΠ‘ ΡΠ»ΠΈΠΊΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΡΠ΅ Π·Π°ΡΠΈΠΌ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΡΠΎΠΊΠΎΠΌ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ°:
# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: runtime-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest
ΠΠΏΠ΅Ρ, ΠΈΠΌΠ°ΡΡΠ΅ Π½Π° ΡΠΌΡ Π΄Π° ΠΎΠ²Π°Ρ ΡΠ΅ΡΡΡΡ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠΈ ΡΠ»ΠΈΠΊΡ Ρ ΠΈΠ½ΡΠ΅ΡΠ½ΠΎΠΌ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΡΠ΅Π³ΠΈΡΡΡΡ Ρ ΠΈΠΌΠ΅Π½ΡΠΊΠΎΠΌ ΠΏΡΠΎΡΡΠΎΡΡ Π²Π΅Π±Π°ΠΏΠΏ-ΠΏΠΈΠΏΠ΅Π»ΠΈΠ½Π΅-Π°.
ΠΠ° Π±ΠΈΡΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ ΡΠ²Π΅ ΠΎΠ²Π΅ ΡΠ΅ΡΡΡΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄Π½ΠΎΠΌ, ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΠ΅Π°ΡΠ΅:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml
ΠΠΎΠΆΠ΅ΡΠ΅ Π±ΠΈΡΠΈ ΡΠΈΠ³ΡΡΠ½ΠΈ Π΄Π° ΡΡ ΡΠ΅ΡΡΡΡΠΈ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΈ ΠΎΠ²Π°ΠΊΠΎ:
$ tkn resource ls
Π’ΡΠ°Π½ΡΠΏΠΎΡΡΠ½ΠΈ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄
Π‘Π°Π΄Π° ΠΊΠ°Π΄Π° ΠΈΠΌΠ°ΠΌΠΎ ΡΠ²Π΅ ΠΏΠΎΡΡΠ΅Π±Π½Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΡΠ°ΡΡΠ°Π²ΠΈΠΌΠΎ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΠΎΠ΄ ΡΠΈΡ ΡΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΌΠΎ Π³Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml
ΠΠ»ΠΈ ΠΏΡΠ΅ Π½Π΅Π³ΠΎ ΡΡΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΎΠ²Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅. ΠΡΠ²ΠΎ ΡΠ΅ ΠΈΠΌΠ΅:
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: build-and-deploy-react
ΠΠ°ΡΠΈΠΌ Ρ ΠΎΠ΄Π΅ΡΠΊΡ ΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΠΌΠ° Π²ΠΈΠ΄ΠΈΠΌΠΎ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡΡ ΡΠ΅ΡΡΡΡΠ° ΠΊΠΎΡΠ΅ ΡΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ ΡΠ°Π½ΠΈΡΠ΅:
spec:
resources:
- name: web-application-repo
type: git
- name: built-web-application-image
type: image
- name: runtime-web-application-image
type: image
ΠΠ°ΡΠΈΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ Π·Π°Π΄Π°ΡΠΊΠ΅ ΠΊΠΎΡΠ΅ Π½Π°Ρ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΡΡΠ΅Π±Π° Π΄Π° Π·Π°Π²ΡΡΠΈ. ΠΡΠ΅ ΡΠ²Π΅Π³Π°, ΠΌΠΎΡΠ° Π΄Π° ΠΈΠ·Π²ΡΡΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ Ρ2ΠΈ-Π²Π΅Π±-Π°ΠΏΠΏ ΠΊΠΎΡΠΈ ΡΠΌΠΎ Π²Π΅Ρ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ:
tasks:
- name: build-web-application
taskRef:
name: s2i-web-app
kind: ClusterTask
ΠΠ²Π°Ρ Π·Π°Π΄Π°ΡΠ°ΠΊ ΡΠ·ΠΈΠΌΠ° ΡΠ»Π°Π·Π½Π΅ (Π³ΠΈΡ ΡΠ΅ΡΡΡΡ) ΠΈ ΠΈΠ·Π»Π°Π·Π½Π΅ (ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½Π΅-Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅-ΡΠ΅ΡΡΡΡ-ΠΈΠΌΠ°Π³Π΅) ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅. Π’Π°ΠΊΠΎΡΠ΅ ΠΌΡ ΠΏΡΠΎΡΠ»Π΅ΡΡΡΠ΅ΠΌΠΎ ΠΏΠΎΡΠ΅Π±Π°Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ ΡΠ°ΠΊΠΎ Π΄Π° Π½Π΅ Π²Π΅ΡΠΈΡΠΈΠΊΡΡΠ΅ Π’ΠΠ‘ ΠΏΠΎΡΡΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠΎ ΡΠ°ΠΌΠΎΠΏΠΎΡΠΏΠΈΡΠ°Π½Π΅ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ΅:
resources:
inputs:
- name: source
resource: web-application-repo
outputs:
- name: image
resource: built-web-application-image
params:
- name: TLSVERIFY
value: "false"
Π‘Π»Π΅Π΄Π΅ΡΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ ΡΠ΅ ΡΠΊΠΎΡΠΎ ΠΈΡΡΠΈ, ΡΠ°ΠΌΠΎ ΡΡΠΎ ΡΠ΅ ΠΎΠ²Π΄Π΅ Π·ΠΎΠ²Π΅ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π²Π΅Π±Π°ΠΏΠΏ-Π±ΡΠΈΠ»Π΄-ΡΡΠ½ΡΠΈΠΌΠ΅ ΠΊΠΎΡΠΈ ΡΠΌΠΎ Π²Π΅Ρ ΠΊΡΠ΅ΠΈΡΠ°Π»ΠΈ:
name: build-runtime-image
taskRef:
name: webapp-build-runtime
kind: ClusterTask
ΠΠ°ΠΎ ΠΈ ΠΊΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ Π·Π°Π΄Π°ΡΠΊΠ°, ΠΏΡΠΎΡΠ»Π΅ΡΡΡΠ΅ΠΌΠΎ ΡΠ΅ΡΡΡΡ, Π°Π»ΠΈ ΡΠ°Π΄Π° ΡΠ΅ ΡΠΎ ΡΠ³ΡΠ°ΡΠ΅Π½Π°-Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°-ΡΠ»ΠΈΠΊΠ° (ΠΈΠ·Π»Π°Π· Π½Π°ΡΠ΅Π³ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³ Π·Π°Π΄Π°ΡΠΊΠ°). Π ΠΊΠ°ΠΎ ΠΈΠ·Π»Π°Π· ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΡΡΠ°Π²ΡΠ°ΠΌΠΎ ΡΠ»ΠΈΠΊΡ. ΠΠΎΡΡΠΎ ΡΠ΅ ΠΎΠ²Π°Ρ Π·Π°Π΄Π°ΡΠ°ΠΊ ΠΌΠΎΡΠ° ΠΈΠ·Π²ΡΡΠΈΡΠΈ Π½Π°ΠΊΠΎΠ½ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΠ³, Π΄ΠΎΠ΄Π°ΡΠ΅ΠΌΠΎ ΠΏΠΎΡΠ΅ ΡΡΠ½ΠΡΡΠ΅Ρ:
resources:
inputs:
- name: image
resource: built-web-application-image
outputs:
- name: image
resource: runtime-web-application-image
params:
- name: TLSVERIFY
value: "false"
runAfter:
- build-web-application
Π‘Π»Π΅Π΄Π΅ΡΠ° Π΄Π²Π° Π·Π°Π΄Π°ΡΠΊΠ° ΡΡ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠ½Π° Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΠ°, ΡΡΡΠΈΡΠ°ΡΠ° ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΠΠΠ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΊΠΎΡΠ΅ ΠΆΠΈΠ²Π΅ Ρ ΠΊ8Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ Π½Π°ΡΠ΅ Π²Π΅Π± Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅, ΠΊΠ°ΠΎ ΠΈ Π·Π° Π°ΠΆΡΡΠΈΡΠ°ΡΠ΅ ΠΎΠ²Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° Π½ΠΎΠ²ΠΈΡ ΡΠ»ΠΈΠΊΠ°. ΠΠ²Π° Π΄Π²Π° Π·Π°Π΄Π°ΡΠΊΠ° ΠΊΠ»Π°ΡΡΠ΅ΡΠ° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π»ΠΈ ΡΠΌΠΎ Π½Π° ΠΏΠΎΡΠ΅ΡΠΊΡ ΡΠ»Π°Π½ΠΊΠ°.
ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΡΠ°Π½ΡΠΏΠΎΡΡΠ΅ΡΠ°
ΠΠ°ΠΊΠ»Π΅, ΡΠ²ΠΈ Π΄Π΅Π»ΠΎΠ²ΠΈ Π½Π°ΡΠ΅Π³ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π° ΡΡ ΠΊΡΠ΅ΠΈΡΠ°Π½ΠΈ, Π° ΠΌΠΈ ΡΠ΅ΠΌΠΎ Π³Π° ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΡΠ»Π΅Π΄Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:
$ tkn pipeline start build-and-deploy-react
Π£ ΠΎΠ²ΠΎΡ ΡΠ°Π·ΠΈ, ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° Π»ΠΈΠ½ΠΈΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ ΡΠ΅ Π΄Π° ΠΈΠ·Π°Π±Π΅ΡΠ΅ΡΠ΅ ΠΎΠ΄Π³ΠΎΠ²Π°ΡΠ°ΡΡΡΠ΅ ΡΠ΅ΡΡΡΡΠ΅ ΠΊΠ°ΠΎ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π½Π° ΡΠ²Π°ΠΊΠΈ ΡΠ΅Π½ Π·Π°Ρ ΡΠ΅Π²: Π·Π° Π³ΠΈΡ ΡΠ΅ΡΡΡΡ ΠΈΠ·Π°Π±Π΅ΡΠΈΡΠ΅ Π²Π΅Π±-Π°ΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½-ΡΠ΅ΠΏΠΎ, Π·Π°ΡΠΈΠΌ Π·Π° ΠΏΡΠ²ΠΈ ΡΠ΅ΡΡΡΡ ΡΠ»ΠΈΠΊΠ΅, ΠΈΠ·Π³ΡΠ°ΡΠ΅Π½-Π²Π΅Π±-Π°ΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½ -ΠΈΠΌΠ°Π³Π΅, ΠΈ ΠΊΠΎΠ½Π°ΡΠ½ΠΎ, Π·Π° Π΄ΡΡΠ³ΠΈ ΡΠ΅ΡΡΡΡ ΡΠ»ΠΈΠΊΠ΅ βΡΡΠ½ΡΠΈΠΌΠ΅-Π²Π΅Π±-Π°ΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½-ΠΈΠΌΠ°Π³Π΅:
? Choose the git resource to use for web-application-repo: web-application-repo (https://github.com/nodeshift-starters/react-pipeline-example)
? Choose the image resource to use for built-web-application-image: built-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-
application:latest)
? Choose the image resource to use for runtime-web-application-image: runtime-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtim
e-web-application:latest)
Pipelinerun started: build-and-deploy-react-run-4xwsr
Π‘Π°Π΄Π° Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠΎ ΡΡΠ°ΡΡΡ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π° ΠΏΠΎΠΌΠΎΡΡ ΡΠ»Π΅Π΄Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅:
$ tkn pipeline logs -f
ΠΠ°Π΄Π° ΡΠ΅ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ ΡΠ°ΡΠΏΠΎΡΠ΅ΡΠ΅Π½Π°, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π·Π°ΡΡΠ°ΠΆΠΈΡΠΈ ΠΎΠ±ΡΠ°Π²ΡΠ΅Π½Ρ ΡΡΡΡ ΡΠ° ΡΠ»Π΅Π΄Π΅ΡΠΎΠΌ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
ΠΠ° Π²Π΅ΡΡ Π²ΠΈΠ·ΡΠ΅Π»ΠΈΠ·Π°ΡΠΈΡΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠΈ Π½Π°Ρ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ Ρ ΡΠ΅ΠΆΠΈΠΌΡ Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠ΅ Π²Π΅Π± ΠΊΠΎΠ½Π·ΠΎΠ»Π΅ Ρ ββΠΎΠ΄Π΅ΡΠΊΡ Π¦Π΅Π²ΠΎΠ²ΠΎΠ΄ΠΈ, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ». 1.
Π€ΠΈΠ³. 1. ΠΡΠ΅Π³Π»Π΅Π΄ ΡΠ΅ΠΊΡΡΠΈΡ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄Π°.
ΠΠ»ΠΈΠΊΠΎΠΌ Π½Π° ΡΠ΅ΠΊΡΡΠΈ ΡΠ΅Π²ΠΎΠ²ΠΎΠ΄ ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ ΡΠ΅ Π΄ΠΎΠ΄Π°ΡΠ½Π΅ Π΄Π΅ΡΠ°ΡΠ΅, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»ΠΈΡΠΈ 2.
ΠΠΈΡΠΈΠ½Π°Ρ. 2. ΠΠΎΠ΄Π°ΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ Π³Π°ΡΠΎΠ²ΠΎΠ΄Ρ.
ΠΠ°ΠΊΠΎΠ½ Π²ΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Ρ ΠΏΡΠΈΠΊΠ°Π·Ρ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ».3.
Π‘Π»ΠΈΠΊΠ° 3. ΠΠ°Π½ΡΠΈΡΠ°Π½Π° ΠΌΠ°Ρ ΡΠ½Π°.
ΠΠ»ΠΈΠΊΠΎΠΌ Π½Π° ΠΊΡΡΠΆΠΈΡ Ρ Π³ΠΎΡΡΠ΅ΠΌ Π΄Π΅ΡΠ½ΠΎΠΌ ΡΠ³Π»Ρ ΠΈΠΊΠΎΠ½Π΅ ΠΎΡΠ²Π°ΡΠ° ΡΠ΅ Π½Π°ΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠΈΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ»ΠΈΡΠΈ 4.
ΠΠΈΡΠΈΠ½Π°Ρ. 4. ΠΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ Π Π΅Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅.
ΠΠ°ΠΊΡΡΡΠ°ΠΊ
ΠΠ°ΠΊΠ»Π΅, ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΡΠΌΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π·Π° Π²Π°ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ Π½Π° ΠΠΏΠ΅Π½Π‘Ρ
ΠΈΡΡ-Ρ ΠΈ Π΄Π° Π³Π° ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΡΡΠ΅ΡΠ΅ ΡΠ° Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΌ ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°. Π’Π°ΠΊΠΎΡΠ΅ ΡΠΌΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΈΠΌΡΠ»ΠΈΡΠ°ΠΌΠΎ ΡΠ°Π±Π»ΠΎΠ½ Π»Π°Π½ΡΠ°Π½Π΅ Π³ΡΠ°Π΄ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ ΠΠΏΠ΅Π½Π‘Ρ
ΠΈΡΡ ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅Ρ. Π‘Π²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠΎΠ΄ΠΎΠ²Π° ΠΈΠ· ΠΎΠ²ΠΎΠ³ ΡΠ»Π°Π½ΠΊΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ
ΠΠΎΠ΄Π°ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ (ΠΠ)
- ΠΠ΅ΡΠΏΠ»Π°ΡΠ½Π° Π΅-ΠΊΡΠΈΠ³Π°
βΠ Π°Π·Π²ΠΎΡ Π½Π° ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ: Π²ΠΎΠ΄ΠΈΡ Π·Π° Π½Π΅ΡΡΡΠΏΡΠΈΠ²Π΅β ΠΠ·Π³ΡΠ°Π΄ΡΠ° ΠΠΎΠ΄Π΅.ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΠΎΡΠΈΡΠ΅Π½ΡΠΈΡΠ°Π½ΠΈΡ Π½Π° ΠΊΠΎΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π Π΅Π΄ Π₯Π°Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½ Π ΡΠ½ΡΠΈΠΌΠ΅Ρ ΠΈ ΠΡΡΠΈΠΎ ΠΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° Ρ ΠΠΎΠ΄Π΅.ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΠΌΠ° Π½Π° ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ-Ρ ΠΏΠΎΠΌΠΎΡΡ Π¦Ρ ΡΠΎΠΌΠ΅ ΠΠ΅Π²Π’ΠΎΠΎΠ»Ρ-Π° Π’ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π° ΡΠ°Π²Π»Π°Π΄Π°Π²Π°ΡΠ΅ ΠΠΊΠΏΡΠ΅ΡΡ-Π° Π½Π° ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ-Ρ ΠΎΠ΄ Π½ΡΠ»Π΅ ΠΠ°ΡΠ°Π²Π° ΠΎΠΏΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½Π΅ Π²Π΅ΡΠ·ΠΈΡΠ΅ ΠΠΎΠ΄Π΅.ΡΡ ΠΊΠ°ΠΎ Π΄Π΅Π»Π° Π Π΅Π΄ Π₯Π°Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΠΏΠΏΠ»ΠΈΡΠ°ΡΠΈΠΎΠ½ Π ΡΠ½ΡΠΈΠΌΠ΅Ρ ΠΠ°Π΄Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΠΎΠ΄Π΅.ΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π° ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ-Ρ ΠΏΠΎΠΌΠΎΡΡ ΠΡΠΎΠΌΠ΅ΡΡ Π΅ΡΡΠ° - ΠΡΡΠ°Π»ΠΈ ΡΠ»Π°Π½ΡΠΈ ΠΎ
ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ Π½Π° ΡΠ°ΡΡΡ Π Π΅Π΄ Π₯Π°ΡΠ°
ΠΠ°ΡΠ°Π²Π΅ ΠΏΡΠ΅Π΄ΡΡΠΎΡΠ΅ΡΠΈΡ Π²Π΅Π±ΠΈΠ½Π°ΡΠ°
ΠΠΎΡΠΈΡΠ΅ΠΌΠΎ ΡΠ΅ΡΠΈΡΡ Π²Π΅Π±ΠΈΠ½Π°ΡΠ° Ρ ΠΏΠ΅ΡΠ°ΠΊ ΠΎ Π΄ΠΎΠΌΠ°ΡΠ΅ΠΌ ΠΈΡΠΊΡΡΡΠ²Ρ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ Π Π΅Π΄ Π₯Π°Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ Π¦ΠΎΠ½ΡΠ°ΠΈΠ½Π΅Ρ ΠΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ:
28. Π°Π²Π³ΡΡΡ, Π²Π΅Π±ΠΈΠ½Π°Ρ ΠΠΌΠΏΠ΅ΡΠ°ΡΠΎΡ βΠΠΏΠ΅ΡΠ°ΡΠΎΡβ: ΠΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΈ ΠΡΠ±Π΅ΡΠ½Π΅ΡΠ΅Ρ 11. ΡΠ΅ΠΏΡΠ΅ΠΌΠ±Π°Ρ, ΠΠ΅ΠΏΠ»ΠΎΠΈΠΌΠ΅Π½ΡΠ¦ΠΎΠ½ΡΠΈΠ³ Π²Ρ ΠΠ΅ΠΏΠ»ΠΎΠΈΠΌΠ΅Π½Ρ β ΠΠ°Π³ΠΈΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½Π° Π·Π° ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ Π·Π° ΠΏΡΠ°Π²ΡΠ΅ΡΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° 25. ΡΠ΅ΠΏΡΠ΅ΠΌΠ±Π°Ρ, Π Π΅Π΄ Π₯Π°Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ ΠΈ ΠΠ°ΡΡ ΠΈΠ½Π΅ ΠΠΠ 9. ΠΎΠΊΡΠΎΠ±Π°Ρ ΠΠ°ΠΊΠΎ ΡΠ΅ ΠΈΠ·Π±ΠΎΡΠΈΡΠΈ ΡΠ° Π½Π°Π³Π»ΠΈΠΌ ΠΏΠΎΠ²Π΅ΡΠ°ΡΠ΅ΠΌ ΠΎΠΏΡΠ΅ΡΠ΅ΡΠ΅ΡΠ° 23. ΠΎΠΊΡΠΎΠ±Π°Ρ, ΠΠΌΠ±Π΅Π΄Π΄Π΅Π΄ ΠΠ΅Π½ΠΊΠΈΠ½Ρ, ΠΠΈΠΏΠ΅Π»ΠΈΠ½Π΅-Π±ΡΠΈΠ»Π΄ΠΈΠ½Π³, Π’Π΅ΠΊΡΠΎΠ½ Ρ Π Π΅Π΄ Π₯Π°Ρ ΠΠΏΠ΅Π½Π‘Ρ ΠΈΡΡ Π¦ΠΎΠ½ΡΠ°ΠΈΠ½Π΅Ρ ΠΠ»Π°ΡΡΠΎΡΠΌ
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ