ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

Π—Π΄Ρ€Π°Π²ΠΎ Π½Π° ситС Π½Π° овој Π±Π»ΠΎΠ³! Ова Π΅ Ρ‚Ρ€Π΅Ρ‚Π° објава Π²ΠΎ ΡΠ΅Ρ€ΠΈΡ˜Π°Ρ‚Π° Π²ΠΎ која ΠΏΠΎΠΊΠ°ΠΆΡƒΠ²Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° распорСдимС ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° Red Hat OpenShift.

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

Π’ΠΎ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ Π΄Π²Π΅ објави, ΠΏΠΎΠΊΠ°ΠΆΠ°Π²ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° сС распорСдат ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ само Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ Ρ‡Π΅ΠΊΠΎΡ€ΠΈ ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° сС користи Π½ΠΎΠ²Π° слика S2I Π·Π°Π΅Π΄Π½ΠΎ со слика ΠΎΠ΄ сСрвСрот HTTP, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ NGINX, ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ ΠΎΠΊΠΎΠ²Π°Π½ΠΈ конструкции Π·Π° ΠΎΡ€ΠΊΠ΅ΡΡ‚Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ°Ρ‚Π° Π½Π° производството. .

ДСнСс ќС ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° стартуватС сСрвСр Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π·Π° Π²Π°ΡˆΠ°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° OpenShift ΠΈ Π΄Π° ја синхронизиратС со Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм, Π° исто Ρ‚Π°ΠΊΠ° ќС Ρ€Π°Π·Π³ΠΎΠ²Π°Ρ€Π°ΠΌΠ΅ Π·Π° Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ сС OpenShift Pipelines ΠΈ ΠΊΠ°ΠΊΠΎ Ρ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС користат ΠΊΠ°ΠΊΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° ΠΏΠΎΠ²Ρ€Π·Π°Π½ΠΈΡ‚Π΅ склопови.

OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина

Π Π°Π±ΠΎΡ‚Π΅Π½ Ρ‚Π΅ΠΊ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜

Како ΡˆΡ‚ΠΎ Π΅ вСќС Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ ΠΏΡ€Π²ΠΈΠΎΡ‚ пост, Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΈΠΎΡ‚ процСс Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π·Π° ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΅ Сдноставно нСкој Π²ΠΈΠ΄ β€žΡ€Π°Π·Π²ΠΎΡ˜Π΅Π½ ΡΠ΅Ρ€Π²Π΅Ρ€β€œ кој Π³ΠΈ слСди ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡ‚Π΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ. Кога ќС сС ΠΏΠΎΡ˜Π°Π²Π°Ρ‚, сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΈΠ·Π³Ρ€Π°Π΄Π±Π°Ρ‚Π° Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ ΠΏΠΎΡ‚ΠΎΠ° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π° Π½Π° прСлистувачот.

Π’ΠΎ ΠΏΠΎΠ²Π΅ΡœΠ΅Ρ‚ΠΎ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Ρ€Π°ΠΌΠΊΠΈ, Ρ‚Π°ΠΊΠΎΠ² β€žΡΠ΅Ρ€Π²Π΅Ρ€ Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜β€œ Π΅ Π²Π³Ρ€Π°Π΄Π΅Π½ Π²ΠΎ соодвСтнитС Π°Π»Π°Ρ‚ΠΊΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π°Ρ‚Π° линија.

Π›ΠΎΠΊΠ°Π»Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€Π²ΠΎ, Π΄Π° Π²ΠΈΠ΄ΠΈΠΌΠ΅ ΠΊΠ°ΠΊΠΎ ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° ΠΊΠΎΠ³Π° сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Π”Π° ја Π·Π΅ΠΌΠ΅ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΊΠ°ΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π Π΅Π°Π³ΠΈΡ€Π°Π°Ρ‚ ΠΎΠ΄ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ написи, ΠΈΠ°ΠΊΠΎ рСчиси иститС ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ‚ΠΈ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΎΡ‚ Ρ‚Π΅ΠΊ сС ΠΏΡ€ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π°Ρ‚ Π²ΠΎ ситС Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ Ρ€Π°ΠΌΠΊΠΈ.
Π—Π½Π°Ρ‡ΠΈ, Π·Π° Π΄Π° Π³ΠΎ стартувамС β€ždev serverβ€œ Π²ΠΎ Π½Π°ΡˆΠΈΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ React, ќС ја внСсСмС слСднава ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ npm run start

ΠŸΠΎΡ‚ΠΎΠ° Π²ΠΎ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π½ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ† ќС Π²ΠΈΠ΄ΠΈΠΌΠ΅ Π²Π°ΠΊΠ²ΠΎ Π½Π΅ΡˆΡ‚ΠΎ:

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

И Π½Π°ΡˆΠ°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° ќС сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ Π²ΠΎ стандардниот прСлистувач:

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

Π‘Π΅Π³Π°, Π°ΠΊΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π°, Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π° Π²ΠΎ прСлистувачот.

Π’ΠΎ Ρ€Π΅Π΄, сè Π΅ јасно со Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π²ΠΎ Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ€Π΅ΠΆΠΈΠΌ, Π½ΠΎ ΠΊΠ°ΠΊΠΎ Π΄Π° сС постигнС истото Π½Π° 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 ΠΏΠΎΠ΄Π»ΠΎΠ³Π°.

Ако Π³ΠΎ ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅Ρ‚Π΅ Π΄Π½Π΅Π²Π½ΠΈΠΊΠΎΡ‚ Π½Π° Ρ‚Ρ€Ρ‡Π°ΡšΠ΅, ќС ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π°ΠΊΠ°:

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, сСто ΠΎΠ²Π° Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π΅ Π½ΠΈΡˆΡ‚ΠΎ Π΄ΠΎΠ΄Π΅ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΎ синхронизирамС Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄ со ΠΊΠΎΠ΄ΠΎΡ‚, кој исто Ρ‚Π°ΠΊΠ° сС слСди Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ, Π½ΠΎ ΠΆΠΈΠ²Π΅Π΅ Π½Π° ΠΎΠ΄Π΄Π°Π»Π΅Ρ‡Π΅Π½ сСрвСр.

Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ далСчински ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ ΠΊΠΎΠ΄

Π—Π° ΡΡ€Π΅ΡœΠ°, nodeshift лСсно ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π΅ ΠΏΡ€ΠΈ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ја користитС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° часовник Π·Π° слСдСњС Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅.

Π—Π½Π°Ρ‡ΠΈ, ΠΎΡ‚ΠΊΠ°ΠΊΠΎ ќС ја ΠΈΠ·Π²Ρ€ΡˆΠΈΠΌΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜Π½ΠΈΠΎΡ‚ сСрвСр Π·Π° Π½Π°ΡˆΠ°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π΄Π° ја користимС слСднава ΠΊΠΎΠΌΠ°Π½Π΄Π°:

$ npx nodeshift watch

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, ќС сС Π½Π°ΠΏΡ€Π°Π²ΠΈ врска со ΠΏΠΎΠ΄Π»ΠΎΠ³Π°Ρ‚Π° ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΌΠ°Π»ΠΊΡƒ ΠΏΠΎΡ€Π°Π½ΠΎ, ќС сС Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ Π»ΠΎΠΊΠ°Π»Π½ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈ со далСчинскиот кластСр ΠΈ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅ Π½Π° Π½Π°ΡˆΠΈΠΎΡ‚ Π»ΠΎΠΊΠ°Π»Π΅Π½ систСм ќС ΠΏΠΎΡ‡Π½Π°Ρ‚ Π΄Π° сС слСдат Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ.

Π—Π°Ρ‚ΠΎΠ°, Π°ΠΊΠΎ сСга ја Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΠΌΠ΅ Π΄Π°Ρ‚ΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° 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

ΠšΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° часовник Π΅ Π°ΠΏΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ˜Π° Π½Π° Π²Ρ€Π²ΠΎΡ‚ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° oc rsync, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄ΠΎΠ·Π½Π°Π΅Ρ‚Π΅ повСќС Π·Π° Ρ‚ΠΎΠ° ΠΊΠ°ΠΊΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½ΠΈΡ€Π° Ρ‚ΡƒΠΊΠ°.

Ова бСшС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° React, Π½ΠΎ истиот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи ΠΈ со Π΄Ρ€ΡƒΠ³ΠΈ Ρ€Π°ΠΌΠΊΠΈ, само поставСтС ја ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° Π½Π° ΠΎΠΊΠΎΠ»ΠΈΠ½Π°Ρ‚Π° NPM_RUN ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ.
 

Openshift Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΈ

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

Π‘Π»Π΅Π΄Π½ΠΎ, ќС Π·Π±ΠΎΡ€ΡƒΠ²Π°ΠΌΠ΅ Π·Π° Π°Π»Π°Ρ‚ΠΊΠ° ΠΊΠ°ΠΊΠΎ OpenShift Pipelines ΠΈ ΠΊΠ°ΠΊΠΎ Ρ‚Π°Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи ΠΊΠ°ΠΊΠΎ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π° Π½Π° ΠΎΠΊΠΎΠ²Π°Π½ΠΈΡ‚Π΅ конструкции.

Π¨Ρ‚ΠΎ сС OpenShift Pipelines

OpenShift Pipelines Π΅ CI/CD систСм Π·Π° ΠΊΠΎΠ½Ρ‚ΠΈΠ½ΡƒΠΈΡ€Π°Π½Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ˜Π° ΠΈ испорака Π½Π° ΠΎΠ±Π»Π°ΠΊ, Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π·Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°ΡšΠ΅ Π½Π° Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Tekton. Tekton Π΅ флСксибилна Ρ€Π°ΠΌΠΊΠ° CI/CD со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° Kubernetes која Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° Π³ΠΎ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π°Ρ‚Π΅ Ρ€Π°ΡΠΏΠΎΡ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΈ (Kubernetes, Π±Π΅Π· сСрвСри, Π²ΠΈΡ€Ρ‚ΡƒΠ΅Π»Π½ΠΈ машини ΠΈΡ‚Π½.) со Π°ΠΏΡΡ‚Ρ€Π°Ρ…ΠΈΡ€Π°ΡšΠ΅ ΠΎΠ΄ основниот слој.

Π Π°Π·Π±ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° овој напис Π±Π°Ρ€Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΎ знаСњС Π·Π° Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΈ, ΠΏΠ° Π·Π°Ρ‚ΠΎΠ° ΠΏΡ€Π΅ΠΏΠΎΡ€Π°Ρ‡ΡƒΠ²Π°ΠΌΠ΅ ΠΏΡ€Π²ΠΎ Π΄Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π΅Π½ ΡƒΡ‡Π΅Π±Π½ΠΈΠΊ.

ΠŸΠΎΡΡ‚Π°Π²ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° срСдина

Π—Π° Π΄Π° си ΠΏΠΎΠΈΠ³Ρ€Π°Ρ‚Π΅ со ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π²ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, ΠΏΡ€Π²ΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° ја ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²ΠΈΡ‚Π΅ Π²Π°ΡˆΠ°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π½Π° срСдина:

  1. Π˜Π½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρ˜Ρ‚Π΅ ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Ρ˜Ρ‚Π΅ кластСр OpenShift 4. ΠΠ°ΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ користат CodeReady Containers (CRD) Π·Π° ΠΎΠ²Π°, инструкции Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° Π·Π° ΠΊΠΎΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ˜Π΄Π°Ρ‚ Ρ‚ΡƒΠΊΠ°.
  2. ΠžΡ‚ΠΊΠ°ΠΊΠΎ кластСрот Π΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½, Ρ‚Ρ€Π΅Π±Π° Π΄Π° Π³ΠΎ инсталиратС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ Π½Π° Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΈ Π½Π° Π½Π΅Π³ΠΎ. НС ΠΏΠ»Π°ΡˆΠ΅Ρ‚Π΅ сС, лСсно Π΅, инструкции Π·Π° ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° Ρ‚ΡƒΠΊΠ°.
  3. ΠŸΡ€Π΅Π²Π·Π΅ΠΌΠΈ Tekton CLI (tkn) Ρ‚ΡƒΠΊΠ°.
  4. Π˜Π·Π²Ρ€ΡˆΠ΅Ρ‚Π΅ ја Π°Π»Π°Ρ‚ΠΊΠ°Ρ‚Π° Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½Π° линија create-react-app Π·Π° Π΄Π° ΠΊΡ€Π΅ΠΈΡ€Π°Ρ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° која ΠΏΠΎΡ‚ΠΎΠ° ќС ја распорСдитС (ΠΎΠ²Π° Π΅ Сдноставна Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π Π΅Π°Π³ΠΈΡ€Π°Π°Ρ‚).
  5. (Π˜Π·Π±ΠΎΡ€Π½ΠΎ) ΠšΠ»ΠΎΠ½ΠΈΡ€Π°Ρ˜Ρ‚Π΅ Π³ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π·Π° Π΄Π° ја ΠΈΠ·Π²Ρ€ΡˆΠΈΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π»ΠΎΠΊΠ°Π»Π½ΠΎ со npm ΠΈΠ½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ˜Π° ΠΈ ΠΏΠΎΡ‚ΠΎΠ° ΡΡ‚Π°Ρ€Ρ‚ΡƒΠ²Π°ΡšΠ΅ npm.

Π‘ΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅Ρ‚ΠΎ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ќС ΠΈΠΌΠ° ΠΈ ΠΏΠ°ΠΏΠΊΠ° 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-Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ:

$ 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. Π£Π Π›-ΠΊΠ»ΡƒΡ‡ΠΎΡ‚ Π²ΠΎ Π΄Π΅Π»ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠΈ ΡƒΠΊΠ°ΠΆΡƒΠ²Π° Π½Π° ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡˆΡ‚Π΅ ΠΈ ја ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° Π³Π»Π°Π²Π½Π°Ρ‚Π° Π³Ρ€Π°Π½ΠΊΠ° (ΠΎΠ²Π° Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ, Π½ΠΎ Π½ΠΈΠ΅ Π³ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°ΠΌΠ΅ Π·Π°Ρ€Π°Π΄ΠΈ комплСтноста).

Π‘Π΅Π³Π° Ρ‚Ρ€Π΅Π±Π° Π΄Π° создадСмС рСсурс Π·Π° сликата ΠΊΠ°Π΄Π΅ ΡˆΡ‚ΠΎ ќС сС Π·Π°Ρ‡ΡƒΠ²Π°Π°Ρ‚ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° 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 Π΅ ΠΎΠ΄ Ρ‚ΠΈΠΏΠΎΡ‚ слика, Π° врСдноста Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ΠΎΡ‚ 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 Π²ΠΎ имСнскиот простор Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π°.

Π—Π° Π΄Π° Π³ΠΈ создадСмС ситС ΠΎΠ²ΠΈΠ΅ рСсурси одСднаш, ја користимС ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° Π·Π° создавањС:

$ 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 рСсурс) ΠΈ ΠΈΠ·Π»Π΅Π·Π½ΠΈ (ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°-рСсурс Π·Π° слика) ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, ΠΌΡƒ прСнСсувамС посСбСн ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Π°Ρ€ Π·Π° Π΄Π° Π½Π΅ Π³ΠΎ ΠΏΠΎΡ‚Π²Ρ€Π΄ΠΈ 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, ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°-Ρ€Π΅ΠΏΠΎ, ΠΏΠΎΡ‚ΠΎΠ° Π·Π° ΠΏΡ€Π²ΠΈΠΎΡ‚ рСсурс со слика, Π²Π³Ρ€Π°Π΄Π΅Π½Π° Π²Π΅Π±-Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° -слика, ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π·Π° рСсурс Π½Π° Π²Ρ‚ΠΎΡ€Π° слика -runtime-web-application-image:

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

Π‘Π».1. ΠŸΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡ€ΠΎΡ‚ΠΎΡ‡Π½ΠΈ Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ΠΈ.

Π‘ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° Ρ†Π΅Π²ΠΊΠΎΠ²ΠΎΠ΄ ΡˆΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ, сС ΠΏΡ€ΠΈΠΊΠ°ΠΆΡƒΠ²Π°Π°Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π΄Π΅Ρ‚Π°Π»ΠΈ, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ Π½Π° Π‘Π»ΠΈΠΊΠ° 2.

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

ΠžΡ€ΠΈΠ·. 2. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π·Π° гасоводот.

По повСќС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π³ΠΈ Π²ΠΈΠ΄ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈΡ‚Π΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ ΠΏΡ€ΠΈΠΊΠ°Π·ΠΎΡ‚ Вопологија, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ Π½Π° сл.3.

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

Π‘Π». 3. Лансиран ΠΏΠΎΠ΄.

Π‘ΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΡ€ΡƒΠ³ΠΎΡ‚ Π²ΠΎ Π³ΠΎΡ€Π½ΠΈΠΎΡ‚ дСсСн Π°Π³ΠΎΠ» Π½Π° ΠΈΠΊΠΎΠ½Π°Ρ‚Π° сС ΠΎΡ‚Π²ΠΎΡ€Π° Π½Π°ΡˆΠ°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ Π΅ ΠΏΡ€ΠΈΠΊΠ°ΠΆΠ°Π½ΠΎ Π½Π° слика 4.

ΠœΠΎΠ΄Π΅Ρ€Π½ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° OpenShift, Π΄Π΅Π» 3: OpenShift ΠΊΠ°ΠΊΠΎ Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина ΠΈ OpenShift Pipelines

ΠžΡ€ΠΈΠ·. 4. Π’ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° React.

Π—Π°ΠΊΠ»ΡƒΡ‡ΠΎΠΊ

Π—Π½Π°Ρ‡ΠΈ, ΠΏΠΎΠΊΠ°ΠΆΠ°Π²ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° стартуватС сСрвСр Π·Π° Ρ€Π°Π·Π²ΠΎΡ˜ Π·Π° Π²Π°ΡˆΠ°Ρ‚Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° Π½Π° OpenShift ΠΈ Π΄Π° Π³ΠΎ синхронизиратС со Π»ΠΎΠΊΠ°Π»Π½ΠΈΠΎΡ‚ Π΄Π°Ρ‚ΠΎΡ‚Π΅Ρ‡Π΅Π½ систСм. Π˜ΡΡ‚ΠΎ Ρ‚Π°ΠΊΠ°, Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π²ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° симулирамС шаблон Π·Π° Π³Ρ€Π°Π΄Π΅ΡšΠ΅ со ΡΠΈΠ½ΡŸΠΈΡ€ΠΈ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ OpenShift Pipelines. Π‘ΠΈΡ‚Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΠΎΠ΄ овој напис ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π½Π°Ρ˜Π΄Π°Ρ‚ Ρ‚ΡƒΠΊΠ°.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ рСсурси (EN)

Најави Π·Π° ΠΏΡ€Π΅Ρ‚ΡΡ‚ΠΎΡ˜Π½ΠΈΡ‚Π΅ Π²Π΅Π±ΠΈΠ½Π°Ρ€ΠΈ

Π—Π°ΠΏΠΎΡ‡Π½ΡƒΠ²Π°ΠΌΠ΅ ΡΠ΅Ρ€ΠΈΡ˜Π° Π²Π΅Π±ΠΈΠ½Π°Ρ€ΠΈ Π²ΠΎ ΠΏΠ΅Ρ‚ΠΎΠΊ Π·Π° ΠΌΠ°Ρ˜Ρ‡ΠΈΠ½ искуство со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° Red Hat OpenShift Container Platform ΠΈ Kubernetes:

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€