OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Ushbu blogdagi barchaga salom! Bu Red Hat OpenShift-da zamonaviy veb-ilovalarni qanday joylashtirishni ko'rsatadigan seriyadagi uchinchi post.

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Oldingi ikkita postda biz zamonaviy veb-ilovalarni bir necha bosqichda qanday joylashtirishni va yangi S2I tasvirini, masalan, NGINX kabi tayyor HTTP-server tasvirini, ishlab chiqarishni joylashtirishni tartibga solish uchun zanjirli tuzilmalardan qanday foydalanishni ko'rsatdik. .

Bugun biz OpenShift platformasida ilovangiz uchun ishlab chiqish serverini qanday ishga tushirishni va uni mahalliy fayl tizimi bilan sinxronlashtirishni ko'rsatamiz, shuningdek, OpenShift quvurlari nima va ular bog'langan yig'ilishlarga muqobil sifatida qanday foydalanish mumkinligi haqida gaplashamiz.

OpenShift rivojlanish muhiti sifatida

Rivojlanish ish jarayoni

Yuqorida aytib o'tilganidek birinchi post, zamonaviy veb-ilovalar uchun odatiy ishlab chiqish jarayoni oddiygina mahalliy fayllardagi o'zgarishlarni kuzatuvchi qandaydir "ishlab chiqish serveri" dir. Ular paydo bo'lganda, dastur tuzilishi ishga tushiriladi va keyin u brauzerga yangilanadi.

Ko'pgina zamonaviy ramkalarda bunday "ishlab chiqish serveri" tegishli buyruq qatori vositalariga o'rnatilgan.

Mahalliy misol

Birinchidan, ilovalarni mahalliy sifatida ishga tushirishda bu qanday ishlashini ko'rib chiqaylik. Misol tariqasida ilovani olaylik munosabat oldingi maqolalardan, garchi deyarli bir xil ish oqimi tushunchalari boshqa barcha zamonaviy ramkalarda qo'llaniladi.
Shunday qilib, bizning React misolimizda "dev server" ni ishga tushirish uchun biz quyidagi buyruqni kiritamiz:

$ npm run start

Keyin terminal oynasida biz shunga o'xshash narsani ko'ramiz:

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Va bizning ilovamiz standart brauzerda ochiladi:

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Endi, agar faylga o'zgartirish kiritadigan bo'lsak, dastur brauzerda yangilanishi kerak.

OK, mahalliy rejimda ishlab chiqishda hamma narsa aniq, lekin OpenShift-da qanday qilib shunga erishish mumkin?

OpenShift-da ishlab chiqish serveri

Esingizda bo'lsa, ichida oldingi post, biz S2I tasvirining ishga tushirish bosqichini ko'rib chiqdik va sukut bo'yicha xizmat ko'rsatish moduli veb-ilovamizga xizmat ko'rsatish uchun javobgar ekanligini ko'rdik.

Biroq, agar siz yaqinroq ko'rib chiqsangiz skriptni ishga tushiring bu misoldan u buyruqni bajarishga imkon beruvchi $NPM_RUN muhit o'zgaruvchisini o'z ichiga oladi.

Masalan, ilovamizni joylashtirish uchun nodeshift modulidan foydalanishimiz mumkin:

$ npx nodeshift --deploy.env NPM_RUN="yarn start" --dockerImage=nodeshift/ubi8-s2i-web-app

Eslatma: Yuqoridagi misol umumiy fikrni ifodalash uchun qisqartirilgan.

Bu yerda biz NPM_RUN muhit oʻzgaruvchisini oʻrnatishimizga qoʻshdik, bu esa OpenShift podamizdagi React ishlab chiqish serverini ishga tushiradigan ipni ishga tushirish buyrugʻini ishga tushirish vaqtini bildiradi.

Agar siz ishlaydigan podning jurnaliga qarasangiz, u quyidagicha ko'rinadi:

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Albatta, biz mahalliy kodni kod bilan sinxronlashtirmagunimizcha, bularning barchasi hech narsa bo'lmaydi, u ham o'zgarishlar uchun nazorat qilinadi, lekin uzoq serverda yashaydi.

Masofaviy va mahalliy kodni sinxronlash

Yaxshiyamki, nodeshift sinxronlashtirishda osongina yordam berishi mumkin va siz o'zgarishlarni kuzatish uchun watch buyrug'idan foydalanishingiz mumkin.

Shunday qilib, dasturimiz uchun ishlab chiqish serverini o'rnatish buyrug'ini bajarganimizdan so'ng, biz quyidagi buyruqni xavfsiz ishlatishimiz mumkin:

$ npx nodeshift watch

Natijada, biz biroz oldin yaratgan ishlaydigan podga ulanish o'rnatiladi, mahalliy fayllarimizni masofaviy klaster bilan sinxronlashtirish faollashadi va mahalliy tizimimizdagi fayllar o'zgarishlar uchun kuzatila boshlaydi.

Shuning uchun, agar biz hozir src/App.js faylini yangilasak, tizim ushbu o'zgarishlarga javob beradi, ularni masofaviy klasterga ko'chiradi va ishlab chiqish serverini ishga tushiradi, so'ngra brauzerda dasturimizni yangilaydi.

Rasmni to'ldirish uchun keling, ushbu buyruqlar qanday ko'rinishini ko'rsatamiz:

$ 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 buyrug'i oc rsync buyrug'ining yuqori qismidagi abstrakt bo'lib, uning qanday ishlashi haqida ko'proq bilib olishingiz mumkin. shu yerda.

Bu React uchun misol edi, lekin aynan bir xil usul boshqa ramkalar bilan ishlatilishi mumkin, kerak bo'lganda NPM_RUN muhit o'zgaruvchisini o'rnating.

Openshift quvurlari

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Keyinchalik, OpenShift Pipelines kabi vosita va undan zanjirli tuzilishlarga muqobil sifatida qanday foydalanish mumkinligi haqida gaplashamiz.

OpenShift quvurlari nima

OpenShift Pipelines - bu Tekton yordamida quvurlarni tashkil qilish uchun mo'ljallangan bulutli CI/CD uzluksiz integratsiya va yetkazib berish tizimi. Tekton - moslashuvchan ochiq manbali Kubernetes-native CI/CD ramkasi bo'lib, u turli platformalarda (Kubernetes, serversiz, virtual mashinalar va boshqalar) asosiy qatlamdan abstraktsiyalash orqali joylashtirishni avtomatlashtirish imkonini beradi.

Ushbu maqolani tushunish uchun Quvurlar haqida biroz ma'lumot talab qilinadi, shuning uchun avval o'qishni tavsiya qilamiz rasmiy darslik.

Ish muhitini sozlash

Ushbu maqoladagi misollar bilan o'ynash uchun avvalo ish muhitingizni tayyorlashingiz kerak:

  1. OpenShift 4 klasterini oʻrnating va sozlang.Bizning misollarimizda buning uchun CodeReady Konteynerlari (CRD) qoʻllaniladi, oʻrnatish koʻrsatmalarini topishingiz mumkin. shu yerda.
  2. Klaster tayyor bo'lgach, unga Pipeline Operator-ni o'rnatishingiz kerak. Qo'rqmang, bu oson, o'rnatish ko'rsatmalari shu yerda.
  3. Yuklash Tekton CLI (tkn) shu yerda.
  4. O'zingiz o'rnatadigan dastur yaratish uchun create-react-app buyruq qatori vositasini ishga tushiring (bu oddiy dastur munosabat).
  5. (Ixtiyoriy) npm install va keyin npm start bilan namunaviy ilovani mahalliy sifatida ishga tushirish uchun omborni klonlang.

Ilovalar omborida, shuningdek, ilovani joylashtirish uchun ishlatiladigan Kubernetes/OpenShift YAML-larini o'z ichiga olgan k8s papkasi bo'ladi. Bu erda biz yaratadigan vazifalar, klaster vazifalari, manbalar va quvurlar bo'ladi. omborlar.

Qani boshladik

Bizning misolimiz uchun birinchi qadam OpenShift klasterida yangi loyiha yaratishdir. Keling, ushbu loyihani webapp-pipeline deb nomlaymiz va uni quyidagi buyruq bilan yaratamiz:

$ oc new-project webapp-pipeline

Ushbu loyiha nomi kodda keyinroq paydo bo'ladi, shuning uchun agar siz uni boshqa nom berishga qaror qilsangiz, namuna kodini mos ravishda tahrirlashni unutmang. Shu nuqtadan boshlab, biz yuqoridan pastga emas, balki pastdan yuqoriga boramiz: ya'ni biz birinchi navbatda konveyerning barcha tarkibiy qismlarini va shundan keyingina konveyerning o'zini yaratamiz.

Shunday qilib, birinchi navbatda ...

Vazifalar

Keling, bir nechta vazifalarni yarataylik, bu esa dasturni bizning quvur liniyasida joylashtirishga yordam beradi. Birinchi vazifa - apply_manifests_task - ilovamizning k8s jildida joylashgan Kubernetes resurslarining (xizmat, tarqatish va marshrut) YAML-ni qo'llash uchun javobgardir. Ikkinchi vazifa - update_deployment_task - allaqachon o'rnatilgan tasvirni bizning quvurimiz tomonidan yaratilgan rasmga yangilash uchun javobgardir.

Agar bu hali aniq bo'lmasa, tashvishlanmang. Aslida, bu vazifalar kommunal xizmatlarga o'xshaydi va biz ularni biroz keyinroq batafsil ko'rib chiqamiz. Hozircha ularni yaratamiz:

$ 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

Keyin, tkn CLI buyrug'idan foydalanib, biz vazifalar yaratilganligini tekshiramiz:

$ tkn task ls

NAME                AGE
apply-manifests     1 minute ago
update-deployment   1 minute ago

Eslatma: Bular joriy loyihangiz uchun mahalliy vazifalardir.

Klaster vazifalari

Klaster vazifalari asosan oddiy vazifalar bilan bir xil. Ya'ni, bu ma'lum bir vazifani bajarishda u yoki bu tarzda birlashtirilgan qadamlarning qayta ishlatilishi mumkin bo'lgan to'plamidir. Farqi shundaki, klaster vazifasi klaster ichidagi hamma joyda mavjud. Quvur liniyasi operatorini qo'shganda avtomatik ravishda yaratiladigan klaster vazifalari ro'yxatini ko'rish uchun biz yana tkn CLI buyrug'idan foydalanamiz:

$ 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

Endi ikkita klaster vazifasini yaratamiz. Birinchisi S2I tasvirini yaratadi va uni ichki OpenShift registriga yuboradi; ikkinchisi, biz allaqachon tarkib sifatida yaratgan dasturdan foydalanib, NGINX asosida rasmimizni yaratish.

Tasvirni yarating va yuboring

Birinchi vazifani yaratishda biz oldingi maqolada bog'langan yig'ilishlar haqida qilgan ishimizni takrorlaymiz. Eslatib o'tamiz, biz ilovamizni "yaratish" uchun S2I tasviridan (ubi8-s2i-web-app) foydalanganmiz va OpenShift ichki registrida saqlangan tasvir bilan yakunlangan edik. Endi biz ushbu S2I veb-ilovasi tasvirini ilovamiz uchun DockerFile yaratish uchun ishlatamiz, so‘ngra Buildah-dan foydalanib, haqiqiy qurishni amalga oshiramiz va natijada olingan tasvirni OpenShift ichki registriga suramiz, chunki NodeShift-dan foydalanib ilovalarni joylashtirganingizda OpenShift aynan shunday qiladi. .

Bularning barchasini qayerdan bildik, deb so'rayapsizmi? Kimdan rasmiy Node.js rasmiy versiyasi, biz uni faqat nusxa ko'chirdik va o'zimiz uchun o'zgartirdik.

Endi keling, s2i-web-app klaster vazifasini yarataylik:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/s2i-web-app-task.yaml

Biz buni batafsil tahlil qilmaymiz, faqat OUTPUT_DIR parametriga e'tibor qaratamiz:

params:
      - name: OUTPUT_DIR
        description: The location of the build output directory
        default: build

Odatiy bo'lib, bu parametr React yig'ilgan tarkibni joylashtiradigan qurilishga teng. Boshqa ramkalar turli yo'llardan foydalanadi, masalan, Emberda u dist. Birinchi klaster vazifamizning natijasi biz to'plagan HTML, JavaScript va CSS-ni o'z ichiga olgan rasm bo'ladi.

NGINX asosida rasm yarating

Ikkinchi klaster vazifamizga kelsak, u biz allaqachon yaratgan ilova mazmunidan foydalanib, biz uchun NGINX-ga asoslangan tasvirni yaratishi kerak. Asosan, bu biz zanjirli tuzilmalarni ko'rib chiqqan oldingi bo'limning qismidir.

Buning uchun biz xuddi yuqoridagi kabi klaster vazifasini yaratamiz webapp-build-runtime:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/clustertasks/webapp-build-runtime-task.yaml

Agar siz ushbu klaster vazifalarining kodiga qarasangiz, unda biz ishlayotgan Git ombori yoki biz yaratayotgan tasvirlarning nomlari ko‘rsatilmaganini ko‘rishingiz mumkin. Biz faqat Git-ga aynan nimani o'tkazayotganimizni yoki yakuniy tasvir chiqishi kerak bo'lgan ma'lum rasmni belgilaymiz. Shuning uchun bu klaster vazifalaridan boshqa ilovalar bilan ishlashda qayta foydalanish mumkin.

Va bu erda biz ehtiyotkorlik bilan keyingi nuqtaga o'tamiz ...

Resurslar

Shunday qilib, biz aytganimizdek, klaster vazifalari iloji boricha umumiy bo'lishi kerak, shuning uchun biz kirish (Git ombori) va chiqish (yakuniy tasvirlar) sifatida foydalaniladigan resurslarni yaratishimiz kerak. Bizga kerak bo'lgan birinchi resurs - bu bizning ilovamiz joylashgan Git, shunga o'xshash narsa:

# 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

Bu erda PipelineResource git turiga kiradi. Paramlar bo'limidagi url kaliti ma'lum bir omborga ishora qiladi va asosiy filialni ko'rsatadi (bu ixtiyoriy, lekin biz uni to'liqlik uchun yozamiz).

Endi biz s2i-web-app topshirig'ining natijalari saqlanadigan rasm uchun resurs yaratishimiz kerak, bu quyidagicha amalga oshiriladi:

# 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

Bu erda PipelineResource tasvir turiga ega va url parametrining qiymati ichki OpenShift tasvir registriga ishora qiladi, xususan, webapp-quvur nomlari maydonida joylashgan. Agar siz boshqa nom maydonidan foydalanayotgan bo'lsangiz, ushbu sozlamani o'zgartirishni unutmang.

Va nihoyat, bizga kerak bo'lgan oxirgi resurs ham tasvir turiga ega bo'ladi va bu so'nggi NGINX tasviri bo'lib, keyinchalik joylashtirish paytida foydalaniladi:

# 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

Yana shuni yodda tutingki, ushbu resurs tasvirni ichki OpenShift registrida webapp-pipeline nom maydonida saqlaydi.

Ushbu resurslarning barchasini bir vaqtning o'zida yaratish uchun biz yaratish buyrug'idan foydalanamiz:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/resources/resource.yaml

Resurslar quyidagicha yaratilganligiga ishonch hosil qilishingiz mumkin:

$ tkn resource ls

Konveyer quvur liniyasi

Endi bizda barcha kerakli komponentlar mavjud bo'lsa, keling, ulardan quyidagi buyruq yordamida quvur liniyasini yig'amiz:

$ oc create -f https://raw.githubusercontent.com/nodeshift/webapp-pipeline-tutorial/master/pipelines/build-and-deploy-react.yaml

Ammo bu buyruqni ishga tushirishdan oldin ushbu komponentlarni ko'rib chiqamiz. Birinchisi ism:

apiVersion: tekton.dev/v1alpha1
kind: Pipeline
metadata:
  name: build-and-deploy-react

Keyin spetsifikatsiya bo'limida biz ilgari yaratilgan resurslarning ko'rsatkichini ko'ramiz:

spec:
  resources:
    - name: web-application-repo
      type: git
    - name: built-web-application-image
      type: image
    - name: runtime-web-application-image
      type: image

Keyin quvur liniyasi bajarishi kerak bo'lgan vazifalarni yaratamiz. Avvalo, u biz allaqachon yaratgan s2i-web-app vazifasini bajarishi kerak:

tasks:
    - name: build-web-application
      taskRef:
        name: s2i-web-app
        kind: ClusterTask

Bu vazifa kirish (gir resurs) va chiqish (o'rnatilgan veb-ilova-tasvir resursi) parametrlarini oladi. Biz o'z-o'zidan imzolangan sertifikatlardan foydalanayotganimiz uchun TLSni tekshirmasligi uchun biz unga maxsus parametrni ham beramiz:

resources:
        inputs:
          - name: source
            resource: web-application-repo
        outputs:
          - name: image
            resource: built-web-application-image
      params:
        - name: TLSVERIFY
          value: "false"

Keyingi vazifa deyarli bir xil, faqat bu erda biz allaqachon yaratgan webapp-build-runtime klaster vazifasi deyiladi:

name: build-runtime-image
    taskRef:
      name: webapp-build-runtime
      kind: ClusterTask

Oldingi vazifada bo'lgani kabi, biz resursga o'tamiz, ammo endi u o'rnatilgan veb-ilova-tasvir (oldingi vazifamizning natijasi). Va chiqish sifatida biz yana tasvirni o'rnatamiz. Ushbu vazifa avvalgisidan keyin bajarilishi kerakligi sababli, biz runAfter maydonini qo'shamiz:

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

Keyingi ikkita vazifa veb-ilovamizning k8s katalogida yashovchi YAML fayllaridan foydalanish, marshrut va joylashtirish, shuningdek, yangi tasvirlarni yaratishda ushbu joylashtirishni yangilash uchun javobgardir. Biz ushbu ikkita klaster vazifasini maqolaning boshida belgilab berdik.

Konveyerni ishga tushirish

Shunday qilib, quvur liniyasining barcha qismlari yaratilgan va biz uni quyidagi buyruq bilan ishga tushiramiz:

$ tkn pipeline start build-and-deploy-react

Ushbu bosqichda buyruq qatori interaktiv tarzda qo'llaniladi va siz uning har bir so'roviga javoban tegishli resurslarni tanlashingiz kerak: git resursi uchun web-application-repo-ni, so'ngra birinchi rasm resursi uchun qurilgan-veb-ilovani tanlang. -tasvir, va nihoyat, ikkinchi tasvir resursi uchun -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

Endi quyidagi buyruq yordamida quvur liniyasi holatini tekshiramiz:

$ tkn pipeline logs -f

Quvur ishga tushirilgach va dastur o'rnatilgach, biz quyidagi buyruq bilan nashr etilgan marshrutni so'rashimiz mumkin:

$ oc get route react-pipeline-example --template='http://{{.spec.host}}'

Ko'proq vizualizatsiya qilish uchun siz bo'limdagi veb-konsolning Dasturchi rejimida bizning quvur liniyasini ko'rishingiz mumkin Quvurlar, shaklda ko'rsatilganidek. 1.

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

1-rasm. Ishlayotgan quvurlarni ko'rib chiqish.

Ishlayotgan quvur liniyasini bosish 2-rasmda ko'rsatilganidek, qo'shimcha ma'lumotlarni ko'rsatadi.

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Guruch. 2. Quvur liniyasi haqida qo'shimcha ma'lumot.

Qo'shimcha ma'lumotdan so'ng, ko'rinishda ishlaydigan ilovalarni ko'rishingiz mumkin Topologiya, Fig.3 da ko'rsatilganidek.

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

3-rasm. Ishga tushirilgan pod.

Belgining yuqori o'ng burchagidagi doira ustiga bosish 4-rasmda ko'rsatilganidek, dasturimizni ochadi.

OpenShift-dagi zamonaviy ilovalar, 3-qism: OpenShift ishlab chiqish muhiti va OpenShift quvurlari sifatida

Guruch. 4. React ilovasini ishga tushirish.

xulosa

Shunday qilib, biz OpenShift-da ilovangiz uchun ishlab chiqish serverini qanday ishga tushirishni va uni mahalliy fayl tizimi bilan sinxronlashtirishni ko'rsatdik. Shuningdek, biz OpenShift Pipelines yordamida zanjirlangan shablonni qanday simulyatsiya qilishni ko'rib chiqdik. Ushbu maqoladagi barcha misol kodlarini topish mumkin shu yerda.

Qo'shimcha manbalar (EN)

Bo'lajak vebinarlarning e'lonlari

Biz Red Hat OpenShift Container Platform va Kubernetes-dan foydalanish tajribasi haqida juma kuni bir qator vebinarlarni boshlaymiz:

Manba: www.habr.com

a Izoh qo'shish