ProHoster > Блог > Gudanarwa > Aikace-aikace na zamani akan OpenShift Sashe na 3: OpenShift azaman yanayin haɓakawa da Bututun OpenShift
Aikace-aikace na zamani akan OpenShift Sashe na 3: OpenShift azaman yanayin haɓakawa da Bututun OpenShift
Sannu kowa a wannan shafi! Wannan shine matsayi na uku a cikin jerin abubuwan da muke nuna yadda ake tura aikace-aikacen gidan yanar gizo na zamani akan Red Hat OpenShift.
A cikin posts guda biyu da suka gabata, mun nuna yadda ake tura aikace-aikacen gidan yanar gizo na zamani a cikin ƴan matakai kaɗan da yadda ake amfani da sabon hoton S2I tare da hoton uwar garken HTTP mara amfani, kamar NGINX, ta yin amfani da ginin sarƙaƙƙiya don tsara ayyukan samarwa. .
A yau za mu nuna yadda ake gudanar da uwar garken ci gaba don aikace-aikacenku akan dandalin OpenShift da daidaita shi tare da tsarin fayil na gida, sannan kuma muyi magana game da menene OpenShift Pipelines da kuma yadda za'a iya amfani da su azaman madadin manyan majalisai masu alaƙa.
OpenShift azaman yanayin ci gaba
Gudun ayyukan ci gaba
Kamar yadda aka fada a baya farkon post, Tsarin ci gaba na yau da kullun don aikace-aikacen gidan yanar gizo na zamani shine kawai wani nau'in "sabar ci gaba" wanda ke bin sauye-sauye zuwa fayilolin gida. Lokacin da suka faru, ginin aikace-aikacen yana kunnawa sannan a sabunta shi zuwa mai bincike.
A yawancin tsarin zamani, irin wannan "sabar ci gaba" an gina shi a cikin kayan aikin layin umarni masu dacewa.
Misali na gida
Da farko, bari mu ga yadda wannan ke aiki yayin gudanar da aikace-aikacen gida. Bari mu dauki aikace-aikacen a matsayin misali Sake amsa daga kasidun da suka gabata, kodayake kusan ra'ayoyin tafiyar aiki iri ɗaya suna amfani da su a cikin duk sauran tsarin zamani.
Don haka, don fara "dev uwar garken" a cikin misalin React ɗinmu, za mu shigar da umarni mai zuwa:
$ npm run start
Sa'an nan a cikin Terminal taga za mu ga wani abu kamar haka:
Kuma aikace-aikacen mu zai buɗe a cikin tsoho browser:
Yanzu, idan muka yi canje-canje ga fayil ɗin, aikace-aikacen yakamata ya sabunta a cikin mai binciken.
Yayi, komai a bayyane yake tare da haɓakawa a cikin yanayin gida, amma ta yaya ake samun iri ɗaya akan OpenShift?
uwar garken haɓakawa akan OpenShift
Idan kun tuna, in post na baya, Mun kalli abin da ake kira lokacin gudu na hoton S2I kuma mun ga cewa ta tsohuwa, tsarin hidimar yana da alhakin yin hidimar aikace-aikacen yanar gizon mu.
Duk da haka, idan kun yi nazari sosai gudanar da rubutun daga wannan misalin, yana ɗauke da canjin yanayi $NPM_RUN, wanda ke ba ka damar aiwatar da umarninka.
Misali, zamu iya amfani da tsarin nodeshift don tura aikace-aikacen mu:
Lura: Misalin da ke sama an gajarta shi ne don kwatanta ra'ayin gaba ɗaya.
Anan mun ƙara canjin yanayi na NPM_RUN zuwa tura mu, wanda ke nuna lokacin aiki don gudanar da umarnin fara yarn, wanda ke fara sabar ci gaban React a cikin kwas ɗin mu na OpenShift.
Idan ka duba gunkin kwafsa mai gudu, zai yi kama da haka:
Tabbas, duk wannan ba zai zama kome ba har sai mun iya aiki tare da lambar gida tare da lambar, wanda kuma ana kula da shi don canje-canje, amma yana zaune a kan uwar garken nesa.
Aiki tare na nesa da lambar gida
Abin farin ciki, nodeshift na iya taimakawa tare da aiki tare cikin sauƙi, kuma kuna iya amfani da umarnin agogo don bin canje-canje.
Don haka bayan mun gudanar da umarni don tura uwar garken ci gaba don aikace-aikacen mu, za mu iya amfani da umarnin mai zuwa lafiya:
$ npx nodeshift watch
A sakamakon haka, za a haɗa haɗin kai zuwa kundi mai gudana wanda muka ƙirƙira kadan a baya, za a kunna aiki tare da fayilolin gida tare da gungu mai nisa, kuma za a fara sa ido kan fayilolin da ke cikin tsarin gida don canje-canje.
Saboda haka, idan yanzu mun sabunta fayil ɗin src/App.js, tsarin zai amsa waɗannan canje-canje, kwafa su zuwa gungu mai nisa kuma ya fara sabar ci gaba, wanda zai sabunta aikace-aikacen mu a cikin mai binciken.
Don kammala hoton, bari mu nuna yadda waɗannan umarni duka suka yi kama:
Umurnin agogo wani abu ne a saman umarnin oc rsync, zaku iya ƙarin koyo game da yadda yake aiki a nan.
Wannan misali ne don React, amma ana iya amfani da ainihin hanyar guda ɗaya tare da sauran tsarin, kawai saita canjin yanayin NPM_RUN kamar yadda ya cancanta.
Buɗaɗɗen bututun mai
Na gaba za mu yi magana game da kayan aiki kamar OpenShift Pipelines da kuma yadda za a iya amfani da shi azaman madadin ginin sarƙoƙi.
Menene OpenShift Pipelines
OpenShift Pipelines shine CI / CD mai ci gaba da haɗin kai da tsarin bayarwa wanda aka tsara don tsara bututun ta amfani da Tekton. Tekton shine tsarin buɗe tushen Kubernetes-native CI / CD wanda ke ba ku damar sarrafa aiki da kai akan dandamali daban-daban (Kubernetes, marasa sabar, injunan kama-da-wane, da sauransu) ta hanyar cirewa daga ƙasan ƙasa.
Fahimtar wannan labarin yana buƙatar ɗan ilimin Pipelines, don haka muna ba da shawarar ku fara karantawa littafin karatu na hukuma.
Kafa yanayin aikin ku
Don yin wasa da misalan wannan labarin, da farko kuna buƙatar shirya yanayin aikin ku:
Shigar kuma saita gungu na OpenShift 4. Misalan mu suna amfani da CodeReady Containers (CRD) don wannan, umarnin shigarwa wanda za'a iya samo shi. a nan.
Bayan an shirya gungu, kuna buƙatar shigar da Operator Pipeline akansa. Kada ku ji tsoro, yana da sauƙi, umarnin shigarwa a nan.
Gudanar da kayan aikin layin umarni na Create-react-app don ƙirƙirar aikace-aikacen da za ku tura (wannan aikace-aikace ne mai sauƙi Sake amsa).
(Na zaɓi) Rufe ma'ajiyar don gudanar da aikace-aikacen misali a gida tare da shigar npm sannan npm farawa.
Ma'ajiyar aikace-aikacen kuma za ta sami babban fayil na k8s, wanda zai ƙunshi Kubernetes/OpenShift YAMLs da ake amfani da su don tura aikace-aikacen. Za a sami Ayyuka, Ayyukan Cluster, Albarkatu da Bututun da za mu ƙirƙira a cikin wannan wuraren ajiya.
Mu fara
Mataki na farko don misalinmu shine ƙirƙirar sabon aiki a cikin tarin OpenShift. Bari mu kira wannan aikin webapp-pipeline kuma ƙirƙira shi tare da umarni mai zuwa:
$ oc new-project webapp-pipeline
Wannan sunan aikin zai bayyana a cikin lambar daga baya, don haka idan kun yanke shawarar sanya masa wani abu dabam, kar ku manta da gyara lambar misali daidai. Tun daga wannan lokacin, ba za mu je sama zuwa ƙasa ba, amma ƙasa zuwa sama: wato, da farko za mu ƙirƙiri dukkan abubuwan da ke cikin na'urar, sannan sai na'urar da kanta.
Don haka, da farko ...
Ayyuka
Bari mu ƙirƙiri wasu ayyuka guda biyu, waɗanda za su taimaka sanya aikace-aikacen cikin bututunmu. Aikin farko - apply_manifests_task - shine ke da alhakin aiwatar da YAML na waɗannan albarkatun Kubernetes (sabis, turawa da hanya) waɗanda ke cikin babban fayil ɗin k8s na aikace-aikacen mu. Aiki na biyu - update_deployment_task - shine alhakin sabunta hoton da aka riga aka tura zuwa wanda bututunmu ya ƙirƙira.
Kada ku damu idan har yanzu ba a bayyana sosai ba. A gaskiya ma, waɗannan ayyuka wani abu ne kamar kayan aiki, kuma za mu duba su dalla-dalla kadan daga baya. A yanzu, bari kawai mu ƙirƙira su:
Sannan, ta amfani da umarnin tkn CLI, za mu bincika cewa an ƙirƙiri ayyukan:
$ tkn task ls
NAME AGE
apply-manifests 1 minute ago
update-deployment 1 minute ago
Lura: Waɗannan ayyuka ne na gida don aikin ku na yanzu.
Ayyukan tari
Ayyukan tari suna daidai da ayyuka masu sauƙi. Wato, tarin matakai ne da za a sake amfani da su waɗanda aka haɗa ta hanya ɗaya ko wata yayin gudanar da takamaiman aiki. Bambanci shi ne cewa aikin tari yana samuwa a ko'ina cikin gungu. Don ganin jerin ayyukan gungu waɗanda aka ƙirƙira ta atomatik lokacin ƙara Mai sarrafa Pipeline, za mu sake amfani da umarnin 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
Yanzu bari mu ƙirƙiri ayyukan tari guda biyu. Na farko zai samar da hoton S2I kuma aika shi zuwa rajista na ciki na OpenShift; na biyu shine gina hotonmu akan NGINX, ta amfani da aikace-aikacen da muka riga muka gina a matsayin abun ciki.
Ƙirƙiri kuma aika hoton
Lokacin ƙirƙirar ɗawainiyar farko, za mu maimaita abin da muka riga muka yi a cikin labarin da ya gabata game da majalissar da aka haɗa. Ka tuna cewa mun yi amfani da hoton S2I (ubi8-s2i-web-app) don "gina" aikace-aikacen mu, kuma mun ƙare tare da hoton da aka adana a cikin rajista na ciki na OpenShift. Yanzu za mu yi amfani da wannan hoton yanar gizon S2I don ƙirƙirar DockerFile don app ɗinmu sannan mu yi amfani da Buildah don yin ainihin ginin kuma tura sakamakon da aka samu zuwa rajista na ciki na OpenShift, tunda abin da OpenShift ke yi kenan lokacin da kuke tura aikace-aikacenku ta amfani da NodeShift. .
Ta yaya muka san duk wannan, ka tambaya? Daga sigar hukuma ta Node.js, kawai mun kwafi kuma muka gyara wa kanmu.
Don haka, yanzu bari mu ƙirƙiri aikin gungu na s2i-web-app:
Ba za mu yi nazarin wannan dalla-dalla ba, amma za mu mai da hankali ne kawai ga ma'aunin OUTPUT_DIR:
params:
- name: OUTPUT_DIR
description: The location of the build output directory
default: build
Ta hanyar tsoho, wannan siga yana daidai da ginawa, wanda shine inda React ke sanya abun cikin da aka haɗa. Wasu ginshiƙai suna amfani da hanyoyi daban-daban, misali, a cikin Ember disst. Fitowar aikin gungu na farko zai zama hoto mai ɗauke da HTML, JavaScript, da CSS da muka tattara.
Gina hoto akan NGINX
Dangane da aikin gungu na biyu, yakamata ya gina mana hoto na tushen NGINX, ta amfani da abun cikin aikace-aikacen da muka riga muka gina. Mahimmanci, wannan shine ɓangaren sashin da ya gabata inda muka kalli ginin sarƙoƙi.
Don yin wannan, mu - daidai da na sama - za mu ƙirƙiri aikin gungu webapp-build-runtime:
Idan ka kalli lambar waɗannan ayyukan tari, za ka ga cewa bai fayyace ma'ajin Git da muke aiki da su ba ko sunayen hotunan da muke ƙirƙira. Muna ƙayyade ainihin abin da muke turawa zuwa Git, ko wani hoton da ya kamata a fitar da hoton ƙarshe. Shi ya sa za a iya sake amfani da waɗannan ayyukan tari yayin aiki tare da wasu aikace-aikace.
Kuma a nan cikin alheri za mu ci gaba zuwa batu na gaba ...
Resources
Don haka, tun da, kamar yadda muka faɗa kawai, ayyukan gungu ya kamata su kasance gabaɗaya gwargwadon yiwuwa, muna buƙatar ƙirƙirar albarkatun da za a yi amfani da su azaman shigarwa (majigin Git) kuma azaman fitarwa (hotunan ƙarshe). Tushen farko da muke buƙata shine Git, inda aikace-aikacenmu yake, wani abu kamar haka:
# 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
Anan PipelineResource nau'in git ne. Maɓallin url a cikin sashin params yana nuni zuwa takamaiman wurin ajiya kuma yana ƙayyadaddun reshen babban (wannan zaɓi ne, amma mun rubuta shi don cikawa).
Yanzu muna buƙatar ƙirƙirar hanya don hoton inda za a adana sakamakon aikin s2i-web-app, ana yin haka kamar haka:
# 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
Anan PipelineResource na nau'in hoto ne, kuma ƙimar ma'aunin url yana nuna Rubutun Hoto na OpenShift na ciki, musamman wanda ke cikin sararin sunan bututun webapp. Kar a manta da canza wannan saitin idan kuna amfani da wani wuri na daban.
Kuma a ƙarshe, albarkatun ƙarshe da muke buƙata kuma za su kasance na nau'in hoto kuma wannan shine hoton NGINX na ƙarshe wanda za'a yi amfani dashi yayin turawa:
# 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
Bugu da ƙari, lura cewa wannan albarkatun yana adana hoton a cikin rajista na OpenShift na ciki a cikin bututun gidan yanar gizo.
Don ƙirƙirar duk waɗannan albarkatun a lokaci ɗaya, muna amfani da umarnin ƙirƙira:
Wannan aikin yana ɗaukar matakan shigarwa (gir resource) da fitarwa (gina-web-application-image albarkatun) sigogi. Muna kuma ƙaddamar da shi wani siga na musamman don kada ya tabbatar da TLS tunda muna amfani da takaddun shaida na kanmu:
Kamar yadda yake tare da aikin da ya gabata, muna wucewa a cikin kayan aiki, amma yanzu an gina shi-hoton aikace-aikacen yanar gizo (fitowar aikinmu na baya). Kuma a matsayin fitarwa mun sake saita hoton. Tun da dole ne a aiwatar da wannan aikin bayan na baya, muna ƙara filin runAfter:
Ayyuka guda biyu na gaba suna da alhakin amfani da sabis, hanya da tura fayilolin YAML waɗanda ke zaune a cikin kundin tsarin k8s na aikace-aikacen gidan yanar gizon mu, da kuma sabunta wannan turawa yayin ƙirƙirar sabbin hotuna. Mun ayyana waɗannan ayyukan tari guda biyu a farkon labarin.
Fara jigilar kaya
Don haka, an ƙirƙiri dukkan sassan bututunmu, kuma za mu gudanar da shi tare da umarni mai zuwa:
$ tkn pipeline start build-and-deploy-react
A wannan mataki, ana amfani da layin umarni tare da haɗin gwiwa kuma kuna buƙatar zaɓar albarkatun da suka dace don amsa kowane buƙatunsa: don albarkatun git, zaɓi aikace-aikacen yanar gizo-repo, sannan don albarkatun hoto na farko, ginannen aikace-aikacen yanar gizo. -image, kuma a ƙarshe, don albarkatun hoto na biyu -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
Yanzu bari mu duba matsayin bututun ta amfani da umarni mai zuwa:
$ tkn pipeline logs -f
Da zarar an fara bututun kuma an tura aikace-aikacen, za mu iya buƙatar hanyar da aka buga tare da umarni mai zuwa:
$ oc get route react-pipeline-example --template='http://{{.spec.host}}'
Don ƙarin gani, za ku iya duba bututunmu a cikin Yanayin Haɓakawa na na'ura mai kwakwalwa ta yanar gizo a cikin sashin Bututun ruwa, kamar yadda aka nuna a Fig. 1.
Hoto.1. Bitar bututun da ke gudana.
Danna kan bututun mai aiki yana nuna ƙarin cikakkun bayanai, kamar yadda aka nuna a hoto 2.
Shinkafa 2. Ƙarin bayani game da bututun mai.
Bayan ƙarin bayani, zaku iya ganin aikace-aikacen da ke gudana a cikin ra'ayi topology, kamar yadda aka nuna a hoto.3.
Hoto 3. An ƙaddamar da kwasfa.
Danna kan da'irar da ke saman kusurwar dama ta gunkin yana buɗe aikace-aikacen mu, kamar yadda aka nuna a hoto 4.
Shinkafa 4. Running React aikace-aikace.
ƙarshe
Don haka, mun nuna yadda ake gudanar da sabar haɓaka don aikace-aikacenku akan OpenShift kuma muyi aiki tare da tsarin fayil na gida. Mun kuma duba yadda ake kwaikwayi samfuri da aka ɗaure da sarƙa ta amfani da bututun OpenShift. Ana iya samun duk lambobin misali daga wannan labarin a nan.