ProHoster > Блог > Isakoso > Awọn ohun elo ode oni lori OpenShift, apakan 3: OpenShift bi agbegbe idagbasoke ati OpenShift Pipelines
Awọn ohun elo ode oni lori OpenShift, apakan 3: OpenShift bi agbegbe idagbasoke ati OpenShift Pipelines
Hello gbogbo eniyan lori yi bulọọgi! Eyi ni ifiweranṣẹ kẹta ninu jara ninu eyiti a fihan bi o ṣe le ran awọn ohun elo wẹẹbu ode oni sori Red Hat OpenShift.
Ninu awọn ifiweranṣẹ meji ti tẹlẹ, a fihan bi o ṣe le ran awọn ohun elo wẹẹbu ode oni ni awọn igbesẹ diẹ ati bii o ṣe le lo aworan S2I tuntun kan pẹlu aworan olupin HTTP ti ita-selifu, gẹgẹbi NGINX, ni lilo awọn ile-ẹwọn lati ṣeto awọn imuṣiṣẹ iṣelọpọ. .
Loni a yoo ṣafihan bi o ṣe le ṣiṣe olupin idagbasoke kan fun ohun elo rẹ lori pẹpẹ OpenShift ati muuṣiṣẹpọ pẹlu eto faili agbegbe, ati tun sọrọ nipa kini OpenShift Pipelines jẹ ati bii wọn ṣe le lo bi yiyan si awọn apejọ ti o sopọ.
OpenShift bi agbegbe idagbasoke
Idagbasoke iṣẹ ṣiṣe
Bi a ti sọ tẹlẹ ninu akọkọ post, Ilana idagbasoke aṣoju fun awọn ohun elo wẹẹbu ode oni jẹ diẹ ninu awọn iru “olupin idagbasoke” ti o tọpa awọn ayipada si awọn faili agbegbe. Nigbati wọn ba waye, kikọ ohun elo naa yoo fa ati lẹhinna o ti ni imudojuiwọn si ẹrọ aṣawakiri naa.
Ni ọpọlọpọ awọn ilana igbalode, iru “olupin idagbasoke” ni a kọ sinu awọn irinṣẹ laini aṣẹ ti o baamu.
Apeere agbegbe
Ni akọkọ, jẹ ki a wo bii eyi ṣe n ṣiṣẹ nigbati o nṣiṣẹ awọn ohun elo ni agbegbe. Jẹ ká ya awọn ohun elo bi apẹẹrẹ Idahun lati awọn nkan iṣaaju, botilẹjẹpe o fẹrẹẹ jẹ awọn imọran iṣan-iṣẹ kanna lo ni gbogbo awọn ilana ode oni miiran.
Nitorinaa, lati bẹrẹ “olupin dev” ninu apẹẹrẹ React wa, a yoo tẹ aṣẹ wọnyi sii:
$ npm run start
Lẹhinna ni window ebute a yoo rii nkan bii eyi:
Ati pe ohun elo wa yoo ṣii ni aṣawakiri aiyipada:
Bayi, ti a ba ṣe awọn ayipada si faili naa, ohun elo yẹ ki o ṣe imudojuiwọn ni ẹrọ aṣawakiri.
O dara, ohun gbogbo han gbangba pẹlu idagbasoke ni ipo agbegbe, ṣugbọn bii o ṣe le ṣaṣeyọri kanna lori OpenShift?
Olupin idagbasoke lori OpenShift
Ti o ba ranti, in ti tẹlẹ post, a wo ohun ti a pe ni ipele ṣiṣe ti aworan S2I ati rii pe nipasẹ aiyipada, module olupin jẹ iduro fun ṣiṣe iṣẹ ohun elo wẹẹbu wa.
Sibẹsibẹ, ti o ba ṣe akiyesi diẹ sii ṣiṣe akosile lati apẹẹrẹ yẹn, o ni oniyipada ayika $ NPM_RUN, eyiti o fun ọ laaye lati ṣiṣẹ aṣẹ rẹ.
Fun apẹẹrẹ, a le lo module nodeshift lati mu ohun elo wa lọ:
Akiyesi: Apeere ti o wa loke jẹ kukuru lati ṣe apejuwe imọran gbogbogbo.
Nibi a ti ṣafikun oniyipada ayika NPM_RUN si imuṣiṣẹ wa, eyiti o sọ fun akoko asiko lati ṣiṣẹ aṣẹ ibere yarn, eyiti o bẹrẹ olupin idagbasoke React inu Podu OpenShift wa.
Ti o ba wo log ti adarọ-ese, yoo dabi iru eyi:
Nitoribẹẹ, gbogbo eyi kii yoo jẹ ohunkohun titi ti a yoo fi le mu koodu agbegbe ṣiṣẹpọ pẹlu koodu naa, eyiti o tun ṣe abojuto fun awọn ayipada, ṣugbọn ngbe lori olupin latọna jijin.
Mimuuṣiṣẹpọ latọna jijin ati koodu agbegbe
Ni akoko, nodeshift le ṣe iranlọwọ ni irọrun pẹlu mimuuṣiṣẹpọ, ati pe o le lo aṣẹ iṣọ lati tọpa awọn ayipada.
Nitorinaa lẹhin ti a ti ṣiṣẹ aṣẹ lati fi olupin idagbasoke ranṣẹ fun ohun elo wa, a le lo pipaṣẹ atẹle lailewu:
$ npx nodeshift watch
Bi abajade, asopọ kan yoo ṣe si adarọ-ese ti a ṣẹda diẹ diẹ sẹhin, mimuuṣiṣẹpọ ti awọn faili agbegbe wa pẹlu iṣupọ latọna jijin yoo ṣiṣẹ, ati awọn faili ti o wa lori eto agbegbe wa yoo bẹrẹ si ni abojuto fun awọn ayipada.
Nitorinaa, ti a ba ṣe imudojuiwọn faili src/App.js bayi, eto naa yoo dahun si awọn ayipada wọnyi, daakọ wọn si iṣupọ latọna jijin ki o bẹrẹ olupin idagbasoke, eyiti yoo ṣe imudojuiwọn ohun elo wa ninu ẹrọ aṣawakiri.
Lati pari aworan naa, jẹ ki a ṣafihan kini gbogbo awọn aṣẹ wọnyi dabi:
Aṣẹ iṣọ jẹ abstraction lori oke aṣẹ oc rsync, o le ni imọ siwaju sii nipa bii o ṣe n ṣiṣẹ nibi.
Eyi jẹ apẹẹrẹ fun React, ṣugbọn ọna kanna gangan le ṣee lo pẹlu awọn ilana miiran, kan ṣeto iyipada ayika NPM_RUN bi o ṣe pataki.
Openshift Pipelines
Nigbamii a yoo sọrọ nipa ohun elo kan bii OpenShift Pipelines ati bii o ṣe le ṣee lo bi yiyan si awọn ile-ẹwọn.
Kini OpenShift Pipelines
OpenShift Pipelines jẹ awọsanma-ilu abinibi CI/CD isọpọ lemọlemọfún ati eto ifijiṣẹ ti a ṣe apẹrẹ fun siseto awọn paipu nipa lilo Tekton. Tekton jẹ ipilẹ-ìmọ Kubernetes-ilu abinibi CI/CD ilana ti o fun ọ laaye lati ṣe adaṣe adaṣe lori awọn iru ẹrọ oriṣiriṣi (Kubernetes, olupin, awọn ẹrọ foju, ati bẹbẹ lọ) nipa yiyọ kuro ni ipele ti o wa labẹ.
Loye nkan yii nilo diẹ ninu imọ ti Pipelines, nitorinaa a ṣeduro ni iyanju pe ki o kọkọ ka osise iwe eko.
Ṣiṣeto agbegbe iṣẹ rẹ
Lati mu ṣiṣẹ pẹlu awọn apẹẹrẹ ninu nkan yii, o nilo akọkọ lati mura agbegbe iṣẹ rẹ:
Fi sori ẹrọ ati tunto iṣupọ OpenShift 4. Awọn apẹẹrẹ wa lo CodeReady Containers (CRD) fun eyi, awọn ilana fifi sori ẹrọ eyiti o le rii nibi.
Lẹhin iṣupọ naa ti ṣetan, o nilo lati fi Oṣiṣẹ Pipeline sori rẹ. Maṣe bẹru, o rọrun, awọn ilana fifi sori ẹrọ nibi.
Ṣiṣe awọn ohun elo laini aṣẹ ṣẹda-react-app lati ṣẹda ohun elo kan ti iwọ yoo ran lọ (eyi jẹ ohun elo ti o rọrun Idahun).
(Eyi je eyi ko je) Di ibi ipamọ naa lati ṣiṣẹ ohun elo apẹẹrẹ ni agbegbe pẹlu fifi sori ẹrọ npm ati lẹhinna npm bẹrẹ.
Ibi ipamọ ohun elo yoo tun ni folda k8s, eyiti yoo ni awọn Kubernetes/OpenShift YAML ti a lo lati fi ohun elo naa ranṣẹ. Awọn iṣẹ-ṣiṣe yoo wa, Awọn iṣẹ-ṣiṣe Cluster, Awọn orisun ati Awọn opo gigun ti a yoo ṣẹda ninu eyi awọn ibi ipamọ.
Jẹ ká bẹrẹ
Igbesẹ akọkọ fun apẹẹrẹ wa ni lati ṣẹda iṣẹ akanṣe tuntun ninu iṣupọ OpenShift. Jẹ ki a pe iṣẹ akanṣe yii webapp-pipeline ki o ṣẹda rẹ pẹlu aṣẹ atẹle:
$ oc new-project webapp-pipeline
Orukọ iṣẹ akanṣe yii yoo han ninu koodu nigbamii lori, nitorinaa ti o ba pinnu lati lorukọ nkan miiran, maṣe gbagbe lati ṣatunkọ koodu apẹẹrẹ ni ibamu. Bibẹrẹ lati aaye yii, a kii yoo lọ si oke-isalẹ, ṣugbọn isalẹ-oke: iyẹn ni, a yoo kọkọ ṣẹda gbogbo awọn paati ti gbigbe, ati lẹhinna gbigbe ara rẹ nikan.
Nitorina, akọkọ ...
Awọn iṣẹ-ṣiṣe
Jẹ ki a ṣẹda awọn iṣẹ-ṣiṣe meji, eyiti yoo ṣe iranlọwọ lati mu ohun elo ṣiṣẹ laarin opo gigun ti epo wa. Iṣẹ akọkọ - apply_manifests_task - jẹ iduro fun lilo YAML ti awọn orisun Kubernetes wọnyẹn (iṣẹ, imuṣiṣẹ ati ipa ọna) ti o wa ninu folda k8s ti ohun elo wa. Iṣẹ-ṣiṣe keji - update_deployment_task - jẹ iduro fun mimudojuiwọn aworan ti a fi ranṣẹ tẹlẹ si ọkan ti o ṣẹda nipasẹ opo gigun ti epo wa.
Maṣe yọ ara rẹ lẹnu ti ko ba han gbangba sibẹsibẹ. Ni otitọ, awọn iṣẹ-ṣiṣe wọnyi jẹ nkan bi awọn ohun elo, ati pe a yoo wo wọn ni awọn alaye diẹ sii diẹ nigbamii. Fun bayi, jẹ ki a kan ṣẹda wọn:
Lẹhinna, ni lilo aṣẹ tkn CLI, a yoo ṣayẹwo pe a ti ṣẹda awọn iṣẹ ṣiṣe:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Akiyesi: Iwọnyi jẹ awọn iṣẹ-ṣiṣe agbegbe fun iṣẹ akanṣe lọwọlọwọ rẹ.
Awọn iṣẹ-ṣiṣe iṣupọ
Awọn iṣẹ-ṣiṣe iṣupọ jẹ ipilẹ kanna bii awọn iṣẹ ṣiṣe ti o rọrun. Iyẹn ni, o jẹ akojọpọ awọn igbesẹ ti o tun ṣee lo ti o papọ ni ọna kan tabi omiiran nigba ṣiṣe iṣẹ-ṣiṣe kan pato. Iyatọ naa ni pe iṣẹ-ṣiṣe iṣupọ kan wa nibi gbogbo laarin iṣupọ. Lati wo atokọ ti awọn iṣẹ-ṣiṣe iṣupọ ti o ṣẹda laifọwọyi nigbati o nfi Oluṣe Pipeline kun, a yoo tun lo aṣẹ 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
Bayi jẹ ki a ṣẹda awọn iṣẹ-ṣiṣe iṣupọ meji. Ni igba akọkọ ti yoo ṣe ina aworan S2I ati firanṣẹ si iforukọsilẹ OpenShift inu; keji ni lati kọ aworan wa ti o da lori NGINX, lilo ohun elo ti a ti kọ tẹlẹ bi akoonu.
Ṣẹda ati firanṣẹ aworan naa
Nigbati o ba ṣẹda iṣẹ-ṣiṣe akọkọ, a yoo tun ṣe ohun ti a ti ṣe tẹlẹ ninu nkan ti tẹlẹ nipa awọn apejọ ti o sopọ. Ranti pe a lo aworan S2I (ubi8-s2i-web-app) lati “kọ” ohun elo wa, o si pari pẹlu aworan ti o fipamọ sinu iforukọsilẹ inu OpenShift. Ni bayi a yoo lo aworan ohun elo oju opo wẹẹbu S2I yii lati ṣẹda DockerFile kan fun ohun elo wa lẹhinna lo Buildah lati ṣe itumọ gangan ati Titari aworan abajade si iforukọsilẹ inu OpenShift, nitori iyẹn ni deede ohun ti OpenShift ṣe nigbati o mu awọn ohun elo rẹ ṣiṣẹ ni lilo NodeShift .
A kii yoo ṣe itupalẹ eyi ni awọn alaye, ṣugbọn yoo dojukọ nikan lori paramita OUTPUT_DIR:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Nipa aiyipada, paramita yii dọgba lati kọ, eyiti o jẹ ibiti React fi akoonu ti o pejọ sii. Awọn ilana miiran lo awọn ọna oriṣiriṣi, fun apẹẹrẹ, ni Ember o jẹ dist. Ijade ti iṣẹ-ṣiṣe iṣupọ akọkọ wa yoo jẹ aworan ti o ni HTML, JavaScript, ati CSS ti a kojọ ninu.
Kọ aworan kan ti o da lori NGINX
Bi fun iṣẹ iṣupọ keji wa, o yẹ ki o kọ aworan ti o da lori NGINX fun wa, ni lilo akoonu ti ohun elo ti a ti kọ tẹlẹ. Ni pataki, eyi ni apakan ti apakan ti tẹlẹ nibiti a ti wo awọn ile-ẹwọn.
Lati ṣe eyi, awa - ni deede kanna bi o kan loke - yoo ṣẹda iṣẹ-ṣiṣe iṣupọ webapp-build-runtime:
Ti o ba wo koodu ti awọn iṣẹ-ṣiṣe iṣupọ wọnyi, o le rii pe ko ṣe pato ibi ipamọ Git ti a n ṣiṣẹ pẹlu tabi awọn orukọ awọn aworan ti a ṣẹda. A pato pato kini gangan ti a n gbe si Git, tabi aworan kan nibiti aworan ikẹhin yẹ ki o jade. Ti o ni idi ti awọn iṣẹ-ṣiṣe iṣupọ wọnyi le tun lo nigbati o ba n ṣiṣẹ pẹlu awọn ohun elo miiran.
Ati pe nibi a ni oore-ọfẹ gbe lọ si aaye atẹle…
Oro
Nitorinaa, niwọn bi a ti sọ, awọn iṣẹ iṣupọ yẹ ki o jẹ gbogbogbo bi o ti ṣee ṣe, a nilo lati ṣẹda awọn orisun ti yoo ṣee lo bi titẹ sii (ibi ipamọ Git) ati bi iṣelọpọ (awọn aworan ikẹhin). Ohun elo akọkọ ti a nilo ni Git, nibiti ohun elo wa gbe, nkan bii eyi:
# 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
Nibi PipelineResource jẹ ti iru git. Bọtini url ti o wa ni apakan params tọka si ibi ipamọ kan pato ati pato ẹka titunto si (eyi jẹ iyan, ṣugbọn a kọ fun pipe).
Bayi a nilo lati ṣẹda orisun kan fun aworan nibiti awọn abajade ti iṣẹ-ṣiṣe s2i-web-app yoo wa ni fipamọ, eyi ni a ṣe bii eyi:
# 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
Nibi PipelineResource jẹ ti iru aworan, ati pe iye paramita url tọka si iforukọsilẹ Aworan OpenShift inu, pataki eyiti o wa ni aaye orukọ pipeline webapp. Maṣe gbagbe lati yi eto yii pada ti o ba nlo aaye orukọ ọtọtọ.
Ati nikẹhin, orisun ti o kẹhin ti a nilo yoo tun jẹ iru aworan ati pe eyi yoo jẹ aworan NGINX ikẹhin ti yoo ṣee lo lakoko imuṣiṣẹ:
# 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
Lẹẹkansi, ṣakiyesi pe orisun yii tọju aworan naa sinu iforukọsilẹ OpenShift inu inu aaye orukọ-pipeline webapp.
Lati ṣẹda gbogbo awọn orisun wọnyi ni ẹẹkan, a lo aṣẹ ṣiṣẹda:
Iṣẹ-ṣiṣe yii n gba titẹ sii (awọn orisun gir) ati ṣiṣejade (awọn orisun ohun elo-aworan oju-iwe ayelujara ti a ṣe-itumọ ti) awọn paramita. A tun ṣe paramita pataki kan ki o ko rii daju TLS nitori a nlo awọn iwe-ẹri ti ara ẹni:
Gẹgẹbi pẹlu iṣẹ iṣaaju, a kọja ni orisun kan, ṣugbọn ni bayi o jẹ aworan ohun elo wẹẹbu ti a ṣe-itumọ (ijade ti iṣẹ-ṣiṣe iṣaaju wa). Ati bi abajade a tun ṣeto aworan naa. Niwọn igba ti iṣẹ yii gbọdọ ṣe lẹhin ti iṣaaju, a ṣafikun aaye runAfter:
Awọn iṣẹ-ṣiṣe meji ti o tẹle ni o ni iduro fun lilo iṣẹ, ipa-ọna ati imuṣiṣẹ awọn faili YAML ti o ngbe inu ilana k8s ti ohun elo wẹẹbu wa, ati tun fun mimuuṣiṣẹpọ imuṣiṣẹ yii nigba ṣiṣẹda awọn aworan tuntun. A ṣe alaye awọn iṣẹ iṣupọ meji wọnyi ni ibẹrẹ nkan naa.
Ti o bere awọn conveyor
Nitorinaa, gbogbo awọn apakan ti opo gigun ti epo wa ni a ṣẹda, ati pe a yoo ṣiṣẹ pẹlu aṣẹ atẹle:
$ tkn pipeline start build-and-deploy-react
Ni ipele yii, a lo laini aṣẹ ni ibaraenisepo ati pe o nilo lati yan awọn orisun ti o yẹ ni idahun si awọn ibeere rẹ kọọkan: fun orisun git, yan ohun elo wẹẹbu-repo, lẹhinna fun orisun aworan akọkọ, ohun elo wẹẹbu-itumọ -aworan, ati nikẹhin, fun orisun aworan keji –aworan igba-akoko-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
Bayi jẹ ki a ṣayẹwo ipo ti opo gigun ti epo nipa lilo aṣẹ atẹle:
$ tkn pipeline logs -f
Ni kete ti opo gigun ti epo ti bẹrẹ ati pe ohun elo naa ti gbe lọ, a le beere ọna ti a tẹjade pẹlu aṣẹ atẹle:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Fun iwoye nla, o le wo opo gigun ti epo wa ni ipo Olùgbéejáde ti console wẹẹbu ni apakan Pipelines, bi o han ni Ọpọtọ. 1.
Fig.1. Atunwo ti nṣiṣẹ pipelines.
Tite lori opo gigun ti epo n ṣe afihan awọn alaye afikun, bi o ṣe han ni Nọmba 2.
Iresi. 2. Alaye afikun nipa opo gigun ti epo.
Lẹhin alaye diẹ sii, o le wo awọn ohun elo nṣiṣẹ ni wiwo oju ile, bi o han ni Fig.3.
olusin 3. Podu ti a ṣe ifilọlẹ.
Tite lori Circle ni igun apa ọtun loke ti aami naa ṣii ohun elo wa, bi o ṣe han ni aworan 4.
Iresi. 4. Nṣiṣẹ React ohun elo.
ipari
Nitorinaa, a fihan bi o ṣe le ṣiṣe olupin idagbasoke fun ohun elo rẹ lori OpenShift ati muuṣiṣẹpọ pẹlu eto faili agbegbe. A tun wo bi o ṣe le ṣe adaṣe awoṣe ti a fi ẹwọn kan ni lilo OpenShift Pipelines. Gbogbo awọn koodu apẹẹrẹ lati nkan yii ni a le rii nibi.