ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ื”ืขืœื ืึทืœืขืžืขืŸ ืื•ื™ืฃ ื“ืขื ื‘ืœืึธื’! ื“ืึธืก ืื™ื– ื“ื™ ื“ืจื™ื˜ ืคึผืึธืกื˜ืŸ ืื™ืŸ ืึท ืกืขืจื™ืข ืื™ืŸ ื•ื•ืึธืก ืžื™ืจ ื•ื•ื™ื™ึทื–ืŸ ื•ื•ื™ ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ ืžืึธื“ืขืจืŸ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ Red Hat OpenShift.

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืื™ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืฆื•ื•ื™ื™ ืึทืจื˜ื™ืงืœืขืŸ, ืžื™ืจ ื’ืขื•ื•ื™ื–ืŸ ื•ื•ื™ ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ ืžืึธื“ืขืจืŸ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ ื‘ืœื•ื™ื– ืึท ื‘ื™ืกืœ ืกื˜ืขืคึผืก ืื•ืŸ ื•ื•ื™ ืฆื• ื ื•ืฆืŸ ืึท ื ื™ื™ึทืข S2I ื‘ื™ืœื“ ืฆื•ื–ืึทืžืขืŸ ืžื™ื˜ ืึทืŸ ืึทื•ื•ืขืง-ื“ืขื-ืคึผืึธืœื™ืฆืข ื”ื˜ื˜ืคึผ ืกืขืจื•ื•ืขืจ ื‘ื™ืœื“, ืึทื–ืึท ื•ื•ื™ NGINX, ื ื™ืฆืŸ ื˜ืฉื™ื™ื ื“ ื‘ื•ื™ืขืŸ ืฆื• ืึธืจืงืขืกื˜ืจื™ืจืŸ ืคึผืจืึธื“ื•ืงืฆื™ืข ื“ื™ืคึผืœื•ื™ืžืึทื ืฅ. .

ื”ื™ื™ึทื ื˜ ืžื™ืจ ื•ื•ืขืœืŸ ื•ื•ื™ื™ึทื–ืŸ ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ ืคึฟืึทืจ ื“ื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ ื“ื™ OpenShift ืคึผืœืึทื˜ืคืึธืจืžืข ืื•ืŸ ืกื™ื ื’ืงืจืึทื ื™ื™ื– ืขืก ืžื™ื˜ ื“ื™ ื”ื™ื’ืข ื˜ืขืงืข ืกื™ืกื˜ืขื, ืื•ืŸ ืื•ื™ืš ืจืขื“ืŸ ื•ื•ืขื’ืŸ ื•ื•ืึธืก OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื– ื–ืขื ืขืŸ ืื•ืŸ ื•ื•ื™ ื–ื™ื™ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ืึทืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืฆื• ืœื™ื ื’ืงื˜ ืึทืกืขืžื‘ืœื™ื–.

OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข

ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ื•ื•ืึธืจืงืคืœืึธื•ื•

ื•ื•ื™ ืฉื•ื™ืŸ ื“ืขืจืžืื ื˜ ืื™ืŸ ืขืจืฉื˜ืขืจ ืคึผืึธืกื˜ืŸ, ื“ืขืจ ื˜ื™ืคึผื™ืฉ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืคึผืจืึธืฆืขืก ืคึฟืึทืจ ืžืึธื“ืขืจืŸ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ื– ืคืฉื•ื˜ ืึท ืžื™ืŸ ืคื•ืŸ "ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ" ื•ื•ืึธืก ื˜ืจืึทืงืก ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื”ื™ื’ืข ื˜ืขืงืขืก. ื•ื•ืขืŸ ื–ื™ื™ ืคืึทืœืŸ, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ื•ื™ืขืŸ ืื™ื– ื˜ืจื™ื’ืขืจื“ ืื•ืŸ ืขืก ืื™ื– ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงื˜ ืฆื• ื“ืขื ื‘ืœืขื˜ืขืจืขืจ.

ืื™ืŸ ืจื•ื‘ึฟ ืžืึธื“ืขืจืŸ ืคืจืึทืžืขื•ื•ืึธืจืงืก, ืึทื–ืึท ืึท "ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ" ืื™ื– ื’ืขื‘ื•ื™ื˜ ืื™ืŸ ื“ื™ ืงืึธืจืึทืกืคึผืึทื ื“ื™ื ื’ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืžื›ืฉื™ืจื™ื.

ืœืืงืืœืข ื‘ื™ื™ืฉืคื™ืœ

ืขืจืฉื˜ืขืจ, ืœืึธืžื™ืจ ื–ืขืŸ ื•ื•ื™ ื“ืึธืก ืึทืจื‘ืขื˜ ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืœืึธื•ืงืึทืœื™. ื–ืืœ ืก ื ืขืžืขืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ื™ ืึท ื‘ื™ื™ึทืฉืคึผื™ืœ React ืคื•ืŸ ืคืจื™ืขืจื“ื™ืงืข ืึทืจื˜ื™ืงืœืขืŸ, ื›ืึธื˜ืฉ ื›ึผืžืขื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ืึธืจืงืคืœืึธื•ื• ืงืึทื ืกืขืคึผืก ืึทืคึผืœื™ื™ื– ืื™ืŸ ืึทืœืข ืื ื“ืขืจืข ืžืึธื“ืขืจืŸ ืคืจืึทืžืขื•ื•ืึธืจืงืก.
ืึทื–ื•ื™, ืฆื• ืึธื ื”ื™ื™ื‘ืŸ ื“ืขื "ื“ืขื•ื• ืกืขืจื•ื•ืขืจ" ืื™ืŸ ืื•ื ื“ื–ืขืจ ืจืขืึทืงื˜ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ืจ ืึทืจื™ื™ึทืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

$ npm run start

ื“ืขืจื ืึธืš ืื™ืŸ ื“ื™ ื•ื•ืึธืงื–ืึทืœ ืคึฟืขื ืฆื˜ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ื–ืขืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืื•ืŸ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื•ื•ืขื˜ ืขืคืขื ืขืŸ ืื™ืŸ ื“ื™ ืคืขืœื™ืงื™ื™ึทื˜ ื‘ืœืขื˜ืขืจืขืจ:

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืื™ืฆื˜, ืื•ื™ื‘ ืžื™ืจ ืžืึทื›ืŸ ืขื ื“ืขืจื•ื ื’ืขืŸ ืฆื• ื“ืขืจ ื˜ืขืงืข, ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื–ืึธืœ ื“ืขืจื”ื™ื™ึทื ื˜ื™ืงืŸ ืื™ืŸ ื“ืขื ื‘ืœืขื˜ืขืจืขืจ.

ื’ื•ื˜, ืึทืœืฅ ืื™ื– ืงืœืึธืจ ืžื™ื˜ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืื™ืŸ ื”ื™ื’ืข ืžืึธื“ืข, ืึธื‘ืขืจ ื•ื•ื™ ืฆื• ื“ืขืจื’ืจื™ื™ื›ืŸ ื“ื™ ื–ืขืœื‘ืข ืื•ื™ืฃ OpenShift?

ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ ืื•ื™ืฃ OpenShift

ืื•ื™ื‘ ืื™ืจ ื’ืขื“ืขื ืงืขืŸ, ืื™ืŸ ืคืจื™ื™ึทืขืจื“ื™ืง ืคึผืึธืกื˜ืŸ, ืžื™ืจ ื’ืขืงื•ืงื˜ ืื™ืŸ ื“ื™ ืึทื–ื•ื™ ื’ืขืจื•ืคืขื ืข ืœื•ื™ืคืŸ ืคืึทืกืข ืคื•ืŸ โ€‹โ€‹ื“ื™ S2I ื‘ื™ืœื“ ืื•ืŸ ื’ืขื–ืขืŸ ืึทื– ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ื™ ื“ื™ื ืขืŸ ืžืึธื“ื•ืœืข ืื™ื– ืคืึทืจืึทื ื˜ื•ื•ืึธืจื˜ืœืขืš ืคึฟืึทืจ ืกืขืจื•ื•ื™ืกื™ื ื’ ืื•ื ื“ื–ืขืจ ื•ื•ืขื‘ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืึธื‘ืขืจ, ืื•ื™ื‘ ืื™ืจ ื ืขืžืขืŸ ืึท ื ืขืขื ื˜ืขืจ ืงื•ืง ืœื•ื™ืคืŸ ืฉืจื™ืคื˜ ืคึฟื•ืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ, ืขืก ื›ึผื•ืœืœ ื“ื™ $ NPM_RUN ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง, ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ื•ื™ืกืคื™ืจืŸ ื“ื™ื™ืŸ ื‘ืึทืคึฟืขืœ.

ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืžื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ื ืึธื“ืขืฉื™ืคื˜ ืžืึธื“ื•ืœืข ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ:

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

ื‘ืึทืžืขืจืงื•ื ื’: ื“ื™ ืื•ื™ื‘ืŸ ื‘ื™ื™ึทืฉืคึผื™ืœ ืื™ื– ืึทื‘ืจื™ื•ื•ื™ื™ื™ื˜ื™ื“ ืฆื• ืื™ืœื•ืกื˜ืจื™ืจืŸ ื“ื™ ืึทืœื’ืขืžื™ื™ื ืข ื’ืขื“ืึทื ืง.

ื“ืึธ ืžื™ืจ ื”ืึธื‘ืŸ ืฆื•ื’ืขืœื™ื™ื’ื˜ ื“ื™ NPM_RUN ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ืฆื• ืื•ื ื“ื–ืขืจ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜, ื•ื•ืึธืก ื“ืขืจืฆื™ื™ืœื˜ ื“ื™ ืจื•ื ื˜ื™ืžืข ืฆื• ืœื•ื™ืคืŸ ื“ื™ ื™ืึทืจืŸ ืึธื ื”ื™ื™ื‘ ื‘ืึทืคึฟืขืœ, ื•ื•ืึธืก ืกื˜ืึทืจืฅ ื“ื™ ืจืขืึทืงื˜ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ ืื™ืŸ ืื•ื ื“ื–ืขืจ OpenShift ืคึผืึธื“.

ืื•ื™ื‘ ืื™ืจ ืงื•ืง ืื™ืŸ ื“ื™ ืงืœืึธืฅ ืคื•ืŸ ืึท ืคืœื™ืกื ื“ื™ืง ืคึผืึธื“, ืขืก ื•ื•ืขื˜ ืงื•ืงืŸ ืขืคึผืขืก ื•ื•ื™ ื“ืึธืก:

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืคื•ืŸ ืงื•ืจืก, ืึทืœืข ื“ืขื ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืึธืจื ื™ืฉื˜ ื‘ื™ื– ืžื™ืจ ืงืขื ืขืŸ ืกื™ื ื’ืงืจืึทื ื™ื™ื– ื“ื™ ื”ื™ื’ืข ืงืึธื“ ืžื™ื˜ ื“ื™ ืงืึธื“, ื•ื•ืึธืก ืื™ื– ืื•ื™ืš ืžืึธื ื™ื˜ืึธืจืขื“ ืคึฟืึทืจ ืขื ื“ืขืจื•ื ื’ืขืŸ, ืึธื‘ืขืจ ืœืขื‘ืŸ ืื•ื™ืฃ ืึท ื•ื•ื™ื™ึทื˜ ืกืขืจื•ื•ืขืจ.

ืกื™ื ื’ืงืจืึทื ื™ื™ื–ื™ื ื’ ื•ื•ื™ื™ึทื˜ ืื•ืŸ ื”ื™ื’ืข ืงืึธื“

ืฆื•ืž ื’ืœื™ืง, ื ืึธื“ืขืฉื™ืคื˜ ืงืขื ืขืŸ ืœื™ื™ื›ื˜ ื”ืขืœืคืŸ ืžื™ื˜ ืกื™ื ื’ืงืจืึทื ืึทื–ื™ื™ืฉืึทืŸ, ืื•ืŸ ืื™ืจ ืงืขื ืขืŸ ื ื•ืฆืŸ ื“ื™ ื•ื•ืึทืš ื‘ืึทืคึฟืขืœ ืฆื• ืฉืคึผื•ืจ ืขื ื“ืขืจื•ื ื’ืขืŸ.

ื ืึธืš ืžื™ืจ ื”ืึธื‘ืŸ ืœื•ื™ืคืŸ ื“ื™ ื‘ืึทืคึฟืขืœ ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืžื™ืจ ืงืขื ืขืŸ ื‘ืขืฉืึธืœืขื ื ื•ืฆืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

$ 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 ื‘ืึทืคึฟืขืœ, ืื™ืจ ืงืขื ืขืŸ ืœืขืจื ืขืŸ ืžืขืจ ื•ื•ืขื’ืŸ ื•ื•ื™ ืขืก ืึทืจื‘ืขื˜ ื“ืึธ.

ื“ืึธืก ืื™ื– ื’ืขื•ื•ืขืŸ ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคึฟืึทืจ ืจืขืึทืงื˜, ืึธื‘ืขืจ ื“ื™ ืคึผื™ื ื˜ืœืขืš ื–ืขืœื‘ื™ืงืขืจ ืื•ืคึฟืŸ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ืžื™ื˜ ืื ื“ืขืจืข ืคืจืึทืžืขื•ื•ืึธืจืงืก, ื ืึธืจ ืฉื˜ืขืœืŸ ื“ื™ NPM_RUN ืกื•ื•ื™ื•ื•ืข ื‘ื™ื™ึทื˜ืขื•ื•ื“ื™ืง ื•ื•ื™ ื ื™ื™ื˜ื™ืง.
โ€ƒ

ืึธืคึผืขื ืฉื™ืคื˜ ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ื•ื•ื™ื™ึทื˜ืขืจ ืžื™ืจ ื•ื•ืขืœืŸ ืจืขื“ืŸ ื•ื•ืขื’ืŸ ืึท ื’ืขืฆื™ื™ึทื’ ื•ื•ื™ OpenShift Pipelines ืื•ืŸ ื•ื•ื™ ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขื•ื•ื™ื™ื ื˜ ื•ื•ื™ ืึทืŸ ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื• ืฆื• ื˜ืฉื™ื™ื ื“ ื‘ื™ืœื“ืขืจ.

ื•ื•ืึธืก ืื™ื– OpenShift Pipelines

OpenShift Pipelines ืื™ื– ืึท ื•ื•ืึธืœืงืŸ-ื’ืขื‘ื•ื™ืจืŸ ืกื™ / CD ืงืขืกื™ื™ื“ืขืจื“ื™ืง ื™ื ืึทื’ืจื™ื™ืฉืึทืŸ ืื•ืŸ ืขืงืกืคึผืจืขืก ืกื™ืกื˜ืขื ื“ื™ื–ื™ื™ื ื“ ืคึฟืึทืจ ืึธืจื’ืึทื ื™ื™ื–ื™ื ื’ ืคึผื™ื™ืคึผืœื™ื™ื ื– ื ื™ืฆืŸ Tekton. Tekton ืื™ื– ืึท ืคืœืขืงืกืึทื‘ืึทืœ ืขืคึฟืขื ืขืŸ-ืžืงื•ืจ Kubernetes-ื’ืขื‘ื•ื™ืจืŸ CI / CD ืคืจื™ื™ืžื•ื•ืขืจืง ื•ื•ืึธืก ืึทืœืึทื•ื– ืื™ืจ ืฆื• ืึธื˜ืึทืžื™ื™ื˜ ื“ื™ืคึผืœื•ื™ืžืึทื ื˜ ืื•ื™ืฃ ืคืึทืจืฉื™ื“ืŸ ืคึผืœืึทื˜ืคืึธืจืžืก (Kubernetes, ืกืขืจื•ื•ืขืจืœืขืกืก, ื•ื•ื™ืจื˜ื•ืึทืœ ืžืืฉื™ื ืขืŸ, ืืื–"ื• ื•) ื“ื•ืจืš ืึทื‘ืกื˜ืจืึทืงื˜ื™ื ื’ ืคื•ืŸ ื“ื™ ืึทื ื“ืขืจืœื™ื™ื™ื ื’ ืฉื™ื›ื˜ืข.

ืคืืจืฉื˜ืื ื“ ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืจื™ืงื•ื•ื™ื™ืขืจื– ืขื˜ืœืขื›ืข ื•ื•ื™ืกืŸ ืคื•ืŸ ืคึผื™ื™ืคึผืœื™ื™ื ื–, ืึทื–ื•ื™ ืžื™ืจ ืจืขืงืึธืžืขื ื“ื™ืจืŸ ืื™ืจ ืขืจืฉื˜ืขืจ ืœื™ื™ืขื ืขืŸ ื‘ืึทืึทืžื˜ืขืจ ืœืขืจื ื‘ื•ืš.

ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ื“ื™ื™ืŸ ืึทืจื‘ืขื˜ ืกื•ื•ื™ื•ื•ืข

ืฆื• ืฉืคึผื™ืœืŸ ืžื™ื˜ ื“ื™ ื‘ื™ื™ืฉืคื™ืœืŸ ืื™ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ, ืื™ืจ ืขืจืฉื˜ืขืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฆื•ื’ืจื™ื™ื˜ืŸ ื“ื™ื™ืŸ ืึทืจื‘ืขื˜ ืกื•ื•ื™ื•ื•ืข:

  1. ื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ืŸ ืงืึทื ืคื™ื’ื™ืขืจ ืึทืŸ OpenShift 4 ืงื ื•ื™ืœ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ืฉืคื™ืœืŸ ื ื•ืฆืŸ CodeReady Containers (CRD) ืคึฟืึทืจ ื“ืขื ื“ืึธ.
  2. ื ืึธืš ื“ืขื ืงื ื•ื™ืœ ืื™ื– ื’ืจื™ื™ื˜, ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ื™ื ืกื˜ืึทืœื™ืจืŸ Pipeline Operator ืื•ื™ืฃ ืขืก. ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ื–ื™ื™ืŸ ื“ืขืจืฉืจืึธืงืŸ, ืขืก ืก ื’ืจื™ื ื’, ื™ื ืกื˜ืึทืœื™ืจื•ื ื’ ื™ื ืกื˜ืจืึทืงืฉืึทื ื– ื“ืึธ.
  3. ืืจืืคืงืืคื™ืข Tekton CLI (ื˜ืงืŸ) ื“ืึธ.
  4. ืœื•ื™ืคืŸ ื“ื™ ืฉืึทืคึฟืŸ-ืจืขืึทื’ื™ืจืŸ-ืึทืคึผ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ื’ืขืฆื™ื™ึทื’ ืฆื• ืฉืึทืคึฟืŸ ืึท ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืึทื– ืื™ืจ ื•ื•ืขื˜ ื“ืขืžืึธืœื˜ ืฆืขื•ื•ื™ืงืœืขืŸ (ื“ืึธืก ืื™ื– ืึท ืคึผืฉื•ื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ React).
  5. (ืึธืคึผื˜ื™ืึธื ืึทืœ) ืงืœืึธื•ืŸ ื“ื™ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืฆื• ืœื•ื™ืคืŸ ื“ื™ ื‘ื™ื™ืฉืคึผื™ืœ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืœืึธื•ืงืึทืœื™ ืžื™ื˜ npm ื™ื ืกื˜ืึทืœื™ืจืŸ ืื•ืŸ ื“ืขืžืึธืœื˜ npm ืึธื ื”ื™ื™ื‘.

ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ื•ื•ืขื˜ ืื•ื™ืš ื”ืึธื‘ืŸ ืึท ืง8ืก ื˜ืขืงืข, ื•ื•ืึธืก ื•ื•ืขื˜ ืึทื ื˜ื”ืึทืœื˜ืŸ ื“ื™ Kubernetes/OpenShift YAMLs ื’ืขื ื™ืฆื˜ ืฆื• ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ. ืขืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื˜ืึทืกืงืก, ืงืœืึทืกื˜ืขืจ ื˜ืึทืกืงืก, ืจืขืกืึธื•ืจืกืขืก ืื•ืŸ ืคึผื™ื™ืคึผืœื™ื™ื ื– ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ืžืึทื›ืŸ ืื™ืŸ ื“ืขื ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ื–.

ื’ืขื˜ื™ื ื’ ืึทืจืึธืคึผ

ื“ืขืจ ืขืจืฉื˜ืขืจ ืฉืจื™ื˜ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ื‘ื™ื™ืฉืคึผื™ืœ ืื™ื– ืฆื• ืฉืึทืคึฟืŸ ืึท ื ื™ื™ึทืข ืคึผืจื•ื™ืขืงื˜ ืื™ืŸ ื“ื™ OpenShift ืงื ื•ื™ืœ. ืœืึธืžื™ืจ ืจื•ืคืŸ ื“ืขื ืคึผืจื•ื™ืขืงื˜ ื•ื•ืขื‘ืึทืคึผืคึผ-ืจืขืจื  - ืœื™ื ื™ืข ืื•ืŸ ืžืึทื›ืŸ ืขืก ืžื™ื˜ ื“ื™ ืคืืœื’ืขื ื“ืข ื‘ืึทืคึฟืขืœ:

$ oc new-project webapp-pipeline

ื“ืขืจ ื ืึธืžืขืŸ ืคื•ืŸ ื“ืขื ืคึผืจื•ื™ืขืงื˜ ื•ื•ืขื˜ ื“ืขืจืฉื™ื™ึทื ืขืŸ ืื™ืŸ ื“ื™ ืงืึธื“ ืฉืคึผืขื˜ืขืจ, ืึทื–ื•ื™ ืื•ื™ื‘ ืื™ืจ ื‘ืึทืฉืœื™ืกืŸ ืฆื• ื ืึธืžืขืŸ ืขืก ืขืคึผืขืก ืึทื ื“ืขืจืฉ, ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ืจืขื“ืึทื’ื™ืจืŸ ื“ืขื ื‘ื™ื™ึทืฉืคึผื™ืœ ืงืึธื“ ืึทืงืึธืจื“ื™ื ื’ืœื™. ืคึฟื•ืŸ ื“ืขื ืคื•ื ื˜, ืžื™ืจ ื•ื•ืขืœืŸ ื ื™ืฉื˜ ื’ื™ื™ืŸ ืื•ื™ื‘ืŸ-ืึทืจืึธืคึผ, ืึธื‘ืขืจ ื“ื ืึธ-ืึทืจื•ื™ืฃ: ื“ืึธืก ืื™ื–, ืžื™ืจ ื•ื•ืขืœืŸ ืขืจืฉื˜ืขืจ ืžืึทื›ืŸ ืึทืœืข ื“ื™ ืงืึทืžืคึผืึธื•ื ืึทื ืฅ ืคื•ืŸ ื“ื™ ืงืึทื ื•ื•ื™ื™ืขืจ, ืื•ืŸ ื‘ืœื•ื™ื– ื“ืขืžืึธืœื˜ ื“ืขืจ ืงืึทื ื•ื•ื™ื™ืขืจ ื–ื™ืš.

ืึทื–ื•ื™, ืขืจืฉื˜ืขืจ ืคื•ืŸ ืึทืœืข ...

ื˜ืึทืกืงืก

ืœืึธืžื™ืจ ืžืึทื›ืŸ ืึท ืคึผืึธืจ ืคื•ืŸ ื˜ืึทืกืงืก, ื•ื•ืึธืก ื•ื•ืขื˜ ื”ืขืœืคึฟืŸ ืฆืขื•ื•ื™ืงืœืขืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื™ืŸ ืื•ื ื“ื–ืขืจ ืจืขืจื  - ืœื™ื ื™ืข. ื“ืขืจ ืขืจืฉื˜ืขืจ ืึทืจื‘ืขื˜ - application_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

ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜, ื“ืขื ืคึผืึทืจืึทืžืขื˜ืขืจ ืื™ื– ื’ืœื™ื™ึทืš ืฆื• ื‘ื•ื™ืขืŸ, ื•ื•ืึธืก ืื™ื– ื•ื•ื• React ืœื™ื™ื’ื˜ ื“ื™ ืึทืกืขืžื‘ืึทืœื“ ืื™ื ื”ืึทืœื˜. ืื ื“ืขืจืข ืคืจืึทืžืขื•ื•ืึธืจืงืก ื ื•ืฆืŸ ืคืึทืจืฉื™ื“ืขื ืข ืคึผืึทื˜ืก, ืคึฟืึทืจ ื‘ื™ื™ึทืฉืคึผื™ืœ, ืื™ืŸ Ember ืขืก ืื™ื– ื“ื™ืกื˜. ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืขืจืฉื˜ืขืจ ืงื ื•ื™ืœ ืึทืจื‘ืขื˜ ื•ื•ืขื˜ ื–ื™ื™ืŸ ืึท ื‘ื™ืœื“ ืžื™ื˜ HTML, ื“ื–ืฉืึทื•ื•ืึทืกืงืจื™ืคึผื˜ ืื•ืŸ CSS ืžื™ืจ ื’ืขื–ืืžืœื˜.

ื‘ื•ื™ืขืŸ ืึท ื‘ื™ืœื“ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ NGINX

ื•ื•ื™ ืคึฟืึทืจ ืื•ื ื“ื–ืขืจ ืจื’ืข ืงื ื•ื™ืœ ืึทืจื‘ืขื˜, ืขืก ื–ืึธืœ ื‘ื•ื™ืขืŸ ืึท NGINX-ื‘ืื–ื™ืจื˜ ื‘ื™ืœื“ ืคึฟืึทืจ ืื•ื ื“ื–, ื ื™ืฆืŸ ื“ื™ ืื™ื ื”ืึทืœื˜ ืคื•ืŸ ื“ื™ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืžื™ืจ ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื’ืขื‘ื•ื™ื˜. ื™ืกืขื ืฉืึทืœื™, ื“ืึธืก ืื™ื– ื“ืขืจ ื˜ื™ื™ืœ ืคื•ืŸ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื•ื•ื• ืžื™ืจ ื’ืขืงื•ืงื˜ ืื•ื™ืฃ ื˜ืฉื™ื™ื ื“ ื‘ื•ื™ืขืŸ.

ืฆื• ื˜ืึธืŸ ื“ืึธืก, ืžื™ืจ - ืคึผื•ื ืงื˜ ื“ื™ ื–ืขืœื‘ืข ื•ื•ื™ ืื•ื™ื‘ืŸ - ืฉืึทืคึฟืŸ ืึท ืงื ื•ื™ืœ ืึทืจื‘ืขื˜ ื•ื•ืขื‘ืึทืคึผืคึผ-ื‘ื•ื™ืขืŸ-ืจื•ื ื˜ื™ืžืข:

$ 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 ืื™ื– ืคื•ืŸ ื˜ื™ืคึผ ื’ื™ื˜. ื“ืขืจ URL ืฉืœื™ืกืœ ืื™ืŸ ื“ื™ ืคึผืึทืจืึทืžืก ืึธืคึผื˜ื™ื™ืœื•ื ื’ ื•ื•ื™ื™ื–ื˜ ืฆื• ืึท ืกืคึผืขืฆื™ืคื™ืฉ ืจื™ืคึผืึทื–ืึทื˜ืึธืจื™ ืื•ืŸ ืกืคึผืขืฆื™ืคื™ืฆื™ืจื˜ ื“ื™ ื‘ืขืœ ืฆื•ื•ื™ื™ึทื’ (ื“ืึธืก ืื™ื– ืึทืคึผืฉืึทื ืึทืœ, ืึธื‘ืขืจ ืžื™ืจ ืฉืจื™ื™ึทื‘ืŸ ืขืก ืคึฟืึทืจ ืงืึทืžืคึผืœื™ื˜ื ืึทืก).

ืื™ืฆื˜ ืžื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืฉืึทืคึฟืŸ ืึท ืžื™ื˜ืœ ืคึฟืึทืจ ื“ื™ ื‘ื™ืœื“ ื•ื•ื• ื“ื™ ืจืขื–ื•ืœื˜ืึทื˜ืŸ ืคื•ืŸ ื“ื™ 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 ื‘ื™ืœื“ ืจืขื’ื™ืกื˜ืจื™, ืกืคึผืึทืกื™ืคื™ืงืœื™ ื“ืขืจ ืื™ื™ื ืขืจ ื•ื•ืึธืก ืื™ื– ืœื™ื’ืŸ ืื™ืŸ ื“ื™ ื•ื•ืขื‘ืึทืคึผ-ืจืขืจื  - ืœื™ื ื™ืข ื ืึธืžืขืŸ. ื“ื• ื–ืืœืกื˜ ื ื™ืฉื˜ ืคืึทืจื’ืขืกืŸ ืฆื• ื˜ื•ื™ืฉืŸ ื“ืขื ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ ืื•ื™ื‘ ืื™ืจ ื ื•ืฆืŸ ืึท ืึทื ื“ืขืจืฉ ื ืึธืžืขืŸ.

ืื•ืŸ ืœืขืกืึธืฃ, ื“ื™ ืœืขืฆื˜ืข ืžื™ื˜ืœ ื•ื•ืึธืก ืžื™ืจ ื“ืึทืจืคึฟืŸ ื•ื•ืขื˜ ืื•ื™ืš ื–ื™ื™ืŸ ืคื•ืŸ ื˜ื™ืคึผ ื‘ื™ืœื“ ืื•ืŸ ื“ืึธืก ื•ื•ืขื˜ ื–ื™ื™ืŸ ื“ื™ ืœืขืฆื˜ 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

ื“ื™ ืึทืจื‘ืขื˜ ื ืขืžื˜ ืึทืจื™ื™ึทื ืฉืจื™ื™ึทื‘ (ื’ื™ืจ ืžื™ื˜ืœ) ืื•ืŸ ืจืขื–ื•ืœื˜ืึทื˜ (ื‘ื•ื™ื˜-ื•ื•ืขื‘-ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ-ื‘ื™ืœื“ ืžื™ื˜ืœ) ืคึผืึทืจืึทืžืขื˜ืขืจืก. ืžื™ืจ ืื•ื™ืš ืคืึธืจืŸ ืขืก ืึท ืกืคึผืขืฆื™ืขืœ ืคึผืึทืจืึทืžืขื˜ืขืจ ืึทื–ื•ื™ ืึทื– ืขืก ืงืขืŸ ื ื™ืฉื˜ ื‘ืึทืฉื˜ืขื˜ื™ืงืŸ TLS ื–ื™ื ื˜ ืžื™ืจ ื ื•ืฆืŸ ื–ื™ืš-ื’ืขื—ืชืžืขื˜ ืกืขืจื˜ื™ืคื™ืงืึทืฅ:

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

ื•ื•ื™ ืžื™ื˜ ื“ื™ ืคืจื™ืขืจื“ื™ืงืข ืึทืจื‘ืขื˜, ืžื™ืจ ืคืึธืจืŸ ืึท ืžื™ื˜ืœ, ืึธื‘ืขืจ ืื™ืฆื˜ ืขืก ืื™ื– ื’ืขื‘ื•ื™ื˜-ื•ื•ืขื‘-ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ื‘ื™ืœื“ (ื“ืขืจ ืจืขื–ื•ืœื˜ืึทื˜ ืคื•ืŸ ืื•ื ื“ื–ืขืจ ืคืจื™ืขืจื“ื™ืงืŸ ืึทืจื‘ืขื˜). ืื•ืŸ ื•ื•ื™ ืึท ืจืขื–ื•ืœื˜ืึทื˜ ืžื™ืจ ื•ื•ื™ื“ืขืจ ืฉื˜ืขืœืŸ ื“ื™ ื‘ื™ืœื“. ื–ื™ื ื˜ ื“ืขื ืึทืจื‘ืขื˜ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืขืงืกืึทืงื™ื•ื˜ืึทื“ ื ืึธืš ื“ื™ ืคืจื™ืขืจื“ื™ืงืข, ืžื™ืจ ืœื™ื™ื’ืŸ ื“ื™ 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

ืื™ืŸ ื“ืขื ื‘ื™ื ืข, ื“ื™ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืื™ื– ื™ื ื˜ืขืจืึทืงื˜ื™ื•ื•ืœื™ ื’ืขื ื™ืฆื˜ ืื•ืŸ ืื™ืจ ื“ืึทืจืคึฟืŸ ืฆื• ืื•ื™ืกืงืœื™ื™ึทื‘ืŸ ื“ื™ ืฆื•ื ืขืžืขืŸ ืจืขืกื•ืจืกืŸ ืื™ืŸ ืขื ื˜ืคืขืจ ืฆื• ื™ืขื“ืขืจ ืคื•ืŸ ื–ื™ื™ึทืŸ ืจื™ืงื•ื•ืขืก: ืคึฟืึทืจ ื“ื™ ื’ื™ื˜ ืžื™ื˜ืœ, ืกืขืœืขืงื˜ื™ืจืŸ ื•ื•ืขื‘-ืึทืคึผืคึผืœื™ืงืึทื˜ื™ืึธืŸ-ืจืขืคึผืึธ, ืื•ืŸ ืคึฟืึทืจ ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ื™ืœื“ ืžื™ื˜ืœ, ื’ืขื‘ื•ื™ื˜-ื•ื•ืขื‘-ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ -ื‘ื™ืœื“, ืื•ืŸ ืœืขืกืึธืฃ, ืคึฟืึทืจ ื“ื™ ืจื’ืข ื‘ื™ืœื“ ืžื™ื˜ืœ -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}}'

ืคึฟืึทืจ ืžืขืจ ื•ื•ื™ื–ืฉื•ื•ืึทืœืึทื–ื™ื™ืฉืึทืŸ, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืื•ื ื“ื–ืขืจ ืจืขืจื  - ืœื™ื ื™ืข ืื™ืŸ ื“ื™ ื“ืขื•ื•ืขืœืึธืคึผืขืจ ืžืึธื“ืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ื“ื™ ื•ื•ืขื‘ ืงืึทื ืกืึธื•ืœ ืื™ืŸ ื“ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืคึผื™ืคึผืขืœื™ื ืขืก, ื•ื•ื™ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ Fig. 1.

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืคื™ื’.1. ืจืขืฆืขื ื–ื™ืข ืคื•ืŸ โ€‹โ€‹ืคืœื™ืกื ื“ื™ืง ืคึผื™ื™ืคึผืœื™ื™ื ื–.

ืงืœื™ืงื™ื ื’ ืื•ื™ืฃ ืึท ืคืœื™ืกื ื“ื™ืง ืจืขืจื  - ืœื™ื ื™ืข ื“ื™ืกืคึผืœื™ื™ื– ื ืึธืš ื“ืขื˜ืึทื™ืœืก, ื•ื•ื™ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ืคื™ื’ื•ืจืข 2.

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืจื™ื™ืก. 2. ื ืึธืš ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข ื•ื•ืขื’ืŸ ื“ื™ ืจืขืจื  - ืœื™ื ื™ืข.

ื ืึธืš ืžืขืจ ืื™ื ืคึฟืึธืจืžืึทืฆื™ืข, ืื™ืจ ืงืขื ืขืŸ ื–ืขืŸ ืคืœื™ืกื ื“ื™ืง ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื™ืŸ ื“ื™ ืžื™ื™ื ื•ื ื’ ื˜ืึทืคึผืึธืœืึทื“ื–ืฉื™, ื•ื•ื™ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ Fig.3.

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืคื™ื™ึทื’ 3. ืœืึธื ื˜ืฉื˜ ืคึผืึธื“.

ืงืœื™ืงื™ื ื’ ืื•ื™ืฃ ื“ื™ ืงืจื™ื™ึทื– ืื™ืŸ ื“ืขืจ ืื•ื™ื‘ืขืจืฉื˜ืขืจ ืจืขื›ื˜ ื•ื•ื™ื ืงืœ ืคื•ืŸ ื“ื™ ื‘ื™ืœื“ืœ ืขืคืขื ืขืŸ ืื•ื ื“ื–ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ื•ื•ื™ ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ืคื™ื’ื•ืจืข 4.

ืžืึธื“ืขืจืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื– ืื•ื™ืฃ OpenShift, ื˜ื™ื™ืœ 3: OpenShift ื•ื•ื™ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกื•ื•ื™ื•ื•ืข ืื•ืŸ OpenShift ืคึผื™ื™ืคึผืœื™ื™ื ื–

ืจื™ื™ืก. 4. ืคืœื™ืกื ื“ื™ืง ืจืขืึทืงื˜ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ.

ืกืึธืฃ

ืึทื–ื•ื™, ืžื™ืจ ื’ืขื•ื•ื™ื–ืŸ ื•ื•ื™ ืฆื• ืœื•ื™ืคืŸ ืึท ืึทื ื˜ื•ื•ื™ืงืœื•ื ื’ ืกืขืจื•ื•ืขืจ ืคึฟืึทืจ ื“ื™ื™ืŸ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ ืื•ื™ืฃ OpenShift ืื•ืŸ ืกื™ื ื’ืงืจืึทื ื™ื™ื– ืขืก ืžื™ื˜ ื“ื™ ื”ื™ื’ืข ื˜ืขืงืข ืกื™ืกื˜ืขื. ืžื™ืจ ืื•ื™ืš ื’ืขืงื•ืงื˜ ืื•ื™ืฃ ื•ื•ื™ ืฆื• ืกื™ืžื•ืœื™ืจืŸ ืึท ื˜ืฉื™ื™ื ื“-ื‘ื•ื™ืขืŸ ืžื•ืกื˜ืขืจ ื ื™ืฆืŸ OpenShift Pipelines. ืึทืœืข ื‘ื™ื™ืฉืคึผื™ืœ ืงืึธื•ื“ื– ืคื•ืŸ ื“ืขื ืึทืจื˜ื™ืงืœ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื’ืขืคึฟื•ื ืขืŸ ื“ืึธ.

ื ืึธืš ืจืขืกื•ืจืกืŸ (EN)

ืึทื ืึทื•ื ืกื™ื– ืคื•ืŸ ืึทืคึผืงืึทืžื™ื ื’ ื•ื•ืขื‘ื™ื ืึทืจืก

ืžื™ืจ ืึธื ื”ื™ื™ื‘ืŸ ืึท ืกืขืจื™ืข ืคื•ืŸ โ€‹โ€‹ืคืจื™ื™ื˜ืื’ ื•ื•ืขื‘ื™ื ืึทืจืก ื•ื•ืขื’ืŸ ื’ืขื‘ื•ื™ืจืŸ ื“ืขืจืคืึทืจื•ื ื’ ืžื™ื˜ Red Hat OpenShift Container Platform ืื•ืŸ Kubernetes:

ืžืงื•ืจ: www.habr.com

ืงื•ื™ืคืŸ ืคืึทืจืœืึธื–ืœืขืš ื”ืึธืกื˜ื™ื ื’ ืคึฟืึทืจ ื–ื™ื™ื˜ืœืขืš ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก ๐Ÿ”ฅ ืงื•ื™ืคื˜ ืคืึทืจืœืขืกืœืขื›ืข ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ื”ืึธืกื˜ื™ื ื’ ืžื™ื˜ DDoS ืฉื•ืฅ, VPS VDS ืกืขืจื•ื•ืขืจืก | ProHoster