ืฉืืื ืืืืื ืืืืื ืืื! ืืื ืืคืืกื ืืฉืืืฉื ืืกืืจื ืื ืื ื ืืจืืื ืืืฆื ืืคืจืืก ืืืฉืืื ืืื ืืจื ื ืืืืจื ืืื ื-Red Hat OpenShift.
ืืฉื ื ืืคืืกืืื ืืงืืืืื, ืืจืืื ื ืืืฆื ืืคืจืืก ืืืฉืืื ืืื ืืจื ื ืืืืจื ืืื ืืืื ืฉืืืื ืืืื ืืืืฆื ืืืฉืชืืฉ ืืชืืื ืช S2I ืืืฉื ืืื ืขื ืชืืื ืช ืฉืจืช HTTP ืืืฃ, ืืืื NGINX, ืชืื ืฉืืืืฉ ื-builds ืืฉืืจืฉืจืื ืืื ืืชืืื ืคืจืืกืืช ืืืฆืืจ. .
ืืืื ื ืจืื ืืืฆื ืืืคืขืื ืฉืจืช ืคืืชืื ืขืืืจ ืืืคืืืงืฆืื ืฉืืื ืืคืืืคืืจืืช OpenShift ืืืกื ืืจื ืืืชื ืขื ืืขืจืืช ืืงืืฆืื ืืืงืืืืช, ืืื ื ืืืจ ืขื ืื ืื 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, ืฉืืชืืืื ืืช ืฉืจืช ืืคืืชืื React ืืชืื ืืคืื 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
ืืคืงืืื watch ืืื ืืคืฉืื ืขื ืืคืงืืื oc rsync, ืืชื ืืืื ืืืืื ืขืื ืขื ืืื ืื ืขืืื
ืื ืืืืชื ืืืืื ื-React, ืืื ื ืืชื ืืืฉืชืืฉ ืืืืชื ืฉืืื ืืืืืง ืขื ืืกืืจืืช ืืืจืืช, ืคืฉืื ืืืืจ ืืช ืืฉืชื ื ืืกืืืื NPM_RUN ืืคื ืืฆืืจื.
โ
ืฆืื ืืจืืช ืขื ืืืืื ืคืชืื
ืืฉืื ืืื ื ืืืจ ืขื ืืื ืืื OpenShift Pipelines ืืืืฆื ื ืืชื ืืืฉืชืืฉ ืื ืืืืืคื ืืื ืืื ืืฉืืจืฉืจืช.
ืืื OpenShift Pipelines
OpenShift Pipelines ืืื ืืขืจืืช ืืื ืืืจืฆืื ืืืกืคืงื โโืืชืืฉืืช CI/CD ืืงืืจืืช ืืขื ื ืืืืืขืืช ืืืจืืื ืฆืื ืืจืืช ืืืืฆืขืืช Tekton. Tekton ืืื ืืกืืจืช CI/CD ืืืืฉื ืืงืื ืคืชืื ืฉื Kubernetes, ืืืืคืฉืจืช ืื ืืืคืื ืืช ืืคืจืืกื ืืืืืืืืืช ืืคืืืคืืจืืืช ืฉืื ืืช (Kubernetes, ืืื ืฉืจืชืื, ืืืื ืืช ืืืจืืืืืืืช ืืื') ืขื ืืื ืืคืฉืื ืืืฉืืื ืืืกืืกืืช.
ืืื ืช ืืืืจ ืื ืืืจืฉืช ืืืข ืืกืืื ื-Pipelines, ืืื ืื ื ืืืืืฆืื ืืืื ืืงืจืื ืชืืืื
ืืืืจืช ืกืืืืช ืืขืืืื ืฉืื
ืืื ืืฉืืง ืขื ืืืืืืืืช ืืืืืจ ืื, ืชืืืื ืขืืื ืืืืื ืืช ืกืืืืช ืืขืืืื ืฉืื:
- ืืชืงื ืืืืืจ ืืฉืืื OpenShift 4. ืืืืืืืืช ืฉืื ื ืืฉืชืืฉืืช ื-CodeReady Containers (CRD) ืืฉื ืื, ืฉื ืืชื ืืืฆืื ืขืืืจื ืืืจืืืช ืืชืงื ื
ืืื . - ืืืืจ ืฉืืืฉืืื ืืืื, ืขืืื ืืืชืงืื ืขืืื Pipeline Operator. ืื ืชืคืื, ืื ืงื, ืืืจืืืช ืืชืงื ื
ืืื . - ืืืจื
Tekton CLI (tkn)ืืื . - ืืคืขื ืืช ืืื ืฉืืจืช ืืคืงืืื create-react-app ืืื ืืืฆืืจ ืืคืืืงืฆืื ืฉืชืคืจืืก ืืืืจ ืืื (ืืื ืืืฉืื ืคืฉืื
ืืืืื ). - (ืืืคืฆืืื ืื) ืฉืืคื ืืช ืืืืืจ ืืื ืืืคืขืื ืืช ืืืืฉืื ืืืืืื ืืืืคื ืืงืืื ืขื npm install ืืืืืจ ืืื npm start.
ืืืืืจ ืืืืฉืืืื ืชืืื ืื ืชืืงืืืช k8s, ืฉืชืืื ืืช Kubernetes/OpenShift YAMLs ืืืฉืืฉืื ืืคืจืืกืช ืืืคืืืงืฆืื. ืืืื ืืฉืืืืช, ClusterTasks, ืืฉืืืื ืืฆืื ืืจืืช ืฉื ืืฆืืจ ืืื
ืืืื ื ืชืืื
ืืฆืขื ืืจืืฉืื ืขืืืจ ืืืืืื ืฉืื ื ืืื ืืฆืืจืช ืคืจืืืงื ืืืฉ ืืืฉืืื OpenShift. ืืืื ื ืงืจื ืืคืจืืืงื ืืื webapp-pipeline ืื ืืฆืืจ ืืืชื ืขื ืืคืงืืื ืืืื:
$ 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
ืืขืจื: ืืื ืื ืืฉืืืืช ืืงืืืืืช ืขืืืจ ืืคืจืืืงื ืื ืืืื ืฉืื.
ืืฉืืืืช ืืฉืืื
ืืฉืืืืช ืืฉืืื ืืืืช ืืขืฆื ืืืฉืืืืช ืคืฉืืืืช. ืืืืืจ, ืืืืืจ ืืืืกืฃ ืจื ืคืขืื ืฉื ืฉืืืื ืืืฉืืืืื ืืฆืืจื ืืื ืื ืืืจืช ืืขืช ืืคืขืืช ืืฉืืื ืกืคืฆืืคืืช. ืืืืื ืืื ืฉืืฉืืืช ืืฉืืื ืืืื ื ืืื ืืงืื ืืชืื ืืืฉืืื. ืืื ืืจืืืช ืืช ืจืฉืืืช ืืฉืืืืช ืืืฉืืื ืฉื ืืฆืจืืช ืืืืืืืืช ืืขืช ืืืกืคืช 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
ืขืืฉืื ืืืื ื ืืฆืืจ ืฉืชื ืืฉืืืืช ืืฉืืื. ืืจืืฉืื ืืคืืง ืืช ืชืืื ืช S2I ืืชืฉืื ืืืชื ืืจืืฉืื OpenShift ืืคื ืืื; ืืฉื ื ืืื ืืื ืืช ืืช ืืชืืื ื ืฉืื ื ืขื ืืกืืก NGINX, ืืืืฆืขืืช ืืืคืืืงืฆืื ืฉืืืจ ืื ืื ื ืืชืืื.
ืฆืืจ ืืฉืื ืืช ืืชืืื ื
ืืขืช ืืฆืืจืช ืืืฉืืื ืืจืืฉืื ื, ื ืืืืจ ืขื ืื ืฉืืืจ ืขืฉืื ื ืืืืืจ ืืงืืื ืขื ืืจืืืืช ืืงืืฉืจืืช. ื ืืืืจ ืฉืืฉืชืืฉื ื ืืชืืื ืช S2I (ubi8-s2i-web-app) ืืื "ืืื ืืช" ืืช ืืืคืืืงืฆืื ืฉืื ื, ืืืกืืคื ืฉื ืืืจ ืงืืืื ื ืชืืื ื ืืืืืกื ืช ืืจืืฉืื ืืคื ืืื ืฉื OpenShift. ืืขืช ื ืฉืชืืฉ ืืชืืื ืช ืืคืืืงืฆืืืช ืืืื ืืจื ื ืฉื S2I ืืื ืืืฆืืจ DockerFile ืขืืืจ ืืืคืืืงืฆืื ืฉืื ื ืืืืืจ ืืื ื ืฉืชืืฉ ื-Buildah ืืื ืืืฆืข ืืช ืืื ืืื ืืคืืขื ืืืืืืฃ ืืช ืืชืืื ื ืืืชืงืืืช ืืจืืฉืื ืืคื ืืื ืฉื OpenShift, ืืืืืื ืฉืื ืืืืืง ืื ืฉ-OpenShift ืขืืฉื ืืืฉืจ ืืชื ืคืืจืก ืืช ืืืืฉืืืื ืฉืื ืืืืฆืขืืช NodeShift .
ืืื ืืืขื ื ืืช ืื ืื, ืืชื ืฉืืืืื? ื
ืื, ืขืืฉืื ืืืื ื ืืฆืืจ ืืช ืืฉืืืช ืืฉืืื 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 it is dist. ืืคืื ืฉื ืืฉืืืช ืืืฉืืื ืืจืืฉืื ื ืฉืื ื ืชืืื ืชืืื ื ืืืืืื ืืช HTML, JavaScript ื-CSS ืฉืืกืคื ื.
ืื ื ืชืืื ื ืืืืืกืกืช ืขื NGINX
ืืืฉืจ ืืืฉืืืช ืืืฉืืื ืืฉื ืืื ืฉืื ื, ืืื ืืืืจื ืืื ืืช ืขืืืจื ื ืชืืื ื ืืืืกืกืช NGINX, ืชืื ืฉืืืืฉ ืืชืืื ืืืคืืืงืฆืื ืฉืืืจ ืื ืื ื. ืืขืืงืจื ืฉื ืืืจ, ืื ืืืืง ืฉื ืืกืขืืฃ ืืงืืื ืฉืื ืืกืชืืื ื ืขื ืืื ืื ืืฉืืจืฉืจืื.
ืืฉื ืื, ืื ื - ืืืืืง ืืื ืืืขืื - ื ืืฆืืจ ืืฉืืืช ืืฉืืื webapp-build-runtime:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml
ืื ืชืกืชืื ืขื ืืงืื ืฉื ืืฉืืืืช ืืืฉืืืืืช ืืืื, ืืชื ืืืื ืืจืืืช ืฉืืื ืื ืืฆืืื ืืช ืืืืจ Git ืืืชื ืื ืื ื ืขืืืืื ืื ืืช ืฉืืืช ืืชืืื ืืช ืฉืื ืื ื ืืืฆืจืื. ืื ื ืืฆืืื ืื ืจืง ืื ืืืืืง ืื ื ืืขืืืจืื ื-Git, ืื ืชืืื ื ืืกืืืืช ืฉืื ืืชืืื ื ืืกืืคืืช ืฆืจืืื ืืืืืช ืคืื. ืื ืืกืืื ืฉื ืืชื ืืขืฉืืช ืฉืืืืฉ ืืืืจ ืืืฉืืืืช ืืืฉืืืืืช ืืืื ืืขืช ืขืืืื ืขื ืืืฉืืืื ืืืจืื.
ืืื ื ืื ื ืขืืืจืื ืืื ืื ืงืืื ืืืื...
ะ ะตััััั
ืืื, ืืืืืื ืฉืืคื ืฉืืืจื ื ืื ืขืชื, ืืฉืืืืช ืืฉืืื ืฆืจืืืืช ืืืืืช ืืืืืืช ืืื ืืืคืฉืจ, ืขืืื ื ืืืฆืืจ ืืฉืืืื ืฉืืฉืืฉื ืืงืื (ืืืืจ Git) ืืืคืื (ืืชืืื ืืช ืืกืืคืืืช). ืืืฉืื ืืจืืฉืื ืฉืื ืื ื ืฆืจืืืื ืืื Git, ืืืื ืฉืืืคืืืงืฆืื ืฉืื ื ืฉืืื ืช, ืืฉืื ืืื ืื:
# This resource is the location of the git repo with the web application source
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: web-application-repo
spec:
type: git
params:
- name: url
value: https://github.com/nodeshift-starters/react-pipeline-example
- name: revision
value: master
ืืื PipelineResource ืืื ืืกืื git. ืืคืชื ื-url ืืงืืข params ืืฆืืืข ืขื ืืืืจ ืกืคืฆืืคื ืืืฆืืื ืืช ืขื ืฃ ืืืืกืืจ (ืื ืืืคืฆืืื ืื, ืืื ืื ืื ื ืืืชืืื ืืช ืื ืืฉืืืืช).
ืืขืช ืขืืื ื ืืืฆืืจ ืืฉืื ืขืืืจ ืืชืืื ื ืฉืื ืืืฉืืจื ืืชืืฆืืืช ืฉื ืืฉืืืช s2i-web-app, ืื ื ืขืฉื ืื:
# This resource is the result of running "npm run build", the resulting built files will be located in /opt/app-root/output
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: built-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-application:latest
ืืื ื-PipelineResource ืืื ืืกืื image, ืืืขืจื ืฉื ืืคืจืืืจ url ืืฆืืืข ืขื ืจืืฉืื ืืชืืื ืืช ืืคื ืืื ืฉื OpenShift, ืืืืืื ืื ืฉื ืืฆื ืืืจืื ืืฉืืืช ืฉื webapp-pipeline. ืื ืชืฉืื ืืฉื ืืช ืืืืจื ืื ืื ืืชื ืืฉืชืืฉ ืืืจืื ืฉืืืช ืืืจ.
ืืืืกืืฃ, ืืืฉืื ืืืืจืื ืฉืื ื ืฆืจืืืื ืืืื ืื ืืกืื image ืืื ืชืืื ืชืืื ืช NGINX ืืกืืคืืช ืฉืชืฉืืฉ ืืืืจ ืืื ืืืืื ืืคืจืืกื:
# This resource is the image that will be just the static html, css, js files being run with nginx
apiVersion: tekton.dev/v1alpha1
kind: PipelineResource
metadata:
name: runtime-web-application-image
spec:
type: image
params:
- name: url
value: image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtime-web-application:latest
ืฉืื, ืฉืื ืื ืฉืืืฉืื ืืื ืืืืกื ืืช ืืชืืื ื ืืจืืฉืื OpenShift ืืคื ืืื ืืืจืื ืืฉืืืช ืฉื webapp-pipeline.
ืืื ืืืฆืืจ ืืช ืื ืืืฉืืืื ืืืื ืืืช ืืืช, ืื ื ืืฉืชืืฉืื ืืคืงืืื create:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml
ืืชื ืืืื ืืืืื ืฉืืืฉืืืื ื ืืฆืจื ืื:
$ tkn resource ls
ืฆืื ืืจ ืืกืืข
ืขืืฉืื ืืฉืืฉ ืื ื ืืช ืื ืืจืืืืื ืืืจืืฉืื, ืืืื ื ืจืืื ืืื ืฆืื ืืจ ืขื ืืื ืืฆืืจืชื ืืคืงืืื ืืืื:
$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml
ืืื ืืคื ื ืฉื ืคืขืื ืืช ืืคืงืืื ืืื, ืืืื ื ืกืชืื ืขื ืืจืืืืื ืืืื. ืืจืืฉืื ืืื ืืฉื:
apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
name: build-and-deploy-react
ืืื ืืกืขืืฃ ืืืคืจื ืื ื ืจืืืื ืืื ืืืงืฆืื ืืืฉืืืื ืฉืืฆืจื ื ืงืืื ืืื:
spec:
resources:
- name: web-application-repo
type: git
- name: built-web-application-image
type: image
- name: runtime-web-application-image
type: image
ืืืืจ ืืื ืื ื ืืืฆืจืื ืืช ืืืฉืืืืช ืฉืืฆืื ืืจ ืฉืื ื ืฆืจืื ืืืฉืืื. ืงืืื ืื, ืขืืื ืืืฆืข ืืช ืืฉืืืช s2i-web-app ืฉืืืจ ืืฆืจื ื:
tasks:
- name: build-web-application
taskRef:
name: s2i-web-app
kind: ClusterTask
ืืฉืืื ืื ืืืงืืช ืคืจืืืจืื ืฉื ืงืื (ืืฉืื gir) ืืคืื (ืืฉืื ืืื ืืจื ื-ืืืฉืื-ืชืืื ื ืืืื ื). ืื ืื ื ืื ืืขืืืจืื ืื ืคืจืืืจ ืืืืื ืืื ืฉืืื ืื ืืืืช ืืช 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
ืืื ืืืฉืืื ืืงืืืืช, ืื ืื ื ืืขืืืจืื ืืฉืื, ืืื ืขืืฉืื ืื ืืืื ื-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
ืฉืชื ืืืฉืืืืช ืืืืืช ืืืจืืืืช ืขื ืืฉืืืืฉ ืืงืืฆื ืืฉืืจืืช, ืืืกืืื ืืืคืจืืกื ืฉื YAML ืฉื ืืฆืืื ืืกืคืจืืืช k8s ืฉื ืืคืืืงืฆืืืช ืืืื ืืจื ื ืฉืื ื, ืืื ืขื ืขืืืื ืืคืจืืกื ืืื ืืขืช ืืฆืืจืช ืชืืื ืืช ืืืฉืืช. ืืืืจื ื ืืช ืฉืชื ืืฉืืืืช ืืืฉืืื ืืืื ืืชืืืืช ืืืืืจ.
ืืคืขืืช ืืืกืืข
ืื, ืื ืืืงื ืืฆืื ืืจ ืฉืื ื ื ืืฆืจืื, ืืื ืื ื ื ืจืืฅ ืืืชื ืขื ืืคืงืืื ืืืื:
$ tkn pipeline start build-and-deploy-react
ืืฉืื ืื, ืฉืืจืช ืืคืงืืื ืืฉืืฉืช ืืืืคื ืืื ืืจืืงืืืื ืืขืืื ืืืืืจ ืืช ืืืฉืืืื ืืืชืืืืื ืืชืืืื ืืื ืืืช ืืืืงืฉืืช ืฉืื: ืขืืืจ ืืฉืื git, ืืืจ web-application-repo, ืืืืืจ ืืื ืขืืืจ ืืฉืื ืืชืืื ื ืืจืืฉืื, ืืืื ื-web-application -image, ืืืืกืืฃ, ืขืืืจ ืืฉืื ืชืืื ื ืฉื ื โ runtime-web-application-image:
? Choose the git resource to use for web-application-repo: web-application-repo (https://github.com/nodeshift-starters/react-pipeline-example)
? Choose the image resource to use for built-web-application-image: built-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/built-web-
application:latest)
? Choose the image resource to use for runtime-web-application-image: runtime-web-application-image (image-registry.openshift-image-registry.svc:5000/webapp-pipeline/runtim
e-web-application:latest)
Pipelinerun started: build-and-deploy-react-run-4xwsr
ืืขืช ื ืืืืง ืืช ืืฆื ืืฆืื ืืจ ืืืืฆืขืืช ืืคืงืืื ืืืื:
$ tkn pipeline logs -f
ืืืืจ ืฉืืฆืื ืืจ ืืชืืื ืืืืคืืืงืฆืื ื ืคืจืกื, ื ืืื ืืืงืฉ ืืช ืืืกืืื ืฉืคืืจืกื ืืืืฆืขืืช ืืคืงืืื ืืืื:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
ืืืืืื ืืืื ืืืชืจ, ืืชื ืืืื ืืืฆืื ืืช ืืฆืื ืืจ ืฉืื ื ืืืฆื ืืคืชืืื ืฉื ืงืื ืกืืืช ืืืื ืืจื ื ืืงืืข ืฆืื ืืจืืช, ืืคื ืฉืืืฆื ืืืืืจ. 1.
ืืืืจ.1. ืกืงืืจื ืฉื ืฆืื ืืจืืช ืคืืขืืื.
ืืืืฆื ืขื ืฆืื ืืจ ืคืืขื ืืฆืืื ืคืจืืื ื ืืกืคืื, ืืคื ืฉืืืฆื ืืืืืจ 2.
ืืืจื. 2. ืืืืข ื ืืกืฃ ืขื ืืฆืื ืืจ.
ืืืืจ ืืืืข ื ืืกืฃ, ืชืืื ืืจืืืช ืืืฉืืืื ืคืืขืืื ืืชืฆืืื ืืืคืืืืืื, ืืคื ืฉืืืฆื ืืืืืจ 3.
ืืืืจ 3. ืคืื ืืืฉืง.
ืืืืฆื ืขื ืืขืืืื ืืคืื ื ืืืื ืืช ืืขืืืื ื ืฉื ืืกืื ืคืืชืืช ืืช ืืืคืืืงืฆืื ืฉืื ื, ืืคื ืฉืืืฆื ืืืืืจ 4.
ืืืจื. 4. ืืคืขืืช ืืคืืืงืฆืืืช React.
ืืกืงื ื
ืื, ืืจืืื ื ืืืฆื ืืืคืขืื ืฉืจืช ืคืืชืื ืขืืืจ ืืืคืืืงืฆืื ืฉืื ื-OpenShift ืืืกื ืืจื ืืืชื ืขื ืืขืจืืช ืืงืืฆืื ืืืงืืืืช. ืืืงื ื ืื ืืืฆื ืืืืืช ืชืื ืืช ืื ืืื ืืฉืืจืฉืจืช ืืืืฆืขืืช OpenShift Pipelines. ื ืืชื ืืืฆืื ืืช ืื ืืงืืืื ืืืืืื ืืืืืืจ ืืื
ืืฉืืืื ื ืืกืคืื (EN)
- ืกืคืจ ืืืงืืจืื ื ืืืื ื
"ืคืืชืื ื-OpenShift: ืืืจืื ืืืกืจื ืกืืื ืืช" ืื ืืืช ืืคืืืงืฆืืืช Node.js ืืืชืืงืืืช ืืืืืืืช ืชืื ืฉืืืืฉ ื-Red Hat OpenShift Application Runtime ื-Istio ืืืชืืจ ืืืืื ืืืืฉืืื Node.js ื-OpenShift ืืืืฆืขืืช Chrome DevTools ืฉืืืฉ ืคืงืืืืช ืืฉืืืื ื-Express ื-OpenShift ืืืคืก ืืืจืื ืขื ืืืจืกื ืืืืื ื ืืืืคื ืืืื ืฉื Node.js ืืืืง ื-Red Hat OpenShift Application Runtime ื ืืืืจ ืืืฉืืื Node.js ื-OpenShift ืขื Prometheus - ื ืืกืฃ ืขื
OpenShift ื-Kubernetes ืืืชืจ Red Hat
ืืืืขืืช ืขื ืกืืื ืจืื ืืงืืื ืื ืงืจืืืื
ืื ื ืืชืืืืื ืกืืจื ืฉื ืกืืื ืจืื ืืงืืื ืื ืฉื ืืื ืฉืืฉื ืขื ืืืืื ืืงืืจืืช ืืฉืืืืฉ ื-Red Hat OpenShift Container Platform ื-Kubernetes:
28 ืืืืืืกื, ืกืืื ืจ ืืงืืื ืืงืืกืจ "ืืคืขืื": ืืคืขืืืื ื-OpenShift ืื-Kubernetes 11 ืืกืคืืืืจ, DeploymentConfig ืืขืืืช Deployment - ืงืกื ืกืคืฆืืคื ื-OpenShift ืืื ืืื ืืคืจืืกื ืฉื ืืืฉืืืื 25 ืืกืคืืืืจ, Red Hat OpenShift ื-Machine API 9 ืืืืงืืืืจ, ืืื ืืืชืืืื ืขื ืขืืืื ืคืชืืืืืช ืืขืืืก ืืขืืืื 23 ืืืืงืืืืจ, Embedded Jenkins, Pipeline-builds, Tekton ื-Red Hat OpenShift Container Platform
ืืงืืจ: www.habr.com