Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅ Π½Π° всички Π² Ρ‚ΠΎΠ·ΠΈ Π±Π»ΠΎΠ³! Π’ΠΎΠ²Π° Π΅ Ρ‚Ρ€Π΅Ρ‚Π°Ρ‚Π° публикация ΠΎΡ‚ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π°, Π² която Π²ΠΈ ΠΏΠΎΠΊΠ°Π·Π²Π°ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ ΡƒΠ΅Π± прилоТСния Π½Π° Red Hat OpenShift.

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

Π’ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ‚Π΅ Π΄Π²Π΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ ΡƒΠ΅Π± прилоТСния само с няколко ΡΡ‚ΡŠΠΏΠΊΠΈ ΠΈ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½ΠΎΠ²ΠΎ S2I ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Π΅Π΄Π½ΠΎ с ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° HTTP ΡΡŠΡ€Π²ΡŠΡ€ ΠΊΠ°Ρ‚ΠΎ NGINX, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Π²Π΅Ρ€ΠΈΠΆΠ½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° производствСно внСдряванС.

ДнСс Ρ‰Π΅ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° стартиратС ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenShift ΠΈ Π΄Π° Π³ΠΎ синхронизиратС с Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма, Π° ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊΠ²ΠΎ прСдставляват OpenShift Pipelines ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ асСмбли.

OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Ρ€Π°Π±ΠΎΡ‚Π΅Π½ процСс Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

ΠšΠ°ΠΊΡ‚ΠΎ Π²Π΅Ρ‡Π΅ бСшС посочСно Π² ΠΏΡŠΡ€Π²ΠΈ пост, типичният процСс Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ ΡƒΠ΅Π± прилоТСния Π΅ просто β€žΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°β€œ, ΠΊΠΎΠΉΡ‚ΠΎ прослСдява ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. ΠšΠΎΠ³Π°Ρ‚ΠΎ сС случат, компилацията Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ сС задСйства ΠΈ слСд Ρ‚ΠΎΠ²Π° сС Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°.

Π’ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ€Π°ΠΌΠΊΠΈ Ρ‚Π°ΠΊΡŠΠ² "ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°" Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ инструмСнти Π½Π° командния Ρ€Π΅Π΄.

ΠœΠ΅ΡΡ‚Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡŠΡ€Π²ΠΎ, Π½Π΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² случай Π½Π° стартиранС Π½Π° прилоТСния Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Π”Π° Π²Π·Π΅ΠΌΠ΅ΠΌ Π·Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π Π΅Π°Π³ΠΈΡ€Π°Ρ‚ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ статии, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΡŠΡ‰ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π½Π° работния процСс сС ΠΏΡ€ΠΈΠ»Π°Π³Π°Ρ‚ Π·Π° всички Π΄Ρ€ΡƒΠ³ΠΈ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ Ρ€Π°ΠΌΠΊΠΈ.
И Ρ‚Π°ΠΊΠ°, Π·Π° Π΄Π° стартирамС β€žΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°β€œ Π² нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° React, Ρ‰Π΅ напишСм слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ npm run start

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π² ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†Π° Π½Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

И Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ‰Π΅ сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅:

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

Π‘Π΅Π³Π°, Π°ΠΊΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ във Ρ„Π°ΠΉΠ»Π°, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° сС ΠΎΠ±Π½ΠΎΠ²ΠΈ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°.

Π”ΠΎΠ±Ρ€Π΅, с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π² Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ всичко Π΅ ясно, Π½ΠΎ ΠΊΠ°ΠΊ Π΄Π° постигнСм ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½Π° OpenShift?

Π‘ΡŠΡ€Π²ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° OpenShift

Ако си спомнятС Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ΅Π½ пост, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ Ρ‚Π°ΠΊΠ° Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π°Ρ‚Π° Ρ„Π°Π·Π° Π½Π° изпълнСниС (Ρ„Π°Π·Π° Π½Π° изпълнСниС) Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ S2I ΠΈ видяхмС, Ρ‡Π΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ сС обслуТва ΠΎΡ‚ ΠΌΠΎΠ΄ΡƒΠ»Π° Π·Π° обслуТванС.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π°ΠΊΠΎ сС Π²Π³Π»Π΅Π΄Π°Ρ‚Π΅ ΠΏΠΎ-ΠΎΡ‚Π±Π»ΠΈΠ·ΠΎ стартирайтС скрипт ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‚ΠΎΠΉ ΠΈΠΌΠ° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата $NPM_RUN, която Π²ΠΈ позволява Π΄Π° ΠΈΠ·ΠΏΡŠΠ»Π½ΠΈΡ‚Π΅ своя собствСна ΠΊΠΎΠΌΠ°Π½Π΄Π°.

НапримСр, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΌΠΎΠ΄ΡƒΠ»Π° nodeshift, Π·Π° Π΄Π° Π²Π½Π΅Π΄Ρ€ΠΈΠΌ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:

$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΡŠΡ‚ ΠΏΠΎ-Π³ΠΎΡ€Π΅ Π΅ ΡΡŠΠΊΡ€Π°Ρ‚Π΅Π½, Π·Π° Π΄Π° ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π° ΠΎΠ±Ρ‰Π°Ρ‚Π° идСя.

Π’ΡƒΠΊ Π΄ΠΎΠ±Π°Π²ΠΈΡ…ΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата NPM_RUN към Π½Π°ΡˆΠ΅Ρ‚ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅, която ΠΊΠ°Π·Π²Π° Π½Π° срСдата Π·Π° изпълнСниС Π΄Π° изпълни ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° стартиранС Π½Π° yarn, която стартира ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° React Π² нашия OpenShift pod.

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π΄Π½Π΅Π²Π½ΠΈΠΊΠ° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰Π° капсула, Ρ‚ΠΎΠ³Π°Π²Π° Ρ‰Π΅ ΠΈΠΌΠ° Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

Π Π°Π·Π±ΠΈΡ€Π° сС, всичко Ρ‚ΠΎΠ²Π° няма Π΄Π° Π΅ Π½ΠΈΡ‰ΠΎ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° синхронизирамС локалния ΠΊΠΎΠ΄ с ΠΊΠΎΠ΄Π°, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΡ‰ΠΎ сС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π° Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΆΠΈΠ²Π΅Π΅ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΡΡŠΡ€Π²ΡŠΡ€.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΡ‚Π΄Π°Π»Π΅Ρ‡Π΅Π½ ΠΈ Π»ΠΎΠΊΠ°Π»Π΅Π½ ΠΊΠΎΠ΄

Π—Π° щастиС, nodeshift ΠΌΠΎΠΆΠ΅ лСсно Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡ€ΠΈ синхронизиранСто ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° watch, Π·Π° Π΄Π° прослСдяватС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅.

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ изпълним ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ бСзопасно Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ npx nodeshift watch

Π’ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС Π½Π°ΠΏΡ€Π°Π²Π΅Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠ° с работСщия pod, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Ρ€Π°Π½ΠΎ, синхронизиранСто Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ с отдалСчСния ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ Ρ‰Π΅ бъдС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π°Π½ΠΎ ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π² Π½Π°ΡˆΠ°Ρ‚Π° Π»ΠΎΠΊΠ°Π»Π½Π° систСма Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° сС Π½Π°Π±Π»ΡŽΠ΄Π°Π²Π°Ρ‚ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ сСга Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Ρ„Π°ΠΉΠ»Π° src/App.js, систСмата Ρ‰Π΅ Ρ€Π΅Π°Π³ΠΈΡ€Π° Π½Π° Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Ρ‰Π΅ Π³ΠΈ ΠΊΠΎΠΏΠΈΡ€Π° Π² отдалСчСния ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ ΠΈ Ρ‰Π΅ стартира ΡΡŠΡ€Π²ΡŠΡ€Π° Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°, ΠΊΠΎΠΉΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π±Ρ€Π°ΡƒΠ·ΡŠΡ€Π°.

Π—Π° Π΄Π° Π·Π°Π²ΡŠΡ€ΡˆΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Π°Ρ‚Π°, Π½Π΅ΠΊΠ° ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π² тяхната цялост:

$ 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

ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° watch Π΅ абстракция Π²ΡŠΡ€Ρ…Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° oc rsync, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΡƒΡ‡ΠΈΡ‚Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ Ρ‚ΡƒΠΊ.

Π’ΠΎΠ²Π° бСшС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° React, Π½ΠΎ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ ΡΡŠΡ‰ΠΈΡΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° с Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π°ΠΌΠΊΠΈ, просто Π·Π°Π΄Π°ΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° срСдата NPM_RUN спорСд Π½ΡƒΠΆΠ΄ΠΈΡ‚Π΅.
 

Openshift Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ Π·Π° инструмСнт ΠΊΠ°Ρ‚ΠΎ OpenShift Pipelines ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° Π²Π΅Ρ€ΠΈΠΆΠ½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ.

Какво С OpenShift Pipelines

OpenShift Pipelines Π΅ Π±Π°Π·ΠΈΡ€Π°Π½Π° Π½Π° ΠΎΠ±Π»Π°ΠΊ CI/CD Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° интСграция ΠΈ систСма Π·Π° доставка Π·Π° Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‰ΠΈ Tekton. Tekton Π΅ гъвкава CI/CD Ρ€Π°ΠΌΠΊΠ° с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Kubernetes, която Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π° внСдряванСто Π² мноТСство ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ (Kubernetes, Π±Π΅Π· ΡΡŠΡ€Π²ΡŠΡ€, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини ΠΈ Ρ‚.Π½.), ΠΊΠ°Ρ‚ΠΎ сС абстрахира ΠΎΡ‚ основния слой.

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚Π°Π·ΠΈ статия изисква извСстно ΠΏΠΎΠ·Π½Π°Π²Π°Π½Π΅ Π½Π° Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ силно Π²ΠΈ ΡΡŠΠ²Π΅Ρ‚Π²Π°ΠΌΠ΅ ΠΏΡŠΡ€Π²ΠΎ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π΅Π½ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ.

Настройка Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½Π°Ρ‚Π° срСда

Π—Π° Π΄Π° си ΠΏΠΎΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π² Ρ‚Π°Π·ΠΈ статия, ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° настроитС Ρ€Π°Π±ΠΎΡ‚Π½Π° срСда:

  1. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ OpenShift 4. ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ CodeReady Containers (CRD) Π·Π° Ρ‚ΠΎΠ²Π°, инструкциитС Π·Π° инсталиранС Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΡƒΠΊ.
  2. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΡŠΡ‚ Π΅ Π³ΠΎΡ‚ΠΎΠ², трябва Π΄Π° инсталиратС Pipeline Operator Π²ΡŠΡ€Ρ…Ρƒ Π½Π΅Π³ΠΎ. НС сС страхувайтС, лСсно Π΅, инструкции Π·Π° инсталиранС Ρ‚ΡƒΠΊ.
  3. Π˜Π·Ρ‚Π΅Π³Π»ΡΠ½Π΅ Tekton CLI (tkn) Ρ‚ΡƒΠΊ.
  4. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ инструмСнта Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄ create-react-app, Π·Π° Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΎ (Ρ‚ΠΎΠ²Π° Π΅ просто ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π Π΅Π°Π³ΠΈΡ€Π°Ρ‚).
  5. (По ΠΈΠ·Π±ΠΎΡ€) ΠšΠ»ΠΎΠ½ΠΈΡ€Π°ΠΉΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, Π·Π° Π΄Π° стартиратС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ с npm install ΠΈ слСд Ρ‚ΠΎΠ²Π° npm start.

Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π½Π° прилоТСния ΡΡŠΡ‰ΠΎ Ρ‰Π΅ ΠΈΠΌΠ° ΠΏΠ°ΠΏΠΊΠ° k8s, която Ρ‰Π΅ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Kubernetes/OpenShift YAML, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π·Π° внСдряванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π©Π΅ ΠΈΠΌΠ° Tasks, ClusterTasks, Resources ΠΈ Pipelines, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ създадСм Π² Ρ‚ΠΎΠ²Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.

Π—Π°Ρ…Π²Π°Ρ‰Π°ΠΌ сС

ΠŸΡŠΡ€Π²Π°Ρ‚Π° ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° нашия ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΅ Π΄Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Ρ‚Π΅ Π½ΠΎΠ² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° OpenShift. НСка Π½Π°ΠΈΠΌΠ΅Π½ΡƒΠ²Π°ΠΌΠ΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ webapp-pipeline ΠΈ Π³ΠΎ създадСм със слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ oc new-project webapp-pipeline

По-късно Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ‰Π΅ сС появи Π² ΠΊΠΎΠ΄Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π°ΠΊΠΎ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π΄Π° Π³ΠΎ ΠΊΡ€ΡŠΡΡ‚ΠΈΡ‚Π΅ ΠΏΠΎ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½, Π½Π΅ забравяйтС Π΄Π° Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ ΠΊΠΎΠ΄Π° ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅. Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°, Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ΠΌ Π½Π΅ ΠΎΡ‚Π³ΠΎΡ€Π΅ Π½Π°Π΄ΠΎΠ»Ρƒ, Π° ΠΎΡ‚Π΄ΠΎΠ»Ρƒ Π½Π°Π³ΠΎΡ€Π΅: тоСст ΠΏΡŠΡ€Π²ΠΎ Ρ‰Π΅ създадСм всички ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π° ΠΈ Π΅Π΄Π²Π° слСд Ρ‚ΠΎΠ²Π° самия Π½Π΅Π³ΠΎ.

И Ρ‚Π°ΠΊΠ°, Π½Π° ΠΏΡŠΡ€Π²ΠΎ място…

Π—Π°Π΄Π°Ρ‡ΠΈ

НСка създадСм няколко Π·Π°Π΄Π°Ρ‡ΠΈ (Π·Π°Π΄Π°Ρ‡ΠΈ), ΠΊΠΎΠΈΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π·Π° внСдряванСто Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° нашия Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄. ΠŸΡŠΡ€Π²Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°, apply_manifests_task, отговаря Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° YAML Π½Π° ΠΎΠ½Π΅Π·ΠΈ рСсурси Π½Π° Kubernetes (услуга, внСдряванС ΠΈ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚), ΠΊΠΎΠΈΡ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² ΠΏΠ°ΠΏΠΊΠ°Ρ‚Π° k8s Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’Ρ‚ΠΎΡ€Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° - update_deployment_task - отговаря Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²Π΅Ρ‡Π΅ Π²Π½Π΅Π΄Ρ€Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΡŠΠ·Π΄Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ ΠΎΡ‚ нашия ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

НС сС притСснявайтС, Π°ΠΊΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ясно. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚Π΅Π·ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ са Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΈ Ρ‰Π΅ Π³ΠΈ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-късно. ЗасСга Π½Π΅ΠΊΠ° просто Π³ΠΈ създадСм:

$ 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 CLI, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Ρ‚Π΅ Π΄Π°Π»ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ са създадСни:

$ tkn task ls

NAME                AGE
apply-manifests     1 minute ago
update-deployment   1 minute ago

Π—Π°Π±Π΅Π»Π΅ΠΆΠΊΠ°: Π’ΠΎΠ²Π° са Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° тСкущия Π²ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

ΠšΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ

ΠšΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ са основно ΡΡŠΡ‰ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ. ВоСст, Ρ‚ΠΎΠ²Π° Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌΠ° колСкция ΠΎΡ‚ ΡΡ‚ΡŠΠΏΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ Π½Π°Ρ‡ΠΈΠ½, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС стартира ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° Π·Π°Π΄Π°Ρ‡Π°. Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π΅, Ρ‡Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π° навсякъдС Π² ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π°. Π—Π° Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ списъка с ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС Π΄ΠΎΠ±Π°Π²ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° tkn CLI:

$ 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

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° създадСм Π΄Π²Π΅ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ. ΠŸΡŠΡ€Π²ΠΈΡΡ‚ Ρ‰Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° S2I ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‰Π΅ Π³ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈ Π΄ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° OpenShift; Π²Ρ‚ΠΎΡ€ΠΎΡ‚ΠΎ Π΅ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ Π½Π°ΡˆΠ΅Ρ‚ΠΎ Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° NGINX ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ смС създали ΠΊΠ°Ρ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅.

Π‘ΡŠΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Ρ‚Π΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

ΠšΠΎΠ³Π°Ρ‚ΠΎ създавамС ΠΏΡŠΡ€Π²Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°, Ρ‰Π΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ…ΠΌΠ΅ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° статия Π·Π° ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ‚Π΅ сборки. Π‘ΠΏΠΎΠΌΠ½Π΅Ρ‚Π΅ си, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ…ΠΌΠ΅ S2I ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ (ubi8-s2i-web-app), Π·Π° Π΄Π° β€žΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌβ€œ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ…ΠΌΠ΅ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΎ във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° OpenShift. Π‘Π΅Π³Π° Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° S2I ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π·Π° Π΄Π° създадСм DockerFile Π·Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Buildah, Π·Π° Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ ΠΈ ΠΈΠ·ΠΏΡ€Π°Ρ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ към Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° OpenShift, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ OpenShift ΠΏΡ€Π°Π²ΠΈ, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρ‚Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ прилоТСния с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° NodeShift.

ΠžΡ‚ΠΊΡŠΠ΄Π΅ Π·Π½Π°Π΅ΠΌ всичко Ρ‚ΠΎΠ²Π°, ΠΏΠΈΡ‚Π°Ρ‚Π΅ Π²ΠΈΠ΅? ΠΎΡ‚ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° вСрсия Π½Π° официалния Node.js, Π½ΠΈΠ΅ просто Π³ΠΎ ΠΊΠΎΠΏΠΈΡ€Π°Ρ…ΠΌΠ΅ ΠΈ Π³ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠΈΡ…ΠΌΠ΅ Π·Π° сСбС си.

И Ρ‚Π°ΠΊΠ°, сСга създавамС Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° s2i-web-app:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml

Няма Π΄Π° Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ, Π° само Π΄Π° сС спрСм Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° OUTPUT_DIR:

params:
      - name: OUTPUT_DIR
        description: The location of the build output directory
        default: build

По ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Ρ‚ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π΅ build, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ React поставя ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΎΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅. Π”Ρ€ΡƒΠ³ΠΈ Ρ€Π°ΠΌΠΊΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡŠΡ‚ΠΈΡ‰Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² Ember Ρ‚ΠΎΠ²Π° Π΅ dist. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ ΠΎΡ‚ Π½Π°ΡˆΠ°Ρ‚Π° ΠΏΡŠΡ€Π²Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½Π° Π·Π°Π΄Π°Ρ‡Π° Ρ‰Π΅ бъдС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΎ HTML, JavaScript ΠΈ CSS, ΠΊΠΎΠΈΡ‚ΠΎ смС ΡΡŠΠ±Ρ€Π°Π»ΠΈ.

НиС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° NGINX

Π©ΠΎ сС отнася Π΄ΠΎ Π½Π°ΡˆΠ°Ρ‚Π° Π²Ρ‚ΠΎΡ€Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½Π° Π·Π°Π΄Π°Ρ‡Π°, тя трябва Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ Π±Π°Π·ΠΈΡ€Π°Π½ΠΎ Π½Π° NGINX ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π·Π° нас, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ смС създали. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΠΎΠ²Π° Π΅ частта ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Ρ€Π°Π·Π΄Π΅Π», Π² която Ρ€Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ Π²Π΅Ρ€ΠΈΠΆΠ½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΠΈ.

Π—Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚ΠΎΠ²Π°, Π½ΠΈΠ΅ - Ρ‚ΠΎΡ‡Π½ΠΎ ΠΊΠ°ΠΊΡ‚ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π³ΠΎΡ€Π΅ - създавамС ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½Π° Π·Π°Π΄Π°Ρ‡Π° Π½Π° webapp-build-runtime:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml

Ако ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ ΠΊΠΎΠ΄Π° Π·Π° Ρ‚Π΅Π·ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Ρ‡Π΅ Ρ‚ΠΎΠΉ Π½Π΅ посочва Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ, с ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ, ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° изобраТСнията, ΠΊΠΎΠΈΡ‚ΠΎ създавамС. НиС само опрСдСлямС ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ Π½Π° Git ΠΈΠ»ΠΈ някакво ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ искамС Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅ΠΌ ΠΊΡ€Π°ΠΉΠ½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π•Ρ‚ΠΎ Π·Π°Ρ‰ΠΎ Ρ‚Π΅Π·ΠΈ ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Π΄Ρ€ΡƒΠ³ΠΈ прилоТСния.

И слСд Ρ‚ΠΎΠ²Π° Π³Ρ€Π°Ρ†ΠΈΠΎΠ·Π½ΠΎ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ към слСдващата Ρ‚ΠΎΡ‡ΠΊΠ° ...

РСсурсы

Π’Π°ΠΊΠ° Ρ‡Π΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ, ΠΊΠ°ΠΊΡ‚ΠΎ Ρ‚ΠΎΠΊΡƒ-Ρ‰ΠΎ ΠΊΠ°Π·Π°Ρ…ΠΌΠ΅, ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½ΠΈΡ‚Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ възмоТно Π½Π°ΠΉ-ΠΎΠ±Ρ‰ΠΈ, трябва Π΄Π° създадСм рСсурси, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ във Π²Ρ…ΠΎΠ΄Π° (Git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅) ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π° (ΠΊΡ€Π°ΠΉΠ½ΠΈ изобраТСния). ΠŸΡŠΡ€Π²ΠΈΡΡ‚ рСсурс, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ, Π΅ Git, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π΅Ρ‰ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ:

# 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

Π’ΡƒΠΊ PipelineResource Π΅ ΠΎΡ‚ Ρ‚ΠΈΠΏ git. Url ΠΊΠ»ΡŽΡ‡ΡŠΡ‚ Π² сСкцията params сочи към ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈ Π·Π°Π΄Π°Π²Π° главния ΠΊΠ»ΠΎΠ½ (Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ, Π½ΠΎ Π³ΠΎ пишСм Π·Π° ΠΏΡŠΠ»Π½ΠΎΡ‚Π°).

Π‘Π΅Π³Π° трябва Π΄Π° създадСм рСсурс Π·Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π·Π°ΠΏΠ°Π·Π΅Π½ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π½Π° s2i-web-app, Ρ‚ΠΎΠ²Π° сС ΠΏΡ€Π°Π²ΠΈ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:

# 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

Π’ΡƒΠΊ PipelineResource Π΅ ΠΎΡ‚ Ρ‚ΠΈΠΏ image ΠΈ стойността Π½Π° url ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€Π° сочи към Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° изобраТСнията Π½Π° OpenShift, ΠΏΠΎ-спСциално Ρ‚ΠΎΠ·ΠΈ Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° webapp-pipeline. НС забравяйтС Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Ρ‚Π°Π·ΠΈ настройка, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΎ пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°.

И накрая, послСдният рСсурс, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅ΠΌ, ΡΡŠΡ‰ΠΎ Ρ‰Π΅ бъдС ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎΡ‚ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° NGINX, ΠΊΠΎΠ΅Ρ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ бъдС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° внСдряванСто:

# 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

ΠžΡ‚Π½ΠΎΠ²ΠΎ ΠΈΠΌΠ°ΠΉΡ‚Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Ρ‚ΠΎΠ·ΠΈ рСсурс ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ във Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΈΡ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€ Π½Π° OpenShift Π² пространството Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° webapp-pipeline.

Π—Π° Π΄Π° създадСм всички Ρ‚Π΅Π·ΠΈ рСсурси навСднъТ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° create:

$ 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

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° създавамС Π·Π°Π΄Π°Ρ‡ΠΈ Π·Π° изпълнСниС Π½Π° нашия ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€. На ΠΏΡŠΡ€Π²ΠΎ място, Ρ‚ΠΎΠΉ трябва Π΄Π° изпълни Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° s2i-web-app, която Π²Π΅Ρ‡Π΅ смС създали:

tasks:
    - name: build-web-application
      taskRef:
        name: s2i-web-app
        kind: ClusterTask

Π’Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ° Π²Ρ…ΠΎΠ΄Π½ΠΈ (gir рСсурс) ΠΈ ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ (built-web-application-image resource) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. НиС ΡΡŠΡ‰ΠΎ ΠΌΡƒ ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ спСциалСн ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° Π½Π΅ провСрява TLS, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ самоподписани сСртификати:

resources:
        inputs:
          - name: source
            resource: web-application-repo
        outputs:
          - name: image
            resource: built-web-application-image
      params:
        - name: TLSVERIFY
          value: "false"

Π‘Π»Π΅Π΄Π²Π°Ρ‰Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ ΡΡŠΡ‰Π°Ρ‚Π°, само ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π° Π½Π° webapp-build-runtime, която Π²Π΅Ρ‡Π΅ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅, сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° Ρ‚ΡƒΠΊ:

name: build-runtime-image
    taskRef:
      name: webapp-build-runtime
      kind: ClusterTask

ΠšΠ°ΠΊΡ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° Π·Π°Π΄Π°Ρ‡Π°, Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ рСсурс, Π½ΠΎ сСга Ρ‚ΠΎΠΉ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (ΠΈΠ·Ρ…ΠΎΠ΄ΡŠΡ‚ ΠΎΡ‚ ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° Π½ΠΈ Π·Π°Π΄Π°Ρ‡Π°). И ΠΊΠ°Ρ‚ΠΎ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π·Π°Π΄Π°Π²Π°ΠΌΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Въй ΠΊΠ°Ρ‚ΠΎ Ρ‚Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π° трябва Π΄Π° сС изпълни слСд ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π°, добавямС ΠΏΠΎΠ»Π΅Ρ‚ΠΎ runAfter:

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

Π‘Π»Π΅Π΄Π²Π°Ρ‰ΠΈΡ‚Π΅ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ отговарят Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅Ρ‚ΠΎ Π½Π° услугата, ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° ΠΈ YAML Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅Ρ‚Π΅ Π·Π° Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС Π½Π°ΠΌΠΈΡ€Π°Ρ‚ Π² дирСкторията k8s Π½Π° Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΠΎΠ²Π° внСдряванС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Π½ΠΎΠ²ΠΈ изобраТСния. ΠŸΠΎΡΡ‚Π°Π²ΠΈΡ…ΠΌΠ΅ Ρ‚Π΅Π·ΠΈ Π΄Π²Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΊΠ»ΡŠΡΡ‚Π΅Ρ€Π° Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° статията.

ИзпълнСниС Π½Π° Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄Π°

И Ρ‚Π°ΠΊΠ°, всички части Π½Π° нашия Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ са създадСни ΠΈ Ρ‰Π΅ Π³ΠΎ стартирамС със слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ tkn pipeline start build-and-deploy-react

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ командният Ρ€Π΅Π΄ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈ подходящитС рСсурси трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π±Ρ€Π°Π½ΠΈ Π² ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° всяка ΠΎΡ‚ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ заявки: Π·Π° git рСсурса ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ web-application-repo, слСд Ρ‚ΠΎΠ²Π° Π·Π° ΠΏΡŠΡ€Π²ΠΈΡ рСсурс Π·Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ ΡƒΠ΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅- ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ накрая Π·Π° Π²Ρ‚ΠΎΡ€ΠΈ рСсурс Π·Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ –изобраТСниС Π½Π° web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС:

? 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.

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

Π€ΠΈΠ³. 1. ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈ Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈ.

Π©Ρ€Π°ΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π²ΡŠΡ€Ρ…Ρƒ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Ρ‚Ρ€ΡŠΠ±ΠΎΠΏΡ€ΠΎΠ²ΠΎΠ΄ ΠΏΠΎΠΊΠ°Π·Π²Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ подробности, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π° 2.

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

ΠžΡ€ΠΈΠ·. 2. Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° информация Π·Π° ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€Π°.

Π‘Π»Π΅Π΄ ΠΏΠΎΠ²Π΅Ρ‡Π΅ подробности ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈΡ‚Π΅ прилоТСния Π² ΠΈΠ·Π³Π»Π΅Π΄Π° топология, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ„ΠΈΠ³.3.

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

Π€ΠΈΠ³. 3. Π’Π΅Ρ‡Π°Ρ‰Π° капсула.

Π©Ρ€Π°ΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π²ΡŠΡ€Ρ…Ρƒ ΠΊΡ€ΡŠΠ³Π° Π² горния дСсСн ъгъл Π½Π° ΠΈΠΊΠΎΠ½Π°Ρ‚Π° отваря Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°ΠΊΡ‚ΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ„ΠΈΠ³ΡƒΡ€Π° 4.

Π‘ΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ прилоТСния Π½Π° OpenShift, част 3: OpenShift ΠΊΠ°Ρ‚ΠΎ срСда Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ Π½Π° OpenShift

ΠžΡ€ΠΈΠ·. 4. Π Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ React.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

И Ρ‚Π°ΠΊΠ°, Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ…ΠΌΠ΅ ΠΊΠ°ΠΊ Π΄Π° стартиратС ΡΡŠΡ€Π²ΡŠΡ€ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π·Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° OpenShift ΠΈ Π΄Π° Π³ΠΎ синхронизиратС с Π»ΠΎΠΊΠ°Π»Π½Π°Ρ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма. Π Π°Π·Π³Π»Π΅Π΄Π°Ρ…ΠΌΠ΅ ΡΡŠΡ‰ΠΎ ΠΊΠ°ΠΊ Π΄Π° симулирамС шаблон Π·Π° Π²Π΅Ρ€ΠΈΠΆΠ½ΠΎ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° OpenShift Pipelines. Всички ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ статия ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ Ρ‚ΡƒΠΊ.

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ рСсурси

Π‘ΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ Π·Π° прСдстоящи ΡƒΠ΅Π±ΠΈΠ½Π°Ρ€ΠΈ

Π—Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ ΠΏΠ΅Ρ‚ΡŠΡ‡Π½ΠΈ ΡƒΠ΅Π±ΠΈΠ½Π°Ρ€ΠΈ Π·Π° СстСствСното изТивяванС ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Red Hat OpenShift Container Platform ΠΈ Kubernetes:

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€