ããŒãã 翻蚳ã: GitLab ã§ã® Kubernetes ã®å°å ¥ã¯ãå瀟ã®æé·ã«è²¢ç®ãã 8 ã€ã®äž»ãªèŠå ã® XNUMX ã€ã§ãããšèããããŠããŸãã ãã ããæè¿ãŸã§ãGitLab.com ãªã³ã©ã€ã³ ãµãŒãã¹ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ä»®æ³ãã·ã³äžã«æ§ç¯ãããŠãããããã XNUMX 幎ã»ã©åã« KXNUMXs ãžã®ç§»è¡ãå§ãŸããŸãããããŸã å®äºããŠããŸããã ãããã©ã®ããã«ããŠèµ·ããã®ãããããŠãããžã§ã¯ãã«åå ããŠãããšã³ãžãã¢ãã©ã®ãããªçµè«ãåºããã®ãã«ã€ããŠãGitLab SRE ãšã³ãžãã¢ã«ããæè¿ã®èšäºã®ç¿»èš³ã玹ä»ããŸãã
çŽ XNUMX 幎åãããåœç€Ÿã®ã€ã³ãã©ã¹ãã©ã¯ãã£éšéã¯ãGitLab.com ã§å®è¡ãããŠãããã¹ãŠã®ãµãŒãã¹ã Kubernetes ã«ç§»è¡ããŠããŸããã ãã®éããµãŒãã¹ã Kubernetes ã«ç§»è¡ããã ãã§ãªãã移è¡äžã®ãã€ããªãã ãããã€ã¡ã³ãã®ç®¡çã«ãé¢é£ãã課é¡ã«çŽé¢ããŸããã ç§ãã¡ãåŠãã 貎éãªæèšã«ã€ããŠã¯ããã®èšäºã§èª¬æããŸãã
GitLab.com ã®èšç«åœåããããã®ãµãŒããŒã¯ã¯ã©ãŠãäžã®ä»®æ³ãã·ã³ã§å®è¡ãããŠããŸããã ãããã®ä»®æ³ãã·ã³ã¯ Chef ã«ãã£ãŠç®¡çãããåŒç€Ÿã®
ç§ãã¡ããã®æ¹æ³ã䜿çšããã®ã¯ãã³ãã¥ããã£ã®äžè¬ã¡ã³ããŒã GitLab ã®ã³ããŒãã€ã³ã¹ããŒã«ããŠæ§æãããšãã«çµéšãããã¹ãŠã®æ²ãã¿ãšåã³ãçµéšããããšãéåžžã«éèŠã§ããããã§ãã ãã®ã¢ãããŒãã¯ãã°ããã¯ããŸããããŸããããGitLab äžã®ãããžã§ã¯ãã®æ°ã 10 äžãè¶ ãããšããããã§ã¯ã¹ã±ãŒãªã³ã°ãšãããã€ã¡ã³ãã®ããŒãºãæºãããªããªã£ãããšã«æ°ã¥ããŸããã
Kubernetes ãšã¯ã©ãŠããã€ãã£ã GitLab ãžã®ç¬¬äžæ©
ãããžã§ã¯ã㯠2017 幎ã«äœæãããŸãã
ã¯ã©ãŠã ãã€ãã£ããš Kubernetes ãžã®ç§»è¡ã«ãããåœç€Ÿã®ãšã³ãžãã¢ã¯æ®µéçãªç§»è¡ãèšç»ããããšãã§ãããã®éãæ°æ©èœã®éçºãç¶ç¶ããªãããã¢ããªã±ãŒã·ã§ã³ã®ãããã¯ãŒã¯ ã¹ãã¬ãŒãžãžã®äŸåé¢ä¿ã®äžéšãæŸæ£ããŸããã 2019 幎ã®å€ã«ç§»è¡ã®èšç»ãéå§ããŠä»¥æ¥ããããã®å¶éã®å€ãã¯è§£æ±ºãããGitLab.com ãã Kubernetes ãžã®ç§»è¡ããã»ã¹ã¯çŸåšé 調ã«é²ãã§ããŸãã
Kubernetes ã® GitLab.com ã®æ©èœ
GitLab.com ã®å Žåããã¹ãŠã®ã¢ããªã±ãŒã·ã§ã³ ãã©ãã£ãã¯ãåŠçããåäžã®ãªãŒãžã§ã³ GKE ã¯ã©ã¹ã¿ã䜿çšããŸãã (ãã§ã«é£ãã) 移è¡ã®è€éããæå°éã«æããããã«ãããŒã«ã« ã¹ãã¬ãŒãžã NFS ã«äŸåããªããµãŒãã¹ã«çŠç¹ãåœãŠãŠããŸãã GitLab.com ã¯äž»ã«ã¢ããªã·ãã¯ãª Rails ã³ãŒãããŒã¹ã䜿çšããŠãããã¯ãŒã¯ããŒãã®ç¹æ§ã«åºã¥ããŠãç¬èªã®ããŒã ããŒã«ã«åé¢ãããããŸããŸãªãšã³ããã€ã³ãã«ãã©ãã£ãã¯ãã«ãŒãã£ã³ã°ããŸãã
ããã³ããšã³ãã®å Žåããããã®ã¿ã€ã㯠WebãAPIãGit SSH/HTTPSãããã³ã¬ãžã¹ããªãžã®ãªã¯ãšã¹ãã«åé¡ãããŸãã ããã¯ãšã³ãã®å Žåããã¥ãŒå
ã®ãžã§ããããŸããŸãªç¹æ§ã«åŸã£ãŠåå²ããŸãã
ãããã® GitLab.com ãµãŒãã¹ã¯ãã¹ãŠãæªå€æŽã® GitLab Helm ãã£ãŒãã䜿çšããŠæ§æãããŠããŸãã æ§æã¯ãµããã£ãŒãã§å®è¡ããããµãŒãã¹ãã¯ã©ã¹ã¿ãŒã«åŸã ã«ç§»è¡ãããšãã«éžæçã«æå¹ã«ããããšãã§ããŸãã RedisãPostgresãGitLab PagesãGitaly ãªã©ã®äžéšã®ã¹ããŒããã« ãµãŒãã¹ã移è¡ã«å«ããªãããšã決å®ããŸããããKubernetes ã䜿çšããããšã§ãçŸåš Chef ã管çããŠãã VM ã®æ°ãå€§å¹ ã«æžããããšãã§ããŸãã
Kubernetes æ§æã®å¯èŠåãšç®¡ç
ãã¹ãŠã®èšå®ã¯ GitLab èªäœã«ãã£ãŠç®¡çãããŸãã ãã®ããã«ãTerraform ãš Helm ã«åºã¥ã XNUMX ã€ã®æ§æãããžã§ã¯ãã䜿çšãããŸãã GitLab ãå®è¡ããã«ã¯å¯èœãªéã GitLab èªäœã䜿çšããããã«ããŠããŸãããéçšã¿ã¹ã¯ã®ããã«å¥ã® GitLab ã€ã³ã¹ããŒã«ãå¿ èŠã§ãã ããã¯ãGitLab.com ã®ãããã€ã¡ã³ããšæŽæ°ãå®è¡ãããšãã«ãGitLab.com ã®å¯çšæ§ã«äŸåããªãããã«ããããã«å¿ èŠã§ãã
Kubernetes ã¯ã©ã¹ã¿ãŒã®ãã€ãã©ã€ã³ã¯å¥ã® GitLab ã€ã³ã¹ããŒã«äžã§å®è¡ãããŸãããã³ãŒã ãªããžããªã®ãã©ãŒã次ã®ã¢ãã¬ã¹ã§å ¬éãããŠããŸãã
-
k8s-workloads/gitlab-com â GitLab Helm ãã£ãŒãçšã® GitLab.com æ§æãã¬ãŒã ã¯ãŒã¯ã -
k8s-workloads/gitlab-helmfiles - GitLab ã¢ããªã±ãŒã·ã§ã³ã«çŽæ¥é¢é£ä»ããããŠããªããµãŒãã¹ã®æ§æãå«ãŸããŠããŸãã ãããã«ã¯ããã®ã³ã°ãšã¯ã©ã¹ã¿ãŒç£èŠã®æ§æã«å ããPlantUML ãªã©ã®çµ±åããŒã«ãå«ãŸããŸãã -
Gitlab-com ã€ã³ãã©ã¹ãã©ã¯ã㣠â Kubernetes ããã³ã¬ã¬ã·ãŒ VM ã€ã³ãã©ã¹ãã©ã¯ãã£çšã® Terraform æ§æã ããã§ã¯ãã¯ã©ã¹ã¿ãŒèªäœãããŒã ããŒã«ããµãŒãã¹ ã¢ã«ãŠã³ããIP ã¢ãã¬ã¹ã®äºçŽãªã©ãã¯ã©ã¹ã¿ãŒã®å®è¡ã«å¿ èŠãªãã¹ãŠã®ãªãœãŒã¹ãæ§æããŸãã
å€æŽãè¡ããããšãããªã㯠ãã¥ãŒã衚瀺ãããŸãã
SRE ã®å Žåããªã³ã¯ã¯ GitLab ã€ã³ã¹ããŒã«å ã®è©³çŽ°ãªå·®åã«ã€ãªãããŸããããã¯éçšã«äœ¿çšãããã¢ã¯ã»ã¹ã¯å¶éãããŠããŸãã ããã«ãããåŸæ¥å¡ãšã³ãã¥ããã£ã¯ãéçšãããžã§ã¯ã (SRE ã®ã¿ãå ¬é) ã«ã¢ã¯ã»ã¹ããªããŠããææ¡ãããæ§æå€æŽã衚瀺ã§ããããã«ãªããŸãã ã³ãŒãçšã®ãããªã㯠GitLab ã€ã³ã¹ã¿ã³ã¹ãš CI ãã€ãã©ã€ã³çšã®ãã©ã€ããŒã ã€ã³ã¹ã¿ã³ã¹ãçµã¿åãããããšã§ãæ§ææŽæ°ã«é¢ã㊠GitLab.com ããã®ç¬ç«æ§ã確ä¿ããªãããåäžã®ã¯ãŒã¯ãããŒãç¶æããŸãã
移è¡äžã«ããã£ãããš
移è¡äžã«åŸãããçµéšã¯ãKubernetes ã§ã®æ°ãã移è¡ãšãããã€ã¡ã³ãã«é©çšãããŸãã
1. ã¢ãã€ã©ããªãã£ãŸãŒã³éã®ãã©ãã£ãã¯ã«ããã³ã¹ãã®å¢å
GitLab.com ã® Git ãªããžã㪠ããªãŒãã®æ¯æ¥ã®éä¿¡çµ±èš (XNUMX æ¥ãããã®ãã€ãæ°)
Google ã¯ãããã¯ãŒã¯ãå°åã«åå²ããŠããŸãã ãããã¯ãã¢ã¯ã»ã·ããªã㣠ãŸãŒã³ (AZ) ã«åå²ãããŸãã Git ãã¹ãã£ã³ã°ã«ã¯å€§éã®ããŒã¿ãé¢é£ä»ããããŠããããããããã¯ãŒã¯ã®åºåãå¶åŸ¡ããããšãéèŠã§ãã å éšãã©ãã£ãã¯ã®å Žåãäžãã¯åãã¢ãã€ã©ããªã㣠ãŸãŒã³å ã«çãŸãå Žåã«ã®ã¿ç¡æã«ãªããŸãã ãã®èšäºã®å·çæç¹ã§ã¯ãéåžžã®å€åæ¥ã§çŽ 100 TB ã®ããŒã¿ãæäŸããŠããŸã (ãã㯠Git ãªããžããªã®ã¿ã®å Žåã§ã)ã å€ã VM ããŒã¹ã®ããããžã§ã¯åãä»®æ³ãã·ã³ã«ååšããŠãããµãŒãã¹ããå¥ã® Kubernetes ãããã§å®è¡ãããããã«ãªããŸããã ããã¯ã以å㯠VM ã«å¯ŸããŠããŒã«ã«ã§ãã£ãäžéšã®ãã©ãã£ãã¯ãå¯çšæ§ãŸãŒã³ã®å€ã«ç§»åããå¯èœæ§ãããããšãæå³ããŸãã
ãªãŒãžã§ã³ GKE ã¯ã©ã¹ã¿ã䜿çšãããšãè€æ°ã®ã¢ãã€ã©ããªã㣠ãŸãŒã³ã«ãŸããã£ãŠåé·æ§ã確ä¿ã§ããŸãã å¯èœæ§ãæ€èšäžã§ã
2. å¶éããªãœãŒã¹èŠæ±ãããã³ã¹ã±ãŒãªã³ã°
registry.gitlab.com ã§æ¬çªãã©ãã£ãã¯ãåŠçããã¬ããªã«ã®æ°ã ãã©ãã£ãã¯ã®ããŒã¯ã¯çŽ 15:00 UTC ã§ãã
ç§ãã¡ã®ç§»è¡ã¹ããŒãªãŒã¯ãæåã®ãµãŒãã¹ã§ãã GitLab Container Registry ã Kubernetes ã«ç§»è¡ãã 2019 幎 XNUMX æã«å§ãŸããŸããã ãã®ããã·ã§ã³ ã¯ãªãã£ã«ã«ãªé«ãã©ãã£ã㯠ãµãŒãã¹ã¯ãå€éšäŸåé¢ä¿ãã»ãšãã©ãªãã¹ããŒãã¬ã¹ ã¢ããªã±ãŒã·ã§ã³ã§ãããããæåã®ç§»è¡ã«ã¯é©åãªéžæã§ããã ç§ãã¡ãæåã«ééããåé¡ã¯ãããŒãäžã®ã¡ã¢ãªäžè¶³ã«ãã倧éã®ããããåé€ãããããšã§ããã ãã®ããããªã¯ãšã¹ããšå¶éãå€æŽããå¿ èŠããããŸããã
æéã®çµéãšãšãã«ã¡ã¢ãªæ¶è²»ãå¢å ããã¢ããªã±ãŒã·ã§ã³ã®å Žåããªã¯ãšã¹ãã®äœãå€ïŒåãããã®ã¡ã¢ãªäºçŽïŒãšäœ¿çšéã®ãå¯å€§ãªãããŒãå¶éã飜åã«ã€ãªããããšãå€æããŸããã ïŒé£œåïŒ ããŒããšé«ã¬ãã«ã®ãšãã¯ã·ã§ã³ã ãã®åé¡ã«å¯ŸåŠããããã«è¡ãããã®ãã
3. ã¡ããªã¯ã¹ãšãã°
ã€ã³ãã©ã¹ãã©ã¯ãã£éšéã¯ãã¬ã€ãã³ã·ãŒããšã©ãŒçãããã³ã€ã³ã¹ããŒã«ãããŠããã·ã¹ãã ã®é£œåã«éç¹ã眮ããŠããŸãã
éå» XNUMX 幎éãã€ã³ãã©ã¹ãã©ã¯ãã£éšéã«ãããéèŠãªåºæ¥äºã® XNUMX ã€ã¯ãSLO ã®ç£èŠãšé£æºã®æ¹åã§ããã SLO ã«ããã移è¡äžã«ç¶¿å¯ã«ç£èŠããåã ã®ãµãŒãã¹ã®ç®æšãèšå®ã§ããããã«ãªããŸããã ãããããã®ããã«å¯èŠ³æž¬æ§ãåäžãããšããŠããã¡ããªã¯ã¹ãã¢ã©ãŒãã䜿çšããŠåé¡ãããã«ç¢ºèªã§ãããšã¯éããŸããã ããšãã°ãã¬ã€ãã³ã·ãšãšã©ãŒçã«çŠç¹ãåœãŠãŠãã移è¡äžã®ãµãŒãã¹ã®ãã¹ãŠã®ãŠãŒã¹ã±ãŒã¹ãå®å šã«ã«ããŒããŠããããã§ã¯ãããŸããã
ãã®åé¡ã¯ãäžéšã®ã¯ãŒã¯ããŒããã¯ã©ã¹ã¿ãŒã«ç§»è¡ããçŽåŸã«çºèŠãããŸããã ãã®åé¡ã¯ããªã¯ãšã¹ãã®æ°ã¯å°ãªããã®ã®ãéåžžã«ç¹æ®ãªæ§æã®äŸåé¢ä¿ãããé¢æ°ããã§ãã¯ããå¿
èŠãããå Žåã«ç¹ã«æ·±å»ã«ãªããŸããã 移è¡ããã®éèŠãªæèšã® XNUMX ã€ã¯ãç£èŠæã«ã¡ããªã¯ã¹ã ãã§ãªãããã°ãšããã³ã°ããŒã«ããèæ
®ããå¿
èŠããããšããããšã§ããã (ããã¯çŽ
å€ã VM ã€ã³ãã©ã¹ãã©ã¯ãã£ãšæ°ãã Kubernetes ããŒã¹ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã§åããªã¯ãšã¹ãã䞊è¡ããŠåŠçããããšã«ã¯ãç¹æã®èª²é¡ããããŸããã ãªããã¢ã³ãã·ãã移è¡ãšã¯ç°ãªããŸã (ã¢ããªã±ãŒã·ã§ã³ãããã®ãŸãŸãæ°ããã€ã³ãã©ã¹ãã©ã¯ãã£ã«è¿
éã«ç§»è¡ã詳现ã«ã€ããŠã¯ãããšãã°ã
4. ãã©ãã£ãã¯ãæ°ããã¯ã©ã¹ã¿ãŒã«åãæ¿ãã
GitLab.com ã®å ŽåããµãŒããŒã®äžéšã¯å°çšã§ãã
移è¡ã®å Žåãããã¯ãå éšãããžã§ã¯ããžã®ãªã¯ãšã¹ããæåã« Kubernetes ã«éä¿¡ããã次㫠HAProxy ãä»ããŠããã¯ãšã³ãã®éã¿ãå€æŽããããšã§ãæ®ãã®ãã©ãã£ãã¯ãåŸã ã«ã¯ã©ã¹ã¿ãŒã«åãæ¿ããããšãæå³ããŸãã VM ãã Kubernetes ãžã®ç§»è¡äžã«ãå€ãã€ã³ãã©ã¹ãã©ã¯ãã£ãšæ°ããã€ã³ãã©ã¹ãã©ã¯ãã£ã®éã§ãã©ãã£ãã¯ããªãã€ã¬ã¯ãããç°¡åãªæ¹æ³ãããããããã£ãŠç§»è¡åŸã®æåã®æ°æ¥éã¯å€ãã€ã³ãã©ã¹ãã©ã¯ãã£ãããŒã«ããã¯ã§ããç¶æ ã«ããŠããããšã¯éåžžã«æçã§ããããšãæããã«ãªããŸããã
5. ãããã®äºçŽå®¹éãšãã®äœ¿çšæ¹æ³
ããã«æ¬¡ã®åé¡ãç¹å®ãããŸãããã¬ãžã¹ã㪠ãµãŒãã¹ã®ãããã¯ããã«èµ·åããŸããããSidekiq ã®ãããã®èµ·åã«ã¯æ倧ã§æéãããããŸããã
ãã®å Žåã®æèšã¯ãKubernetes ã® æ°Žå¹³ããã ãªãŒãã¹ã±ãŒã©ãŒ (HPA) ã¯ãã©ãã£ãã¯ã®å¢å ã«ããŸã察åŠããŸãããã¯ãŒã¯ããŒãã®ç¹æ§ãèæ ®ããŠäºåã®ãã£ãã·ãã£ãŒããããã«å²ãåœãŠãããšãéèŠã§ãããšããããšã§ãã (ç¹ã«éèŠãäžåçã«åæ£ãããŠããå Žå)ã ç§ãã¡ã®å Žåããžã§ããçªç¶æ¥å¢ããæ¥éãªã¹ã±ãŒãªã³ã°ãçºçããããŒã ããŒã«ãã¹ã±ãŒãªã³ã°ããåã« CPU ãªãœãŒã¹ã飜åããŠããŸããŸããã
ã¯ã©ã¹ã¿ãŒããå¯èœãªéãå€ãã®ãã®ãçµãåºããããšããèªæãåžžã«ãããŸãããæåã¯ããã©ãŒãã³ã¹ã®åé¡ã«ééãããããçŸåšã¯ååãªãããäºç®ã§éå§ããSLO ã泚ææ·±ãç£èŠããªãããåŸã§åæžããããšã«ããŠããŸãã Sidekiq ãµãŒãã¹ã®ãããã®èµ·åã¯å€§å¹
ã«é«éåãããå¹³åã§çŽ 40 ç§ãããããã«ãªããŸããã
ãŸãšã
åãµãŒãã¹ã移è¡ããåŸãç§ãã¡ã¯æ¬çªç°å¢ã§ Kubernetes ã䜿çšããããšã®å©ç¹ãã€ãŸãããé«éãã€å®å šãªã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããã¹ã±ãŒãªã³ã°ãããå¹ççãªãªãœãŒã¹å²ãåœãŠã«åã³ãæããŸããã ããã«ã移è¡ã®å©ç¹ã¯ GitLab.com ãµãŒãã¹ã ãã«ãšã©ãŸããŸããã å ¬åŒ Helm ãã£ãŒãã®ããããæ¹åã¯ãŠãŒã¶ãŒã«å©çããããããŸãã
Kubernetes 移è¡ã®åéºã®ã¹ããŒãªãŒã楜ããã§ããã ããã°å¹žãã§ãã ãã¹ãŠã®æ°ãããµãŒãã¹ãã¯ã©ã¹ã¿ãŒã«ç§»è¡ãç¶ããŸãã è¿œå æ å ±ã«ã€ããŠã¯ã次ã®åºçç©ãåç §ããŠãã ããã
- «
ãªãKubernetesã«ç§»è¡ããã®ã§ãããã? "; - «
Kubernetes äžã® GitLab.com "; -
GitLab.com ãã Kubernetes ãžã®ç§»è¡ã«é¢ãã壮倧ãªèšäº .
翻蚳è ããã®è¿œäŒž
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Kubernetes ãæ¬çªç°å¢ã§äœ¿çšã㊠3 幎é: ç§ãã¡ãç解ããŠããããšã¯æ¬¡ã®ãšããã§ã "; - «
Kubernetes 䜿çšæã«ãããã 10 ã®ééã "; - «
éçšç°å¢ã«ããã Kubernetes ã®æåäºäŸã ããŒã 3: GitHub "; - «
Tinder ãã Kubernetes ãžã®ç§»è¡ 'ã
åºæïŒ habr.com