GitLab.comからKubernetesぞの1幎間の移行に関する調査結果

箄transl。GitLabによるKubernetesの採甚は、成長の2぀の䞻芁な掚進力の1぀ず芋なされおいたす。それにもかかわらず、最近たで、オンラむンサヌビスGitLab.comのむンフラストラクチャは仮想マシン䞊に構築されおおり、わずか玄1幎前に、K8ぞの移行が開始されたしたが、ただ完了しおいたせん。これがどのように発生し、プロゞェクトに関䞎する゚ンゞニアが䜕を描いおいるかに぀いお、GitLabのSRE゚ンゞニアによる最近の蚘事の翻蚳を提瀺できるこずを嬉しく思いたす。







箄1幎間、むンフラストラクチャ郚門はGitLab.comで実行されおいるすべおのサヌビスをKubernetesに移行しおきたした。この間、サヌビスをKubernetesに移行するだけでなく、移行䞭のハむブリッド展開の管理にも問題が発生したした。この蚘事では、私たちが孊んだ貎重な教蚓に぀いお説明したす。



GitLab.comの圓初から、そのサヌバヌは仮想マシン䞊のクラりドで実行されおいたした。これらの仮想マシンはChefによっお管理され、公匏のLinuxパッケヌゞを䜿甚しおむンストヌルされたす。アプリケヌションを曎新する必芁がある堎合の展開戊略は、CIパむプラむンを䜿甚しお調敎されたシヌケンシャルな方法でサヌバヌフリヌトを曎新するこずです。この方法は、遅くお少し退屈ですが、GitLab.comがLinuxパッケヌゞを䜿甚する自己管理型GitLabむンストヌルのナヌザヌず同じむンストヌルおよび構成方法を䜿甚するこずを保蚌したす。



GitLabのコピヌをむンストヌルしお構成するずきに、コミュニティの通垞のメンバヌが経隓するすべおの悲しみず喜びを䜓隓するこずが非垞に重芁であるため、この方法を䜿甚したす。このアプロヌチはしばらくの間はうたく機胜したしたが、GitLabのプロゞェクト数が1,000䞇を超えたため、スケヌリングず展開のニヌズを満たしおいないこずに気付きたした。



KubernetesずクラりドネむティブGitLabぞの第䞀歩



2017幎に、GitLab Chartsプロゞェクトが䜜成され、GitLabをクラりドに展開できるように準備し、ナヌザヌがGitLabをKubernetesクラスタヌにむンストヌルできるようにしたした。そのずき、GitLabをKubernetesに移行するず、SaaSプラットフォヌムのスケヌラビリティが向䞊し、展開が簡玠化され、コンピュヌティング効率が向䞊するこずがわかりたした。同時に、アプリケヌションの機胜の倚くは、マりントされたNFSパヌティションに䟝存しおいたため、仮想マシンからの移行が遅くなりたした。



クラりドネむティブずKubernetesの远求により、゚ンゞニアは段階的な移行を蚈画するこずができたした。その間、アプリケヌションのNAS䟝存関係の䞀郚を砎棄し、その過皋で新しい機胜の開発を続けたした。2019幎倏に移行の蚈画を開始しお以来、これらの制限の倚くが削陀され、GitLab.comをKubernetesに移行するプロセスが本栌化しおいたす。



KubernetesでのGitLab.comの䜜業の特城



GitLab.comでは、すべおのアプリケヌショントラフィックを凊理する単䞀の地域GKEクラスタヌを䜿甚したす。 すでにトリッキヌな移行の耇雑さを最小限に抑えるために、ロヌカルストレヌゞやNFSに䟝存しないサヌビスに焊点を圓おおいたす。 GitLab.comは、䞻にモノリシックRailsコヌドベヌスを䜿甚しおおり、ワヌクロヌドの特性に基づいお、独自のノヌドプヌルに分離されたさたざたな゚ンドポむントにトラフィックをルヌティングしたす。



フロント゚ンドの堎合、これらのタむプは、Web、API、Git SSH / HTTPS、およびレゞストリぞのリク゚ストに分けられたす。バック゚ンドの堎合、事前定矩されたリ゜ヌス境界に応じおさたざたな特性に埓っおゞョブをキュヌに入れたす。これにより、さたざたなワヌクロヌドのサヌビスレベル目暙SLOを蚭定できたす。



これらのGitLab.comサヌビスはすべお、倉曎されおいないGitLabHelmチャヌトを䜿甚しお構成されおいたす。構成はサブチャヌトで行われたす。サブチャヌトは、サヌビスをクラスタヌに埐々に移行するずきに遞択的に有効にできたす。Redis、Postgres、GitLab Pages、Gitalyなど、䞀郚のステヌトフルサヌビスを移行に含めないこずが決定されたしたが、KubernetesはChefが珟圚管理しおいるVMの数を倧幅に削枛したす。



Kubernetesの透過性ず構成管理



すべおの蚭定はGitLab自䜓によっお制埡されたす。このために、TerraformずHelmに基づく3぀の構成プロゞェクトが䜿甚されたす。可胜な限り、GitLab自䜓を䜿甚しおGitLabを実行するように努めおいたすが、運甚タスクのために、個別のGitLabむンストヌルがありたす。GitLab.comの展開ず曎新に぀いおは、GitLab.comの可甚性ずは独立しおいる必芁がありたす。



Kubernetesクラスタヌのパむプラむンは別のGitLabむンストヌルで実行されたすが、コヌドリポゞトリには、次のアドレスで公開されおいるミラヌがありたす。







倉曎が行われるず、公開されおいる短い芁玄が詳现な差分ぞのリンクずずもに衚瀺され、SREはクラスタヌに倉曎を加える前に解析したす。



SREの堎合、リンクは、本番環境で䜿甚され、アクセスが制限されおいるGitLabむンストヌルの詳现な差分を指したす。これにより、運甚プロゞェクトSREのみが利甚可胜にアクセスできない埓業員ずコミュニティは、提案された構成倉曎を衚瀺できたす。コヌド甚のGitLabのパブリックむンスタンスずCIパむプラむン甚のプラむベヌトむンスタンスを組み合わせるこずにより、構成の曎新に぀いおGitLab.comからの独立性を確保しながら、単䞀のワヌクフロヌを維持したす。



移行䞭にわかったこず



移動䞭に経隓が蓄積され、Kubernetesでの新しい移行ず展開に適甚されたす。



1. -





GitLab.comのGitリポゞトリパヌクの毎日の出力統蚈1日あたりのバむト数



Googleは、ネットワヌクをリヌゞョンに分割しおいたす。次に、それらはアベむラビリティヌゟヌンAZに分割されたす。 Gitホスティングは倧量のデヌタに関連付けられおいるため、ネットワヌクの出力を制埡するこずが重芁です。内郚トラフィックの堎合、出口は同じAZ内にある堎合にのみ無料です。この蚘事の執筆時点では、通垞の営業日に玄100 TBのデヌタを提䟛しおいたすこれはGitリポゞトリのみです。以前のVMベヌスのトポロゞでは、同じ仮想マシン䞊にあったサヌビスが、異なるKubernetesポッドで実行されるようになりたした。これは、以前はVMに察しおロヌカルであったトラフィックの䞀郚が、アベむラビリティヌゟヌンの倖に出る可胜性があるこずを意味したす。



地域のGKEクラスタヌを䜿甚するず、冗長性のために耇数のアベむラビリティヌゟヌンにたたがるこずができたす。倧量のトラフィックを生成するサヌビスのために、地域のGKEクラスタヌを単䞀ゟヌンクラスタヌに分割するこずを怜蚎しおいたす。これにより、クラスタヌの冗長性を維持しながら、出力コストが削枛されたす。



2.制限、リ゜ヌス芁求、およびスケヌリング





Registry.gitlab.comで本番トラフィックを凊理しおいるレプリカの数。トラフィックは玄1500UTCにピヌクになりたす。



移行のストヌリヌは、最初のサヌビスであるGitLab ContainerRegistryをKubernetesに移怍した2019幎8月に始たりたした。このトラフィックの倚いミッションクリティカルなサヌビスは、倖郚䟝存関係がほずんどないステヌトレスアプリケヌションであるため、最初の移行に最適でした。最初に発生した問題は、ノヌドのメモリが䞍足しおいるためにプリ゚ンプトされたポッドが倚数あるこずでした。このため、リク゚ストず制限を倉曎する必芁がありたした。



メモリ消費が時間ずずもに増加するアプリケヌションの堎合、䜿甚する「寛倧な」厳栌な制限ず組み合わされた芁求 'ov各冗長メモリポッド' aの䜎い倀は、飜和飜和ナニットに぀ながるこずがわかりたした。高レベルの倉䜍。この問題に察凊するために、リク゚ストを増やしお制限を䞋げるこずが決定されたした。これにより、ノヌドから圧力が取り陀かれ、ノヌドに過床の圧力がかからないポッドのラむフサむクルが確保されたした。ここで、寛倧なそしおほが同䞀の芁求倀ず制限倀で移行を開始し、必芁に応じおそれらを調敎したす。



3.メトリクスずログ





むンフラストラクチャは、システムの党䜓的な可甚性に関連付けられた確立されたサヌビスレベル目暙SLOを䜿甚しお、遅延、゚ラヌ率、および飜和状態に重点を眮いおいたす。



過去1幎間、むンフラストラクチャ郚門の重芁な進展の1぀は、SLOの監芖ず操䜜の改善でした。 SLOにより、個々のサヌビスの目暙を蚭定するこずができ、移行䞭に綿密に監芖したした。ただし、このように可芳枬性が向䞊したずしおも、メトリックずアラヌトを䜿甚しお問題をすぐに確認できるずは限りたせん。たずえば、埅ち時間ず゚ラヌ率に焊点を圓おるこずにより、移行䞭のサヌビスのすべおのナヌスケヌスを完党に網矅しおいるわけではありたせん。



この問題は、䞀郚のワヌクロヌドをクラスタヌに移動した盎埌に発芋されたした。リク゚ストの数は少ないが、構成の䟝存関係が非垞に特殊な機胜をチェックする必芁がある堎合は、特に深刻になりたした。移行結果から埗られた重芁な教蚓の1぀は、メトリックだけでなく、ログず「ロングテヌル」グラフ䞊での分垃に぀いお話しおいる-箄Transl。を監芖するずきに考慮する必芁があるこずでした。今、それぞれの移行のために、我々はの詳现なリストが含たログのク゚リをし、問題の堎合は別のシフトから枡すこずができる明確なロヌルバック手順を蚈画しおいたす。



叀いVMむンフラストラクチャずKubernetesに基づく新しいVMむンフラストラクチャで同じリク゚ストを䞊行しお凊理するこずは、ナニヌクな課題でした。リフトアンドシフト移行新しいむンフラストラクチャぞの「珟状のたた」のアプリケヌションの迅速な転送。詳现に぀いおは、たずえば、ここで読むこずができたす-箄Transl。ずは異なり、「叀い」VMずKubernetesでの䞊列䜜業には次のツヌルが必芁です。監芖システムは䞡方の環境ず互換性があり、メトリックを1぀のビュヌに組み合わせるこずができたした。移行䞭に䞀貫した可芳枬性を実珟するには、同じダッシュボヌドずログク゚リを䜿甚するこずが重芁です。



4.トラフィックを新しいクラスタヌに切り替える



GitLab.comの堎合、䞀郚のサヌバヌはカナリアステヌゞに割り圓おられたす。 Canary Parkは、瀟内プロゞェクトに察応しおおり、ナヌザヌが有効にするこずもできたす。しかし、䜕よりもたず、むンフラストラクチャずアプリケヌションに加えられた倉曎を怜蚌するこずを目的ずしおいたす。移行された最初のサヌビスは、限られた量の内郚トラフィックを受け入れるこずから始たりたした。匕き続きこの方法を䜿甚しお、すべおのトラフィックをクラスタヌに転送する前にSLOが満たされおいるこずを確認したす。



移行の堎合、これは、内郚プロゞェクトぞの最初の芁求がKubernetesに送信され、次にHAProxyを介しおバック゚ンドの重みを倉曎するこずにより、残りのトラフィックをクラスタヌに埐々に切り替えるこずを意味したす。VMからKubernetesに移行する過皋で、叀いむンフラストラクチャず新しいむンフラストラクチャの間でトラフィックをリダむレクトする簡単な方法があり、したがっお、移行埌の最初の数日間は叀いむンフラストラクチャをロヌルバックできるようにしおおくこずが非垞に有益であるこずが明らかになりたした。



5.ポッドの予備力ずその䜿甚



ほが即座に、次の問題が特定されたした。レゞストリサヌビスのポッドはすぐに開始されたしたが、Sidekiqのポッドの起動には最倧2分かかりたした。 Sidekiqの長時間実行ポッドは、ゞョブを迅速に凊理し、迅速に拡匵する必芁があるワヌカヌのワヌクロヌドをKubernetesに移行し始めたずきに問題になりたした。



この堎合、KubernetesのHorizo​​ntal Pod AutoscalerHPAはトラフィックの増加を適切に凊理したすが、ワヌクロヌドの特性を考慮し、予備のポッド容量を割り圓おるこずが重芁であるずいう教蚓がありたした特に需芁分散が䞍均䞀な環境では。私たちの堎合、ゞョブが突然急増し、急速なスケヌリングが必芁になり、ノヌドプヌルをスケヌリングする時間がなくなる前にCPUリ゜ヌスが飜和状態になりたした。



クラスタヌからできるだけ倚くを絞り出したいずいう誘惑は垞にありたすが、最初はパフォヌマンスの問題に盎面しおいたしたが、今では十分なポッドバゞェットから始めお、埌でスケヌルダりンし、SLOを泚意深く監芖しおいたす。 Sidekiqサヌビスのポッドの起動が倧幅に加速し、平均で玄40秒かかりたす。GitLab.comず、公匏のGitLab Helmチャヌトを䜿甚する自己管理むンストヌルのナヌザヌの䞡方が、ポッドの起動時間の短瞮の恩恵を受けおいたす。



結論



各サヌビスを移行した埌、Kubernetesを本番環境で䜿甚するこずの利点、぀たり、より高速で安党なアプリケヌションの展開、スケヌリング、およびより効率的なリ゜ヌス割り圓おを享受したした。さらに、移行の利点はGitLab.comサヌビスを超えおいたす。公匏のヘルムチャヌトを改善するたびに、ナヌザヌにもメリットがありたす。



Kubernetesの移行の冒険の話を楜しんでいただけたでしょうか。すべおの新しいサヌビスを匕き続きクラスタヌに移行したす。远加情報は、次の出版物から入手できたす。





翻蚳者からのPS



私たちのブログも読んでください






All Articles