{"id":94977,"date":"2020-09-24T07:43:00","date_gmt":"2020-09-24T05:43:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes"},"modified":"2020-09-24T07:43:00","modified_gmt":"2020-09-24T05:43:00","slug":"nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","title":{"rendered":"\u00c9v v\u00e9gi \u00f6sszegz\u00e9s a GitLab.com Kubernetes-re val\u00f3 migr\u00e1l\u00e1s\u00e1r\u00f3l","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Megjegyz\u00e9s ford\u00edt\u00e1s.<\/b>A Kubernetes adaptation in GitLab is considered one of the two main factors contributing to the company\u2019s growth. However, until recently, the infrastructure of the online service GitLab.com was built on virtual machines, and only about a year ago did the migration to K8s begin, which is still ongoing. We are pleased to present a translation of a recent article by a GitLab SRE engineer on how this process is unfolding and what insights the engineers involved in the project are gaining.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"\u00c9v v\u00e9gi \u00f6sszegz\u00e9s a GitLab.com Kubernetes-re val\u00f3 migr\u00e1l\u00e1s\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/09\/58429abf60cd19a49c5ce593051c2fca.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nM\u00e1r k\u00f6r\u00fclbel\u00fcl egy \u00e9ve az infrastrukt\u00far\u00e1\u00e9rt felel\u0151s r\u00e9szleg\u00fcnk a GitLab.com \u00f6sszes szolg\u00e1ltat\u00e1s\u00e1nak Kubernetesbe t\u00f6rt\u00e9n\u0151 migr\u00e1ci\u00f3j\u00e1val foglalkozik. Ez alatt az id\u0151 alatt nemcsak a szolg\u00e1ltat\u00e1sok Kubernetesbe val\u00f3 \u00e1thelyez\u00e9s\u00e9vel kapcsolatos probl\u00e9m\u00e1kkal tal\u00e1lkoztunk, hanem a hibrid telep\u00edt\u00e9si kezel\u00e9s\u00e9vel is a v\u00e1lt\u00e1s sor\u00e1n. A cikkben a megszerzett \u00e9rt\u00e9kes leck\u00e9kr\u0151l lesz sz\u00f3.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>From the very beginning, GitLab.com operated its servers in the cloud on virtual machines. These virtual machines are managed by Chef, and their installation occurs using our <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/#ubuntu\">official Linux package<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/release\/docs\/-\/blob\/master\/general\/deploy\/gitlab-com-deployer.md\">The deployment strategy<\/a><\/noindex> in case of needing to update the application consists of simply updating the server fleet in a coordinated sequential manner via a CI pipeline. While this method is slow and somewhat <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/values\/#boring-solutions\">tedious<\/a><\/noindex> - it ensures that GitLab.com employs the same installation and configuration methods as users of self-managed <i>(self-managed)<\/i> GitLab installations that utilize our Linux packages.<\/p>\n<p>We use this method because it is essential to experience all the pains and joys that community members go through when installing and configuring their own instances of GitLab. This approach worked well for some time, but once the number of projects on GitLab surpassed 10 million, we realized that it no longer met our scaling and deployment needs.<\/p>\n<h2>The first steps towards Kubernetes and cloud-native GitLab<\/h2>\n<p>\nIn 2017, the project was created <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\">GitLab Charts<\/a><\/noindex> a GitLab felh\u0151be val\u00f3 telep\u00edt\u00e9s\u00e9re val\u00f3 felk\u00e9sz\u00edt\u00e9shez, valamint ahhoz, hogy a felhaszn\u00e1l\u00f3k lehet\u0151s\u00e9get kapjanak a GitLab telep\u00edt\u00e9s\u00e9re Kubernetes klaszterekbe. Akkor tudtuk, hogy a GitLab Kubernetesbe val\u00f3 \u00e1ttelep\u00edt\u00e9se n\u00f6velni fogja a SaaS-platform sk\u00e1l\u00e1zhat\u00f3s\u00e1gi lehet\u0151s\u00e9geit, leegyszer\u0171s\u00edti a telep\u00edt\u00e9seket, \u00e9s jav\u00edtja a sz\u00e1m\u00edt\u00e1si er\u0151forr\u00e1sok hat\u00e9konys\u00e1g\u00e1nak kihaszn\u00e1l\u00e1s\u00e1t. Ugyanakkor sok alkalmaz\u00e1sfunkci\u00f3nk f\u00fcgg\u00f6tt a csatlakoztatott NFS-megoszt\u00e1sokt\u00f3l, ami lass\u00edtotta a virtu\u00e1lis g\u00e9pekr\u0151l val\u00f3 \u00e1t\u00e1ll\u00e1st.<\/p>\n<p>A cloud native \u00e9s Kubernetes ir\u00e1nti t\u00f6rekv\u00e9s lehet\u0151v\u00e9 tette m\u00e9rn\u00f6keink sz\u00e1m\u00e1ra, hogy fokozatos \u00e1t\u00e1ll\u00e1st tervezzenek, amely sor\u00e1n lemondtunk n\u00e9h\u00e1ny alkalmaz\u00e1sf\u00fcgg\u0151s\u00e9gr\u0151l a h\u00e1l\u00f3zati t\u00e1rol\u00f3kt\u00f3l, mik\u00f6zben \u00faj funkci\u00f3kat fejlesztett\u00fcnk. Az\u00f3ta, hogy 2019 nyar\u00e1n elkezdt\u00fck a migr\u00e1ci\u00f3 tervez\u00e9s\u00e9t, sok korl\u00e1toz\u00e1st siker\u00fclt megsz\u00fcntetni, \u00e9s a GitLab.com Kubernetesre val\u00f3 \u00e1t\u00e1ll\u00e1sa mostanra teljes er\u0151bedob\u00e1ssal zajlik!<\/p>\n<h2>A GitLab.com munk\u00e1ja Kubernetesben<\/h2>\n<p>\nA GitLab.com eset\u00e9ben egy region\u00e1lis GKE klasztert haszn\u00e1lunk, amely az alkalmaz\u00e1s \u00f6sszes forgalm\u00e1t kezeli. A migr\u00e1ci\u00f3 (amely m\u00e1r \u00f6nmag\u00e1ban is el\u00e9g bonyolult) bonyolults\u00e1g\u00e1nak minimaliz\u00e1l\u00e1sa \u00e9rdek\u00e9ben arra \u00f6sszpontos\u00edtunk, hogy azokat a szolg\u00e1ltat\u00e1sokat c\u00e9lozzuk meg, amelyek nem f\u00fcggenek helyi t\u00e1rol\u00e1st\u00f3l vagy NFS-t\u0151l. A GitLab.com f\u0151k\u00e9nt egy monolitikus Rails k\u00f3dalapra \u00e9p\u00fcl, \u00e9s a forgalmat a munkaterhel\u00e9s jellemz\u0151i alapj\u00e1n ir\u00e1ny\u00edtjuk k\u00fcl\u00f6nb\u00f6z\u0151 endpointokba, amelyek a saj\u00e1t csom\u00f3pulusaikba vannak elk\u00fcl\u00f6n\u00edtve.<\/p>\n<p>A frontend eset\u00e9ben ezeket a t\u00edpusokat web, API, Git SSH\/HTTPS \u00e9s Registry k\u00e9r\u00e9sekre osztjuk. A backend eset\u00e9ben a munk\u00e1kat a k\u00fcl\u00f6nb\u00f6z\u0151 jellemz\u0151k szerint k\u00fcl\u00f6nb\u00f6z\u0151 sorokba osztjuk a k\u00f6vetkez\u0151k alapj\u00e1n. <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/blog\/2020\/06\/24\/scaling-our-use-of-sidekiq\/\">a meghat\u00e1rozott er\u0151forr\u00e1skorl\u00e1tokat<\/a><\/noindex>, amelyek lehet\u0151v\u00e9 teszik sz\u00e1munkra, hogy szolg\u00e1ltat\u00e1si szinttel kapcsolatos c\u00e9lokat (Service-Level Objectives, SLO-k) \u00e1ll\u00edtsunk fel a k\u00fcl\u00f6nb\u00f6z\u0151 terhel\u00e9sekhez.<\/p>\n<p>Mindezek a GitLab.com szolg\u00e1ltat\u00e1sok a GitLab m\u00f3dos\u00edtatlan Helm-diagramj\u00e1nak seg\u00edts\u00e9g\u00e9vel vannak be\u00e1ll\u00edtva. A konfigur\u00e1ci\u00f3 a szubdiagramokban t\u00f6rt\u00e9nik, amelyeket fokozatosan aktiv\u00e1lhatunk, ahogy az egyes szolg\u00e1ltat\u00e1sokat migr\u00e1ljuk a klaszterbe. M\u00e9g figyelembe v\u00e9ve, hogy \u00fagy d\u00f6nt\u00f6tt\u00fcnk, hogy nem vessz\u00fck fel a migr\u00e1ci\u00f3ba n\u00e9h\u00e1ny \u00e1llapotot meg\u0151rz\u0151 szolg\u00e1ltat\u00e1sunkat, mint p\u00e9ld\u00e1ul a Redis, Postgres, GitLab Pages \u00e9s Gitaly, a Kubernetes haszn\u00e1lata radik\u00e1lisan cs\u00f6kkenti azokat a VM-eket, amelyeket a Chef jelenleg kezel.<\/p>\n<h2>A Kubernetes \u00e1tl\u00e1that\u00f3s\u00e1ga \u00e9s konfigur\u00e1ci\u00f3s kezel\u00e9se<\/h2>\n<p>\nMinden be\u00e1ll\u00edt\u00e1st maga a GitLab kezel. Ehhez h\u00e1rom Terraform \u00e9s Helm alap\u00fa konfigur\u00e1ci\u00f3s projektet haszn\u00e1lunk. Mindig megpr\u00f3b\u00e1ljuk a GitLabot haszn\u00e1lni a GitLab elind\u00edt\u00e1s\u00e1hoz, de a \u00fczemeltet\u00e9si feladatokhoz k\u00fcl\u00f6n GitLab telep\u00edt\u00e9s\u00fcnk m\u0171k\u00f6dik. Erre az\u00e9rt van sz\u00fcks\u00e9g, hogy ne f\u00fcggj\u00fcnk a GitLab.com el\u00e9rhet\u0151s\u00e9g\u00e9t\u0151l a GitLab.com telep\u00edt\u00e9sek \u00e9s friss\u00edt\u00e9sek sor\u00e1n.<\/p>\n<p>B\u00e1r a Kubernetes klaszter pipelinjei egy k\u00fcl\u00f6n GitLab telep\u00edt\u00e9sen m\u0171k\u00f6dnek, a k\u00f3d repository-knak vannak t\u00fckr\u00f6z\u00e9sei, amelyek nyilv\u00e1nosan el\u00e9rhet\u0151k az al\u00e1bbi c\u00edmeken:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/k8s-workloads\/gitlab-com\">k8s-workloads\/gitlab-com<\/a><\/noindex> \u2014 a GitLab.com Helm-chart konfigur\u00e1ci\u00f3s kerete;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/k8s-workloads\/gitlab-helmfiles\/\">k8s-workloads\/gitlab-helmfiles<\/a><\/noindex> \u2014 olyan konfigur\u00e1ci\u00f3kat tartalmaz, amelyek nem kapcsol\u00f3dnak k\u00f6zvetlen\u00fcl a GitLab alkalmaz\u00e1shoz. Ide tartoznak a klaszter napl\u00f3z\u00e1s\u00e1hoz \u00e9s megfigyel\u00e9s\u00e9hez, valamint az integr\u00e1lt eszk\u00f6z\u00f6kh\u00f6z, mint p\u00e9ld\u00e1ul a PlantUML, sz\u00fcks\u00e9ges konfigur\u00e1ci\u00f3k;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gitlab-com-infrastructure\">Gitlab-com-infrastructure<\/a><\/noindex> \u2014 Terraform konfigur\u00e1ci\u00f3 Kuberneteshez \u00e9s r\u00e9g\u00f3ta haszn\u00e1lt (legacy) virtu\u00e1lis infrastrukt\u00far\u00e1hoz. Itt konfigur\u00e1ljuk az \u00f6sszes olyan er\u0151forr\u00e1st, amely a klaszter ind\u00edt\u00e1s\u00e1hoz sz\u00fcks\u00e9ges, bele\u00e9rtve mag\u00e1t a klasztert, a csom\u00f3pontpoolsot, a szolg\u00e1ltat\u00e1si fi\u00f3kokat \u00e9s az IP-c\u00edmek tartal\u00e9k\u00e1t.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"\u00c9v v\u00e9gi \u00f6sszegz\u00e9s a GitLab.com Kubernetes-re val\u00f3 migr\u00e1l\u00e1s\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/09\/612125403171d73106a081bf4244a52b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>A v\u00e1ltoztat\u00e1sok bevezet\u00e9sekor nyilv\u00e1nos <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/k8s-workloads\/gitlab-com\/-\/merge_requests\/315#note_390180361\"><i>\u00f6sszefoglal\u00f3<\/i><\/a><\/noindex><i> jelenik meg, amely egy r\u00e9szletes diffre mutat, amit az SRE elemzi a klaszterbe t\u00f6rt\u00e9n\u0151 v\u00e1ltoztat\u00e1sok el\u0151tt.<\/i><\/p>\n<p>Az SRE sz\u00e1m\u00e1ra a link a GitLab telep\u00edt\u00e9s r\u00e9szletes diffj\u00e9re mutat, amelyet \u00fczemeltet\u00e9sre haszn\u00e1lnak, \u00e9s amelyhez a hozz\u00e1f\u00e9r\u00e9s korl\u00e1tozott. Ez lehet\u0151v\u00e9 teszi a dolgoz\u00f3k \u00e9s a k\u00f6z\u00f6ss\u00e9g sz\u00e1m\u00e1ra, hogy hozz\u00e1f\u00e9r\u00e9s n\u00e9lk\u00fcl is megtekinthess\u00e9k a javasolt konfigur\u00e1ci\u00f3s v\u00e1ltoztat\u00e1sokat (ez a projekt csak az SRE sz\u00e1m\u00e1ra nyitott). A GitLab sz\u00e1m\u00e1ra a k\u00f3dhoz haszn\u00e1lt nyilv\u00e1nos p\u00e9ld\u00e1ny \u00e9s a CI-pipeline-okhoz haszn\u00e1lt z\u00e1rt p\u00e9ld\u00e1ny kombin\u00e1l\u00e1s\u00e1val meg\u0151rizz\u00fck az egys\u00e9ges munkafolyamatot, mik\u00f6zben garant\u00e1ljuk a f\u00fcggetlens\u00e9get a GitLab.com konfigur\u00e1ci\u00f3s friss\u00edt\u00e9seinek sor\u00e1n.<\/p>\n<h2>A migr\u00e1ci\u00f3 sor\u00e1n szerzett tapasztalatok<\/h2>\n<p>\nA k\u00f6lt\u00f6z\u00e9s sor\u00e1n tapasztalatokat gy\u0171jt\u00f6tt\u00fcnk, amelyeket \u00faj migr\u00e1ci\u00f3khoz \u00e9s Kubernetes telep\u00edt\u00e9sekhez alkalmazunk.<\/p>\n<h3>1. A k\u00f6lts\u00e9gek n\u00f6veked\u00e9se a rendelkez\u00e9sre \u00e1ll\u00e1si z\u00f3n\u00e1k k\u00f6z\u00f6tti forgalom miatt<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00c9v v\u00e9gi \u00f6sszegz\u00e9s a GitLab.com Kubernetes-re val\u00f3 migr\u00e1l\u00e1s\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/09\/3dce44b3f803ffcea13e0101e7343d91.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Napi egress statisztika (byte\/nap) a GitLab.com-on t\u00e1rolt Git t\u00e1rol\u00f3khoz<\/i><\/p>\n<p>A Google a h\u00e1l\u00f3zat\u00e1t r\u00e9gi\u00f3kra osztja. Ezek, viszont, el\u00e9rhet\u0151s\u00e9gi z\u00f3n\u00e1kra (AZ) bontj\u00e1k. A Git-hosztol\u00e1s nagy adatmennyis\u00e9g\u00fcket \u00e9rinti, ez\u00e9rt fontos sz\u00e1munkra a h\u00e1l\u00f3zati egresszus ellen\u0151rz\u00e9se. Bels\u0151 forgalom eset\u00e9n az egresszus ingyenes, ha az egy el\u00e9rhet\u0151s\u00e9gi z\u00f3n\u00e1n bel\u00fcl marad. A cikk \u00edr\u00e1s\u00e1nak id\u0151pontj\u00e1ban k\u00f6r\u00fclbel\u00fcl 100 TB adatot adunk \u00e1t egy \u00e1tlagos munkanapon (\u00e9s ez csak a Git-t\u00e1rol\u00f3kra vonatkozik). A szolg\u00e1ltat\u00e1sok, amelyek a r\u00e9gi, VM-alap\u00fa topol\u00f3gi\u00e1nkon ugyanazon a virtu\u00e1lis g\u00e9pen futottak, most k\u00fcl\u00f6n Kubernetes podokban m\u0171k\u00f6dnek. Ez azt jelenti, hogy egyes forgalmak, amelyek kor\u00e1bban lok\u00e1lisak voltak a VM-ek sz\u00e1m\u00e1ra, potenci\u00e1lisan elhagyhatj\u00e1k az el\u00e9rhet\u0151s\u00e9gi z\u00f3n\u00e1kat.<\/p>\n<p>A GKE region\u00e1lis klaszterek lehet\u0151v\u00e9 teszik, hogy t\u00f6bb el\u00e9rhet\u0151s\u00e9gi z\u00f3n\u00e1t is lefedj\u00fcnk a redundancia \u00e9rdek\u00e9ben. Fontol\u00f3ra vessz\u00fck, hogy <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/delivery\/-\/issues\/1175\">a region\u00e1lis GKE klasztert egyz\u00f3n\u00e1s klaszterekre v\u00e1lasszuk sz\u00e9t<\/a><\/noindex> azoknak a szolg\u00e1ltat\u00e1soknak, amelyek nagy forgalmat gener\u00e1lnak. Ez cs\u00f6kkenten\u00e9 az egressz k\u00f6lts\u00e9geit, mik\u00f6zben megtartan\u00e1 a klaszter szint\u0171 redundanci\u00e1t.<\/p>\n<h3>2. Korl\u00e1tok, er\u0151forr\u00e1sek k\u00e9r\u00e9se \u00e9s sk\u00e1l\u00e1z\u00e1s<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00c9v v\u00e9gi \u00f6sszegz\u00e9s a GitLab.com Kubernetes-re val\u00f3 migr\u00e1l\u00e1s\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/09\/6e2e1ca4d37666b49358d94cd8660c56.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>A registry.gitlab.com-on kezelt production forgalmat bonyol\u00edt\u00f3 replik\u00e1k sz\u00e1ma. A forgalom cs\u00facsid\u0151szaka ~15:00 UTC k\u00f6z\u00f6tt van.<\/i><\/p>\n<p>A migr\u00e1ci\u00f3val kapcsolatos t\u00f6rt\u00e9net\u00fcnk 2019 augusztus\u00e1ban kezd\u0151d\u00f6tt, amikor az els\u0151 szolg\u00e1ltat\u00e1st - a GitLab t\u00e1rol\u00f3regiszter\u00e9t (GitLab Container Registry) - \u00e1tkonvert\u00e1ltuk Kubernetesbe. Ez a kritikus fontoss\u00e1g\u00fa, magas forgalm\u00fa szolg\u00e1ltat\u00e1s j\u00f3l illeszkedett els\u0151 migr\u00e1ci\u00f3nkhoz, mivel stateless alkalmaz\u00e1s, ami kev\u00e9s k\u00fcls\u0151 f\u00fcgg\u0151s\u00e9ggel rendelkezik. Az els\u0151 probl\u00e9ma, amellyel szembes\u00fclt\u00fcnk, a podok magas sz\u00e1ma volt, amelyek kiszorultak a csom\u00f3pontok mem\u00f3ri\u00e1ja miatt. Ennek k\u00f6vetkezt\u00e9ben m\u00f3dos\u00edtanunk kellett a k\u00e9r\u00e9seket \u00e9s a korl\u00e1tokat.<\/p>\n<p>Azt tapasztaltuk, hogy olyan alkalmaz\u00e1s eset\u00e9n, amelynek mem\u00f3riafogyaszt\u00e1sa az id\u0151 m\u00fal\u00e1s\u00e1val n\u0151, a k\u00e9r\u00e9sek (melyek mem\u00f3ri\u00e1t foglalnak le minden pod sz\u00e1m\u00e1ra) alacsony \u00e9rt\u00e9kei, egy \"b\u0151kez\u0171\" szigor\u00fa korl\u00e1ttal egy\u00fctt tel\u00edtetts\u00e9ghez vezettek. <i>(satur\u00e1ci\u00f3)<\/i> a csom\u00f3pontokn\u00e1l, \u00e9s a kiszor\u00edt\u00e1sok magas szintj\u00e9hez. E probl\u00e9ma megold\u00e1s\u00e1ra <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/gl-infra\/delivery\/-\/issues\/998#note_388983696\">d\u00f6nt\u00f6tt\u00fcnk a k\u00e9r\u00e9sek n\u00f6vel\u00e9se \u00e9s a korl\u00e1tok cs\u00f6kkent\u00e9se mellett.<\/a><\/noindex>Ez enyh\u00edtette a csom\u00f3pontok terhel\u00e9s\u00e9t \u00e9s lehet\u0151v\u00e9 tette a podok olyan \u00e9lettartam\u00e1t, amely nem gyakorolt t\u00falzott nyom\u00e1st a csom\u00f3pontokra. Most b\u0151kez\u0171 (\u00e9s szinte azonos) k\u00e9r\u00e9sekkel \u00e9s korl\u00e1tokkal ind\u00edtjuk a migr\u00e1ci\u00f3kat, sz\u00fcks\u00e9g szerint korrekci\u00f3kkal.<\/p>\n<h3>3. Metri\u00e1k \u00e9s napl\u00f3k<\/h3>\n<p>\n<img decoding=\"async\" alt=\"\u00c9v v\u00e9gi \u00f6sszegz\u00e9s a GitLab.com Kubernetes-re val\u00f3 migr\u00e1l\u00e1s\u00e1r\u00f3l\" src=\"\/wp-content\/uploads\/2020\/09\/66d1fd47b57d5826f13defa6e6a7fe3c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Az infrastrukt\u00fara r\u00e9szleg a k\u00e9sleltet\u00e9sekre, a hibaar\u00e1nyra \u00e9s a tel\u00edtetts\u00e9gre \u00f6sszpontos\u00edt, a meg\u00e1llap\u00edtott <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Service-level_objective\"><i>szolg\u00e1ltat\u00e1si szint c\u00e9lokkal<\/i><\/a><\/noindex><i> (SLO), amelyek a <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-com\/dashboards-gitlab-com\/-\/metrics\/sla-dashboard.yml?environment=1790496&amp;duration_seconds=86400\"><i>rendszer\u00fcnk \u00f6sszes rendelkez\u00e9sre \u00e1ll\u00e1s\u00e1hoz vannak k\u00f6tve.<\/i><\/a><\/noindex><i>.<\/i><\/p>\n<p>Az elm\u00falt \u00e9vben az infrastrukt\u00fara r\u00e9szleg egyik kulcsfontoss\u00e1g\u00fa esem\u00e9nye a SLO-kkal kapcsolatos monitoring \u00e9s m\u0171k\u00f6d\u00e9s jav\u00edt\u00e1sa volt. A SLO-k lehet\u0151v\u00e9 tett\u00e9k sz\u00e1munkra, hogy c\u00e9lokat \u00e1ll\u00edtsunk fel k\u00fcl\u00f6nb\u00f6z\u0151 szolg\u00e1ltat\u00e1sokra, amelyeket szorosan figyelemmel k\u00eds\u00e9rt\u00fcnk a migr\u00e1ci\u00f3 sor\u00e1n. De m\u00e9g a jav\u00edtott megfigyelhet\u0151s\u00e9ggel sem mindig lehet azonnal \u00e9szlelni a probl\u00e9m\u00e1kat a metrik\u00e1k \u00e9s riaszt\u00e1sok seg\u00edts\u00e9g\u00e9vel. P\u00e9ld\u00e1ul a k\u00e9sleltet\u00e9sek \u00e9s a hibaar\u00e1nyra \u00f6sszpontos\u00edtva nem terjed\u00fcnk ki teljesen minden haszn\u00e1lati forgat\u00f3k\u00f6nyvre a migr\u00e1l\u00f3 szolg\u00e1ltat\u00e1sn\u00e1l.<\/p>\n<p>Ez a probl\u00e9ma szinte azonnal felmer\u00fclt, miut\u00e1n a munkaterhel\u00e9sek egy r\u00e9sz\u00e9t a klaszterbe helyezt\u00fck. K\u00fcl\u00f6n\u00f6sen \u00e9les volt, amikor olyan funkci\u00f3kat kellett ellen\u0151rizni, amelyeknek kev\u00e9s k\u00e9r\u00e9s\u00fck van, de nagyon specifikus konfigur\u00e1ci\u00f3s f\u00fcgg\u0151s\u00e9gekkel rendelkeznek. A migr\u00e1ci\u00f3 v\u00e9g\u00e9n az egyik kulcssz\u00f3 a megfigyel\u00e9s sor\u00e1n az volt, hogy nemcsak a metrik\u00e1kat, hanem a napl\u00f3kat \u00e9s a \u201ehossz\u00fa farok\u201d <i>(ez a <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/Long_tail\"><i>hib\u00e1k ilyen eloszl\u00e1s\u00e1ra<\/i><\/a><\/noindex><i> vonatkozik a grafikonon \u2014 a ford\u00edt\u00f3 megjegyz\u00e9se)<\/i> most r\u00e9szletes k\u00e9r\u00e9seket vonunk be a napl\u00f3khoz <i>(napl\u00f3lek\u00e9rdez\u00e9sek)<\/i> \u00e9s vil\u00e1gos visszag\u00f6rget\u00e9si elj\u00e1r\u00e1sokat tervez\u00fcnk, amelyeket probl\u00e9m\u00e1k eset\u00e9n egyik m\u0171szakr\u00f3l a m\u00e1sikra lehet \u00e1tadni.<\/p>\n<p>Az azonos k\u00e9r\u00e9sek p\u00e1rhuzamos megold\u00e1sa a r\u00e9gi VM-infrastrukt\u00far\u00e1ban \u00e9s az \u00faj, Kubernetes alap\u00faban egyedi kih\u00edv\u00e1st jelentett. A lift-and-shift t\u00edpus\u00fa migr\u00e1ci\u00f3n\u00e1l <i>(alkalmaz\u00e1sok \u201eahogy vannak\u201d \u00e1tk\u00f6lt\u00f6ztet\u00e9se az \u00faj infrastrukt\u00far\u00e1ba; tov\u00e1bbi r\u00e9szletek\u00e9rt p\u00e9ld\u00e1ul olvashat\u00f3, <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/www.ibm.com\/cloud\/learn\/lift-and-shift\"><i>itt<\/i><\/a><\/noindex><i> \u2014 a ford\u00edt\u00f3 megjegyz\u00e9se)<\/i>, a r\u00e9gi VM-ek \u00e9s a Kubernetes p\u00e1rhuzamos m\u0171k\u00f6d\u00e9se megk\u00f6veteli, hogy a monitoroz\u00f3 eszk\u00f6z\u00f6k kompatibilisek legyenek mindk\u00e9t k\u00f6rnyezettel, \u00e9s k\u00e9pesek legyenek a metrik\u00e1k egyes\u00edt\u00e9s\u00e9re. Fontos, hogy ugyanazokat a dashboard-okat \u00e9s loglek\u00e9rdez\u00e9seket haszn\u00e1ljuk, hogy k\u00f6vetkezetes megfigyelhet\u0151s\u00e9get \u00e9rj\u00fcnk el az \u00e1tmeneti id\u0151szakban.<\/p>\n<h3>4. A forgalom \u00e1tkapcsol\u00e1sa az \u00faj klaszterre<\/h3>\n<p>\nA GitLab.com sz\u00e1m\u00e1ra egyes szerverek dedik\u00e1ltak <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/engineering\/#canary-testing\">a canary szakasznak<\/a><\/noindex>. A canary park a bels\u0151 projektjeinket szolg\u00e1lja ki, \u00e9s emellett <noindex><a rel=\"nofollow\" href=\"https:\/\/next.gitlab.com\/\">a felhaszn\u00e1l\u00f3k \u00e1ltal is bekapcsolhat\u00f3<\/a><\/noindex>. De els\u0151sorban a v\u00e1ltoz\u00e1sok ellen\u0151rz\u00e9s\u00e9re szolg\u00e1l, amelyeket az infrastrukt\u00far\u00e1ban \u00e9s az alkalmaz\u00e1sban v\u00e9geznek. Az els\u0151 \u00e1tvitt szolg\u00e1ltat\u00e1s egy korl\u00e1tozott mennyis\u00e9g\u0171 bels\u0151 forgalom fogad\u00e1s\u00e1val kezd\u0151d\u00f6tt, \u00e9s tov\u00e1bbra is ezt a m\u00f3dszert haszn\u00e1ljuk, hogy biztos\u00edtsuk a SLO betart\u00e1s\u00e1t, miel\u0151tt az \u00f6sszes forgalmat a klaszterre ir\u00e1ny\u00edtan\u00e1nk.<\/p>\n<p>A migr\u00e1ci\u00f3 eset\u00e9n ez azt jelenti, hogy el\u0151sz\u00f6r a Kubernetes-en bel\u00fcli projektekre ir\u00e1ny\u00edtjuk a k\u00e9r\u00e9seket, majd fokozatosan \u00e1tkapcsoljuk a marad\u00e9k forgalmat a klaszterre a backend s\u00faly\u00e1nak megv\u00e1ltoztat\u00e1s\u00e1val a HAProxy-n kereszt\u00fcl. A VM-r\u0151l a Kubernetes-re val\u00f3 \u00e1t\u00e1ll\u00e1s sor\u00e1n kider\u00fclt, hogy nagyon el\u0151ny\u00f6s, ha van egy egyszer\u0171 m\u00f3d a forgalom \u00e1tir\u00e1ny\u00edt\u00e1s\u00e1ra a r\u00e9gi \u00e9s \u00faj infrastrukt\u00fara k\u00f6z\u00f6tt, \u00edgy a r\u00e9gi infrastrukt\u00fara k\u00e9szen \u00e1llhat a vissza\u00e1ll\u00edt\u00e1sra az \u00e1t\u00e1ll\u00e1s els\u0151 n\u00e9h\u00e1ny napj\u00e1ban.<\/p>\n<h3>5. Podok tartal\u00e9k kapacit\u00e1sa \u00e9s haszn\u00e1latuk<\/h3>\n<p>\nMajdnem azonnal felmer\u00fclt a k\u00f6vetkez\u0151 probl\u00e9ma: a Registry szolg\u00e1ltat\u00e1shoz tartoz\u00f3 podok gyorsan elindultak, azonban a Sidekiq podok ind\u00edt\u00e1sa ak\u00e1r <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\/gitlab\/-\/issues\/1775\">k\u00e9t percet<\/a><\/noindex>is eltartott. A Sidekiq podok hossz\u00fa ind\u00edt\u00e1sa probl\u00e9m\u00e1t jelentett, amikor elkezdt\u00fck migr\u00e1lni a Kubernetesbe a munkaterhel\u00e9seket, amelyeknek gyorsan kellett feldolgozniuk a feladatokat \u00e9s gyorsan kellett sk\u00e1l\u00e1z\u00f3dniuk.<\/p>\n<p>Ebben az esetben a tanuls\u00e1g az volt, hogy b\u00e1r a Horizontal Pod Autoscaler (HPA) a Kubernetesben j\u00f3l kezeli a forgalomn\u00f6veked\u00e9st, fontos figyelembe venni a munkaterhel\u00e9sek jellemz\u0151it \u00e9s tartal\u00e9k er\u0151forr\u00e1sokat allok\u00e1lni a podok sz\u00e1m\u00e1ra (k\u00fcl\u00f6n\u00f6sen a kereslet egyenl\u0151tlen eloszl\u00e1sa mellett). A mi eset\u00fcnkben hirtelen fokoz\u00f3dott a jobok sz\u00e1ma, ami gyors m\u00e9retez\u00e9st k\u00f6vetelt, \u00e9s ez CPU er\u0151forr\u00e1sok tel\u00edtetts\u00e9g\u00e9hez vezetett, miel\u0151tt siker\u00fclt volna a csom\u00f3pontok poolj\u00e1t sk\u00e1l\u00e1zni.<\/p>\n<p>Mindig van k\u00eds\u00e9rt\u00e9s, hogy a lehet\u0151 legt\u00f6bbet \u201ekihaszn\u00e1ljunk\u201d a klaszterb\u0151l, azonban mi, miut\u00e1n kezdetben teljes\u00edtm\u00e9nyprobl\u00e9m\u00e1kkal szembes\u00fclt\u00fcnk, most egy b\u0151s\u00e9ges pod kerettel kezd\u00fcnk, \u00e9s azt k\u00e9s\u0151bb cs\u00f6kkentj\u00fck, szoros figyelemmel k\u00eds\u00e9rve az SLO-t. A Sidekiq szolg\u00e1ltat\u00e1s podjainak ind\u00edt\u00e1sa jelent\u0151sen felgyorsult, \u00e9s most \u00e1tlagosan k\u00f6r\u00fclbel\u00fcl 40 m\u00e1sodpercet vesz ig\u00e9nybe. <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/gitlab-org\/charts\/gitlab\/-\/issues\/1775\">A podok ind\u00edt\u00e1si idej\u00e9nek cs\u00f6kkent\u00e9se<\/a><\/noindex> nyeres\u00e9ges volt mind a GitLab.com, mind a saj\u00e1t mag\u00e1nkezel\u00e9s\u0171 telep\u00edt\u00e9seink felhaszn\u00e1l\u00f3i sz\u00e1m\u00e1ra, akik a GitLab hivatalos Helm-chartj\u00e1val dolgoznak.<\/p>\n<h2>Z\u00e1r\u00e1s<\/h2>\n<p>\nMinden szolg\u00e1ltat\u00e1s \u00e1tk\u00f6lt\u00f6ztet\u00e9se ut\u00e1n \u00f6r\u00fclt\u00fcnk a Kubernetes haszn\u00e1lat\u00e1nak el\u0151nyeinek a production k\u00f6rnyezetben: gyorsabb \u00e9s biztons\u00e1gosabb alkalmaz\u00e1s telep\u00edt\u00e9s, sk\u00e1l\u00e1z\u00e1s \u00e9s hat\u00e9konyabb er\u0151forr\u00e1s-eloszt\u00e1s. R\u00e1ad\u00e1sul a migr\u00e1ci\u00f3 el\u0151nyei t\u00falmutatnak a GitLab.com szolg\u00e1ltat\u00e1son. Minden hivatalos Helm-chart friss\u00edt\u00e9s a felhaszn\u00e1l\u00f3k haszn\u00e1ra v\u00e1lik.<\/p>\n<p>Rem\u00e9lem, tetszett nektek a Kubernetes migr\u00e1ci\u00f3val kapcsolatos kalandjaink t\u00f6rt\u00e9nete. Tov\u00e1bbra is \u00fajabb szolg\u00e1ltat\u00e1sokat k\u00f6lt\u00f6ztet\u00fcnk a klaszterre. Tov\u00e1bbi inform\u00e1ci\u00f3k tal\u00e1lhat\u00f3k a k\u00f6vetkez\u0151 publik\u00e1ci\u00f3kban:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/engineering\/infrastructure\/production\/kubernetes\/gitlab-com\/\">Mi\u00e9rt migr\u00e1lunk a Kubernetesre?<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/handbook\/engineering\/infrastructure\/production\/architecture\/#gitlab-com-on-kubernetes\">GitLab.com a Kubernetes-en<\/a><\/noindex>\u00bb;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gitlab.com\/groups\/gitlab-com\/gl-infra\/-\/epics\/112\">GitLab.com Kubernetes-re t\u00f6rt\u00e9n\u0151 migr\u00e1ci\u00f3j\u00e1nak epikus t\u00f6rt\u00e9ntje<\/a><\/noindex>.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Fejleszt\u00e9si eszk\u00f6z\u00f6k, amelyek Kubernetesben futnak<\/h2>\n<p>\nOlvasson tov\u00e1bbi inform\u00e1ci\u00f3kat a blogunkban:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/519962\/\">3 \u00e9v Kubernetes a productionban: ezt tanultuk<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/504396\/\">10 tipikus hiba a Kubernetes haszn\u00e1latakor<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/335814\/\">Kubernetes sikert\u00f6rt\u00e9netek a productionban. 3. r\u00e9sz: GitHub<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/440278\/\">A Tinder \u00e1t\u00e1ll\u00e1sa a Kubernetesre<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/520150\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438. \u0422\u0435\u043c \u043d\u0435 \u043c\u0435\u043d\u0435\u0435, \u0434\u043e \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0433\u043e \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043e\u043d\u043b\u0430\u0439\u043d-\u0441\u0435\u0440\u0432\u0438\u0441\u0430 GitLab.com \u0431\u044b\u043b\u0430 \u043f\u043e\u0441\u0442\u0440\u043e\u0435\u043d\u0430 \u043d\u0430 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d\u0430\u0445, \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043a\u043e\u043b\u043e \u0433\u043e\u0434\u0430 \u043d\u0430\u0437\u0430\u0434 \u043d\u0430\u0447\u0430\u043b\u0430\u0441\u044c \u0435\u0451 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u0432 K8s, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0434\u043e \u0441\u0438\u0445 \u043f\u043e\u0440 \u043d\u0435 \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0430. \u0420\u0430\u0434\u044b \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043d\u0435\u0434\u0430\u0432\u043d\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 SRE-\u0438\u043d\u0436\u0435\u043d\u0435\u0440\u0430 GitLab \u043e \u0442\u043e\u043c, \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":94978,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-94977","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041d\u0430\u0448\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u0437\u0430 \u0433\u043e\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 GitLab.com \u043d\u0430 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-09-24T05:43:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-09-24T05:43:00+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47 \u00c9v v\u00e9gi \u00f6sszegz\u00e9s\u00fcnk a GitLab.com Kubernetes-re t\u00f6rt\u00e9n\u0151 migr\u00e1ci\u00f3j\u00e1r\u00f3l | ProHoster","description":"Megj. ford.: a Kubernetes GitLabban val\u00f3 bevezet\u00e9s\u00e9t a c\u00e9g n\u00f6veked\u00e9s\u00e9nek k\u00e9t f\u0151 t\u00e9nyez\u0151je k\u00f6z\u00e9 sorolj\u00e1k.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041d\u0430\u0448\u0438 \u0432\u044b\u0432\u043e\u0434\u044b \u0437\u0430 \u0433\u043e\u0434 \u043c\u0438\u0433\u0440\u0430\u0446\u0438\u0438 GitLab.com \u043d\u0430 Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044e Kubernetes \u0432 GitLab \u0441\u0447\u0438\u0442\u0430\u044e\u0442 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0434\u0432\u0443\u0445 \u0433\u043b\u0430\u0432\u043d\u044b\u0445 \u0444\u0430\u043a\u0442\u043e\u0440\u043e\u0432, \u0441\u043f\u043e\u0441\u043e\u0431\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0440\u043e\u0441\u0442\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/nashi-vyvody-za-god-migraczii-gitlab-com-na-kubernetes","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-09-24T05:43:00+00:00","article:modified_time":"2020-09-24T05:43:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"94977","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 11:14:45","updated":"2022-10-03 07:39:43","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/94977","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=94977"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/94977\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/94978"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=94977"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=94977"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=94977"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}