Үйл ажиллагааны орчин үеийн хандлага нь бизнесийн олон тулгамдсан асуудлыг шийддэг. Контейнер ба найруулагч нь аливаа нарийн төвөгтэй төслүүдийг масштаблахад хялбар болгож, шинэ хувилбаруудыг гаргахыг хялбаршуулж, илүү найдвартай болгодог боловч нэгэн зэрэг хөгжүүлэгчдэд нэмэлт бэрхшээл учруулдаг. Программист юуны түрүүнд өөрийн кодыг анхаардаг: архитектур, чанар, гүйцэтгэл, дэгжин байдал - энэ нь Kubernetes дээр хэрхэн ажиллах, хамгийн бага өөрчлөлт хийсний дараа хэрхэн туршиж, дибаг хийх талаар биш юм. Тиймээс Kubernetes-д зориулсан хэрэгслүүд идэвхтэй хөгжиж байгаа нь хамгийн "архаик" хөгжүүлэгчдийн асуудлыг шийдвэрлэхэд тусалж, гол зүйл дээр анхаарлаа төвлөрүүлэх боломжийг олгодог нь мэдээжийн хэрэг юм.
Энэхүү тойм нь код нь Кубернетес кластерын хэсэгт ажилладаг програмистын амьдралыг хөнгөвчлөх зарим хэрэгслүүдийн талаар товч мэдээлэл өгдөг.
Энгийн туслахууд
Kubectl-дибаг
- Мөн чанар: саваа Pod-д нэмээд дотор нь юу болж байгааг хараарай.
-
GitHub . - GH-ийн товч статистик: 715 од, 54 үүрэг, 9 хувь нэмэр оруулагч.
- Хэл: Яв.
- Лиценз: Apache лиценз 2.0.
kubectl-д зориулсан энэхүү залгаас нь сонирхсон pod дотор нэмэлт контейнер үүсгэх боломжийг олгодог бөгөөд энэ нь процессын нэрийн орон зайг бусад контейнеруудтай хуваалцах болно. Үүний дотор та pod-ийн ажиллагааг дибаг хийх боломжтой: сүлжээг шалгах, сүлжээний траффикийг сонсох, сонирхсон үйл явцын ул мөрийг хийх гэх мэт.
Та мөн ажиллуулах замаар процессын контейнер руу шилжиж болно chroot /proc/PID/root
- манифест дээр суулгасан саванд үндэс бүрхүүл авах шаардлагатай үед энэ нь маш тохиромжтой байж болох юм. securityContext.runAs
.
Хэрэгсэл нь энгийн бөгөөд үр дүнтэй тул хөгжүүлэгч бүрт хэрэгтэй байж болно. Бид энэ талаар дэлгэрэнгүй бичсэн
Телепрессив
- Мөн чанар: програмыг компьютерт шилжүүлнэ үү. Орон нутагт хөгжүүлж, дибаг хийх.
-
вэб сайт ;GitHub . - GH-ийн товч статистик: 2131 од, 2712 амлалт, 33 хувь нэмэр оруулагч.
- Хэл: Python.
- Лиценз: Apache лиценз 2.0.
Энэхүү нэмэлт хэрэгслийн санаа нь локал хэрэглэгчийн компьютер дээр програмтай контейнер ажиллуулж, кластераас түүн рүү болон буцаж байгаа бүх урсгалыг прокси болгох явдал юм. Энэ арга нь танд дуртай IDE дээрх файлуудыг засварлах замаар дотооддоо хөгжүүлэх боломжийг олгодог: үр дүн нь шууд гарч ирнэ.
Орон нутгийн хэмжээнд ажиллуулахын давуу тал нь засварлахад хялбар, шуурхай үр дүн, програмыг ердийн аргаар дибаг хийх чадвар юм. Сул тал нь холболтын хурдыг шаарддаг бөгөөд энэ нь нэлээд өндөр RPS, ачаалал ихтэй програмтай ажиллахад мэдэгдэхүйц юм. Нэмж дурдахад Telepresence нь Windows дээр дууны хэмжээг нэмэгдүүлэхэд бэрхшээлтэй тул энэ үйлдлийн системд дассан хөгжүүлэгчдийн хувьд шийдвэрлэх хязгаарлалт болдог.
Бид Telepresence ашиглах туршлагаа аль хэдийн хуваалцсан
Ksync
- Мөн чанар: кластер дахь контейнертэй кодын бараг агшин зуурын синхрончлол.
-
GitHub . - GH-ийн товч статистик: 555 од, 362 үүрэг, 11 хувь нэмэр оруулагч.
- Хэл: Яв.
- Лиценз: Apache лиценз 2.0.
Энэхүү хэрэгсэл нь локал лавлахын агуулгыг кластерт ажиллаж байгаа контейнерийн лавлахтай синхрончлох боломжийг танд олгоно. Ийм хэрэгсэл нь скрипт програмчлалын хэлийг хөгжүүлэгчдэд тохиромжтой бөгөөд гол асуудал нь кодыг ажиллаж байгаа контейнерт хүргэх явдал юм. Ksync нь энэ толгойн өвдөлтийг намдаах зорилготой юм.
тушаалаар нэг удаа эхлүүлэх үед ksync init
Сонгосон контейнерийн файлын системийн төлөвийг хянахад ашигладаг DaemonSet нь кластерт үүсгэгддэг. Орон нутгийн компьютер дээрээ хөгжүүлэгч командыг ажиллуулдаг ksync watch
, энэ нь тохиргоог хянаж, ажиллуулдаг
Үлдсэн зүйл бол ksync-д юуг юутай синхрончлохыг зааж өгөх явдал юм. Жишээлбэл, энэ тушаал:
ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false /home/user/myproject/ /var/www/myproject/
... нэртэй ажиглагч үүсгэнэ myproject
шошготой подволыг хайх болно app=backend
мөн дотоод лавлахыг синхрончлохыг оролдоорой /home/user/myproject/
каталогтой /var/www/myproject/
дуудсан чингэлэг дээр php
.
Бидний туршлагаас ksync-тэй холбоотой асуудлууд болон тэмдэглэлүүд:
- Kubernetes кластерийн зангилаанууд дээр ашиглах ёстой
overlay2
Docker-д зориулсан хадгалах драйвер болгон. Тус хэрэгсэл нь бусадтай ажиллахгүй. - Windows-ийг үйлчлүүлэгчийн үйлдлийн систем болгон ашиглах үед файлын системийн ажиглагч зөв ажиллахгүй байж магадгүй юм. Энэ алдаа нь том сангуудтай ажиллах үед ажиглагдсан - олон тооны үүрлэсэн файл, лавлахуудтай. Бид бүтээсэн
холбогдох асуудал синхрончлолын төсөлд байгаа боловч одоогоор ахиц дэвшил гараагүй байна (7-р сарын эхнээс). - Файл ашиглах
синхрончлох шаардлагагүй зам эсвэл файлын хэв маягийг зааж өгөх (жишээлбэл, лавлах.stignore
app/cache
и.git
). - Өгөгдмөл байдлаар, ksync нь файл өөрчлөгдөх бүрт контейнерийг дахин эхлүүлнэ. Node.js-ийн хувьд энэ нь тохиромжтой боловч PHP-ийн хувьд энэ нь огт шаардлагагүй юм. Опкэйчийг унтрааж туг ашиглах нь дээр
--reload=false
. - Тохиргоог үргэлж засах боломжтой
$HOME/.ksync/ksync.yaml
.
Сквош
- Мөн чанар: кластерт шууд дибаг хийх процессууд.
-
GitHub . - GH-ийн товч статистик: 1154 од, 279 амлалт, 23 хувь нэмэр оруулагч.
- Хэл: Яв.
- Лиценз: Apache лиценз 2.0.
Энэ хэрэгсэл нь шууд pods дахь процессуудыг дибаг хийхэд зориулагдсан. Уг хэрэгсэл нь энгийн бөгөөд интерактив байдлаар хүссэн дибаглагчаа сонгох боломжийг олгодог (доороос үзнэ үү) болон нэрийн орон зай + pod, үүнд та хөндлөнгөөс оролцох хэрэгтэй. Одоогоор дэмжигдсэн:
- delve - Go програмуудад зориулсан;
- GDB - зорилтот алсын удирдлага + порт дамжуулах замаар;
- Java програмуудыг дибаг хийх JDWP порт дамжуулах.
IDE тал дээр дэмжлэгийг зөвхөн VScode дээр ашиглах боломжтой (
Процессыг дибаг хийхийн тулд Squash нь кластерын зангилаанууд дээр давуу эрхтэй контейнер ажиллуулдаг тул та эхлээд боломжуудтай танилцах хэрэгтэй.
Бүрэн шийдлүүд
Хүнд их буу руу шилжье - хөгжүүлэгчдийн олон хэрэгцээг нэн даруй хангах зорилготой "том хэмжээний" төслүүд.
NB: Энэ жагсаалтад мэдээж манай Нээлттэй эхийн хэрэглүүрийг ашиглах газар бий
DevSpace
- Мөн чанар: Кубернетес хотод ажиллаж эхлэхийг хүсч байгаа боловч ширэнгэн ойг нь гүнзгийрүүлэхийг хүсдэггүй хүмүүст зориулав.
-
GitHub . - GH-ийн товч статистик: 630 од, 1912 он, 13 хувь нэмэр оруулагч.
- Хэл: Яв.
- Лиценз: Apache лиценз 2.0.
Багийг хөгжүүлэх зорилгоор удирддаг кластеруудыг Kubernetes-ээр хангадаг ижил нэртэй компанийн шийдэл. Энэхүү хэрэгсэл нь арилжааны кластеруудад зориулагдсан боловч бусадтай маш сайн ажилладаг.
Командыг ажиллуулах үед devspace init
Төслийн каталогид танд санал болгох болно (интерактив):
- ажиллаж байгаа Kubernetes кластер сонгох,
- байгаа ашиглах
Dockerfile
(эсвэл шинээр үүсгэх) түүн дээр тулгуурлан сав үүсгэх, - Контейнерийн дүрсийг хадгалах агуулахыг сонгох гэх мэт.
Эдгээр бүх бэлтгэл алхмуудын дараа та командыг ажиллуулж хөгжүүлж эхлэх боломжтой devspace dev
. Энэ нь савыг барьж, хадгалах санд байршуулж, кластерт байршуулалт хийж, портыг дамжуулах, локал лавлахтай синхрончлох ажлыг эхлүүлнэ.
Сонголтоор та терминалыг сав руу шилжүүлэхийг хүсэх болно. Та татгалзах ёсгүй, учир нь бодит байдал дээр сав нь унтах командаас эхэлдэг бөгөөд бодит туршилт хийхийн тулд програмыг гараар эхлүүлэх хэрэгтэй.
Эцэст нь, баг devspace deploy
програм болон холбогдох дэд бүтцийг кластерт шилжүүлж, үүний дараа бүх зүйл байлдааны горимд ажиллаж эхэлнэ.
Төслийн бүх тохиргоо файлд хадгалагдана devspace.yaml
. Хөгжлийн орчны тохиргооноос гадна та Кубернетесийн стандарт манифесттэй төстэй дэд бүтцийн тайлбарыг зөвхөн маш хялбаршуулсан байдлаар олж болно.
DevSpace-тэй ажиллах архитектур ба үндсэн үе шатууд
Нэмж дурдахад, төсөлд урьдчилан тодорхойлсон бүрэлдэхүүн хэсэг (жишээлбэл, MySQL DBMS) эсвэл Helm диаграммыг нэмэхэд хялбар байдаг. Дэлгэрэнгүйг эндээс уншина уу
Скаффолд
-
вэб сайт ;GitHub . - GH-ийн товч статистик: 7423 од, 4173 амлалт, 136 хувь нэмэр оруулагч.
- Хэл: Яв.
- Лиценз: Apache лиценз 2.0.
Google-ийн энэхүү хэрэгсэл нь ямар нэгэн байдлаар код нь Kubernetes кластер дээр ажиллах хөгжүүлэгчийн бүх хэрэгцээг хангана гэж мэдэгджээ. Үүнийг ашиглаж эхлэх нь devspace шиг хялбар биш: интерактив, хэл илрүүлэх, автоматаар үүсгэх боломжгүй. Dockerfile
Тэд энд танд санал болгохгүй.
Гэсэн хэдий ч, хэрэв энэ нь таныг айлгахгүй бол Скаффолд танд юу хийхийг зөвшөөрдөг:
- Эх кодын өөрчлөлтийг хянах.
- Хэрэв угсрах шаардлагагүй бол савны савтай синхрончлоорой.
- Хэрэв хэл нь орчуулагдсан бол код бүхий сав цуглуулах, эсвэл олдворуудыг эмхэтгэж, саванд хийнэ.
- Үүссэн зургуудыг ашиглан автоматаар шалгана
чингэлэг-бүтэц-туршилт . - Зургийг Docker Бүртгэлд тэмдэглэж, байршуулж байна.
- kubectl, Helm эсвэл kustomize ашиглан програмыг кластерт байрлуул.
- Порт дамжуулалтыг гүйцэтгэх.
- Java, Node.js, Python хэл дээр бичигдсэн програмуудыг дибаг хийх.
Төрөл бүрийн хувилбаруудын ажлын явцыг файлд тунхагласан байдлаар тайлбарласан болно skaffold.yaml
. Төслийн хувьд та угсрах, байршуулах үе шатуудыг хэсэгчлэн эсвэл бүрэн өөрчлөх боломжтой хэд хэдэн профайлыг тодорхойлж болно. Жишээлбэл, хөгжүүлэлтийн хувьд хөгжүүлэгчийн хувьд тохиромжтой үндсэн зургийг зааж өгөх ба найруулга, үйлдвэрлэлд хамгийн бага (+ ашиглах) securityContext
контейнерууд эсвэл програмыг байрлуулах кластерыг дахин тодорхойлох).
Докер контейнеруудыг дотооддоо эсвэл алсаас барьж болно: in
Тус тусад нь савыг турших боломжийг тэмдэглэх нь зүйтэй. Өмнө дурьдсан контейнер-бүтэц-туршилтын хүрээ нь дараахь баталгаажуулах аргуудыг санал болгодог.
- Гарах төлөвийг хянах, командын текст гаралтыг шалгах бүхий контейнерийн контекст дээр тушаалуудыг гүйцэтгэх.
- Контейнер доторх файл байгаа эсэхийг шалгаж, заасан шинж чанаруудтай таарч байна.
- Ердийн илэрхийлэл ашиглан файлын агуулгыг хянах.
- Зургийн мета өгөгдлийн баталгаажуулалт (
ENV
,ENTRYPOINT
,VOLUMES
гэх мэт.). - Лицензийн нийцтэй байдлыг шалгаж байна.
Файлуудыг контейнертэй синхрончлох нь хамгийн оновчтой байдлаар хийгддэггүй: Skaffold нь зүгээр л эх сурвалжтай архив үүсгэж, хуулж аваад саванд задалдаг (tar суулгасан байх ёстой). Тиймээс, хэрэв таны гол ажил бол кодын синхрончлол бол тусгай шийдлийг (ksync) хайж олох нь дээр.
Скаффолдын үйл ажиллагааны үндсэн үе шатууд
Ерөнхийдөө уг хэрэгсэл нь Kubernetes манифестээс хийсвэрлэх боломжийг олгодоггүй бөгөөд ямар ч интерактивгүй тул үүнийг эзэмшихэд хэцүү мэт санагдаж магадгүй юм. Гэхдээ энэ нь бас түүний давуу тал юм - үйл ажиллагааны илүү эрх чөлөө.
Garden
-
вэб сайт ;GitHub . - GH-ийн товч статистик: 1063 од, 1927 үйл ажиллагаа, 17 хувь нэмэр оруулагч.
- Хэл: TypeScript (Төслийг хэд хэдэн бүрэлдэхүүн хэсэг болгон хуваахаар төлөвлөж байгаа бөгөөд тэдгээрийн зарим нь Go-д байхаас гадна TypeScript/JavaScript болон Go дээр нэмэлтүүдийг үүсгэх SDK хийхээр төлөвлөж байна).
- Лиценз: Apache лиценз 2.0.
Skaffold-ийн нэгэн адил Garden нь K8s кластерт програмын кодыг хүргэх үйл явцыг автоматжуулах зорилготой юм. Үүнийг хийхийн тулд та эхлээд YAML файл дахь төслийн бүтцийг тайлбарлаж, дараа нь тушаалыг ажиллуулах хэрэгтэй garden dev
. Тэр бүх ид шидийг хийх болно:
- Төслийн янз бүрийн хэсгүүдтэй савыг цуглуул.
- Хэрэв тайлбарласан бол нэгтгэх болон нэгжийн туршилтыг явуулдаг.
- Төслийн бүх бүрэлдэхүүн хэсгүүдийг кластерт гаргадаг.
- Хэрэв эх код өөрчлөгдсөн бол энэ нь дамжуулах хоолойг бүхэлд нь дахин эхлүүлэх болно.
Энэ хэрэгслийг ашиглах гол зорилго нь алсын кластерийг хөгжүүлэлтийн багтай хуваалцах явдал юм. Энэ тохиолдолд, хэрэв барилгын болон туршилтын зарим алхмууд аль хэдийн хийгдсэн бол энэ нь бүх үйл явцыг ихээхэн хурдасгах болно, учир нь Garden кэш хийсэн үр дүнг ашиглах боломжтой болно.
Төслийн модуль нь контейнер, Maven контейнер, Helm диаграм, манифест байж болно. kubectl apply
эсвэл бүр OpenFaaS функц. Түүнчлэн, модулиудын аль нэгийг алсын Git репозитороос татаж авах боломжтой. Модуль нь үйлчилгээ, даалгавар, тестийг тодорхойлох эсвэл тодорхойлохгүй байж болно. Үйлчилгээ болон даалгаврууд нь хамааралтай байж болох тул та тухайн үйлчилгээг байршуулах дарааллыг тодорхойлж, даалгавар, тестийг эхлүүлэх ажлыг зохион байгуулж болно.
Garden нь хэрэглэгчдэд үзэсгэлэнтэй хяналтын самбарыг өгдөг (одоогоор
Цэцэрлэгт зориулсан самбар
Энэ хэрэгсэл нь бас халуун дахин ачаалах горимтой бөгөөд энэ нь скриптийн өөрчлөлтийг кластер дахь контейнертэй синхрончилж, програмын дибаг хийх процессыг ихээхэн хурдасгадаг. Цэцэрлэгт сайн цэцэрлэг бий
дүгнэлт
Мэдээжийн хэрэг, Кубернетес дэх програмуудыг хөгжүүлэх, дибаг хийх хэрэгслүүдийн жагсаалт үүгээр хязгаарлагдахгүй. Тусдаа нийтлэл биш бол дор хаяж дурдах хэрэгтэй өөр олон ашигтай, практик хэрэгслүүд байдаг. Та юу ашигладаг, ямар асуудал тулгарсан, тэдгээрийг хэрхэн шийдсэнээ бидэнд хэлээрэй!
PS
Мөн манай блог дээрээс уншина уу:
- «
werf - Кубернетес дэх CI / CD-д зориулсан манай хэрэгсэл (тойм болон видео тайлан) "; - «
Garden v0.10.0: Таны зөөврийн компьютерт Kubernetes хэрэггүй "; - «
Kubernetes зөвлөмж ба заль мэх: орон нутгийн хөгжил ба Телепрезенцийн тухай "; - «
Kubernetes pods дээр дибаг хийх kubectl-дибаг залгаас ".
Эх сурвалж: www.habr.com