ãã®ããã°ãã芧ã®çæ§ãããã«ã¡ã¯ïŒ ããã¯ãææ°ã® Web ã¢ããªã±ãŒã·ã§ã³ã Red Hat OpenShift ã«ãããã€ããæ¹æ³ã説æããã·ãªãŒãºã® XNUMX çªç®ã®æçš¿ã§ãã
åã® 2 ã€ã®æçš¿ã§ã¯ããããæ°ã¹ãããã§ææ°ã® Web ã¢ããªã±ãŒã·ã§ã³ããããã€ããæ¹æ³ãšãæ°ãã SXNUMXI ã€ã¡ãŒãžã NGINX ãªã©ã®æ¢è£œã® HTTP ãµãŒã㌠ã€ã¡ãŒãžãšãšãã«äœ¿çšãããã§ãŒã³ ãã«ãã䜿çšããŠéçšç°å¢ã®ãããã€ã調æŽããæ¹æ³ã説æããŸããã ã
ä»æ¥ã¯ãOpenShift ãã©ãããã©ãŒã äžã§ã¢ããªã±ãŒã·ã§ã³ã®éçºãµãŒããŒãå®è¡ãããããããŒã«ã« ãã¡ã€ã« ã·ã¹ãã ãšåæããæ¹æ³ã説æããŸãããŸããOpenShift Pipelines ãšã¯äœããããã³ OpenShift Pipelines ããªã³ã¯ãããã¢ã»ã³ããªã®ä»£æ¿ãšããŠã©ã®ããã«äœ¿çšã§ãããã«ã€ããŠã説æããŸãã
éçºç°å¢ãšããŠã® OpenShift
éçºã¯ãŒã¯ãããŒ
ã§è¿°ã¹ãããã«
ææ°ã®ãã¬ãŒã ã¯ãŒã¯ã®ã»ãšãã©ã§ã¯ããã®ãããªãéçºãµãŒããŒãã¯ã察å¿ããã³ãã³ã ã©ã€ã³ ããŒã«ã«çµã¿èŸŒãŸããŠããŸãã
å°å ã®äŸ
ãŸããã¢ããªã±ãŒã·ã§ã³ãããŒã«ã«ã§å®è¡ãããšãã«ãããã©ã®ããã«æ©èœããããèŠãŠã¿ãŸãããã ã¢ããªã±ãŒã·ã§ã³ãäŸã«æããŠã¿ãŸããã
ãããã£ãŠãReact ã®äŸã§ãéçºãµãŒããŒããèµ·åããã«ã¯ã次ã®ã³ãã³ããå
¥åããŸãã
$ npm run start
次ã«ãã¿ãŒããã« ãŠã£ã³ããŠã«æ¬¡ã®ãããªãã®ã衚瀺ãããŸãã
ãããŠãã¢ããªã±ãŒã·ã§ã³ã¯ããã©ã«ãã®ãã©ãŠã¶ã§éããŸãã
ããã§ããã¡ã€ã«ã«å€æŽãå ãããšããã©ãŠã¶ã§ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ãããã¯ãã§ãã
ããŒã«ã« ã¢ãŒãã§ã®éçºã«ã€ããŠã¯ãã¹ãŠæããã§ãããOpenShift ã§åãããšãå®çŸããã«ã¯ã©ãããã°ããã§ãããã?
OpenShift äžã®éçºãµãŒããŒ
èŠããŠããã°ã
ããããããèŠãŠã¿ããš
ããšãã°ãnodeshift ã¢ãžã¥ãŒã«ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããããã€ã§ããŸãã
$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app
泚: äžèšã®äŸã¯ãäžè¬çãªèãæ¹ã説æããããã«çç¥ãããŠããŸãã
ããã§ã¯ãNPM_RUN ç°å¢å€æ°ããããã€ã¡ã³ãã«è¿œå ããŸãããããã«ãããã©ã³ã¿ã€ã ã« Yarn start ã³ãã³ããå®è¡ããããæ瀺ãããOpenShift ãããå 㧠React éçºãµãŒããŒãèµ·åãããŸãã
å®è¡äžã®ãããã®ãã°ãèŠããšã次ã®ããã«ãªããŸãã
ãã¡ãããããŒã«ã« ã³ãŒãããå€æŽãç£èŠãããŠãããã®ã®ãªã¢ãŒã ãµãŒããŒäžã«ååšããã³ãŒããšåæã§ãããŸã§ã¯ãããã¯äœãèµ·ãããŸããã
ãªã¢ãŒãã³ãŒããšããŒã«ã«ã³ãŒãã®åæ
幞ããªããšã«ãnodeshift ã¯åæã«ç°¡åã«åœ¹ç«ã¡ãwatch ã³ãã³ãã䜿çšããŠå€æŽã远跡ã§ããŸãã
ãããã£ãŠãã³ãã³ããå®è¡ããŠã¢ããªã±ãŒã·ã§ã³ã®éçºãµãŒããŒããããã€ããåŸã¯ã次ã®ã³ãã³ããå®å šã«äœ¿çšã§ããŸãã
$ 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
watch ã³ãã³ã㯠oc rsync ã³ãã³ããæœè±¡åãããã®ã§ããã®ä»çµã¿ã«ã€ããŠè©³ããç¥ãããšãã§ããŸãã
ãã㯠React ã®äŸã§ããããå¿
èŠã«å¿ã㊠NPM_RUN ç°å¢å€æ°ãèšå®ããã ãã§ããŸã£ããåãæ¹æ³ãä»ã®ãã¬ãŒã ã¯ãŒã¯ã§ã䜿çšã§ããŸãã
â
Openshift ãã€ãã©ã€ã³
次ã«ãOpenShift Pipelines ã®ãããªããŒã«ãšãããããã§ãŒã³ ãã«ãã®ä»£æ¿ãšããŠäœ¿çšããæ¹æ³ã«ã€ããŠèª¬æããŸãã
OpenShift ãã€ãã©ã€ã³ãšã¯
OpenShift Pipelines ã¯ãTekton ã䜿çšããŠãã€ãã©ã€ã³ãç·šæããããã«èšèšãããã¯ã©ãŠããã€ãã£ã CI/CD ç¶ç¶ççµ±åããã³é ä¿¡ã·ã¹ãã ã§ãã Tekton ã¯ãæè»ãªãªãŒãã³ãœãŒã¹ã® Kubernetes ãã€ãã£ã CI/CD ãã¬ãŒã ã¯ãŒã¯ã§ãåºç€ãšãªãã¬ã€ã€ãŒããæœè±¡åããããšã§ãããŸããŸãªãã©ãããã©ãŒã (KubernetesããµãŒããŒã¬ã¹ãä»®æ³ãã·ã³ãªã©) ã§ã®ãããã€ã¡ã³ããèªååã§ããŸãã
ãã®èšäºãç解ããã«ã¯ããã€ãã©ã€ã³ã«é¢ããããçšåºŠã®ç¥èãå¿
èŠãšãªããããæåã«èªãããšã匷ããå§ãããŸãã
äœæ¥ç°å¢ãã»ããã¢ãããã
ãã®èšäºã®äŸãè©ŠããŠã¿ãã«ã¯ããŸãäœæ¥ç°å¢ãæºåããå¿ èŠããããŸãã
- OpenShift 4 ã¯ã©ã¹ã¿ãŒãã€ã³ã¹ããŒã«ããŠæ§æããŸãããã®äŸã§ã¯ãããã« CodeReady Containers (CRD) ã䜿çšããŠããŸããã€ã³ã¹ããŒã«æé ã«ã€ããŠã¯ããã¡ããåç
§ããŠãã ããã
ãã㧠. - ã¯ã©ã¹ã¿ãŒã®æºåãã§ããããããã« Pipeline Operator ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã å¿é
ããªãã§ãã ãããããã¯ç°¡åã§ããã€ã³ã¹ããŒã«æé
ãã㧠. - ããŠã³ããŒã
ãã¯ãã³ CLI (tkn)ãã㧠. - create-react-app ã³ãã³ã ã©ã€ã³ ããŒã«ãå®è¡ããŠããããã€ããã¢ããªã±ãŒã·ã§ã³ãäœæããŸã (ããã¯åçŽãªã¢ããªã±ãŒã·ã§ã³ã§ã)
åå¿ãã ). - (ãªãã·ã§ã³) ãªããžããªã®ã¯ããŒã³ãäœæããnpm install ããŠãã npm start ã䜿çšããŠãµã³ãã« ã¢ããªã±ãŒã·ã§ã³ãããŒã«ã«ã§å®è¡ããŸãã
ã¢ããªã±ãŒã·ã§ã³ ãªããžããªã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã«äœ¿çšããã Kubernetes/OpenShift YAML ãå«ãŸãã k8s ãã©ã«ããŒããããŸãã ãã®äžã§äœæããã¿ã¹ã¯ãã¯ã©ã¹ã¿ãŒã¿ã¹ã¯ããªãœãŒã¹ããã€ãã©ã€ã³ããããŸãã
éããŸã
ãã®äŸã®æåã®ã¹ãããã¯ãOpenShift ã¯ã©ã¹ã¿ãŒã«æ°ãããããžã§ã¯ããäœæããããšã§ãã ãã®ãããžã§ã¯ãã« webapp-pipeline ãšããååãä»ãã次ã®ã³ãã³ãã䜿çšããŠäœæããŸãããã
$ oc new-project webapp-pipeline
ãã®ãããžã§ã¯ãåã¯åŸã§ã³ãŒãã«è¡šç€ºããããããå¥ã®ååãä»ããããšã«ããå Žåã¯ãããã«å¿ããŠãµã³ãã« ã³ãŒããç·šéããããšãå¿ããªãã§ãã ããã ãã®æç¹ããããããããŠã³ã§ã¯ãªãããã ã¢ããã§äœæ¥ãéå§ããŸããã€ãŸããæåã«ã³ã³ãã€ã®ãã¹ãŠã®ã³ã³ããŒãã³ããäœæãã次ã«ã³ã³ãã€èªäœãäœæããŸãã
ããã§ããŸãã¯...
ã¿ã¹ã¯
ãã€ãã©ã€ã³å ã§ã¢ããªã±ãŒã·ã§ã³ããããã€ããã®ã«åœ¹ç«ã€ããã€ãã®ã¿ã¹ã¯ãäœæããŸãããã æåã®ã¿ã¹ã¯ apply_manifests_task ã¯ãã¢ããªã±ãŒã·ã§ã³ã® k8s ãã©ã«ããŒã«ãã Kubernetes ãªãœãŒã¹ (ãµãŒãã¹ããããã€ã¡ã³ããããã³ã«ãŒã) ã® YAML ãé©çšãã圹å²ãæãããŸãã XNUMX çªç®ã®ã¿ã¹ã¯ - 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
泚: ãããã¯ãçŸåšã®ãããžã§ã¯ãã®ããŒã«ã« ã¿ã¹ã¯ã§ãã
ã¯ã©ã¹ã¿ãŒã¿ã¹ã¯
ã¯ã©ã¹ã¿ãŒã¿ã¹ã¯ã¯åºæ¬çã«åçŽãªã¿ã¹ã¯ãšåãã§ãã ã€ãŸããç¹å®ã®ã¿ã¹ã¯ãå®è¡ãããšãã«äœããã®æ¹æ³ã§çµåãããåå©çšå¯èœãªã¹ãããã®ã³ã¬ã¯ã·ã§ã³ã§ãã éãã¯ãã¯ã©ã¹ã¿ãŒ ã¿ã¹ã¯ã¯ã¯ã©ã¹ã¿ãŒå ã®ã©ãã§ãå©çšã§ããããšã§ãã Pipeline Operator ã®è¿œå æã«èªåçã«äœæãããã¯ã©ã¹ã¿ãŒ ã¿ã¹ã¯ã®ãªã¹ãã衚瀺ããã«ã¯ã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
次ã«ã2 ã€ã®ã¯ã©ã¹ã¿ãŒ ã¿ã¹ã¯ãäœæããŸãããã XNUMX ã€ç®ã¯ SXNUMXI ã€ã¡ãŒãžãçæããå éš OpenShift ã¬ãžã¹ããªã«éä¿¡ããŸãã XNUMX ã€ç®ã¯ããã§ã«æ§ç¯ããã¢ããªã±ãŒã·ã§ã³ãã³ã³ãã³ããšããŠäœ¿çšããŠãNGINX ã«åºã¥ããŠã€ã¡ãŒãžãæ§ç¯ããããšã§ãã
ç»åãäœæããŠéä¿¡ãã
æåã®ã¿ã¹ã¯ãäœæãããšãã¯ããªã³ã¯ãããã¢ã»ã³ããªã«é¢ããŠåã®èšäºã§ãã§ã«è¡ã£ãããšãç¹°ãè¿ããŸãã S2I ã€ã¡ãŒãž (ubi8-s2i-web-app) ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããæ§ç¯ãããæçµçã«ã€ã¡ãŒãžã OpenShift å éšã¬ãžã¹ããªã«ä¿åãããããšãæãåºããŠãã ããã 次ã«ããã® S2I Web ã¢ã㪠ã€ã¡ãŒãžã䜿çšããŠã¢ããªã® DockerFile ãäœæãã次㫠Buildah ã䜿çšããŠå®éã®ãã«ããå®è¡ããçµæã®ã€ã¡ãŒãžã OpenShift å éšã¬ãžã¹ããªã«ããã·ã¥ããŸããããã¯ãNodeShift ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ããããã€ãããšãã« OpenShift ãè¡ãããšãšãŸã£ããåãã§ããããã§ãã ã
ã©ããã£ãŠãã®ãããªããšãç¥ã£ãã®ã§ãããã? ãã
ããã§ã¯ãs2i-web-app ã¯ã©ã¹ã¿ãŒ ã¿ã¹ã¯ãäœæããŸãããã
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml
ããã«ã€ããŠã¯è©³çŽ°ã«ã¯åæããŸããããOUTPUT_DIR ãã©ã¡ãŒã¿ãŒã®ã¿ã«çŠç¹ãåœãŠãŸãã
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
ããã©ã«ãã§ã¯ããã®ãã©ã¡ãŒã¿ã¯ build ãšçãããReact ãã¢ã»ã³ãã«ãããã³ã³ãã³ããé 眮ããå Žæã§ãã ä»ã®ãã¬ãŒã ã¯ãŒã¯ã¯å¥ã®ãã¹ã䜿çšããŸããããšãã°ãEmber ã§ã¯ dist ã§ãã æåã®ã¯ã©ã¹ã¿ãŒ ã¿ã¹ã¯ã®åºåã¯ãåéãã HTMLãJavaScriptãCSS ãå«ãç»åã«ãªããŸãã
NGINX ã«åºã¥ããŠã€ã¡ãŒãžãæ§ç¯ãã
XNUMX çªç®ã®ã¯ã©ã¹ã¿ãŒ ã¿ã¹ã¯ã«é¢ããŠã¯ãæ¢ã«æ§ç¯ããã¢ããªã±ãŒã·ã§ã³ã®ã³ã³ãã³ãã䜿çšããŠã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 ã§ãã params ã»ã¯ã·ã§ã³ã® url ããŒã¯ç¹å®ã®ãªããžããªãæããmaster ãã©ã³ããæå®ããŸã (ããã¯ãªãã·ã§ã³ã§ãããå®å šãæãããã«ãããèšè¿°ããŸã)ã
ããã§ãs2i-web-app ã¿ã¹ã¯ã®çµæãä¿åãããã€ã¡ãŒãžã®ãªãœãŒã¹ãäœæããå¿ èŠããããŸããããã¯æ¬¡ã®ããã«è¡ãããŸãã
# This resource is the result of running "npm run build", the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: built-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest
ããã§ãPipelineResource ã®ã¿ã€ã㯠image ã§ãurl ãã©ã¡ãŒã¿ãŒã®å€ã¯å éš OpenShift ã€ã¡ãŒãž ã¬ãžã¹ããªãŒãç¹ã« webapp-pipeline åå空éã«ããã€ã¡ãŒãž ã¬ãžã¹ããªãŒãæããŸãã å¥ã®åå空éã䜿çšããŠããå Žåã¯ããã®èšå®ãå€æŽããããšãå¿ããªãã§ãã ããã
ãããŠæåŸã«ãå¿ èŠãªæåŸã®ãªãœãŒã¹ãã€ã¡ãŒãž ã¿ã€ãã«ãªããããããããã€ã¡ã³ãäžã«äœ¿çšãããæçµç㪠NGINX ã€ã¡ãŒãžã«ãªããŸãã
# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: runtime-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest
ç¹°ãè¿ãã«ãªããŸããããã®ãªãœãŒã¹ã¯ã€ã¡ãŒãžã webapp-pipeline åå空éã®å éš OpenShift ã¬ãžã¹ããªãŒã«ä¿åããããšã«æ³šæããŠãã ããã
ããããã¹ãŠã®ãªãœãŒã¹ãäžåºŠã«äœæããã«ã¯ãcreate ã³ãã³ãã䜿çšããŸãã
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml
次ã®ããã«ãªãœãŒã¹ãäœæãããããšã確èªã§ããŸãã
$ tkn resource ls
ã³ã³ãã€ãã€ãã©ã€ã³
å¿ èŠãªã³ã³ããŒãã³ãããã¹ãŠæã£ãã®ã§ã次ã®ã³ãã³ãã䜿çšããŠãã€ãã©ã€ã³ãäœæããããããããã€ãã©ã€ã³ãçµã¿ç«ãŠãŸãããã
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml
ãã ãããã®ã³ãã³ããå®è¡ããåã«ããããã®ã³ã³ããŒãã³ããèŠãŠã¿ãŸãããã XNUMXã€ç®ã¯ååã§ã:
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: build-and-deploy-react
次ã«ãä»æ§ã»ã¯ã·ã§ã³ã«ãåã«äœæãããªãœãŒã¹ã®è¡šç€ºã衚瀺ãããŸãã
spec:
resources:
- name: web-application-repo
type: git
- name: built-web-application-image
type: image
- name: runtime-web-application-image
type: image
次ã«ããã€ãã©ã€ã³ãå®äºããå¿ èŠãããã¿ã¹ã¯ãäœæããŸãã ãŸãããã§ã«äœæãã s2i-web-app ã¿ã¹ã¯ãå®è¡ããå¿ èŠããããŸãã
tasks:
- name: build-web-application
taskRef:
name: s2i-web-app
kind: ClusterTask
ãã®ã¿ã¹ã¯ã¯ãå ¥å (gir ãªãœãŒã¹) ãã©ã¡ãŒã¿ãŒãšåºå (built-web-application-image ãªãœãŒã¹) ãã©ã¡ãŒã¿ãŒãåãåããŸãã ãŸããèªå·±çœ²å蚌ææžã䜿çšããŠããããã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
åã®ã¿ã¹ã¯ãšåæ§ã«ãªãœãŒã¹ãæž¡ããŸãããä»å㯠build-web-application-image (åã®ã¿ã¹ã¯ã®åºå) ã«ãªããŸãã ãããŠåºåãšããŠç»åãå床èšå®ããŸãã ãã®ã¿ã¹ã¯ã¯åã®ã¿ã¹ã¯ã®åŸã«å®è¡ããå¿ èŠãããããã 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
次㮠8 ã€ã®ã¿ã¹ã¯ã¯ãWeb ã¢ããªã±ãŒã·ã§ã³ã® kXNUMXs ãã£ã¬ã¯ããªã«ãããµãŒãã¹ãã«ãŒããããã³ãããã€ã¡ã³ã YAML ãã¡ã€ã«ã䜿çšããããšãšãæ°ããã€ã¡ãŒãžãäœæãããšãã«ãã®ãããã€ã¡ã³ããæŽæ°ããããšãæ åœããŸãã ããã XNUMX ã€ã®ã¯ã©ã¹ã¿ãŒ ã¿ã¹ã¯ãèšäºã®åé ã§å®çŸ©ããŸããã
ã³ã³ãã¢ã®èµ·å
ãããã£ãŠããã€ãã©ã€ã³ã®ãã¹ãŠã®éšåãäœæããã次ã®ã³ãã³ãã§å®è¡ããŸãã
$ tkn pipeline start build-and-deploy-react
ãã®æ®µéã§ã¯ãã³ãã³ã ã©ã€ã³ã¯å¯Ÿè©±çã«äœ¿çšãããåãªã¯ãšã¹ãã«å¿ããŠé©åãªãªãœãŒã¹ãéžæããå¿ èŠããããŸããgit ãªãœãŒã¹ã®å Žå㯠web-application-repo ãéžæããæåã®ã€ã¡ãŒãž ãªãœãŒã¹ã®å Žå㯠build-web-application ãéžæããŸãã -imageããããŠæåŸã« XNUMX çªç®ã®ã€ã¡ãŒãž ãªãœãŒã¹ â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}}'
ãã詳现ã«èŠèŠåããã«ã¯ãã»ã¯ã·ã§ã³ã® Web ã³ã³ãœãŒã«ã®éçºè ã¢ãŒãã§ãã€ãã©ã€ã³ã衚瀺ã§ããŸãã ãã€ãã©ã€ã³ãå³ã«ç€ºãããã«ã 1.
å³1ã å®è¡äžã®ãã€ãã©ã€ã³ã®ã¬ãã¥ãŒã
å®è¡äžã®ãã€ãã©ã€ã³ãã¯ãªãã¯ãããšãå³ 2 ã«ç€ºãããã«è¿œå ã®è©³çŽ°ã衚瀺ãããŸãã
ç±³ã 2. ãã€ãã©ã€ã³ã«é¢ããè¿œå æ å ±ã
詳现ã確èªãããšããã¥ãŒã§å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ã確èªã§ããŸãã ããããžãŒãå³3ã«ç€ºãããã«ã
å³ 3. èµ·åããããããã
å³ 4 ã«ç€ºãããã«ãã¢ã€ã³ã³ã®å³äžé ã«ããåãã¯ãªãã¯ãããšãã¢ããªã±ãŒã·ã§ã³ãéããŸãã
ç±³ã 4. React ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã
ãŸãšã
以äžãOpenShift äžã§ã¢ããªã±ãŒã·ã§ã³ã®éçºãµãŒããŒãå®è¡ããããŒã«ã« ãã¡ã€ã« ã·ã¹ãã ãšåæããæ¹æ³ã説æããŸããã ãŸããOpenShift Pipelines ã䜿çšããŠãã§ãŒã³ ãã«ã ãã³ãã¬ãŒããã·ãã¥ã¬ãŒãããæ¹æ³ã«ã€ããŠãæ€èšããŸããã ãã®èšäºã®ãµã³ãã« ã³ãŒãã¯ãã¹ãŠèŠã€ãããŸãã
è¿œå ãªãœãŒã¹ (è±èª)
- ç¡æã®é»åæžç±
ãOpenShift ã§ã®éçº: ãã£ãã¡ãªäººã®ããã®ã¬ã€ãã Red Hat OpenShift Application Runtime ãš Istio ã䜿çšããã³ã³ããäžå¿ã® Node.js ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ Chrome DevTools ã䜿çšãã OpenShift ã§ã® Node.js ã¢ããªã±ãŒã·ã§ã³ã®ãããã° OpenShift 㧠Express ããŒããããã¹ã¿ãŒããããã® XNUMX ã€ã®ã³ãã³ã Red Hat OpenShift Application Runtimes ã®äžéšãšã㊠Node.js ã®äžè¬æäŸããŒãžã§ã³ã®çºè¡š Prometheus ã䜿çšãã OpenShift äžã® Node.js ã¢ããªã±ãŒã·ã§ã³ã®ã¢ãã¿ãªã³ã° - ã®è©³çŽ°
OpenShift ãš Kubernetes Red Hat ã® Web ãµã€ãã§
ä»åŸã®ãŠã§ãããŒã®ãç¥ãã
Red Hat OpenShift Container Platform ãš Kubernetes ã䜿çšãããã€ãã£ã ãšã¯ã¹ããªãšã³ã¹ã«é¢ããäžé£ã®éææ¥ã®ãŠã§ãããŒãéå§ããŸãã
28 æ XNUMX æ¥ããŠã§ãã㌠ãšã³ãã©ãŒããªãã¬ãŒã¿ãŒã: OpenShift ãš Kubernetes ã®ãªãã¬ãŒã¿ãŒ 11 æ XNUMX æ¥ãDeploymentConfig ãš Deployment â ã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ãšãããã€ã®ããã® OpenShift åºæã®éæ³ 25 æ XNUMX æ¥ãRed Hat OpenShift ãš Machine API 9æXNUMXæ¥ ä»äºéãæ¥å¢ããæã®å¯ŸåŠæ³ 23 æ XNUMX æ¥ Red Hat OpenShift Container Platform ã®çµã¿èŸŒã¿ Jenkinsããã€ãã©ã€ã³ ãã«ããTekton
åºæïŒ habr.com