ProHoster > Blog > Pulega > Talosaga fa'aonaponei i luga o OpenShift, vaega 3: OpenShift o se siosiomaga atina'e ma OpenShift Pipelines
Talosaga fa'aonaponei i luga o OpenShift, vaega 3: OpenShift o se siosiomaga atina'e ma OpenShift Pipelines
Talofa tagata uma i lenei blog! O le lona tolu lea o pou i se faasologa o loʻo matou faʻaalia ai le faʻaogaina o upega tafaʻilagi faʻaonaponei ile Red Hat OpenShift.
I pou muamua e lua, na matou faʻaalia ai le faʻaogaina o upega tafaʻilagi faʻaonaponei i ni nai laasaga ma pe faʻafefea ona faʻaogaina se ata fou S2I faʻatasi ai ma se ata o le server HTTP i fafo, e pei o le NGINX, faʻaogaina o mea faʻapipiʻi e faʻapipiʻi ai le gaosiga o gaosiga. .
O le asō o le a matou faʻaalia pe faʻafefea ona faʻatautaia se atinaʻe server mo lau talosaga i luga o le OpenShift platform ma faʻamaopoopoina ma le faila faila i le lotoifale, ma talanoa foi pe o le a le OpenShift Pipelines ma pe faʻapefea ona faʻaaogaina e fai ma sui i faʻapotopotoga fesoʻotaʻi.
OpenShift o se siosiomaga atinaʻe
Atina'e galuega fa'atino
E pei ona ta'ua i totonu pou muamua, o le faʻagasologa masani o le atinaʻeina o faʻaoga i luga o le upega tafaʻilagi faʻaonaponei o se ituaiga o "server development" e siaki suiga i faila i le lotoifale. A oʻo mai, e faʻaosoina le fausiaina o le talosaga ona faʻafouina lea i le browser.
I le tele o fa'aonaponei fa'aonaponei, o le "server development" o lo'o fausia i totonu o meafaigaluega laina fa'atonu.
Faataitaiga faalotoifale
Muamua, se'i o tatou va'ai pe fa'afefea ona fa'aogaina pe a fa'agaoioi talosaga i le lotoifale. Se'i fai le talosaga e fai ma fa'ata'ita'iga tali mai tala talu ai, e ui lava e toeitiiti lava tutusa fa'avae galuega fa'aaoga i isi fa'ava'a fa'aonaponei uma.
O lea la, e amata le "dev server" i la matou React faʻataʻitaʻiga, matou te ulufale i le poloaiga lenei:
$ npm run start
Ona i totonu o le faʻamalama faʻamalama o le a tatou vaʻai i se mea e pei o lenei:
Ma o la matou talosaga o le a tatalaina i le mea e le masani ai browser:
Ia, afai tatou te faia ni suiga i le faila, e tatau ona faʻafouina le talosaga ile suʻega.
OK, o loʻo manino mea uma i le atinaʻe i le lotoifale, ae faʻafefea ona ausia le tutusa i OpenShift?
Atina'e server ile OpenShift
Afai e te manatua, i pou muamua, na matou vaʻavaʻai i le vaega e taʻua o le taʻavale o le ata S2I ma iloa ai e le mafai, o le tautua module e nafa ma le tautuaina o la matou 'upega tafaʻilagi.
Ae peitai, afai e te tilotilo totoa tamo'e tusitusiga mai lena faʻataʻitaʻiga, o loʻo i ai le fesuiaiga o le siosiomaga $NPM_RUN, lea e mafai ai ona e faʻatinoina lau faʻatonuga.
Mo se faʻataʻitaʻiga, e mafai ona matou faʻaogaina le nodeshift module e faʻapipiʻi ai la matou talosaga:
Manatua: O le faʻataʻitaʻiga o loʻo i luga e faapuupuuina e faʻaalia ai le manatu lautele.
O iinei ua matou faʻaopoopoina le NPM_RUN siosiomaga fesuiaiga i la matou faʻapipiʻiina, lea e taʻu mai ai le taimi e faʻatautaia ai le vulu amata poloaiga, lea e amata ai le React development server i totonu o le OpenShift pod.
Afai e te vaʻai i le ogalaau o se pusa taʻavale, o le a foliga faʻapea:
O le mea moni, o nei mea uma o le a leai se mea seiloga e mafai ona tatou faʻamaopoopoina le code local ma le code, lea e mataʻituina foi mo suiga, ae ola i luga o se server mamao.
Fa'amaopoopo le code mamao ma le lotoifale
O le mea e lelei ai, o le nodeshift e mafai ona faigofie ona fesoasoani i le synchronization, ma e mafai ona e faʻaogaina le faʻatonuga o le matamata e siaki ai suiga.
A maeʻa la ona matou faʻatonuina le faʻatonuga e faʻapipiʻi le atinaʻe server mo la matou talosaga, e mafai ona matou faʻaoga saogalemu le poloaiga lenei:
$ npx nodeshift watch
O le iʻuga, o le a faia se fesoʻotaʻiga i le pod taʻavale lea na matou fatuina i se taimi muamua atu, o le faʻamaopoopoina oa tatou faila faʻapitonuʻu ma le kulupu mamao o le a faʻagaoioia, ma o faila i luga o la tatou polokalama faʻapitonuʻu o le a amata ona mataʻituina mo suiga.
O le mea lea, afai tatou te faʻafouina nei le faila src/App.js, o le a tali atu le faiga i nei suiga, kopi i latou i le fuifui mamao ma amata le atinaʻe server, lea o le a faʻafouina la matou talosaga i le masini.
Ina ia faʻamaeʻa le ata, seʻi o tatou faʻaalia foliga o nei poloaiga atoa:
O le faʻatonuga o le mataʻituina o se faʻamatalaga i luga o le oc rsync poloaiga, e mafai ona e aʻoaʻo atili pe faʻapefea ona galue iinei.
O se faʻataʻitaʻiga lea mo React, ae o le auala lava e tasi e mafai ona faʻaoga i isi faʻavae, naʻo le seti ole NPM_RUN siosiomaga fesuiaiga pe a manaʻomia.
Openshift Paipa
O le a sosoo ai o le a tatou talanoa e uiga i se meafaigaluega e pei o OpenShift Pipelines ma pe faʻapefea ona faʻaaogaina e fai ma sui i le filifili filifili.
O le a le OpenShift Pipelines
OpenShift Pipelines o se fa'aulu o le CI/CD fa'aauau le tu'ufa'atasia ma le tu'uina atu o faiga fa'atulagaina mo le fa'atulagaina o paipa e fa'aaoga ai Tekton. Tekton ose fa'aoga fa'apitoa Kubernetes-native CI/CD framework lea e mafai ai ona e fa'autometi le fa'apipi'iina i luga o fa'avae eseese (Kubernetes, serverless, masini masini, ma isi) e ala i le va'ava'ai mai le vaega pito i lalo.
O le malamalama i lenei tusiga e manaʻomia ai sina malamalama i Pipelines, o lea matou te fautuaina malosi e te faitau muamua tusi aoga aloaia.
Fa'atulaga lou siosiomaga faigaluega
Ina ia taʻalo ma faʻataʻitaʻiga i lenei tusiga, e tatau ona e saunia muamua lau siosiomaga faigaluega:
Faʻapipiʻi ma faʻapipiʻi se fuifui OpenShift 4. O a matou faʻataʻitaʻiga e faʻaaoga CodeReady Containers (CRD) mo lenei mea, faʻatonuga faʻapipiʻi e mafai ona maua. iinei.
A uma ona saunia le fuifui, e tatau ona e faʻapipiʻi le Pipeline Operator i luga. Aua e te fefe, e faigofie, faʻatonuga faʻapipiʻi iinei.
Faʻataʻitaʻi le meafaigāluega laina faʻatonu-react-app e fatu ai se talosaga e te faʻapipiʻiina (o se talosaga faigofie lea tali).
(Filifili) Faʻapipiʻi le fale teu e faʻataʻitaʻi ai le faʻataʻitaʻiga talosaga i le lotoifale ma le npm faʻapipiʻi ona amata loa lea o le npm.
O le fale teu oloa o le ai ai foi se faila k8s, lea o le a aofia ai Kubernetes / OpenShift YAMLs na faʻaaogaina e faʻaogaina ai le talosaga. O le ai ai Galuega, ClusterTasks, Punaoa ma Pipelines o le a tatou fatuina i lenei mea faleteuoloa.
Tatou amata
O le laasaga muamua mo la matou faʻataʻitaʻiga o le fatuina lea o se poloketi fou i le OpenShift cluster. Sei o tatou valaʻau lenei poloketi webapp-pipeline ma fatuina i le poloaiga lenei:
$ oc new-project webapp-pipeline
O lenei igoa o le poloketi o le a aliali mai i le code mulimuli ane, o lea afai e te filifili e faaigoa i se isi mea, aua nei galo e faʻasaʻo le faʻataʻitaʻiga code e tusa ai. Amata mai i lenei tulaga, tatou te le alu i luga i lalo, ae pito i lalo: o lona uiga, o le a tatou faia muamua vaega uma o le conveyor, ma na o le conveyor lava ia.
O lea, muamua lava ...
Galuega
Sei o tatou faia ni nai galuega, lea o le a fesoasoani e faʻapipiʻi le talosaga i totonu o la tatou paipa. O le galuega muamua - apply_manifests_task - e nafa ma le faʻaaogaina o le YAML o na Kubernetes punaoa (auaunaga, faʻapipiʻiina ma auala) o loʻo i totonu o le k8s faila o la matou talosaga. O le galuega lona lua - update_deployment_task - e nafa ma le faʻafouina o se ata ua uma ona faʻapipiʻiina i le ata na faia e la matou paipa.
Aua e te popole pe a le o manino lelei. O le mea moni, o nei galuega e pei o mea aoga, ma o le a tatou vaʻavaʻai atili i ai i se taimi mulimuli ane. Mo le taimi nei, seʻi o tatou fatuina:
Ona, faʻaaoga lea o le tkn CLI poloaiga, o le a matou siaki na faia galuega:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Manatua: O galuega fa'apitonu'u nei mo lau poloketi o lo'o iai nei.
Galuega fa'avasega
O galuega fa'apipi'i e tutusa lava ma galuega faigofie. O lona uiga, o se toe faʻaaogaina o laʻasaga e tuʻufaʻatasia i se tasi auala poʻo se isi pe a faʻatautaia se galuega patino. O le ese'esega o se galuega fuifui e maua i soo se mea i totonu ole fuifui. Ina ia vaʻai i le lisi o galuega faʻapipiʻi e otometi ona fatuina pe a faʻaopoopo le Pipeline Operator, matou te toe faʻaogaina le tkn CLI poloaiga:
$ 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
Se'i o tatou faia loa ni galuega fa'apipi'i se lua. O le mea muamua o le a fa'atupuina le ata S2I ma tu'u atu i totonu o le resitala OpenShift; lona lua o le fausia lea o la tatou ata e faʻavae i luga ole NGINX, faʻaaoga le talosaga ua uma ona tatou fausia e avea ma mea e aofia ai.
Fausia ma lafo le ata
Pe a fatuina le galuega muamua, matou te toe faia le mea ua uma ona matou faia i le tusiga muamua e uiga i faʻapotopotoga fesoʻotaʻi. Manatua na matou faʻaogaina le ata S2I (ubi8-s2i-web-app) e "fausia" la matou talosaga, ma faʻaiʻu i se ata na teuina i totonu o le OpenShift resitala i totonu. O lenei o le a matou faʻaogaina lenei S2I web app image e fatu ai se DockerFile mo la matou app ona faʻaaoga lea o le Buildah e fai ai le mea moni ma tulei le ata e maua i le OpenShift resitala i totonu, talu ai o le mea tonu lava lea e fai e OpenShift pe a e faʻaogaina au talosaga e faʻaaoga ai NodeShift. .
Na faapefea ona matou iloa nei mea uma, e te fesili ai? Mai lomiga aloaia o Node.js aloaia, sa na ona matou kopiina ma suia mo i matou lava.
O lea la, seʻi o tatou fatuina le galuega faʻapipiʻi s2i-web-app:
Matou te le auiliiliina lenei mea, ae o le a naʻo le OUTPUT_DIR parameter:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Ona o le faaletonu, o lenei parakalafa e tutusa ma le fausiaina, lea e tuʻu ai e React mea faʻapipiʻi. O isi auivi e faʻaogaina auala eseese, mo se faʻataʻitaʻiga, i le Ember o le dist. O le fa'atinoga o la matou galuega fa'aopoopo muamua o le a avea ma ata o lo'o iai le HTML, JavaScript, ma le CSS na matou aoina.
Fausia se ata faʻavae ile NGINX
Ae mo la matou galuega faʻapipiʻi lona lua, e tatau ona fausia se ata faʻavae NGINX mo i matou, e faʻaaoga ai le anotusi o le talosaga ua uma ona matou fausia. O le mea moni, o le vaega lea o le vaega muamua lea na matou vaʻavaʻai ai i filifili fau.
Ina ia faia lenei mea, matou - tutusa tutusa ma luga - o le a fatuina se galuega faʻapipiʻi webapp-build-runtime:
Afai e te vaʻavaʻai i le faʻailoga o nei galuega faʻapipiʻi, e mafai ona e vaʻaia e le o faʻamaonia ai le faleoloa Git o loʻo matou galulue ai poʻo igoa o ata o loʻo matou fatuina. Matou te faʻamaonia tonu le mea o loʻo matou tuʻuina atu i Git, poʻo se ata patino e tatau ona faʻaalia ai le ata mulimuli. O le mafuaaga lena e mafai ai ona toe faʻaaogaina nei galuega faʻapipiʻi pe a galulue ma isi talosaga.
Ma o iinei tatou te agai atu ai ma le agalelei i le isi vaega...
Punaoa
O lea la, talu ai, e pei ona matou fai atu ai, o galuega faʻapipiʻi e tatau ona lautele pe a mafai, matou te manaʻomia le fatuina o punaoa o le a faʻaaogaina e fai ma faʻaoga (le Git repository) ma le gaosiga (o ata mulimuli). O le punaoa muamua matou te manaʻomia o Git, o loʻo nofo ai la matou talosaga, se mea e pei o lenei:
# 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
Ole PipelineResource ole ituaiga git. O le ki url i le vaega params e faʻasino i se fale teu oloa ma faʻamaonia ai le matai lala (o le filifiliga lea, ae matou te tusia mo le atoatoa).
Ole taimi nei e manaʻomia le fatuina o se punaoa mo le ata lea o le a faʻasaoina ai taunuʻuga o le s2i-web-app galuega, e faia e pei o lenei:
# 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
O iinei o le PipelineResource o le ituaiga ata, ma o le tau o le url parameter e faasino i totonu o le OpenShift Image Registry, aemaise lava le mea o loʻo i totonu o le webapp-pipeline namespace. Aua ne'i galo e sui le tulaga lea pe afai o lo'o e fa'aogaina se isi igoa avanoa.
Ma le mea mulimuli, o le punaoa mulimuli tatou te manaʻomia o le a avea foi ma ata faʻatusa ma o le ata mulimuli NGINX lea o le a faʻaaogaina i le taimi o le faʻatulagaina:
# 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
Toe, maitau o lenei punaoa e teu ai le ata i totonu o le OpenShift resitala i totonu o le webapp-pipeline namespace.
Ina ia fatuina uma nei punaoa i le taimi e tasi, matou te faʻaogaina le faʻatonuga:
Ona matou faia lea o galuega e manaʻomia ona faʻamaeʻaina e le matou paipa. Muamua lava, e tatau ona faʻatino le galuega s2i-web-app ua uma ona matou fatuina:
O lenei galuega e mana'omia ai fa'aoga (gir resource) ma mea e maua mai (built-web-application-image resource). Matou te pasi atu foi i se faʻailoga faʻapitoa ina ia le faʻamaonia le TLS talu ai o loʻo matou faʻaaogaina tusi pasi saini:
E pei o le galuega muamua, matou te pasi atu i se punaoa, ae o lea ua fausia-web-application-image (le gaioiga o la matou galuega muamua). Ma o se gaioiga matou te toe setiina le ata. Talu ai o lenei galuega e tatau ona faʻatinoina pe a uma le muamua, matou te faʻaopoopo le runAfter field:
O isi galuega e lua e nafa ma le faʻaogaina o le tautua, auala ma le faʻapipiʻiina o faila YAML o loʻo nofo i le k8s directory o la matou 'upega tafaʻilagi, faʻapea foʻi ma le faʻafouina o lenei faʻaogaina pe a fatuina ata fou. Na matou faʻamalamalamaina nei galuega faʻapipiʻi e lua i le amataga o le tusiga.
Amataina le conveyor
O lea la, o vaega uma o la matou paipa ua faia, ma o le a matou faʻatautaia i le poloaiga lenei:
$ tkn pipeline start build-and-deploy-react
I lenei laʻasaga, o le laina faʻatonu e faʻaogaina fesoʻotaʻiga ma e manaʻomia ona e filifilia punaoa talafeagai e tali atu ai i ana talosaga taʻitasi: mo le punaoa git, filifili web-application-repo, ona mo le ata muamua punaoa, fausia-web-application. -image, ma mulimuli ane, mo punaoa ata lona lua -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
Sei o tatou siaki le tulaga o le paipa e faʻaaoga ai le poloaiga lenei:
$ tkn pipeline logs -f
O le taimi lava e amata ai le paipa ma faʻapipiʻi le talosaga, e mafai ona matou talosagaina le auala faʻasalalau ma le faʻatonuga lea:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Mo le tele o faʻaaliga, e mafai ona e vaʻai i la matou paipa i le Developer mode o le upega tafaʻilagi i le vaega Pipelines, e pei ona faaalia i le Ata. 1.
Ata.1. Iloiloga o laina paipa.
O le kiliki i luga o se paipa o loʻo faʻaalia faʻamatalaga faaopoopo, e pei ona faʻaalia i le Ata 2.
Alaisa. 2. Fa'amatalaga faaopoopo e uiga i le paipa.
A maeʻa nisi faʻamatalaga, e mafai ona e vaʻaia le faʻaogaina o talosaga i le vaaiga Topology, e pei ona faaalia i le Ata.3.
Ata 3. Fa'alauiloa pod.
O le kiliki i luga o le liʻo i le tulimanu pito i luga taumatau o le faʻailoga e tatala ai la matou talosaga, e pei ona faʻaalia i le Ata 4.
Alaisa. 4. Fa'atonuga React.
iʻuga
O lea la, na matou faʻaalia le faʻaogaina o se atinaʻe server mo lau talosaga ile OpenShift ma faʻafetaui ma le faila faila i le lotoifale. Na matou vaʻavaʻai foʻi pe faʻafefea ona faʻataʻitaʻiina se faʻataʻitaʻiga faʻapipiʻiina e faʻaaoga ai OpenShift Pipelines. O faʻataʻitaʻiga code uma mai lenei tusiga e mafai ona maua iinei.
O loʻo matou amataina se faasologa o webinars Aso Faraile e uiga i le poto masani masani e faʻaaoga ai le Red Hat OpenShift Container Platform ma Kubernetes: