Cov cuab yeej rau cov tsim tawm ntawm daim ntawv thov khiav ntawm Kubernetes

Cov cuab yeej rau cov tsim tawm ntawm daim ntawv thov khiav ntawm Kubernetes

Ib txoj hauv kev niaj hnub rau kev ua haujlwm daws tau ntau yam teeb meem kev lag luam. Thawv thiab orchestrators ua rau nws yooj yim rau scale tej yaam num ntawm tej complexity, yooj yim tso tawm cov tshiab versions, ua rau lawv txhim khu kev qha, tab sis nyob rau tib lub sij hawm lawv tsim teeb meem ntxiv rau developers. Tus programmer, ua ntej ntawm tag nrho cov, mob siab rau nws cov cai: architecture, zoo, kev ua tau zoo, elegance - thiab tsis yuav ua li cas nws yuav ua hauj lwm nyob rau hauv Kubernetes thiab yuav ua li cas mus ntsuam xyuas thiab debug nws tom qab ua txawm me ntsis kev hloov. Yog li ntawd, nws kuj yog ib qho tseem ceeb heev uas cov cuab yeej rau Kubernetes tau tsim kho, pab daws cov teeb meem ntawm txawm tias feem ntau "archaic" developers thiab tso cai rau lawv tsom mus rau qhov tseem ceeb.

Qhov kev tshuaj xyuas no muab cov ntaub ntawv luv luv txog qee yam ntawm cov cuab yeej uas ua rau lub neej yooj yim dua rau tus programmer uas nws cov lej khiav hauv pod'ax ntawm Kubernetes pawg.

Yooj yim pab

Kubectl-debug

  • Hauv qab kab: ntxiv koj lub thawv rau lub Pod thiab saib seb muaj dab tsi tshwm sim hauv nws.
  • GitHub.
  • Luv luv GH cov txheeb cais: 715 hnub qub, 54 kev cog lus, 9 tus neeg txhawb nqa.
  • Lus: Mus.
  • Daim ntawv tso cai: Apache Daim ntawv tso cai 2.0.

Qhov plugin no rau kubectl tso cai rau koj los tsim ib lub thawv ntxiv rau hauv lub pod ntawm kev txaus siab, uas yuav muab cov txheej txheem namespace nrog rau lwm lub ntim. Nyob rau hauv nws koj tuaj yeem debug lub plhaub taum ua haujlwm: xyuas lub network, mloog kev sib txuas hauv network, ua ib txoj hauv kev ntawm cov txheej txheem kev txaus siab, thiab lwm yam.

Koj tuaj yeem hloov mus rau lub thawv txheej txheem los ntawm kev khiav chroot /proc/PID/root - qhov no tuaj yeem yooj yim heev thaum koj xav tau lub hauv paus plhaub hauv lub thawv uas nws tau teeb tsa hauv qhov tshwm sim securityContext.runAs.

Cov cuab yeej yooj yim thiab siv tau zoo, yog li nws tuaj yeem pab tau rau txhua tus tsim tawm. Peb tau sau ntau ntxiv txog nws hauv cais cov lus.

Kev sib cog lus

  • Hauv qab kab: Hloov daim ntawv thov mus rau koj lub computer. Tsim thiab debug hauv zos.
  • website; GitHub.
  • Luv luv GH cov txheeb cais: 2131 hnub qub, 2712 cog lus, 33 contributors.
  • Lus: Python.
  • Daim ntawv tso cai: Apache Daim ntawv tso cai 2.0.

Lub tswv yim ntawm no snap-in yog tso lub thawv nrog rau daim ntawv thov ntawm lub zos cov neeg siv computer thiab proxy tag nrho cov tsheb khiav los ntawm pawg mus rau nws thiab rov qab. Txoj hauv kev no tso cai rau koj los tsim kho hauv zos los ntawm kev kho cov ntaub ntawv hauv koj nyiam IDE: cov txiaj ntsig yuav muaj tam sim ntawd.

Qhov zoo ntawm kev khiav hauv zos yog qhov yooj yim ntawm kev hloov kho thiab cov txiaj ntsig tam sim, muaj peev xwm debug daim ntawv thov nyob rau hauv txoj kev niaj zaus. Qhov tsis zoo yog tias nws xav tau ntawm kev sib txuas ceev, uas yog qhov tshwj xeeb tshaj yog pom thaum koj yuav tsum ua haujlwm nrog daim ntawv thov nrog RPS siab thiab kev khiav tsheb. Tsis tas li ntawd, Telepresence muaj teeb meem nrog ntim ntim ntawm Windows, uas tuaj yeem yog qhov kev txwv txiav txim siab rau cov neeg tsim khoom siv rau OS no.

Peb twb tau qhia peb qhov kev paub ntawm kev siv Telepresence no.

Ksync

  • Hauv qab kab: yuav luag instantaneous synchronization ntawm code nrog lub thawv hauv pawg.
  • GitHub.
  • Luv luv GH cov txheeb cais: 555 hnub qub, 362 kev cog lus, 11 tus neeg txhawb nqa.
  • Lus: Mus.
  • Daim ntawv tso cai: Apache Daim ntawv tso cai 2.0.

Kev siv hluav taws xob tso cai rau koj los synchronize cov ntsiab lus ntawm cov npe hauv zos nrog cov npe ntawm cov thawv uas khiav hauv pawg. Cov cuab yeej zoo li no zoo meej rau cov neeg tsim khoom hauv scripting programming languages, uas nws qhov teeb meem tseem ceeb yog xa cov lej mus rau lub thawv khiav. Ksync yog tsim los daws qhov mob taub hau.

Thaum pib ib zaug los ntawm cov lus txib ksync init ib DaemonSet yog tsim nyob rau hauv pawg, uas yog siv los saib xyuas lub xeev ntawm cov ntaub ntawv system ntawm lub thawv xaiv. Nyob rau hauv nws lub computer hauv zos, tus tsim tawm khiav cov lus txib ksync watch, uas saib xyuas configurations thiab khiav syncthing, uas ncaj qha synchronizes cov ntaub ntawv nrog pawg.

Txhua yam uas tseem tshuav yog qhia ksync dab tsi los synchronize nrog dab tsi. Piv txwv li, lo lus txib no:

ksync create --name=myproject --namespace=test --selector=app=backend --container=php --reload=false /home/user/myproject/ /var/www/myproject/

...yuav tsim ib tug saib lub npe myprojectuas yuav nrhiav tau ib lub pod nrog ib daim ntawv lo app=backend thiab sim synchronize lub zos directory /home/user/myproject/ nrog catalog /var/www/myproject/ ntawm lub thawv hu ua php.

Teeb meem thiab sau ntawv ntawm ksync los ntawm peb qhov kev paub:

  • Yuav tsum tau siv ntawm Kubernetes pawg nodes overlay2 ua tus tsav tsheb cia rau Docker. Kev siv hluav taws xob yuav tsis ua haujlwm nrog lwm tus.
  • Thaum siv Windows ua tus neeg siv khoom OS, tus neeg saib xyuas cov ntaub ntawv yuav tsis ua haujlwm raug. Cov kab no tau pom thaum ua haujlwm nrog cov npe loj - nrog ntau cov ntaub ntawv nested thiab cov npe. Peb tsim qhov teeb meem cuam tshuam nyob rau hauv lub syncthing project, tab sis tseem tsis tau muaj kev vam meej (txij li thaum pib ntawm Lub Xya hli ntuj).
  • Siv cov ntaub ntawv .stignore txhawm rau txheeb xyuas cov kab lossis cov qauv ntaub ntawv uas tsis tas yuav tsum tau synchronized (piv txwv li, cov npe app/cache ΠΈ .git).
  • Los ntawm lub neej ntawd, ksync yuav rov pib lub thawv thaum twg cov ntaub ntawv hloov pauv. Rau Node.js qhov no yooj yim, tab sis rau PHP nws yog qhov tsis tsim nyog kiag li. Nws yog qhov zoo dua los tua opcache thiab siv tus chij --reload=false.
  • Lub configuration yeej ib txwm raug kho nyob rau hauv $HOME/.ksync/ksync.yaml.

Squash

  • Hauv qab kab: debug txheej txheem ncaj qha hauv pawg.
  • GitHub.
  • Luv GH cov txheeb cais: 1154 hnub qub, 279 kev cog lus, 23 tus neeg koom.
  • Lus: Mus.
  • Daim ntawv tso cai: Apache Daim ntawv tso cai 2.0.

Cov cuab yeej no yog tsim los rau kev debugging cov txheej txheem ncaj qha hauv cov pods. Kev siv hluav taws xob yog qhov yooj yim thiab sib cuam tshuam tso cai rau koj xaiv qhov xav tau debugger (saib hauv qab no) thiab namespace + pod, nyob rau hauv tus txheej txheem uas koj yuav tsum tau cuam tshuam. Tam sim no txhawb:

  • delve - rau daim ntawv thov Go;
  • GDB - ntawm lub hom phiaj tej thaj chaw deb + chaw nres nkoj xa mus;
  • JDWP chaw nres nkoj xa mus rau kev debugging Java daim ntawv thov.

Ntawm IDE sab, kev txhawb nqa tsuas yog muaj nyob hauv VScode (siv loj), txawm li cas los xij, cov phiaj xwm rau xyoo tam sim no (2019) suav nrog Dab Ntxwg Nyoog thiab Intellij.

Txhawm rau txhawm rau txhim kho cov txheej txheem, Squash khiav lub thawv muaj cai ntawm pawg nodes, yog li koj yuav tsum xub paub koj tus kheej nrog lub peev xwm. hom kev nyab xeeb kom tsis txhob muaj teeb meem kev ruaj ntseg.

Ua kom tiav cov kev daws teeb meem

Cia peb mus rau qhov hnyav artillery - ntau "loj-teev" tej yaam num tsim los tam sim ntawd ua tau raws li ntau yam kev xav tau ntawm developers.

NB: Nyob rau hauv daim ntawv teev npe no, tau kawg, muaj ib qho chaw rau peb Open Source utility werf (yav tas los hu ua dapp). Txawm li cas los xij, peb twb tau sau thiab tham txog nws ntau dua ib zaug, thiab yog li txiav txim siab tsis suav nrog nws hauv kev tshuaj xyuas. Rau cov uas xav paub ntau ntxiv txog nws lub peev xwm, peb pom zoo kom nyeem / mloog cov lus tshaj tawm "werf yog peb cov cuab yeej rau CI / CD hauv Kubernetes".

DevSpace

  • Hauv qab kab: rau cov neeg uas xav pib ua haujlwm hauv Kubernetes, tab sis tsis xav delve tob rau hauv nws lub hav zoov.
  • GitHub.
  • Luv GH cov txheeb cais: 630 hnub qub, 1912 cog lus, 13 tus neeg koom tes.
  • Lus: Mus.
  • Daim ntawv tso cai: Apache Daim ntawv tso cai 2.0.

Kev daws teeb meem los ntawm lub tuam txhab ntawm tib lub npe, uas muab cov pawg tswj hwm nrog Kubernetes rau kev txhim kho pab pawg. Cov khoom siv hluav taws xob tau tsim rau pawg lag luam, tab sis ua haujlwm zoo nrog lwm tus.

Thaum khiav cov lus txib devspace init nyob rau hauv qhov project catalog koj yuav tau muab (interactively):

  • xaiv ib pawg Kubernetes ua haujlwm,
  • siv uas twb muaj lawm Dockerfile (los yog tsim ib qho tshiab) los tsim ib lub thawv raws li nws,
  • xaiv lub chaw cia khoom khaws cia cov duab ntim, thiab lwm yam.

Tom qab tag nrho cov kev npaj no, koj tuaj yeem pib txhim kho los ntawm kev khiav cov lus txib devspace dev. Nws yuav tsim lub thawv, xa nws mus rau qhov chaw cia khoom, yob tawm kev xa mus rau pawg thiab pib qhov chaw nres nkoj xa mus thiab synchronization ntawm lub thawv nrog cov npe hauv zos.

Optionally, koj yuav raug ceeb toom kom txav lub davhlau ya nyob twg mus rau lub thawv. Koj yuav tsum tsis txhob tsis kam, vim hais tias nyob rau hauv qhov tseeb lub thawv pib nrog pw tsaug zog hais kom ua, thiab rau kev sim tiag tiag daim ntawv thov yuav tsum tau launched manually.

Thaum kawg, pab neeg devspace deploy dov tawm daim ntawv thov thiab cov txheej txheem cuam tshuam rau pawg, tom qab ntawd txhua yam pib ua haujlwm hauv hom kev sib ntaus sib tua.

Txhua qhov project configuration yog khaws cia rau hauv ib cov ntaub ntawv devspace.yaml. Ntxiv rau qhov kev txhim kho ib puag ncig, koj tuaj yeem pom cov lus piav qhia ntawm cov txheej txheem hauv nws, zoo ib yam li tus qauv Kubernetes manifests, tsuas yog yooj yim heev.

Cov cuab yeej rau cov tsim tawm ntawm daim ntawv thov khiav ntawm Kubernetes
Architecture thiab cov theem tseem ceeb ntawm kev ua haujlwm nrog DevSpace

Tsis tas li ntawd, nws yog ib qho yooj yim los ntxiv ib qho kev tiv thaiv ua ntej (piv txwv li, MySQL DBMS) lossis daim ntawv Helm rau qhov project. Nyeem ntxiv hauv cov ntaub ntawv - nws tsis nyuaj.

Skaffold

  • website; GitHub.
  • Luv GH cov txheeb cais: 7423 hnub qub, 4173 cog lus, 136 tus neeg koom.
  • Lus: Mus.
  • Daim ntawv tso cai: Apache Daim ntawv tso cai 2.0.

Qhov kev siv hluav taws xob no los ntawm Google thov kom them tag nrho cov kev xav tau ntawm tus tsim tawm uas nws cov cai yuav ua haujlwm ntawm Kubernetes pawg. Pib siv nws tsis yooj yim li devspace: tsis muaj kev sib tham, nrhiav kom paub lus thiab pib tsim Dockerfile lawv yuav tsis muab rau koj ntawm no.

Txawm li cas los xij, yog tias qhov no tsis ntshai koj, ntawm no yog qhov Skaffold tso cai rau koj ua:

  • Taug qab qhov chaws hloov pauv.
  • Synchronize nws nrog lub thawv ntim yog tias nws tsis xav tau kev sib dhos.
  • Sau cov thawv nrog cov lej, yog tias txhais lus, lossis sau cov khoom qub thiab ntim rau hauv ntim.
  • Cov duab tshwm sim tau raug kuaj xyuas siv container-structure-test.
  • Tag thiab upload cov duab rau Docker Registry.
  • Siv ib daim ntawv thov hauv pawg siv kubectl, Helm lossis kustomize.
  • Ua qhov chaw nres nkoj xa mus.
  • Debug daim ntawv sau npe hauv Java, Node.js, Python.

Workflow nyob rau hauv ntau yam variations yog declaratively piav nyob rau hauv cov ntaub ntawv skaffold.yaml. Rau ib qhov project, koj tuaj yeem txhais tau ntau qhov profile uas koj tuaj yeem hloov pauv ntawm kev sib dhos thiab xa mus rau theem. Piv txwv li, rau kev txhim kho, qhia cov duab hauv paus yooj yim rau tus tsim tawm, thiab rau kev ua haujlwm thiab tsim khoom - tsawg kawg ib qho (+ siv securityContext ntim los yog redefine cov pawg nyob rau hauv uas daim ntawv thov yuav deployed).

Docker ntim tuaj yeem tsim hauv zos lossis nyob deb: hauv Google Cloud Tsim los yog hauv ib pawg siv Kaniko. Bazel thiab Jib Maven / Gradle kuj tau txais kev txhawb nqa. Rau tagging, Skaffold txhawb ntau lub tswv yim: los ntawm git cog lus hash, hnub / sijhawm, sha256-sum ntawm qhov chaw, thiab lwm yam.

Cais, nws tsim nyog sau cia qhov muaj peev xwm ntawm cov thawv ntsuas. Cov uas twb tau hais txog lub thawv-cov qauv-kev xeem lub moj khaum muaj cov txheej txheem pov thawj hauv qab no:

  • Ua cov lus txib hauv cov ntsiab lus ntawm lub thawv nrog taug qab cov xwm txheej tawm thiab xyuas cov ntawv tso tawm ntawm cov lus txib.
  • Txheeb xyuas qhov muaj cov ntaub ntawv hauv lub thawv thiab sib piv cov yam ntxwv uas tau teev tseg.
  • Tswj cov ntsiab lus ntawm cov ntaub ntawv siv cov lus qhia tsis tu ncua.
  • Daim duab metadata pov thawj (ENV, ENTRYPOINT, VOLUMES thiab lwm yam.).
  • Xyuas daim ntawv tso cai compatibility.

Synchronizing cov ntaub ntawv nrog lub thawv tsis tau ua nyob rau hauv txoj kev zoo tshaj plaws: Skaffold tsuas yog tsim ib qho archive nrog cov peev txheej, luam nws thiab unpacks rau hauv lub thawv (tar yuav tsum tau ntsia). Yog li ntawd, yog tias koj lub luag haujlwm tseem ceeb yog code synchronization, nws yog qhov zoo dua los saib rau qhov kev daws teeb meem tshwj xeeb (ksync).

Cov cuab yeej rau cov tsim tawm ntawm daim ntawv thov khiav ntawm Kubernetes
Cov theem tseem ceeb ntawm kev ua haujlwm Skaffold

Feem ntau, cov cuab yeej tsis tso cai rau koj kom paub daws teeb meem los ntawm Kubernetes tshwm sim thiab tsis muaj kev cuam tshuam, yog li nws yuav zoo li nyuaj rau tus tswv. Tab sis qhov no kuj yog nws qhov zoo dua - kev ywj pheej ntau dua ntawm kev ua.

Garden

  • website; GitHub.
  • Luv luv GH cov txheeb cais: 1063 hnub qub, 1927 cog lus, 17 tus neeg txhawb nqa.
  • Lus: TypeScript (nws tau npaj los faib cov phiaj xwm ua ntau yam, qee qhov yuav nyob hauv Go, thiab tseem ua rau SDK los tsim cov add-ons hauv TypeScript / JavaScript thiab Go).
  • Daim ntawv tso cai: Apache Daim ntawv tso cai 2.0.

Zoo li Skaffold, Garden lub hom phiaj los ua kom cov txheej txheem xa cov ntawv thov mus rau K8s pawg. Txhawm rau ua qhov no, koj yuav tsum xub piav qhia txog cov qauv tsim hauv YAML cov ntaub ntawv, thiab tom qab ntawd khiav cov lus txib garden dev. Nws yuav ua txhua yam khawv koob:

  • Sau cov thawv nrog ntau qhov chaw ntawm qhov project.
  • Ua kev sib koom ua ke thiab kev sim ntsuas, yog tias tau piav qhia.
  • Rolls tawm tag nrho qhov project Cheebtsam rau pawg.
  • Yog tias qhov chaws hloov pauv, nws yuav rov pib dua tag nrho cov kav dej.

Lub hom phiaj tseem ceeb ntawm kev siv cov cuab yeej no yog sib qhia cov chaw taws teeb nrog pab pawg txhim kho. Hauv qhov no, yog tias qee qhov ntawm lub tsev thiab kev sim cov kauj ruam tau ua tiav lawm, qhov no yuav ua rau kom tag nrho cov txheej txheem nrawm, txij li Lub Vaj yuav siv tau cov txiaj ntsig cached.

Ib qhov project module tuaj yeem yog lub thawv, lub thawv Maven, daim ntawv Helm, ib qho kev tshwm sim rau kubectl apply lossis txawm tias muaj haujlwm OpenFaaS. Ntxiv mus, ib qho ntawm cov modules tuaj yeem rub tau los ntawm qhov chaw cia Git chaw taws teeb. Ib qho module yuav lossis tsis tuaj yeem txhais cov kev pabcuam, haujlwm, thiab kev xeem. Cov kev pabcuam thiab cov dej num tuaj yeem muaj kev vam khom, yog li koj tuaj yeem txiav txim siab qhov kev xa tawm ntawm ib qho kev pabcuam tshwjxeeb thiab teeb tsa cov haujlwm thiab kev xeem.

Garden muab cov neeg siv nrog lub dashboard zoo nkauj (tam sim no hauv sim lub xeev), uas qhia txog qhov project graph: Cheebtsam, sib dhos ua ntu zus, ua tiav cov haujlwm thiab kev sim, lawv cov kev sib txuas thiab kev vam khom. Txoj cai hauv qhov browser, koj tuaj yeem saib cov cav ntawm txhua qhov project thiab xyuas seb qhov twg ib qho kev tivthaiv tawm ntawm HTTP (yog tias, tau kawg, cov peev txheej ingress tau tshaj tawm rau nws).

Cov cuab yeej rau cov tsim tawm ntawm daim ntawv thov khiav ntawm Kubernetes
Vaj Huam Sib Luag

Cov cuab yeej no kuj muaj qhov kub-reload hom, uas yooj yim synchronizes cov ntawv hloov pauv nrog lub thawv hauv pawg, ua kom nrawm nrawm ntawm daim ntawv thov kev debugging. Lub vaj muaj qhov zoo cov ntaub ntawv thiab tsis phem ua piv txwv, tso cai rau koj kom sai tau siv rau nws thiab pib siv nws. Los ntawm txoj kev, nyuam qhuav tsis ntev los no peb luam tawm tsab xov xwm txhais los ntawm nws cov neeg sau ntawv.

xaus

Tau kawg, daim ntawv teev cov cuab yeej tsim thiab kho cov ntawv thov hauv Kubernetes tsis txwv rau. Muaj ntau ntau yam tseem ceeb thiab siv tau zoo uas tsim nyog, yog tias tsis yog ib tsab xov xwm cais, ces tsawg kawg yog ib qho hais. Qhia peb seb koj siv dab tsi, koj ntsib teeb meem dab tsi thiab koj daws lawv li cas!

PS

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib