เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เดˆ เดฌเตเดฒเต‹เด—เดฟเดฒเต† เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เดนเดฒเต‹! Red Hat OpenShift-เตฝ เด†เดงเตเดจเดฟเด• เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเต เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดชเดฐเดฎเตเดชเดฐเดฏเดฟเดฒเต† เดฎเต‚เดจเตเดจเดพเดฎเดคเตเดคเต† เดชเต‹เดธเตเดฑเตเดฑเดพเดฃเดฟเดคเต.

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เดฎเตเดฎเตเดชเดคเตเดคเต† เดฐเดฃเตเดŸเต เดชเต‹เดธเตเดฑเตเดฑเตเด•เดณเดฟเตฝ, เดเดคเดพเดจเตเด‚ เด˜เดŸเตเดŸเด™เตเด™เดณเดฟเดฒเต‚เดŸเต† เด†เดงเตเดจเดฟเด• เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดŽเด™เตเด™เดจเต† เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดชเตเดฐเตŠเดกเด•เตเดทเตป เดตเดฟเดจเตเดฏเดพเดธเด™เตเด™เตพ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดšเต†เดฏเดฟเตปเดกเต เดฌเดฟเตฝเดกเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต NGINX เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด“เดซเต-เดฆเดฟ-เดทเต†เตฝเดซเต HTTP เดธเต†เตผเดตเตผ เด‡เดฎเต‡เดœเดฟเดจเตŠเดชเตเดชเด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ S2I เด‡เดฎเต‡เดœเต เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด•เดพเดฃเดฟเดšเตเดšเตเดคเดจเตเดจเต. .

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดฐเต เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเตผ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดฒเต‹เด•เตเด•เตฝ เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดตเตเดฎเดพเดฏเดฟ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด‡เดจเตเดจเต เดžเด™เตเด™เตพ เด•เดพเดฃเดฟเด•เตเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเต เดฒเตˆเดจเตเด•เตพ เดŽเดจเตเดคเดพเดฃเต†เดจเตเดจเตเด‚ เดฒเดฟเด™เตเด•เต เดšเต†เดฏเตโ€Œเดค เด…เดธเด‚เดฌเตเดฒเดฟเด•เตพเด•เตเด•เต เดฌเดฆเดฒเดพเดฏเดฟ เด…เดต เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เด’เดฐเต เดตเดฟเด•เดธเดจ เดชเดฐเดฟเดคเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ OpenShift

เดตเดฟเด•เดธเดจ เดตเตผเด•เตเด•เตเดซเตเดฒเต‹

เด‡เดคเดฟเดจเด•เด‚ เดชเดฑเดžเตเดžเดคเตเดชเต‹เดฒเต† เด†เดฆเตเดฏ เดชเต‹เดธเตเดฑเตเดฑเต, เด†เดงเตเดจเดฟเด• เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพเด•เตเด•เตเดณเตเดณ เดธเดพเดงเดพเดฐเดฃ เดตเดฟเด•เดธเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดซเดฏเดฒเตเด•เดณเดฟเดฒเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดŸเตเดฐเดพเด•เตเด•เต เดšเต†เดฏเตเดฏเตเดจเตเดจ เด’เดฐเตเดคเดฐเด‚ "เดตเดฟเด•เดธเดจ เดธเต†เตผเดตเตผ" เด†เดฃเต. เด…เดต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฌเดฟเตฝเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดจเด•เตเดทเดฎเดฎเดพเด•เตเด‚, เดคเตเดŸเตผเดจเตเดจเต เด…เดคเต เดฌเตเดฐเต—เดธเดฑเดฟเดฒเต‡เด•เตเด•เต เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเด‚.

เดฎเดฟเด•เตเด• เด†เดงเตเดจเดฟเด• เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเตเด•เดณเดฟเดฒเตเด‚, เด…เดคเตเดคเดฐเด‚ เด’เดฐเต "เดตเดฟเด•เดธเดจ เดธเต†เตผเดตเตผ" เด…เดจเตเดฌเดจเตเดง เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดŸเต‚เดณเตเด•เดณเดฟเตฝ เดจเดฟเตผเดฎเตเดฎเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด‰เดฆเดพเดนเดฐเดฃเด‚

เด†เดฆเตเดฏเด‚, เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เด‡เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚. เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเดฎเดพเดฏเดฟ เด…เดชเต‡เด•เตเดท เดŽเดŸเตเด•เตเด•เดพเด‚ เดคเดฟเดฐเดฟเดšเตเดšเดŸเดฟ เดจเดŸเดคเตเดคเตเด• เดฎเตเดฎเตเดชเดคเตเดคเต† เดฒเต‡เด–เดจเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต, เดฎเดฑเตเดฑเต†เดฒเตเดฒเดพ เด†เดงเตเดจเดฟเด• เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเตเด•เดณเดฟเดฒเตเด‚ เดเดคเดพเดฃเตเดŸเต เด’เดฐเต‡ เดตเตผเด•เตเด•เตเดซเตเดฒเต‹ เด†เดถเดฏเด™เตเด™เตพ เดฌเดพเดงเด•เดฎเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚.
เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดคเดฟเด•เดฐเดฃ เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ "dev เดธเต†เตผเดตเตผ" เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดจเตฝเด•เตเด‚:

$ npm run start

เด…เดชเตเดชเต‹เตพ เดŸเต†เตผเดฎเดฟเดจเตฝ เดตเดฟเตปเดกเต‹เดฏเดฟเตฝ เดจเดฎเตเดฎเตพ เด‡เดคเตเดชเต‹เดฒเตŠเดจเตเดจเต เด•เดพเดฃเตเด‚:

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟ เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เดคเตเดฑเด•เตเด•เตเด‚:

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เด‡เดชเตเดชเต‹เตพ, เดจเดฎเตเดฎเตพ เดซเดฏเดฒเดฟเตฝ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดตเดฐเตเดคเตเดคเตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฌเตเดฐเต—เดธเดฑเดฟเตฝ เด…เดชเตเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดฃเด‚.

เดถเดฐเดฟ, เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เดฎเต‹เดกเดฟเดฒเต† เดตเดฟเด•เดธเดจเดคเตเดคเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ OpenShift-เตฝ เด…เดคเต เดŽเด™เตเด™เดจเต† เดจเต‡เดŸเดพเด‚?

OpenShift-เดฒเต† เดตเดฟเด•เดธเดจ เดธเต†เตผเดตเตผ

เดจเดฟเด™เตเด™เตพ เด“เตผเด•เตเด•เตเดจเตเดจเตเดตเต†เด™เตเด•เดฟเตฝ, เด‡เตป เดฎเตเตป เดชเต‹เดธเตเดฑเตเดฑเต, S2I เด‡เดฎเต‡เดœเดฟเดจเตเดฑเต† เดฑเตบ เด˜เดŸเตเดŸเด‚ เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจ เด˜เดŸเตเดŸเด‚ เดžเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต, เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดธเต†เตผเดตเต เดฎเตŠเดกเตเดฏเต‚เตพ เดžเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† เดธเต‡เดตเดจเดคเตเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฃเต†เดจเตเดจเต เด•เดฃเตเดŸเต.

เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดจเดฟเด™เตเด™เตพ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเดพเตฝ เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• เด† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเต, เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจ $NPM_RUN เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เด‡เดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เดจเต‹เดกเตเดทเดฟเดซเตเดฑเตเดฑเต เดฎเตŠเดกเตเดฏเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚:

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

เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•: เดชเตŠเดคเตเดตเดพเดฏ เด†เดถเดฏเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฎเตเด•เดณเดฟเดฒเตเดณเตเดณ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดšเตเดฐเตเด•เตเด•เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต.

เด‡เดตเดฟเดŸเต† เดžเด™เตเด™เตพ เดžเด™เตเด™เดณเตเดŸเต† เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต NPM_RUN เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต, เด‡เดคเต เดžเด™เตเด™เดณเตเดŸเต† เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเต‹เดกเดฟเดจเตเดณเตเดณเดฟเตฝ เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจ เดจเต‚เตฝ เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเต เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เดฑเตบเดŸเตˆเดฎเดฟเดจเต† เดชเดฑเดฏเตเดจเตเดจเต.

เดจเดฟเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเต‹เดกเดฟเดจเตเดฑเต† เดฒเต‹เด—เต เดจเต‹เด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เด‡เดคเตเดชเต‹เดฒเต† เด•เดพเดฃเดชเตเดชเต†เดŸเตเด‚:

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚, เดชเตเดฐเดพเดฆเต‡เดถเดฟเด• เด•เต‹เดกเต เด•เต‹เดกเตเดฎเดพเดฏเดฟ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดตเดฐเต† เด‡เดคเต†เดฒเตเดฒเดพเด‚ เด’เดจเตเดจเตเดฎเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฟเดฒเตเดฒ, เด…เดคเต เดฎเดพเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด’เดฐเต เดตเดฟเดฆเต‚เดฐ เดธเต†เตผเดตเดฑเดฟเตฝ เดœเต€เดตเดฟเด•เตเด•เตเดจเตเดจเต.

เดฑเดฟเดฎเต‹เดŸเตเดŸเต, เดฒเต‹เด•เตเด•เตฝ เด•เต‹เดกเต เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต

เดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดจเต‹เดกเตเดทเดฟเดซเตเดฑเตเดฑเดฟเดจเต เดธเดฟเตปเด•เตเดฐเตŠเดฃเตˆเดธเต‡เดทเดจเต† เดŽเดณเตเดชเตเดชเดคเตเดคเดฟเตฝ เดธเดนเดพเดฏเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚, เด•เต‚เดŸเดพเดคเต† เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดŸเตเดฐเดพเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดพเดšเตเดšเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚.

เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเตผ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเดจเตเดณเตเดณ เด•เดฎเดพเตปเดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚, เดจเดฎเตเด•เตเด•เต เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เดธเตเดฐเด•เตเดทเดฟเดคเดฎเดพเดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚:

$ 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 เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•.
โ€ƒ

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เตพ

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ เดจเดฎเตเดฎเตพ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เตพ เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เด’เดฐเต เด‰เดชเด•เดฐเดฃเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดšเด™เตเด™เดฒเดฏเตเดณเตเดณ เดฌเดฟเตฝเดกเตเด•เตพเด•เตเด•เต เดฌเดฆเดฒเดพเดฏเดฟ เดŽเด™เตเด™เดจเต† เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเด‚ เดŽเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเด‚ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เตเด‚.

เดŽเดจเตเดคเดพเดฃเต เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเต เดฒเตˆเดจเตเด•เตพ

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเตเด•เตพ เดŸเต†เด•เตโ€ŒเดŸเตบ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเตเด•เตพ เดธเด‚เด˜เดŸเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดฐเต‚เดชเด•เตฝเดชเตเดชเดจ เดšเต†เดฏเตโ€Œเดคเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด•เตเดฒเต—เดกเต-เดจเต‡เดฑเตเดฑเต€เดตเต เดธเดฟเด/เดธเดฟเดกเดฟ เดคเตเดŸเตผเดšเตเดšเดฏเดพเดฏ เดธเด‚เดฏเต‹เดœเดจเดตเตเด‚ เดกเต†เดฒเดฟเดตเดฑเดฟ เดธเด‚เดตเดฟเดงเดพเดจเดตเตเดฎเดพเดฃเต. เดŸเต†เด•เตโ€ŒเดŸเตบ เด’เดฐเต เดซเตเดฒเต†เด•เตโ€Œเดธเดฟเดฌเดฟเตพ เด“เดชเตเดชเตบ เดธเต‹เดดเตโ€Œเดธเต เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต-เดจเต‡เดฑเตเดฑเต€เดตเต เดธเดฟเด/เดธเดฟเดกเดฟ เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเดพเดฃเต, เด…เดคเต เด…เดจเตเดคเตผเดฒเต€เดจเดฎเดพเดฏ เดฒเต†เดฏเดฑเดฟเตฝ เดจเดฟเดจเตเดจเต เดธเด‚เด—เตเดฐเดนเดฟเดšเตเดšเต เดตเดฟเดตเดฟเดง เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเตเด•เดณเดฟเตฝ (เด•เตเดฌเตผเดจเต†เดฑเตเดฑเดธเต, เดธเต†เตผเดตเตผเดฒเต†เดธเต, เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เตพ เดฎเตเดคเดฒเดพเดฏเดต) เดตเดฟเดจเตเดฏเดพเดธเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดˆ เดฒเต‡เด–เดจเด‚ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเตˆเดชเตเดชเต เดฒเตˆเดจเตเด•เดณเต† เด•เตเดฑเดฟเดšเตเดšเต เด•เตเดฑเดšเตเดšเต เด…เดฑเดฟเดตเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดถเด•เตเดคเดฎเดพเดฏเดฟ เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเตเดจเตเดจเต เด”เดฆเตเดฏเต‹เด—เดฟเด• เดชเดพเด เดชเตเดธเตเดคเด•เด‚.

เดจเดฟเด™เตเด™เดณเตเดŸเต† เดคเตŠเดดเดฟเตฝ เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดธเดœเตเดœเต€เด•เดฐเดฟเด•เตเด•เตเดจเตเดจเต

เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเดฒเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เดณเดฟเด•เตเด•เดพเตป, เดจเดฟเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเด‚ เดคเดฏเตเดฏเดพเดฑเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต:

  1. เด’เดฐเต OpenShift 4 เด•เตเดฒเดธเตเดฑเตเดฑเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดคเต เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•. เดžเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เตพ เด‡เดคเดฟเดจเดพเดฏเดฟ CodeReady Containers (CRD) เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเตเดณเตเดณ เด‡เตปเดธเตเดฑเตเดฑเดฒเต‡เดทเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด‡เดตเดฟเดŸเต†.
  2. เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดคเดฏเตเดฏเดพเดฑเดพเดฏ เดถเต‡เดทเด‚, เดจเดฟเด™เตเด™เตพ เด…เดคเดฟเตฝ เดชเตˆเดชเตเดชเตเดฒเตˆเตป เด“เดชเตเดชเดฑเต‡เดฑเตเดฑเตผ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเดฃเด‚. เดญเดฏเดชเตเดชเต†เดŸเต‡เดฃเตเดŸ, เด‡เดคเต เดŽเดณเตเดชเตเดชเดฎเดพเดฃเต, เด‡เตปเดธเตเดฑเตเดฑเดพเดณเต‡เดทเตป เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เด‡เดตเดฟเดŸเต†.
  3. เดกเต—เตบเดฒเต‡เดพเดกเต เดŸเต†เด•เตเดŸเตบ CLI (เดŸเดฟเด•เต†เดŽเตป) เด‡เดตเดฟเดŸเต†.
  4. เดจเดฟเด™เตเด™เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป create-react-app เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เดŸเต‚เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด• (เด‡เดคเตŠเดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฃเต เดคเดฟเดฐเดฟเดšเตเดšเดŸเดฟ เดจเดŸเดคเตเดคเตเด•).
  5. (เด“เดชเตเดทเดฃเตฝ) npm เด‡เตปเดธเตเดฑเตเดฑเดพเดณเตเด‚ เดคเตเดŸเตผเดจเตเดจเต npm เดธเตเดฑเตเดฑเดพเตผเดŸเตเดŸเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดชเตเดฐเดพเดฆเต‡เดถเดฟเด•เดฎเดพเดฏเดฟ เด‰เดฆเดพเดนเดฐเดฃ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟ เด•เตเดฒเต‹เตบ เดšเต†เดฏเตเดฏเตเด•.

เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดฑเดฟเดชเตเดชเต‹เดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เด’เดฐเต k8s เดซเต‹เตพเดกเดฑเตเด‚ เด‰เดฃเตเดŸเดพเด•เตเด‚, เด…เดคเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ Kubernetes/OpenShift YAML-เด•เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚. เด‡เดคเดฟเตฝ เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ, เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ, เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ, เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเตเด•เตพ เดŽเดจเตเดจเดฟเดต เด‰เดฃเตเดŸเดพเด•เตเด‚ เดถเต‡เด–เดฐเด™เตเด™เตพ.

เดจเดฎเตเด•เตเด•เต เดคเตเดŸเด™เตเด™เดพเด‚

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเตฝ เด’เดฐเต เดชเตเดคเดฟเดฏ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเตเดณเตเดณ เด†เดฆเตเดฏเดชเดŸเดฟ. เดจเดฎเตเด•เตเด•เต เดˆ เดชเตเดฐเต‹เดœเด•เตเดŸเดฟเดจเต† webapp-pipeline เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เดพเด‚, เดคเดพเดดเต† เดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเด‚:

$ oc new-project webapp-pipeline

เดˆ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเต เดชเต‡เดฐเต เดชเดฟเดจเตเดจเต€เดŸเต เด•เต‹เดกเดฟเตฝ เดฆเตƒเดถเตเดฏเดฎเดพเด•เตเด‚, เด…เดคเดฟเดจเดพเตฝ เดจเดฟเด™เตเด™เตพ เด‡เดคเดฟเดจเต เดฎเดฑเตเดฑเต†เดจเตเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดชเต‡เดฐเดฟเดŸเดพเตป เดคเต€เดฐเตเดฎเดพเดจเดฟเด•เตเด•เตเด•เดฏเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดคเดฟเดจเดจเตเดธเดฐเดฟเดšเตเดšเต เด‰เดฆเดพเดนเดฐเดฃ เด•เต‹เดกเต เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดฎเดฑเด•เตเด•เดฐเตเดคเต. เดˆ เดชเต‹เดฏเดฟเดจเตเดฑเต เดฎเตเดคเตฝ, เดžเด™เตเด™เตพ เดฎเตเด•เดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดพเดดเต‡เด•เตเด•เต เดชเต‹เด•เดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดคเดพเดดเต† เดจเดฟเดจเตเดจเต: เด…เดคเดพเดฏเดคเต, เดžเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เด•เตบเดตเต†เดฏเดฑเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เด˜เดŸเด•เด™เตเด™เดณเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด‚, เด…เดคเดฟเดจเตเดถเต‡เดทเด‚ เดฎเดพเดคเตเดฐเดฎเต‡ เด•เตบเดตเต†เดฏเตผ เดคเดจเตเดจเต†.

เด…เดคเดฟเดจเดพเตฝ, เด’เดจเตเดจเดพเดฎเดคเดพเดฏเดฟ ...

เดšเตเดฎเดคเดฒเด•เตพ

เดจเดฎเตเด•เตเด•เต เด•เตเดฑเดšเตเดšเต เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เดพเด‚, เด…เดคเต เดžเด™เตเด™เดณเตเดŸเต† เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเดจเดฟเดจเตเดณเตเดณเดฟเตฝ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เดพเตป เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚. เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† k8s เดซเต‹เตพเดกเดฑเดฟเตฝ เดธเตเดฅเดฟเดคเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ Kubernetes เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเตเดŸเต† (เดธเต‡เดตเดจเด‚, เดตเดฟเดจเตเดฏเดพเดธเด‚, เดฑเต‚เดŸเตเดŸเต) YAML เดชเตเดฐเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดคเตเดคเดฎเดพเดฃเต เด†เดฆเตเดฏ เดŸเดพเดธเตโ€Œเด•เต - apply_manifests_task. เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เดŸเดพเดธเตโ€Œเด•เต - 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) เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดตเต†เดจเตเดจเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด‡เดจเตเดฑเต‡เดฃเตฝ เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เด’เดฐเต เดšเดฟเดคเตเดฐเดคเตเดคเดฟเดฒเดพเดฃเต เด…เดตเดธเดพเดจเดฟเดšเตเดšเดคเต†เดจเตเดจเตเด‚ เด“เตผเด•เตเด•เตเด•. เด‡เดชเตเดชเต‹เตพ เดžเด™เตเด™เตพ เดˆ S2I เดตเต†เดฌเต เด†เดชเตเดชเต เด‡เดฎเต‡เดœเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดชเดฟเดจเดพเดฏเดฟ เด’เดฐเต DockerFile เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด‚, เดคเตเดŸเตผเดจเตเดจเต เดฏเดฅเดพเตผเดคเตเดฅ เดฌเดฟเตฝเดกเต เดšเต†เดฏเตเดฏเดพเตป Buildah เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เดคเดคเตเดซเดฒเดฎเดพเดฏเตเดฃเตเดŸเดพเด•เตเดจเตเดจ เดšเดฟเดคเตเดฐเด‚ OpenShift เด†เดจเตเดคเดฐเดฟเด• เดฐเดœเดฟเดธเตเดŸเตเดฐเดฟเดฏเดฟเดฒเต‡เด•เตเด•เต เดคเดณเตเดณเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚, เด•เดพเดฐเดฃเด‚ เดจเดฟเด™เตเด™เตพ NodeShift เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดตเดฟเดจเตเดฏเดธเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ OpenShift เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เด…เดคเดพเดฃเต. .

เด‡เดคเต†เดฒเตเดฒเดพเด‚ เดžเด™เตเด™เตพ เดŽเด™เตเด™เดจเต† เด…เดฑเดฟเดžเตเดžเต, เดจเดฟเด™เตเด™เตพ เดšเต‹เดฆเดฟเด•เตเด•เตเดจเตเดจเต? เดจเดฟเดจเตเดจเต เด”เดฆเตเดฏเต‹เด—เดฟเด• 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

เดธเตเดฅเดฟเดฐเดธเตเดฅเดฟเดคเดฟเดฏเดพเดฏเดฟ, เดˆ เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต, เด…เดตเดฟเดŸเต†เดฏเดพเดฃเต เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด…เดธเด‚เดฌเดฟเตพ เดšเต†เดฏเตเดค เด‰เดณเตเดณเดŸเด•เตเด•เด‚ เด‡เดŸเตเดจเตเดจเดคเต. เดฎเดฑเตเดฑเต เดšเดŸเตเดŸเด•เตเด•เต‚เดŸเตเด•เตพ เดตเตเดฏเดคเตเดฏเดธเตเดค เดชเดพเดคเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดŽเด‚เดฌเดฑเดฟเตฝ เด‡เดคเต เดตเดฟเดฆเต‚เดฐเดฎเดพเดฃเต. เดžเด™เตเด™เตพ เดถเต‡เด–เดฐเดฟเดšเตเดš 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

เด‡เดตเดฟเดŸเต† เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเตป เดฑเดฟเดธเต‹เดดเตโ€Œเดธเต เดœเดฟเดฑเตเดฑเต เดŸเตˆเดชเตเดชเดพเดฃเต. params เดตเดฟเดญเดพเด—เดคเตเดคเดฟเดฒเต† 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

เด‡เดตเดฟเดŸเต† เดชเตˆเดชเตเดชเตเดฒเตˆเตป เดฑเดฟเดธเต‹เดดเตเดธเต เดŸเตˆเดชเตเดชเต เด‡เดฎเต‡เดœเดพเดฃเต, เด•เต‚เดŸเดพเดคเต† 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

เดตเต€เดฃเตเดŸเตเด‚, เดตเต†เดฌเตโ€Œเด†เดชเตเดชเต-เดชเตˆเดชเตเดชเตโ€Œเดฒเตˆเตป เดจเต†เดฏเดฟเด‚เดธเตโ€Œเดชเต†เดฏเตโ€Œเดธเดฟเดฒเต† เด†เดจเตเดคเดฐเดฟเด• เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดฐเดœเดฟเดธเตโ€ŒเดŸเตเดฐเดฟเดฏเดฟเตฝ เดˆ เด‰เดฑเดตเดฟเดŸเด‚ เด‡เดฎเต‡เดœเต เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด•.

เดˆ เด‰เดฑเดตเดฟเดŸเด™เตเด™เดณเต†เดฒเตเดฒเดพเด‚ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต, เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต:

$ 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

เดžเด™เตเด™เดณเตเดŸเต† เดตเต†เดฌเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเดฑเต† k8s เดกเดฏเดฑเด•เตโ€ŒเดŸเดฑเดฟเดฏเดฟเตฝ เดคเดพเดฎเดธเดฟเด•เตเด•เตเดจเตเดจ YAML เดซเดฏเดฒเตเด•เดณเตเดŸเต† เดธเต‡เดตเดจเด‚, เดฑเต‚เดŸเตเดŸเต, เดตเดฟเดจเตเดฏเดพเดธเด‚ เดŽเดจเตเดจเดฟเดต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดชเตเดคเดฟเดฏ เด‡เดฎเต‡เดœเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดˆ เดตเดฟเดจเตเดฏเดพเดธเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด…เดŸเตเดคเตเดค เดฐเดฃเตเดŸเต เดŸเดพเดธเตโ€Œเด•เตเด•เตเด•เตพ เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเด•เดณเดพเดฃเต. เดฒเต‡เด–เดจเดคเตเดคเดฟเดจเตเดฑเต† เดคเตเดŸเด•เตเด•เดคเตเดคเดฟเตฝ เดˆ เดฐเดฃเตเดŸเต เด•เตเดฒเดธเตเดฑเตเดฑเตผ เดŸเดพเดธเตเด•เตเด•เตเด•เดณเตเด‚ เดžเด™เตเด™เตพ เดจเดฟเตผเดตเดšเดฟเดšเตเดšเต.

เด•เตบเดตเต†เดฏเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต

เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เดณเตเดŸเต† เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเดจเตเดฑเต† เดŽเดฒเตเดฒเดพ เดญเดพเด—เด™เตเด™เดณเตเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดŸเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดจเดฟเดชเตเดชเดฑเดฏเตเดจเตเดจ เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดžเด™เตเด™เตพ เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเด‚:

$ tkn pipeline start build-and-deploy-react

เดˆ เด˜เดŸเตเดŸเดคเตเดคเดฟเตฝ, เด•เดฎเดพเตปเดกเต เดฒเตˆเตป เด‡เดจเตเดฑเดฑเดพเด•เตเดŸเต€เดตเต เด†เดฏเดฟ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเดจเตเดฑเต† เด“เดฐเต‹ เด…เดญเตเดฏเตผเดคเตเดฅเดจเด•เตพเด•เตเด•เตเด‚ เดฎเดฑเตเดชเดŸเดฟเดฏเดพเดฏเดฟ เด‰เดšเดฟเดคเดฎเดพเดฏ เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ เดจเดฟเด™เตเด™เตพ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต: git เดฑเดฟเดธเต‹เดดเตเดธเดฟเดจเดพเดฏเดฟ, web-application-repo เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเด•, เดคเตเดŸเตผเดจเตเดจเต เด†เดฆเตเดฏเดคเตเดคเต† เด‡เดฎเต‡เดœเต เดฑเดฟเดธเต‹เดดเตเดธเดฟเดจเดพเดฏเดฟ, เดฌเดฟเตฝเดฑเตเดฑเต-เดตเต†เดฌเต-เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ -เดšเดฟเดคเตเดฐเด‚, เด’เดŸเตเดตเดฟเตฝ, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เด‡เดฎเต‡เดœเต เดฑเดฟเดธเต‹เดดเตเดธเดฟเดจเดพเดฏเดฟ -เดฑเตบเดŸเตˆเด‚-เดตเต†เดฌเต-เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป-เด‡เดฎเต‡เดœเต:

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

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เดšเดฟเดคเตเดฐเด‚.1. เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเตเดŸเต† เด…เดตเดฒเต‹เด•เดจเด‚.

เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจ เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เต เดšเต†เดฏเตเดฏเตเดฎเตเดชเต‹เตพ, เดšเดฟเดคเตเดฐเด‚ 2-เตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต† เด…เดงเดฟเด• เดตเดฟเดถเดฆเดพเด‚เดถเด™เตเด™เตพ เด•เดพเดฃเดฟเด•เตเด•เตเดจเตเดจเต.

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เด…เดฐเดฟ. 2. เดชเตˆเดชเตเดชเตเดฒเตˆเดจเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพ.

เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดตเดฐเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚, เดตเตเดฏเต‚เดตเดฟเตฝ เดฑเตบ เดšเต†เดฏเตเดฏเตเดจเตเดจ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเด‚ เดŸเต‹เดชเตเดชเต‹เดณเดœเดฟ, Fig.3 เตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดชเต‹เดฒเต†.

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เดšเดฟเดคเตเดฐเด‚ 3. เดตเดฟเด•เตเดทเต‡เดชเดฟเดšเตเดš เดชเต‹เดกเต.

เดเด•เตเด•เดฃเดฟเดจเตเดฑเต† เดฎเตเด•เดณเดฟเตฝ เดตเดฒเดคเต เด•เต‹เดฃเดฟเดฒเตเดณเตเดณ เดธเตผเด•เตเด•เดฟเดณเดฟเตฝ เด•เตเดฒเดฟเด•เตเด•เตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเต เดšเดฟเดคเตเดฐเด‚ 4-เตฝ เด•เดพเดฃเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต† เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดคเตเดฑเด•เตเด•เตเดจเตเดจเต.

เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเดฟเดฒเต† เด†เดงเตเดจเดฟเด• เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ, เดญเดพเด—เด‚ 3: เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เด’เดฐเต เดตเดฟเด•เดธเดจ เด…เดจเตเดคเดฐเต€เด•เตเดทเดฎเดพเดฏเตเด‚ เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เดณเดพเดฏเตเด‚

เด…เดฐเดฟ. 4. เดฑเดฟเดฏเดพเด•เตเดฑเตเดฑเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต.

เดคเต€เดฐเตเดฎเดพเดจเด‚

เด…เดคเดฟเดจเดพเตฝ, OpenShift-เตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดพเดฏเดฟ เด’เดฐเต เดกเต†เดตเดฒเดชเตโ€Œเดฎเต†เดจเตเดฑเต เดธเต†เตผเดตเตผ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เด…เดคเต เดฒเต‹เด•เตเด•เตฝ เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดตเตเดฎเดพเดฏเดฟ เดธเดฎเดจเตเดตเดฏเดฟเดชเตเดชเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เด•เดพเดฃเดฟเดšเตเดšเตเดคเดจเตเดจเต. เด“เดชเตเดชเตบเดทเดฟเดซเตเดฑเตเดฑเต เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด’เดฐเต เดšเต†เดฏเดฟเตปเดกเต-เดฌเดฟเตฝเดกเต เดŸเต†เด‚เดชเตเดฒเต‡เดฑเตเดฑเต เดŽเด™เตเด™เดจเต† เด…เดจเตเด•เดฐเดฟเด•เตเด•เดพเดฎเต†เดจเตเดจเตเด‚ เดžเด™เตเด™เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เดจเดฟเดจเตเดจเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เด‰เดฆเดพเดนเดฐเดฃ เด•เต‹เดกเตเด•เดณเตเด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚ เด‡เดตเดฟเดŸเต†.

เด…เดงเดฟเด• เด‰เดฑเดตเดฟเดŸเด™เตเด™เตพ (EN)

เดตเดฐเดพเดจเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดตเต†เดฌเดฟเดจเดพเดฑเตเด•เดณเตเดŸเต† เดชเตเดฐเด–เตเดฏเดพเดชเดจเด™เตเด™เตพ

Red Hat OpenShift เด•เดฃเตเดŸเต†เดฏเตโ€Œเดจเตผ เดชเตเดฒเดพเดฑเตเดฑเตโ€Œเดซเต‹เดฎเตเด‚ เด•เตเดฌเตผเดจเต†เดฑเตเดฑเตเด•เดณเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเต‡เดฑเตเดฑเต€เดตเต เด…เดจเตเดญเดตเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดตเต†เดณเตเดณเดฟเดฏเดพเดดเตเดš เดตเต†เดฌเตโ€Œเดจเดพเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดชเดฐเดฎเตเดชเดฐ เดžเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเต:

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•