ื ืืืื ืืขืืขืจ! ืืึธืก ืืื ืื ืจืืข ืคึผืึธืกืื ืืื ืืื ืืืขืจ ืกืขืจืืข ืืื ืืืึธืก ืืืจ ืืืืึทืื ืืื ืฆื ืฆืขืืืืงืืขื ืืึธืืขืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืืฃ Red Hat OpenShift.
ืืื ืื ืคืจืืขืจืืืงืข ืคึผืึธืกืื, ืืืจ ืึท ืืืกื ืืขืจืืจื ืื ืงืืืคึผืึทืืืืึทืืื ืคืื ืื ื ืืึทืข S2I (ืืงืืจ-ืฆื-ืืืื) ืืืืืขืจ ืืืื, ืืืึธืก ืืื ืืืืืื ื ืคึฟืึทืจ ืื ืื ืืื ืืืคึผืืืืื ื ืืึธืืขืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืืฃ ืื OpenShift ืคึผืืึทืืคืึธืจืืข. ืืขืจื ืึธื ืืืจ ืืขื ืขื ืืื ืืขืจืขืกืืจื ืืื ืื ืืขืืข ืคืื โโืืขืฉืืืื ื ืืืคึผืืืืื ื ืึท ืึทืคึผืืึทืงืืืฉืึทื, ืืื ืืืึทื ื ืืืจ ืืืขืื ืงืืงื ืืื ืฆื ื ืืฆื ืึท S2I ืืืื ืืื ืึท "ืจืืื" ืืืืืขืจ ืืืื ืืื ืคืึทืจืืื ืื ืขืก ืืื ืคึฟืึทืจืืื ืืขื ืข OpenShift ืึทืกืขืืืืื.
ืจืืื ืืืืืขืจ ืืืื
ืืื ืืืจ ืืขืจืืื ื ืืื ืืืื XNUMX, ืจืืึฟ ืืึธืืขืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืึธืื ืึท ืึทืืื ืืขืจืืคืขื ืข ืืืืขื ืืื ืข, ืืืึธืก ืืืคึผืืงืื ืคึผืขืจืคืึธืจืื ืึทืคึผืขืจืืืฉืึทื ื ืึทืืึท ืืื ืงืึธื ืืจืึทื ืกืคึผืืืึทืืืึธื, ืงืืืคื ืืขืงืข ืงืึทื ืงืึทืืึทื ืืืฉืึทื ืืื ืืื ืืคืืงืึทืืืึธื. ืื ืืขืงืขืก ืืืงืืืขื ืืื ืึท ืจืขืืืืืึทื ืคืื ืื ืึทืคึผืขืจืืืฉืึทื ื - ืืื ืืึธืก ืืื ืกืืึทืืืง HTML, ืืืฉืึทืืืึทืกืงืจืืคึผื ืืื CSS - ืืขื ืขื ืกืืึธืจื ืืื ืืขืจ ืจืขืืืืืึทื ืืขืงืข. ืืขืจ ืึธืจื ืคืื ืืขื ืืขืงืข ืืืืฉืึทืืืึทืื ืืขืคึผืขื ืืก ืืืืฃ ืืืึธืก ืืืืขื ืืืฉืืจืื ืืขื ืขื ืืขื ืืฆื, ืืื ืคึฟืึทืจ ืจืขืึทืงื ืืึธืก ืืืขื ืืืื ืื ./build ืืขืงืข (ืืืจ ืืืขืื ืงืืืขื ืฆืืจืืง ืฆื ืืขื ืืื ืืขืจ ืืขืืึทื ืืื ืื).
ืืงืืจ-ืฆื-ืืืื (S2I)
ืืื ืืขื ืคึผืึธืกืื ืืืจ ืืึธื ื ืื ืึธื ืจืืจื ืื ืืขืืข "ืืืึธืก ืืื S2I ืืื ืืื ืฆื ื ืืฆื ืขืก" (ืืืจ ืงืขื ื ืืืืขื ืขื ืืขืจ ืืืขืื ืืขื
ืึทืกืขืืืื ืคืึทืกืข
ืื ืคึฟืึทืจืืึทืืืื ื ืคืึทืกืข ืืื ืืืืขืจ ืขื ืืขื ืืื ื ืึทืืืจ ืฆื ืืืึธืก ืืึทืคึผืึทื ื ืืืขื ืืืจ ืืืืคื ืืึธืงืขืจ ืืืืขื ืืื ืขื ืืืงื ืืื ืึท ื ืืึท ืืึธืงืงืขืจ ืืืื. ืึทืงืงืึธืจืืื ืืื, ืืขื ืืื ืข ืึทืงืขืจื ืืืขื ืืืจ ืึธื ืืืืื ืึท ืืืืขื ืืืืฃ ืื OpenShift ืคึผืืึทืืคืึธืจืืข.
ืืื ืืขื ืคืึทื ืคืื ืึท ืืืขื ืึทืคึผ ืืืืืขืจ ืืืื, ืขืก ืืื ืคืึทืจืึทื ืืืืึธืจืืืขื ืคึฟืึทืจ ืื ืกืืึธืืื ื ืื ืืืคึผืขื ืืึทื ืกืื ืคืื ืืืื ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืืคื ืื ืืืืขื.
ืืื ืืืจ ืืขืืืื ืคืจืืขืจ, ืื ืึธืจื ืคืื ืื ืคืึทืจืืืง, ืฉืืื ืืขืืืื ืึทืคึผืืึทืงืืืฉืึทื ืืขืคึผืขื ืืก ืืืืฃ ืืืึธืก ืืืฉืืจืื ืืืจ ื ืืฆื. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืื ืืขื ืคืึทื ืคืื ืจืขืึทืงื, ืืึธืก ืืืขื ืืืื ืื ./build ืืขืงืข, ืืื ืคึฟืึทืจ ืึทื ืืืืึทืจ ืึทืคึผืืึทืงืืืฉืึทื ื ืขืก ืืืขื ืืืื ืื project_name/dist ืืขืงืข. ืืื, ืืื ืฉืืื ืืขืืืืื ืืื ืื ืคืจืืขืจืืืงืข ืคึผืึธืกืื, ืื ืึธืจื ืคืื ืืขืจ ืจืขืืืืืึทื ืืืขืืืืืึทืืขืจ, ืืืึธืก ืืื ืืึทืฉืืืื ืฆื ืืืืขื ืืืจื ืคืขืืืงืืึทื, ืงืขื ืขื ืืืื ืึธืืืืขืจืจืืื ืืืจื ืื OUTPUT_DIR ืกืืืืืืข ืืืึทืืขืืืืืง. ื ื, ืืื ื ืืขืจ ืึธืจื ืคืื ืืขืจ ืจืขืืืืืึทื ืืขืงืข ืืื ืึทื ืืขืจืฉ ืคืื ืคืจืืืืืืขืจืง ืฆื ืคืจืืืืืืขืจืง, ืืืจ ืคืฉืื ื ืึธืืืึทืื ืื ืืืฉืขื ืขืจืืืืึทื ืจืขืืืืืึทื ืฆื ืื ื ืึธืจืืึทื ืืขืงืข ืืื ืื ืืืื, ื ืืืืื /ืึธืคึผื/ืึทืคึผื-ืืืึธืจืฆื/output. ืืึธืก ืืื ืืืืืืืง ืฆื ืคึฟืึทืจืฉืืืื ืื ืจืขืฉื ืคืื ืืขื ืึทืจืืืงื, ืึธืืขืจ ืืืฆื ืืึธืื ืืื ืื ืืขืฉืืืื ื ืงืืงื ืืื ืืขืจ ืืืืึทืืขืจ ืืื ืข - ืื ืืืืคื ืคืึทืกืข.
ืืืืคื ืคืึทืกืข
ืืขืจ ืืื ืข ืึทืงืขืจื ืืืขื ืึท ืจืืคื ืฆื ืืึทืงืขืจ ืืืืคื ืืื ืืขืืืื ืืืืฃ ืื ื ืืึทืข ืืืื ืืืฉืืคื ืืขืฉืึทืก ืื ืคึฟืึทืจืืึทืืืื ื ืืื ืข. ืืขืจ ืืขืืืืงืขืจ ืืึทืคึผืึทื ื ืืืขื ืืืคึผืืืืื ื ืืืืฃ ืื OpenShift ืคึผืืึทืืคืึธืจืืข. ืคืขืืืงืืึทื
ืืขืจ ืืืคึฟื ืืื ืืื ืคึฟืึทืจ ืืขืฉืืืื ื ืืืคึผืืืืื ื ืึทืคึผืืึทืงืืืฉืึทื ื, ืึธืืขืจ ืขืก ืืื ืืืื ื ืืฉื ืจืขืงืึทืืขื ืืื ืฆื ืืื ืขื ืกืืึทืืืง ืืื ืืึทืื ืืืืฃ ืืขื ืืืขื. ื ื, ืืื ื ืืื ืคืึทืงื ืืืจ ืืื ืขื ืืืืื ืกืืึทืืืง ืืื ืืึทืื, ืืืจ ืืึธื ื ืื ืืึทืจืคึฟื Node.js ืืื ืกืืึทืืืจื ืืื ืืื ืืืขืจ ืืืื - ืึท ืืืขื ืกืขืจืืืขืจ ืืืขื ืืืื ืืขื ืื.
ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืืืขื ืึทืกืขืืืึทืืื ื ืืืจ ืืึทืจืคึฟื ืืืื ืืึทื, ืืืขื ืขืงืกืึทืงืืืืื ื ืืืจ ืืึทืจืคึฟื ืื ืืขืจื. ืืื ืืขื ืกืืืืึทืฆืืข, ืืฉืืื ื ืืืืืขืจ ืงืืืขื ืืื ืืึทื ืืืง.
ืืฉืืื ืืื ืืืืขื
ืืึธืก ืืื ืืืึธืก ืืื ืฉืจืืึทืื ืืืขืื
"ืฆืืืื ืึทืกืขืืืืื ืงืขื ืขื ืืืื ืืื ืืงื ืฆืืืึทืืขื, ืืื ืืืื ืขืจ ืืืฉืขื ืขืจืืืืื ื ืึท ืงืึธืืคึผืืืขื ืขื ืืืื ืืื ืื ืื ืืขืจืข ืืึธืกืืื ื ืื ืขื ืืืื ืืื ืึท ืืึทืืื ืืขืจ ืืืื ืืืึธืก ืืื ืืขื ืืฆื ืฆื ืืืืคื ืื ืขื ืืืื."
ืืื ืื ืืขืจืข ืืืขืจืืขืจ, ืืืจ ืงืขื ืขื ื ืืฆื ืื ืืืขื ืึทืคึผ ืืืืืขืจ ืืืื ืฆื ืืืืคื ืืื ืืืขืจ ืืืืขื, ืืื ืืขืจื ืึธื ื ืืฆื ืื ืืืขื ืกืขืจืืืขืจ ืืืื, ืืขืจ ืืขืืืืงืขืจ NGINX, ืฆื ืืื ืขื ืืื ืืืขืจ ืืื ืืึทืื.
ืืืื, ืืืจ ืงืขื ืขื ื ืืฆื ืื ืืืขื ืึทืคึผ ืืืืืขืจ ืืืื ืืื ืึท "ืจืืื" ืืืืืขืจ ืืื ืืื ืืขืจ ืืขืืืืงืขืจ ืฆืืื ืืึธืื ืึท ืงืืืื ืจืื ืืืืข ืืืื.
ืืืฆื ืืึธืืืจ ืงืืงื ืืื ืืขื ืืื ืึท ืกืคึผืขืฆืืคืืฉ ืืืึทืฉืคึผืื.
ืคึฟืึทืจ ืืจืืื ืื ื ืืืจ ืืืขืื ื ืืฆื
ืขืก ืืืขื ืืขืืคื ืืื ืื ืฉืืขืื ืึทืืฅ ืฆืืืึทืืขื
ืืื ืก ืงืืง ืืื ืืขื ืืขืงืข ืืื ืืขืจ ืืขืืึทื, ืืื ืึธื ืืืืื ืืื ืื ืคึผืึทืจืึทืืขืืขืจืก ืึธืคึผืืืืืื ื.
parameters:
- name: SOURCE_REPOSITORY_URL
description: The source URL for the application
displayName: Source URL
required: true
- name: SOURCE_REPOSITORY_REF
description: The branch name for the application
displayName: Source Branch
value: master
required: true
- name: SOURCE_REPOSITORY_DIR
description: The location within the source repo of the application
displayName: Source Directory
value: .
required: true
- name: OUTPUT_DIR
description: The location of the compiled static files from your web apps builder
displayName: Output Directory
value: build
required: false
ืึทืืฅ ืืึธ ืืื ืฉืืื ืงืืึธืจ, ืึธืืขืจ ืขืก ืืื ืืืขืจื ืืืืื ื ืฆื ืื OUTPUT_DIR ืคึผืึทืจืึทืืขืืขืจ. ืคึฟืึทืจ ืื React ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืื ืืืขืจ ืืืืฉืคึผืื, ืขืก ืืื ืืึธืจื ืืฉื ืฆื ืืึธืจื ืืืขืื, ืืืืึทื React ื ืืฆื ืื ืคืขืืืงืืึทื ืืืขืจื ืืื ืืขืจ ืจืขืืืืืึทื ืืขืงืข, ืึธืืขืจ ืืื ืืขื ืคืึทื ืคืื ืึทื ืืืืึทืจ ืึธืืขืจ ืขืคึผืขืก ืึทื ืืขืจืฉ, ืืขื ืคึผืึทืจืึทืืขืืขืจ ืืืขื ืืืื ืืขืืืื ืืื ื ืืืืืง.
ืืืฆื ืืึธืื ืืื ืื ืงืืง ืืื ืื ImageStreams ืึธืคึผืืืืืื ื.
- apiVersion: v1
kind: ImageStream
metadata:
name: react-web-app-builder // 1
spec: {}
- apiVersion: v1
kind: ImageStream
metadata:
name: react-web-app-runtime // 2
spec: {}
- apiVersion: v1
kind: ImageStream
metadata:
name: web-app-builder-runtime // 3
spec:
tags:
- name: latest
from:
kind: DockerImage
name: nodeshift/ubi8-s2i-web-app:10.x
- apiVersion: v1
kind: ImageStream
metadata:
name: nginx-image-runtime // 4
spec:
tags:
- name: latest
from:
kind: DockerImage
name: 'centos/nginx-112-centos7:latest'
ื ืขืืขื ืึท ืงืืง ืืืึท ืื ืืจืื ืืื ืคืขืจื ืืืืืขืจ. ืืื ืืขื ืขื ืืืืืข ืืืคืืื ื ืืื ืืึธืงืขืจ ืืืืืขืจ, ืืื ืืืจ ืงืขื ืขื ืงืืืจ ืืขื ืืื ืืื ืงืืืขื ืคืื.
ืื ืืจืื ืืืื ืืื ืืืขื-ืึทืคึผ-ืืืืืขืจ ืืื ืขืก ืงืืื ืคึฟืื ื ืึธืืขืฉืืคื/ubi8-s2i-web-app ืืึทืื 10.x ืืืืฃ
ืืขืจ ืคืขืจื ืืื ืึท NGINX ืืืื (ืืืขืจืกืืข 1.12) ืืื ืื ืืขืฆืืข ืงืืืืื ืืืืฃ
ืืืฆื ืืึธืืืจ ืงืืงื ืืื ืื ืขืจืฉืืข ืฆืืืื ืืืืืขืจ. ืืื ืืขื ืขื ืืืืืข ืืืืืืง ืืื ืึธื ืืืื ืืื ืืขื ืขื ืืืฉืืคื ืืืืื ืืขืฉืึทืก ืื ืืืืขื ืคืึทืกืข. ืืขืจ ืขืจืฉืืขืจ ืืืื, ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืืืืืขืจ, ืืืขื ืืืื ืืขืจ ืจืขืืืืืึทื ืคืื ืึท ืคึฟืึทืจืืึทืืืื ื ืฉืจืื ืืืึธืก ืืืขื ืคืึทืจืืื ืื ืื ืืืขื-ืึทืคึผ-ืืืืืขืจ-ืจืื ืืืืข ืืืื ืืื ืืื ืืืขืจ ืืงืืจ ืงืึธื. ืึทื ืืื ืืืึธืก ืืืจ ืฆืืืขืืขืื "-ืืืืืขืจ" ืฆื ืืขื ื ืึธืืขื ืคืื ืืขื ืืืื.
ืื ืจืืข ืืืื - ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืจืื ืืืืข - ืืืขื ืืืื ืืขืจ ืจืขืืืืืึทื ืคืื ืงืึทืืืืื ืื ื nginx-image-runtime ืืื ืขืืืขืืข ืืขืงืขืก ืคืื ืื ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืืืืืขืจ ืืืื. ืืขืจ ืืืื ืืืขื ืืืื ืืืื ืืขืืืืื ื ืืขืฉืึทืก ืืืคึผืืืืืึทื ื ืืื ืืืขื ืืืืื ืึทื ืืืึทืืื ืื ืืืขื ืกืขืจืืืขืจ ืืื ืกืืึทืืืง HTML, ืืืฉืึทืืืึทืกืงืจืืคึผื, CSS ืคืื ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื.
ืฆืขืืืฉื? ืืืฆื ืืึธืืืจ ื ืขืืขื ืึท ืงืืง ืืื ืื ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ื ืืื ืขืก ืืืขื ืืืขืจื ืึท ืืืกื ืงืืืจืขืจ.
ืืื ืืืขืจ ืืืกืืขืจ ืืื ืฆืืืื ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ื. ืืึธ ืืื ืืขืจ ืขืจืฉืืขืจ, ืืื ืขืก ืืื ืืึทื ืฅ ื ืึธืจืืึทื:
apiVersion: v1
kind: BuildConfig
metadata:
name: react-web-app-builder
spec:
output:
to:
kind: ImageStreamTag
name: react-web-app-builder:latest // 1
source: // 2
git:
uri: ${SOURCE_REPOSITORY_URL}
ref: ${SOURCE_REPOSITORY_REF}
contextDir: ${SOURCE_REPOSITORY_DIR}
type: Git
strategy:
sourceStrategy:
env:
- name: OUTPUT_DIR // 3
value: ${OUTPUT_DIR}
from:
kind: ImageStreamTag
name: web-app-builder-runtime:latest // 4
incremental: true // 5
type: Source
triggers: // 6
- github:
secret: ${GITHUB_WEBHOOK_SECRET}
type: GitHub
- type: ConfigChange
- imageChange: {}
type: ImageChange
ืืื ืืืจ ืงืขื ืขื ืืขื, ืื ืฉืืจื ืืื ืคืืจืืข 1 ืืืื ืึทื ืืขืจ ืจืขืืืืืึทื ืคืื ืืขื ืืืืขื ืืืขื ืืืื ืืขืฉืืขืื ืืื ืืขืจ ืืขืืืืงืขืจ ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืืืืืขืจ ืืืื ืืืึธืก ืืืจ ืืขืืขื ืึท ืืืกื ืคืจืืขืจ ืืื ืื ImageStreams ืึธืคึผืืืืืื ื.
ืื ืฉืืจื ืืืื ื ืึธืืขื 2 ืืขืจืฆืืืื ืืืจ ืืื ืฆื ืืึทืงืืืขื ืื ืงืึธื. ืืื ืืื ืืืขืจ ืคืึทื, ืืึธืก ืืื ืึท ืืื ืจืืคึผืึทืืึทืืึธืจื, ืืื ืื ืึธืจื, ืจืขืฃ ืืื ืงืึธื ืืขืงืกื ืืขืงืข ืืขื ืขื ืืืฉืืืกื ืืืจื ืื ืคึผืึทืจืึทืืขืืขืจืก ืืืึธืก ืืืจ ืฉืืื ืืขืืขื ืืืืื.
ืื ืฉืืจื ืืืื ื ืึธืืขื 3 ืืื ืืืึธืก ืืืจ ืฉืืื ืืขืืขื ืืื ืื ืคึผืึทืจืึทืืขืืขืจืก ืึธืคึผืืืืืื ื. ืขืก ืืืกืืฃ ืื OUTPUT_DIR ืกืืืืืืข ืืืึทืืขืืืืืง, ืืืึธืก ืืื ืืื ืืืขืจ ืืืึทืฉืคึผืื ืืื ืืืืขื.
ืื ืฉืืจื ืืืื ื ืึธืืขื 4 ืืืื ืฆื ื ืืฆื ืื ืืืขื-ืึทืคึผ-ืืืืืขืจ-ืจืื ืืืืข ืืืื, ืืืึธืก ืืืจ ืฉืืื ืืขืืขื ืืื ืื ImageStream ืึธืคึผืืืืืื ื.
ืฉืืจื ืืืื ื ืึธืืขื 5 ืืืื ืึทื ืืืจ ืืืืื ืฆื ื ืืฆื ืึท ืื ืงืจืึทืืขื ืืึทื ืืืืขื ืืืื ืื S2I ืืืื ืฉืืืฆื ืขืก, ืืื ืื ืืืขื ืึทืคึผ ืืืืืขืจ ืืืื. ืืื ืืขืจ ืขืจืฉืืขืจ ืงืึทืืขืจ, ื ืึธื ืื ืคึฟืึทืจืืึทืืืื ื ืืื ืข ืืื ืืขืขื ืืืงื, ืื ืืืื ืืืขื ืจืึทืืขืืืขื ืื node_modules ืืขืงืข ืืื ืึทื ืึทืจืงืืืื ืืขืงืข. ืืขืจื ืึธื, ืืืืฃ ืกืึทืืกืึทืงืืืึทื ื ืจืึทื ื, ืื ืืืื ืืืขื ืคืฉืื ืึทื ืืืคึผ ืืขื ืืขืงืข ืฆื ืจืขืืืฆืืจื ืื ืืืืขื ืฆืืื.
ืืื ืืขืกืึธืฃ, ืื ืฉืืจื ืืืื ื ืึธืืขื 6 ืืื ืืืืื ืึท ืืืกื ืืจืืืขืจื ืฆื ืืึทืื ืื ืืืืขื ืืืืคื ืืืืืึธืืึทืืืฉ, ืึธื ืืึทื ืืึทื ืืจืืื ืืืฉืื ื, ืืืขื ืขืคึผืขืก ืขื ืืขืจืื ืืขื.
ืงืืืืขืืืืง, ืืึธืก ืืื ืึท ืฉืืื ื ืึธืจืืึทื ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื.
ืืืฆื ืืึธืื ืก ื ืขืืขื ืึท ืงืืง ืืื ืื ืจืืข ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื. ืขืก ืืื ืืืืขืจ ืขื ืืขื ืฆื ืืขืจ ืขืจืฉืืขืจ, ืึธืืขืจ ืขืก ืืื ืืืื ืืืืืืืง ืืืืืง.
apiVersion: v1
kind: BuildConfig
metadata:
name: react-web-app-runtime
spec:
output:
to:
kind: ImageStreamTag
name: react-web-app-runtime:latest // 1
source: // 2
type: Image
images:
- from:
kind: ImageStreamTag
name: react-web-app-builder:latest // 3
paths:
- sourcePath: /opt/app-root/output/. // 4
destinationDir: . // 5
strategy: // 6
sourceStrategy:
from:
kind: ImageStreamTag
name: nginx-image-runtime:latest
incremental: true
type: Source
triggers:
- github:
secret: ${GITHUB_WEBHOOK_SECRET}
type: GitHub
- type: ConfigChange
- type: ImageChange
imageChange: {}
- type: ImageChange
imageChange:
from:
kind: ImageStreamTag
name: react-web-app-builder:latest // 7
ืึทืืื ืื ืฆืืืืืืข ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืื ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืจืื ืืืืข, ืืื ืขืก ืกืืึทืจืฅ ืึท ืฉืืื ื ืึธืจืืึทื.
ืื ืฉืืจื ืืืื ื ืึธืืขื 1 ืืื ืืึธืจื ืืฉื ื ืืึท - ืขืก ืคืฉืื ืืืื ืึทื ืื ืืืืขื ืจืขืืืืืึทื ืืื ืฉืืขืื ืืื ืื ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืจืื ืืืืข ืืืื.
ืื ืฉืืจื ืืืื ื ืึธืืขื 2, ืืื ืืื ืื ืคืจืืขืจืืืงืข ืงืึทื ืคืืืืขืจืืืฉืึทื, ืื ืืืงืืืฅ ืืื ืฆื ืืึทืงืืืขื ืื ืืงืืจ ืงืึธื. ืึธืืขืจ ืืึทืืขืจืงื ืึทื ืืึธ ืืืจ ืืึธืื ืึทื ืขืก ืืื ืืขื ืืืขื ืคืื ืื ืืืื. ืืขืจืฆื, ืคึฟืื ืื ืืืื ืืืึธืก ืืืจ ืคึผืื ืงื ืืืฉืืคื - ืคึฟืื ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืืืืืขืจ (ืื ืืืงืึทืืขื ืืื ืฉืืจื ืืืื ื ืึธืืขื 3). ืื ืืขืงืขืก ืืืจ ืืืืื ืฆื ื ืืฆื ืืขื ืขื ืื ืื ืืืื ืืื ืืืืขืจ ืึธืจื ืืื ืืึทืฉืืืื ืืื ืฉืืจื ืืืื ื ืึธืืขื 4, ืืื ืืื ืืืขืจ ืคืึทื ืขืก ืืื /ืึธืคึผื/ืึทืคึผ-ืืืึธืจืฆื/ ืจืขืืืืืึทื/. ืืืื ืืืจ ืืขืืขื ืงืขื, ืืึธืก ืืื ืืื ืื ืืขืงืขืก ืืืฉืขื ืขืจืืืืึทื ืืืืืจื ืืืืฃ ืื ืจืขืืืืืึทืื ืคืื ืื ืื ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืขื ืขื ืกืืึธืจื.
ืื ืืขืกืืื ืืืฉืึทื ืืขืงืข ืกืคึผืขืกืืคืืขื ืืื ืื ืืขืจืืื ืืื ืคืืจืืข 5 ืืื ืคืฉืื ืื ืงืจืึทื ื ืืืขืืืืืึทืืขืจ (ืืึธืก ืืื ืึทืืข, ืืขืืขื ืงืขื, ืคืืืกื ืืืง ืืื ืขืืืขืืข ืืึทืืืฉืืงืึทื ืืึทื ืืขืจืืคึฟื OpenShift, ืืื ื ืืฉื ืืืืฃ ืืืื ืืืืข ืงืึธืืคึผืืืืขืจ).
ืื ืกืืจืึทืืขืืืข ืึธืคึผืืืืืื ื - ืฉืืจื ืืืื ื ืึธืืขื 6 - ืืื ืืืื ืขื ืืขื ืฆื ืืขืจ ืขืจืฉืืขืจ ืืืืขื ืงืึทื ืคืืืืขืจืืืฉืึทื. ืืืืื ืืึธืก ืืึธื ืืืจ ืืืขืื ื ืืฆื nginx-image-runtime, ืืืึธืก ืืืจ ืืึธืื ืฉืืื ืืขืืขื ืืื ืื ImageStream ืึธืคึผืืืืืื ื.
ืฆืื ืกืืฃ, ืื ืฉืืจื ืืืื ื ืึธืืขื 7 ืืื ืึท ืึธืคึผืืืืืื ื ืคืื ืืจืืืขืจื ืืืึธืก ืืืขื ืึทืงืืึทืืืืื ืืขื ืืืืขื ืืขืืขืจ ืืึธื ืืืขื ืื ืจืขืึทืืืจื-ืืืขื-ืึทืคึผ-ืืืืืขืจ ืืืื ืขื ืืขืจืื ืืขื.
ืึทื ืืขืจืฉ, ืืขื ืืขืืคึผืืึทืืข ืึผืืื ืฉืืื ื ืึธืจืืึทื ืืืคึผืืืืืึทื ื ืงืึทื ืคืืืืขืจืืืฉืึทื, ืืื ืืขืืื ื ืืื ืืื ืื ืืืึธืก ืคืึทืจืืื ืื ืฆื ืืึทืืื ืื ืืก ืืื ืจืืฅ, ืึธืืขืจ ืืืจ ืืืขืื ื ืืฉื ืืืื ืืื ืฆื ืคืื ืืขืืึทื. ืืืืข ืืึธื ืึทื ืื ืืืื ืืืึธืก ืืืขื ืืืื ืืืคึผืืืื ืืื ืื ืจืขืึทืงื-ืืืขื-ืึทืคึผ-ืจืื ืืืืข ืืืื.
ืึทืคึผืคึผืืืงืึทืืืึธื ืืืคึผืืืืืึทื ื
ืืืฆื ืึทื ืืืจ ืืึธืื ืืขืงืืงื ืืืืฃ ืืขื ืืืกืืขืจ, ืืึธืื ืืื ืื ืืขื ืืื ืฆื ื ืืฆื ืขืก ืฆื ืฆืขืืืืงืืขื ืึท ืึทืคึผืืึทืงืืืฉืึทื.
ืืืจ ืงืขื ืขื ื ืืฆื ืื OpenShift ืงืืืขื ื ืืขืฆืืึทื ืืขืจืืคื oc ืฆื ืฆืขืืืืงืืขื ืืื ืืืขืจ ืืืกืืขืจ:
$ find . | grep openshiftio | grep application | xargs -n 1 oc apply -f
$ oc new-app --template react-web-app -p SOURCE_REPOSITORY_URL=https://github.com/lholmquist/react-web-app
ืืขืจ ืขืจืฉืืขืจ ืืึทืคึฟืขื ืืื ืื ืกืงืจืขืขื ืฉืึธื ืืืืื ืืื ืึท ืืืืืืจืึทืืื ืื ืืฉืขื ืืขืจืืข ืืืขื ืฆื ืืขืคึฟืื ืขื ืึท ืืืกืืขืจ./openshiftio/application.yaml.
ืื ืจืืข ืืึทืคึฟืขื ืคืฉืื ืงืจืืืืฅ ืึท ื ืืึทืข ืึทืคึผืืึทืงืืืฉืึทื ืืืืืจื ืืืืฃ ืืขื ืืืกืืขืจ.
ื ืึธื ืื ืงืึทืืึทื ืื ืึทืจืืขื, ืืืจ ืืืขืื ืืขื ืึทื ืืืจ ืืึธืื ืฆืืืื ืึทืกืขืืืืื:
ืืื ืฆืืจืืงืงืืืขื ืฆื ืื ืึธืืืขืจืืืืขืื ืคืึทืจืฉืืขืื, ืืืจ ืืืขืื ืืขื ืื ืืึธื ืืฉื ืคึผืึธื:
ืืจืืงื ืืขื ืืื ืง ืืื ืืืจ ืืืขื ืืืื ืืขื ืืืขื ืฆื ืืื ืืืขืจ ืึทืคึผ, ืืืึธืก ืืื ืื ืคืขืืืงืืึทื ืจืขืึทืงื ืึทืคึผ ืืืึทื:
ืืขืกืึธืคืข 1
ืคึฟืึทืจ ืืืื ืงืืืืง ืืืืืืืขืจืก ืืืจ ืืืื ืืึธืื
ืืขืจ ืืืกืืขืจ ืืึธ ืืื ืื ืืขืืืข, ืึทืืืฅ ืคึฟืึทืจ ืื OUTPUT_DIR ืืืึทืืขืืืืืง.
ืืขืกืึธืคืข 2
ืืื ืืขื ืึทืจืืืงื ืืืจ ืืขืืืืื ื NGINX ืืื ืึท ืืืขื ืกืขืจืืืขืจ, ืึธืืขืจ ืขืก ืืื ืืึทื ืฅ ืืจืื ื ืฆื ืคืึทืจืืืึทืื ืขืก ืืื ืึทืคึผืึทืืฉื, ื ืึธืจ ืืืืฉื ืื ืืืกืืขืจ ืืื ืืขืจ ืืขืงืข
ืกืึธืฃ
ืืื ืืขืจ ืขืจืฉืืขืจ ืืืื ืคืื ืืขื ืกืขืจืืข, ืืืจ ืืขืืืืื ืืื ืฆื ืืขืฉืืืื ื ืฆืขืืืืงืืขื ืืึธืืขืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืืฃ ืื OpenShift ืคึผืืึทืืคืึธืจืืข. ืืืึทื ื ืืืจ ืืขืงืืงื ืืืืฃ ืืืึธืก ืึท ืืืขื ืึทืคึผ ืืืื ืืื ืืื ืืื ืขืก ืงืขื ืขื ืืืื ืงืึทืืืืื ื ืืื ืึท ืจืืื ืืืขื ืกืขืจืืืขืจ ืืื NGINX ื ืืฆื ืืฉืืื ื ืืืืื ืฆื ืฉืึทืคึฟื ืึท ืืขืจ ืคึผืจืึธืืืงืฆืืข-ืืจืืื ืึทืคึผืืึทืงืืืฉืึทื ืืืืขื. ืืื ืืขืจ ืืืืึทืืขืจ ืืื ืืขืฆื ืึทืจืืืงื ืืื ืืขื ืกืขืจืืข, ืืืจ ืืืขืื ืืืืึทืื ืืื ืฆื ืืืืคื ืึท ืึทื ืืืืืงืืื ื ืกืขืจืืืขืจ ืคึฟืึทืจ ืืืื ืึทืคึผืืึทืงืืืฉืึทื ืืืืฃ OpenShift ืืื ืขื ืฉืืจ ืกืื ืืงืจืึทื ืึทืืืืฉืึทื ืคืื ืืืืข ืืื ืืืืึทื ืืขืงืขืก.
ืืื ืืึทืื ืคืื ืืขื ืกืขืจืืข ืคืื โโืึทืจืืืงืืขื
- ืืืื 1:
ืืื ืฆื ืฆืขืืืืงืืขื ืืึธืืขืจื ืืืขื ืึทืคึผืืึทืงืืืฉืึทื ื ืืื ืืืืื ืึท ืืืกื ืกืืขืคึผืก ; - ืืืื 2: ืืื ืฆื ื ืืฆื ืึท ื ืืึทืข S2I ืืืื ืืื ืึทื ืืืืืกืืื ื ืืืืคึผ ืกืขืจืืืขืจ ืืืื, ืึทืืึท ืืื NGINX, ื ืืฆื ืคึฟืึทืจืืื ืื OpenShift ืึทืกืขืืืืื ืคึฟืึทืจ ืคึผืจืึธืืืงืฆืืข ืืืคึผืืืืืึทื ื;
- ืืืื 3: ืืื ืฆื ืืืืคื ืึท ืึทื ืืืืืงืืื ื ืกืขืจืืืขืจ ืคึฟืึทืจ ืืืื ืึทืคึผืืึทืงืืืฉืึทื ืืืืฃ ืื OpenShift ืคึผืืึทืืคืึธืจืืข ืืื ืกืื ืืงืจืึทื ืืื ืขืก ืืื ืื ืืืืข ืืขืงืข ืกืืกืืขื.
ื ืึธื ืจืขืกืืจืกื
- ืคืจืื E- ืืื
ืืืคึผืืืืื ื ืฆื OpenShift . - ืืื ืคึฟืึธืจืืึทืฆืืข ืืืืฃ
OpenShift ืืื Kubernetes .
ืืงืืจ: www.habr.com