ããŒãã 翻蚳ã: æè¿ã®åºçåŸ
XNUMX幎åã«ç§ãã¡ã¯åºçããŸãã
ãã®èšäºã¯äººæ°ãããããšãå€æããã ä»ã®äººãã¡ã¯ GitOps ã«ã€ããŠè©±ãå§ããGitOps ã®ããã®æ°ããããŒã«ãå
¬éãå§ããŸããã
ç§ãã¡ã¯ããã«ã次ã®ãããªæ°ãã説æãå¿ èŠã§ããããšã«æ°ã¥ããŸããã
- å€æ°ã®äŸãšã¹ããŒãªãŒã
- GitOps ã®å ·äœçãªå®çŸ©ã
- åŸæ¥ã®ç¶ç¶çããªããªãŒãšã®æ¯èŒã
ãã®èšäºã§ã¯ãããããã¹ãŠã®ãããã¯ãåãäžããŠã¿ãŸããã GitOps ã®ææ°ã®çŽ¹ä»ãšãéçºè ããã³ CI/CD ã®èŠ³ç¹ãæäŸããŸãã ãã®ã¢ãã«ã¯äžè¬åããããšãã§ããŸããã䞻㫠Kubernetes ã«çŠç¹ãåœãŠãŸãã
GitOps ã«ã€ããŠ
ã¢ãªã¹ãæ³åããŠã¿ãŠãã ããã 圌女ã¯ãå¿ããããŠå¥çŽã®è©³çŽ°ãèªåã§ç解ããããšãã§ããªã人ã ã«ãå¥åº·ä¿éºãèªåè»ä¿éºãäœå® ä¿éºãæ è¡ä¿éºãæäŸãã Family Insurance ãçµå¶ããŠããŸãã 圌女ã®ããžãã¹ã¯ãã¢ãªã¹ãããŒã¿ ãµã€ãšã³ãã£ã¹ããšããŠéè¡ã§åããŠãããšãã«ãµã€ã ãããžã§ã¯ããšããŠå§ãŸããŸããã ããæ¥ã圌女ã¯é«åºŠãªã³ã³ãã¥ãŒã¿ ã¢ã«ãŽãªãºã ã䜿çšããã°ãããå¹æçã«ããŒã¿ãåæããä¿éºããã±ãŒãžãçå®ã§ããããšã«æ°ã¥ããŸããã æè³å®¶ããã®ãããžã§ã¯ãã«è³éãæäŸããçŸåšåœŒå¥³ã®äŒç€Ÿã¯å¹Žé 20 äžãã«ä»¥äžã®åçãäžããæ¥éã«æé·ããŠããŸãã çŸåšãããŸããŸãªåœ¹è·ã§ 180 åã®åŸæ¥å¡ãåããŠããŸãã ããã«ã¯ãWeb ãµã€ããããŒã¿ããŒã¹ã®éçºãä¿å®ã顧客ããŒã¹ã®åæãè¡ããã¯ãããžãŒ ããŒã ãå«ãŸããŸãã 60 人ãããªãããŒã ã¯ãå瀟ã®ãã¯ãã«ã« ãã£ã¬ã¯ã¿ãŒã§ãããããçããŠããŸãã
ããã®ããŒã ã¯å®çšŒåã·ã¹ãã ãã¯ã©ãŠãã«å±éããŸãã ã³ã¢ ã¢ããªã±ãŒã·ã§ã³ã¯ GKE äžã§å®è¡ãããGoogle Cloud äžã® Kubernetes ãå©çšããŸãã ããã«ã圌ãã¯ä»äºã§ããŸããŸãªããŒã¿ãåæããŒã«ã䜿çšããŸãã
Family Insurance ã¯ãã³ã³ãããŒã®äœ¿çšãéå§ããããã§ã¯ãããŸããã§ããããDocker ã®ç±æã«å·»ã蟌ãŸããŸããã å瀟ã¯ããã«ãGKE ã䜿çšãããšãæ°ããæ©èœããã¹ãããããã®ã¯ã©ã¹ã¿ã®ãããã€ãç°¡åã«ãªãããšã«æ°ã¥ããŸããã CI ãš Quay çšã® Jenkins ã¯ã³ã³ãã ã¬ãžã¹ããªãæŽçããããã«è¿œå ãããæ°ããã³ã³ãããšæ§æã GKE ã«ããã·ã¥ããã¹ã¯ãªããã Jenkins çšã«äœæãããŸããã
ãã°ããæéãçµéããŸããã ã¢ãªã¹ãšããã¯ãèªåãã¡ãéžæããã¢ãããŒãã®ããã©ãŒãã³ã¹ãšããããããžãã¹ã«åãŒã圱é¿ã«å€±æããŸããã ã³ã³ããã®å°å ¥ã«ãã£ãŠãããŒã ãæåŸ ããŠããã»ã©çç£æ§ã¯åäžããŸããã§ããã å Žåã«ãã£ãŠã¯ãããã€ã¡ã³ããäžæãããããšããããŸããããã³ãŒãã®å€æŽãåå ãã©ããã¯äžæã§ããã ãŸããæ§æã®å€æŽã远跡ããã®ãé£ããããšãå€æããŸããã å€ãã®å Žåãæ°ããã¯ã©ã¹ã¿ãŒãäœæããŠããã«ã¢ããªã±ãŒã·ã§ã³ã移åããå¿ èŠããããŸãããããã¯ãã·ã¹ãã ã®æ··ä¹±ã解æ¶ããæãç°¡åãªæ¹æ³ã ã£ãããã§ãã ã¢ãªã¹ã¯ãã¢ããªã±ãŒã·ã§ã³ãéçºãããã«ã€ããŠç¶æ³ãæªåããã®ã§ã¯ãªãããšå¿é ããŠããŸãã (ããã«ãæ©æ¢°åŠç¿ã«åºã¥ããæ°ãããããžã§ã¯ããæºåãããŠããŸãã)ã ããã¯äœæ¥ã®ã»ãšãã©ãèªååããŠããŸãããããã€ãã©ã€ã³ãäŸç¶ãšããŠäžå®å®ã§ãé©åã«æ¡åŒµã§ãããå®æçã«æåä»å ¥ãå¿ èŠã§ããçç±ãç解ããŠããŸããã§ããã
次ã«ãGitOps ã«ã€ããŠåŠã³ãŸããã ãã®æ±ºå®ã¯ããŸãã«åœŒããèªä¿¡ãæã£ãŠåé²ããããã«å¿ èŠãªãã®ã§ããããšãå€æããŸããã
ã¢ãªã¹ãšããã¯ãGitãDevOpsãããã³ã³ãŒã ã¯ãŒã¯ãããŒãšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«ã€ããŠäœå¹ŽãèããŠããŸããã GitOps ã®ãŠããŒã¯ãªç¹ã¯ãKubernetes ã®ã³ã³ããã¹ãã§ãããã®ã¢ã€ãã¢ãå®è£
ããããã®ã決å®çãã€èŠç¯çãªäžé£ã®ãã¹ã ãã©ã¯ãã£ã¹ãæäŸããããšã§ãã ãã®ããŒã
Family Insurance 㯠GitOps ãå°å ¥ããããšã決å®ããŸããã å瀟ã¯çŸåšãKubernetes ãšäºææ§ã®ããèªåéçšã¢ãã«ãæ§ç¯ãã ã¹ããŒã ãšãšãââã« å®å®æ§ãªããªã圌ãïŒ
- 誰ãæ°ãçãããšãªããããŒã ã®çç£æ§ã XNUMX åã«ãªã£ãããšãçºèŠããŸããã
- ã¹ã¯ãªããã®æäŸãåæ¢ããŸããã 代ããã«ãæ°æ©èœã«çŠç¹ãåœãŠããšã³ãžãã¢ãªã³ã°ææ³ãæ¹åã§ããããã«ãªããŸãããããšãã°ãã«ããªã¢ ããŒã«ã¢ãŠãã®å°å ¥ããã¹ãã®æ¹åãªã©ã§ãã
- å°å ¥ããã»ã¹ãæ¹åããããã£ãã«å€±æããªãããã«ãªããŸããã
- éšåçãªé害ãçºçããåŸãæåä»å ¥ãªãã§å±éã埩å ããæ©äŒãåŸãããŸããã
- äžå€ã§è³Œå ¥ããПé éã·ã¹ãã ã«å¯Ÿãããããªãä¿¡é Œã ã¢ãªã¹ãšããã¯ãããŒã ã䞊è¡ããŠäœæ¥ãããã€ã¯ããµãŒãã¹ ããŒã ã«åå²ã§ããããšãçºèŠããŸããã
- åã°ã«ãŒãã®åªåãéããŠæ¯æ¥ãããžã§ã¯ãã« 30 ïœ 50 ã®å€æŽãå ããæ°ããæè¡ãè©Šãããšãã§ããŸãã
- æ°ããéçºè ããããžã§ã¯ãã«åŒãä»ããã®ã¯ç°¡åã§ãéçºè ã¯æ°æé以å ã«ãã« ãªã¯ãšã¹ãã䜿çšããŠæ¬çªç°å¢ã«æŽæ°ãããŒã«ã¢ãŠãããæ©äŒãåŸãããšãã§ããŸãã
- SOC2ã®æ çµã¿å
ã§ç£æ»ã«ç°¡åã«åæ Œ (ãµãŒãã¹ãããã€ããŒãå®å
šãªããŒã¿ç®¡çã®èŠä»¶ã«æºæ ãããããããšãã°ãç¶ããèªã)
ãã㧠â çŽç¿»èš³ïŒ.
äœãèµ·ãã£ãã®ãïŒ
GitOps ã«ã¯æ¬¡ã® XNUMX ã€ã®èŠçŽ ããããŸãã
- Kubernetes ãšã¯ã©ãŠã ãã€ãã£ãã®éçšã¢ãã«ã ã³ã³ãããŒåãããã¯ã©ã¹ã¿ãŒãšã¢ããªã±ãŒã·ã§ã³ããããã€ã管çãç£èŠããããã®äžé£ã®ãã¹ã ãã©ã¯ãã£ã¹ãæäŸããŸãã ãšã¬ã¬ã³ããªãã©ã«ã ã®å®çŸ©
XNUMX ã€ã®ã¹ã©ã€ã ããã«ã€ã¹ã»ãã¡ã»ã€ã© : - éçºè äžå¿ã®ã¢ããªã±ãŒã·ã§ã³ç®¡çç°å¢ãæ§ç¯ããããã®ãã¹ã Git ã¯ãŒã¯ãããŒãéçšãšéçºã®äž¡æ¹ã«é©çšããŸãã ãã㯠Git ããã·ã¥ã ãã«é¢ãããã®ã§ã¯ãªããCI/CD ããã³ UI/UX ããŒã«ã®ã»ããå šäœã®æŽçã«é¢ãããã®ã§ããããšã«æ³šæããŠãã ããã
Git ã«ã€ããŠäžèš
ããŒãžã§ã³ç®¡çã·ã¹ãã ãš Git ããŒã¹ã®ã¯ãŒã¯ãããŒã«æ
£ããŠããªãå Žåã¯ããããã«ã€ããŠåŠã¶ããšã匷ããå§ãããŸãã ãã©ã³ããšãã«ãªã¯ãšã¹ãã®æäœã¯ãæåã¯é»éè¡ã®ããã«æãããããããŸãããããã®ã¡ãªããã¯åªåãã䟡å€ããããŸãã ãã
Kubernetes ã®ä»çµã¿
ç§ãã¡ã®ç©èªã§ã¯ãã¢ãªã¹ãšããã¯ããã°ãã Kubernetes ã䜿çšããåŸãGitOps ã«ç®ãåããŸããã å®éãGitOps 㯠Kubernetes ãšå¯æ¥ã«é¢ä¿ããŠãããKubernetes ã«åºã¥ãã€ã³ãã©ã¹ãã©ã¯ãã£ãšã¢ããªã±ãŒã·ã§ã³ã®éçšã¢ãã«ã§ãã
Kubernetes ã¯ãŠãŒã¶ãŒã«äœãæäŸããŸãã?
以äžã«äž»ãªæ©èœãããã€ã瀺ããŸãã
- Kubernetes ã¢ãã«ã§ã¯ããã¹ãŠã宣èšåœ¢åŒã§èšè¿°ã§ããŸãã
- Kubernetes API ãµãŒããŒã¯ãã®å®£èšãå ¥åãšããŠåãåããã¯ã©ã¹ã¿ãŒã宣èšã«èšè¿°ãããŠããç¶æ ã«ããããšç¶ç¶çã«è©Šã¿ãŸãã
- 宣èšã¯ãããŸããŸãªã¯ãŒã¯ããŒã (ãã¢ããªã±ãŒã·ã§ã³ã) ãèšè¿°ããã³ç®¡çããã®ã«ååã§ãã
- ãã®çµæã次ã®ãããªçç±ã§ã¢ããªã±ãŒã·ã§ã³ãšã¯ã©ã¹ã¿ãŒã«å€æŽãçºçããŸãã
- ã³ã³ããã€ã¡ãŒãžã®å€æŽã
- 宣èšçãªä»æ§ã®å€æŽã
- ç°å¢å ã®ãšã©ãŒ - ã³ã³ããã®ã¯ã©ãã·ã¥ãªã©ã
Kubernetes ã®åªããã³ã³ããŒãžã§ã³ã¹æ©èœ
管çè ãæ§æãå€æŽãããšãKubernetes ãªãŒã±ã¹ãã¬ãŒã¿ãŒã¯ãã¯ã©ã¹ã¿ãŒã®ç¶æ ã以äžã§ããéãããã®å€æŽãã¯ã©ã¹ã¿ãŒã«é©çšããŸãã æ°ããæ§æã«ã¯è¿ã¥ããŸããã ãã®ã¢ãã«ã¯ãããã Kubernetes ãªãœãŒã¹ã§æ©èœããã«ã¹ã¿ã ãªãœãŒã¹å®çŸ© (CRD) ã䜿çšããŠæ¡åŒµã§ããŸãã ãããã£ãŠãKubernetes ãããã€ã¡ã³ãã«ã¯æ¬¡ã®ãããªçŽ æŽãããç¹æ§ããããŸãã
- ãªãŒãã¡ãŒã·ã§ã³: Kubernetes ã¢ããããŒãã¯ãå€æŽãé©åãã€ã¿ã€ã ãªãŒã«é©çšããããã»ã¹ãèªååããã¡ã«ããºã ãæäŸããŸãã
- åæ: Kubernetes ã¯æåãããŸã§æŽæ°ãè©Šè¡ãç¶ããŸãã
- ã¹ãçæ§: åæãç¹°ãè¿ãé©çšãããšãåãçµæãåŸãããŸãã
- 決å®è«: ãªãœãŒã¹ãååãªå ŽåãæŽæ°ãããã¯ã©ã¹ã¿ãŒã®ç¶æ ã¯æãŸããç¶æ ã®ã¿ã«äŸåããŸãã
GitOps ã®ä»çµã¿
Kubernetes ã«ã€ããŠã¯ãGitOps ãã©ã®ããã«æ©èœãããã説æã§ããã»ã©åŠç¿ããŸããã
Family Insurance ã®ãã€ã¯ããµãŒãã¹ ããŒã ã«æ»ããŸãããã 圌ãã¯æ®æ®µäœãããªããã°ãªããªãã®ã§ããããïŒ ä»¥äžã®ãªã¹ããèŠãŠãã ãã (ãã®äžã«å¥åŠãŸãã¯èŠæ £ããªãé ç®ãããå Žåã¯ãæ¹å€ãæ§ããŠããä»ãåããã ãã)ã ãããã¯ãJenkins ããŒã¹ã®ã¯ãŒã¯ãããŒã®åãªãäŸã§ãã ä»ã®ããŒã«ã䜿çšããå Žåã¯ãä»ã«ãå€ãã®ããã»ã¹ããããŸãã
éèŠãªããšã¯ãåæŽæ°ãæ§æãã¡ã€ã«ãš Git ãªããžããªãžã®å€æŽã§çµäºããããšãããããŸãã Git ã«å¯Ÿãããããã®å€æŽã«ããããGitOps ãªãã¬ãŒã¿ãŒããã¯ã©ã¹ã¿ãŒãæŽæ°ããŸãã
1.äœæ¥ããã»ã¹: "Jenkins ãã«ã - ãã¹ã¿ãŒ ãã©ã³ã'ã
ã¿ã¹ã¯ãªã¹ãïŒ
- Jenkins ã¯ã¿ã°ä»ããããç»åã Quay ã«ããã·ã¥ããŸãã
- Jenkins ã¯ãæ§æãã£ãŒããš Helm ãã£ãŒãããã¹ã¿ãŒ ã¹ãã¬ãŒãž ãã±ããã«ããã·ã¥ããŸãã
- ã¯ã©ãŠãæ©èœã¯ãæ§æãšãã£ãŒãããã¹ã¿ãŒ ã¹ãã¬ãŒãž ãã±ãããããã¹ã¿ãŒ Git ãªããžããªã«ã³ããŒããŸãã
- GitOps ãªãã¬ãŒã¿ãŒã¯ã¯ã©ã¹ã¿ãŒãæŽæ°ããŸãã
2. Jenkins ãã«ã - ãªãªãŒã¹ãŸãã¯ããããã£ãã¯ã¹ ãã©ã³ã:
- Jenkins ã¯ã¿ã°ãªãã®ç»åã Quay ã«ããã·ã¥ããŸãã
- Jenkins ã¯ãæ§æãã£ãŒããš Helm ãã£ãŒããã¹ããŒãžã³ã° ã¹ãã¬ãŒãž ãã±ããã«ããã·ã¥ããŸãã
- ã¯ã©ãŠãæ©èœã¯ãæ§æãšãã£ãŒããã¹ããŒãžã³ã° ã¹ãã¬ãŒãž ãã±ããããã¹ããŒãžã³ã° Git ãªããžããªã«ã³ããŒããŸãã
- GitOps ãªãã¬ãŒã¿ãŒã¯ã¯ã©ã¹ã¿ãŒãæŽæ°ããŸãã
3. Jenkins ãã«ã - éçºãŸãã¯æ©èœãã©ã³ã:
- Jenkins ã¯ã¿ã°ãªãã®ç»åã Quay ã«ããã·ã¥ããŸãã
- Jenkins ã¯ãæ§æãã£ãŒããš Helm ãã£ãŒããéçºã¹ãã¬ãŒãž ãã±ããã«ããã·ã¥ããŸãã
- ã¯ã©ãŠãæ©èœã¯ãæ§æãšãã£ãŒããéçºã¹ãã¬ãŒãž ãã±ããããéçº Git ãªããžããªã«ã³ããŒããŸãã
- GitOps ãªãã¬ãŒã¿ãŒã¯ã¯ã©ã¹ã¿ãŒãæŽæ°ããŸãã
4. æ°ããã¯ã©ã€ã¢ã³ãã®è¿œå :
- ãããŒãžã£ãŒãŸãã¯ç®¡çè (LCM/ops) 㯠Gradle ãåŒã³åºããŠãæåã«ãããã¯ãŒã¯ ããŒã ãã©ã³ãµãŒ (NLB) ãå±éããŠæ§æããŸãã
- LCM/ops ã¯ãæ°ããæ§æãã³ãããããŠãæŽæ°çšã®ãããã€ã¡ã³ããæºåããŸãã
- GitOps ãªãã¬ãŒã¿ãŒã¯ã¯ã©ã¹ã¿ãŒãæŽæ°ããŸãã
GitOps ã®ç°¡åãªèª¬æ
- åç°å¢ã®å®£èšä»æ§ã䜿çšããŠãã·ã¹ãã å
šäœã®æãŸããç¶æ
ãèšè¿°ããŸã (ãã®ã¹ããŒãªãŒã§ã¯ãBob ã®ããŒã 㯠Git ã§ã·ã¹ãã æ§æå
šäœãå®çŸ©ããŸã)ã
- Git ãªããžããªã¯ãã·ã¹ãã å šäœã®æãŸããç¶æ ã«é¢ããå¯äžã®ä¿¡é Œã§ããæ å ±æºã§ãã
- æãŸããç¶æ ãžã®ãã¹ãŠã®å€æŽã¯ãGit ã®ã³ããããéããŠè¡ãããŸãã
- å¿ èŠãªã¯ã©ã¹ã¿ãŒ ãã©ã¡ãŒã¿ãŒã¯ãã¹ãŠãã¯ã©ã¹ã¿ãŒèªäœã§ãç£èŠã§ããŸãã ãã®ããã«ããŠãããããäžèŽãã (åæãã) ãã©ãããå€æã§ããŸãã åæãã) ãŸãã¯ç°ãªã (çºæ£ã çºæ£ãã) æãŸããç¶æ ãšèŠ³å¯ãããç¶æ ã
- æãŸããç¶æ
ãšèŠ³å¯ãããç¶æ
ãç°ãªãå Žåã¯ã次ã®ããã«ãªããŸãã
- é ããæ©ããã¿ãŒã²ãããšèŠ³æž¬ãããç¶æ ãèªåçã«åæãããåæã¡ã«ããºã ããããŸãã ã¯ã©ã¹ã¿ãŒå ã§ã¯ãKubernetes ããããè¡ããŸãã
- ããã»ã¹ã¯ããã«éå§ããããå€æŽãã³ããããããŸããããšããã¢ã©ãŒãã衚瀺ãããŸãã
- èšå®å¯èœãªäžå®ã®æéãçµéãããšãç¶æ ãç°ãªãå Žåã«ãdiffãã¢ã©ãŒããéä¿¡ã§ããŸãã
- ãã®ããã«ããŠãGit å
ã®ãã¹ãŠã®ã³ãããã«ãããã¯ã©ã¹ã¿ãŒã«å¯Ÿããæ€èšŒå¯èœãã€åªçã®æŽæ°ãè¡ãããŸãã
- ããŒã«ããã¯ãšã¯ã以åã«æãŸããç¶æ ã«åæããããšã§ãã
- åæã¯æçµçã§ãã ãã®çºçã¯æ¬¡ã®ããã«ç€ºãããŸãã
- äžå®æéãå·®åã¢ã©ãŒãããããŸããã
- ãåæãã¢ã©ãŒã (WebhookãGit ã©ã€ããã㯠ã€ãã³ããªã©)ã
ãã€ããŒãžã§ã³ã¹ãšã¯äœã§ãã?
ããäžåºŠç¹°ãè¿ããŠã¿ãŸããã: å¿ èŠãªãã¹ãŠã®ã¯ã©ã¹ã¿ãŒ ããããã£ãã¯ã©ã¹ã¿ãŒèªäœã§ç£èŠå¯èœã§ããå¿ èŠããããŸã.
çžéã®äŸãããã€ã瀺ããŸãã
- Git ã®ãã©ã³ãã®ããŒãžã«ããæ§æãã¡ã€ã«ã®å€æŽã
- GUI ã¯ã©ã€ã¢ã³ãã«ãã£ãŠè¡ããã Git ã³ãããã«ããæ§æãã¡ã€ã«ã®å€æŽã
- Git ã§ã® PR ã«ããæãŸããç¶æ ãžã®è€æ°ã®å€æŽããã®åŸã®ã³ã³ãã㌠ã€ã¡ãŒãžã®ãã«ããšæ§æã®å€æŽã
- ãšã©ãŒããäžæ£ãªåäœããåŒãèµ·ãããªãœãŒã¹ã®ç«¶åããŸãã¯å ã®ç¶æ ããã®åçŽãªã©ã³ãã ãªéžè±ã«ããã¯ã©ã¹ã¿ãŒã®ç¶æ ã®å€åã
åæã®ã¡ã«ããºã ã¯äœã§ãã?
ããã€ãã®äŸïŒ
- ã³ã³ãããŒãšã¯ã©ã¹ã¿ãŒã®å Žåãåæã¡ã«ããºã 㯠Kubernetes ã«ãã£ãŠæäŸãããŸãã
- åãã¡ã«ããºã ã䜿çšããŠãKubernetes ããŒã¹ã®ã¢ããªã±ãŒã·ã§ã³ãšèšèš (Istio ã Kubeflow ãªã©) ã管çã§ããŸãã
- Kubernetesãã€ã¡ãŒãž ãªããžããªãGit éã®éçšäžã®çžäºäœçšã管çããã¡ã«ããºã ã
GitOps ãªãã¬ãŒã¿ãŒ Weave Flux ã®äžéšã§ããŠã£ãŒãã¯ã©ãŠã . - ããŒã¹ ãã·ã³ã®å Žåãåæã¡ã«ããºã ã¯å®£èšçãã€èªåŸçã§ããå¿
èŠããããŸãã ç§ãã¡èªèº«ã®çµéšããèšããŸããã
ãã©ãã©ãŒã ãã®å®çŸ©ã«æãè¿ããã®ã§ãããããã§ã人éã«ããå¶åŸ¡ãå¿ èŠã§ãã ãã®æå³ã§ãGitOps ã¯ã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®äŒçµ±ãæ¡åŒµããŸãã
GitOps ã¯ãGit ãš Kubernetes ã®åªããã³ã³ããŒãžã§ã³ã¹ ãšã³ãžã³ãçµã¿åãããŠã掻çšã¢ãã«ãæäŸããŸãã
GitOps ã䜿çšãããšã次ã®ããšãå¯èœã«ãªããŸãã èšè¿°ããã³èŠ³å¯ã§ããã·ã¹ãã ã®ã¿ãèªååããã³å¶åŸ¡ã§ããŸãã.
GitOps ã¯ãã¯ã©ãŠã ãã€ãã£ã ã¹ã¿ãã¯å šäœ (Terraform ãªã©) ã察象ãšããŠããŸãã
GitOps ã¯åãªã Kubernetes ã§ã¯ãããŸããã ã·ã¹ãã å šäœã宣èšçã«é§åããã³ã³ããŒãžã§ã³ã¹ã䜿çšããããšèããŠããŸãã ã·ã¹ãã å šäœãšã¯ãKubernetes ã§åäœããç°å¢ã®ã³ã¬ã¯ã·ã§ã³ (ããšãã°ããéçºã¯ã©ã¹ã¿ãŒ 1ãããå®çšŒåããªã©) ãæå³ããŸããåç°å¢ã«ã¯ããã·ã³ãã¯ã©ã¹ã¿ãŒãã¢ããªã±ãŒã·ã§ã³ã«å ããããŒã¿ãã¢ãã¿ãªã³ã°ãæäŸããå€éšãµãŒãã¹ã®ã€ã³ã¿ãŒãã§ã€ã¹ãå«ãŸããŸãããªã©
ãã®å ŽåãããŒãã¹ãã©ããåé¡ã«ãšã£ãŠ Terraform ãããã«éèŠã§ãããã«æ³šç®ããŠãã ããã Kubernetes ã¯ã©ããã«ãããã€ããå¿ èŠããããŸãããTerraform ã䜿çšãããšãåã GitOps ã¯ãŒã¯ãããŒãé©çšããŠãKubernetes ãšã¢ããªã±ãŒã·ã§ã³ã®åºç€ãšãªãå¶åŸ¡å±€ãäœæã§ããããšã«ãªããŸãã ããã¯åœ¹ç«ã€ãã¹ã ãã©ã¯ãã£ã¹ã§ãã
GitOps ã®æŠå¿µã Kubernetes äžã®ã¬ã€ã€ãŒã«é©çšããããšã«éç¹ã眮ãããŠããŸãã çŸæç¹ã§ã¯ãIstioãHelmãKsonnetãOpenFaaSãKubeflow çšã® GitOps ã¿ã€ãã®ãœãªã¥ãŒã·ã§ã³ã®ã»ããããšãã° Pulumi çšã®ãœãªã¥ãŒã·ã§ã³ããããã¯ã©ãŠã ãã€ãã£ãçšã®ã¢ããªã±ãŒã·ã§ã³ãéçºããããã®ã¬ã€ã€ãŒãäœæããŸãã
Kubernetes CI/CD: GitOps ãšä»ã®ã¢ãããŒãã®æ¯èŒ
åè¿°ããããã«ãGitOps ã«ã¯æ¬¡ã® XNUMX ã€ã®èŠçŽ ããããŸãã
- äžã§èª¬æãã Kubernetes ãšã¯ã©ãŠã ãã€ãã£ãã®ãªãã¬ãŒãã£ã³ã° ã¢ãã«ã
- éçºè äžå¿ã®ã¢ããªã±ãŒã·ã§ã³ç®¡çç°å¢ãžã®ãã¹ã
å€ãã®äººã«ãšã£ãŠãGitOps ã¯äž»ã« Git ããã·ã¥ã«åºã¥ãã¯ãŒã¯ãããŒã§ãã ç§ãã¡ã圌ã®ããšã奜ãã§ãã ããããããã ãã§ã¯ãããŸããã次ã«ãCI/CD ãã€ãã©ã€ã³ãèŠãŠã¿ãŸãããã
GitOps ã«ãã Kubernetes ã®ç¶ç¶çããã〠(CD) ãå¯èœã«ãªããŸã
GitOps ã¯ãåå¥ã®ããããã€ã¡ã³ã管çã·ã¹ãã ãã®å¿ èŠæ§ãæé€ããç¶ç¶çãããã€ã¡ã³ã ã¡ã«ããºã ãæäŸããŸãã Kubernetes ããã¹ãŠã®äœæ¥ãè¡ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ããã«ã¯ãGit ã§ã®æŽæ°ãå¿ èŠã§ãã ããã¯ãæãŸããç¶æ ãžã®ãã©ã³ã¶ã¯ã·ã§ã³æŽæ°ã§ãã ãã®åŸãæŽæ°ããã説æã«åºã¥ããŠãKubernetes èªäœã«ãã£ãŠã¯ã©ã¹ã¿ãŒå ã§ããããã€ããè¡ãããŸãã
- Kubernetes ã®åäœã®æ§è³ªäžããããã®æŽæ°ã¯éäžçã§ãã ããã«ããããã¹ãŠã®æŽæ°ãã¢ãããã¯ã§ããç¶ç¶çãªå±éã®ã¡ã«ããºã ãæäŸãããŸãã
- 泚æïŒ
ãŠã£ãŒãã¯ã©ãŠã ã¯ãGit ãš Kubernetes ãçµ±åããã¯ã©ã¹ã¿ãŒã®æãŸããç¶æ ãšçŸåšã®ç¶æ ã調æŽã㊠CD ãå®è¡ã§ããããã«ãã GitOps ãªãã¬ãŒã¿ãŒãæäŸããŸãã
kubectl ãšã¹ã¯ãªãããªã
ã¯ã©ã¹ã¿ãŒã®æŽæ°ã« Kubectl ã䜿çšããããšã¯é¿ããç¹ã«ã¹ã¯ãªããã䜿çšã㊠kubectl ã³ãã³ããã°ã«ãŒãåããããšã¯é¿ããŠãã ããã 代ããã«ãGitOps ãã€ãã©ã€ã³ã䜿çšãããšããŠãŒã¶ãŒã¯ Git çµç±ã§ Kubernetes ã¯ã©ã¹ã¿ãŒãæŽæ°ã§ããŸãã
å©ç¹ã¯æ¬¡ã®ãšããã§ãã
- å³ã äžé£ã®æŽæ°ãé©çšãçµ±åããæçµçã«æ€èšŒããããšã§ãã¢ãããã¯ãªãããã€ã®ç®æšã«è¿ã¥ãããšãã§ããŸãã å¯Ÿç §çã«ãã¹ã¯ãªããã䜿çšããŠããåæã®ä¿èšŒã¯ãããŸãã (ããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸã)ã
- ã»ãã¥ãªãã£.
åŒçš Kelsey Hightower: ãKubernetes ã¯ã©ã¹ã¿ãŒãžã®ã¢ã¯ã»ã¹ã¯ãèªååããŒã«ãšããããã°ãŸãã¯ä¿å®ãæ åœãã管çè ã«å¶éããŠãã ãããã ãã¡ããåç §ç§ã®åºçç© å®å šæ§ãšæè¡ä»æ§ãžã®æºæ ã«ã€ããŠããŸãHomebrew ã®ãããã³ã°ã«é¢ããèšäº äžçšæã«æžããã Jenkins ã¹ã¯ãªããããè³æ Œæ å ±ãçãããšã«ãã£ãŠã - ãŠãŒã¶ãŒäœéšã Kubectl ã¯ãéåžžã«è€é㪠Kubernetes ãªããžã§ã¯ã ã¢ãã«ã®ä»çµã¿ãå
¬éããŸãã çæ³çã«ã¯ããŠãŒã¶ãŒã¯ããé«ãæœè±¡ã¬ãã«ã§ã·ã¹ãã ãšå¯Ÿè©±ããå¿
èŠããããŸãã ããã§ç§ã¯åã³ã±ã«ã·ãŒã«èšåããèŠèŽããããšããå§ãããŸã
ãã®ãããªå±¥æŽæž .
CIãšCDã®éã
GitOps ã¯æ¢åã® CI/CD ã¢ãã«ãæ¹åããŸãã
ææ°ã® CI ãµãŒããŒã¯ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ ããŒã«ã§ãã ç¹ã«ããã㯠CI ãã€ãã©ã€ã³ã調æŽããããã®ããŒã«ã§ãã ãããã«ã¯ããã«ãããã¹ãããã©ã³ã¯ãžã®ããŒãžãªã©ãå«ãŸããŸããCI ãµãŒããŒã¯ãè€éãªè€æ°ã¹ãããã®ãã€ãã©ã€ã³ã®ç®¡çãèªååããŸãã ããããèªæã¯ãKubernetes æŽæ°ã®ã»ãããã¹ã¯ãªããåããããããã€ãã©ã€ã³ã®äžéšãšããŠå®è¡ããŠå€æŽãã¯ã©ã¹ã¿ãŒã«ããã·ã¥ããããšã§ãã å®éãããã¯å€ãã®å°é家ãè¡ã£ãŠããããšã§ãã ãã ããããã¯æé©ã§ã¯ãããŸããããã®çç±ã¯æ¬¡ã®ãšããã§ãã
æŽæ°ããã©ã³ã¯ã«ããã·ã¥ããã«ã¯ CI ã䜿çšããå¿
èŠããããKubernetes ã¯ã©ã¹ã¿ãŒã¯ãããã®æŽæ°ã«åºã¥ããŠèªäœãå€æŽããŠãCD ãå
éšã§ç®¡çããå¿
èŠããããŸãã ç§ãã¡ã¯ãããããåŒãã§ããŸã
CI ãµãŒããŒã Kubernetes ã®çŽæ¥æŽæ°ãä»ã㊠CD ãå®è¡ãã¹ãã§ã¯ãªãçç±
Kubernetes ãžã®çŽæ¥æŽæ°ãäžé£ã® CI ãžã§ããšããŠèª¿æŽããããã« CI ãµãŒããŒã䜿çšããªãã§ãã ããã ãããç§ãã¡ã話ããŠããã¢ã³ããã¿ãŒã³ã§ã
ã¢ãªã¹ãšããã®è©±ã«æ»ããŸãããã
圌ãã¯ã©ã®ãããªåé¡ã«çŽé¢ããŸããã? ããã® CI ãµãŒããŒã¯å€æŽãã¯ã©ã¹ã¿ãŒã«é©çšããŸããããã®ããã»ã¹äžã«ã¯ã©ãã·ã¥ããå Žåãããã¯ã¯ã©ã¹ã¿ãŒãã©ã®ãããªç¶æ ã«ãã (ãŸãã¯ããã¹ãã§ãã) ã®ãããŸããããä¿®æ£ããæ¹æ³ãããããŸããã æåããå Žåãåæ§ã§ãã
Bob ã®ããŒã ãæ°ããã€ã¡ãŒãžãæ§ç¯ãããã®ã€ã¡ãŒãžããããã€ããããã«ãããã€ã¡ã³ãã«ããããé©çšãããšä»®å®ããŸã (ãã¹ãŠ CI ãã€ãã©ã€ã³ãã)ã
ã€ã¡ãŒãžãæ£åžžã«ãã«ããããŠããã€ãã©ã€ã³ã倱æããå ŽåãããŒã ã¯æ¬¡ã®ããšã解決ããå¿ èŠããããŸãã
- ã¢ããããŒãã¯å±éãããŸããã?
- æ°ãããã«ããèµ·åããã®ã§ãããã? ããã«ãããåãäžå€ã€ã¡ãŒãžã® XNUMX ã€ã®ãã«ããååšããå¯èœæ§ãªã©ãäžå¿ èŠãªå¯äœçšãçºçããå¯èœæ§ããããŸãã?
- ãã«ããå®è¡ããåã«æ¬¡ã®ã¢ããããŒããåŸ ã£ãã»ããããã§ãããã?
- æ£ç¢ºã«äœãééã£ãŠããã®ã§ãããã? ã©ã®ã¹ããããç¹°ãè¿ãå¿ èŠããããŸãã (ãŸããã©ã®ã¹ããããç¹°ãè¿ããŠãå®å šã§ãã)?
Git ããŒã¹ã®ã¯ãŒã¯ãããŒã確ç«ããŠããBob ã®ããŒã ããããã®åé¡ã«ééããªããšããä¿èšŒã¯ãããŸããã ã³ãããããã·ã¥ãã¿ã°ããã®ä»ã®ãã©ã¡ãŒã¿ã§ééããç¯ãå¯èœæ§ã¯äŸç¶ãšããŠãããŸãã ãã ãããã®ã¢ãããŒãã¯äŸç¶ãšããŠãæ瀺çãªå šãç¡ãã®ã¢ãããŒãã«ã¯ããã«è¿ããã®ã§ãã
èŠçŽãããšãCI ãµãŒããŒã CD ãåŠçãã¹ãã§ã¯ãªãçç±ã¯æ¬¡ã®ãšããã§ãã
- æŽæ°ã¹ã¯ãªããã¯åžžã«æ±ºå®çã§ãããšã¯éããŸããã ééããç¯ããããã®ã§ãã
- CI ãµãŒããŒã¯å®£èšåã¯ã©ã¹ã¿ãŒ ã¢ãã«ã«åæããŸããã
- åªçæ§ãä¿èšŒããã®ã¯å°é£ã§ãã ãŠãŒã¶ãŒã¯ã·ã¹ãã ã®è©³çŽ°ãªã»ãã³ãã£ã¯ã¹ãç解ããå¿ èŠããããŸãã
- éšåçãªé害ããå埩ããããšã¯ããå°é£ã§ãã
Helm ã«é¢ãã泚æ: Helm ã䜿çšããå Žåã¯ãHelm ã次ã®ãã㪠GitOps ãªãã¬ãŒã¿ãŒãšçµã¿åãããããšããå§ãããŸãã
Kubernetes ã®ç¶ç¶çããªããªãŒãå®è£ ããæè¯ã®æ¹æ³ãšããŠã® GitOps
ã¢ãªã¹ãšããã®ããŒã 㯠GitOps ãå®è£ ãããœãããŠã§ã¢è£œåã®æäœãã¯ããã«ç°¡åã«ãªããé«ãããã©ãŒãã³ã¹ãšå®å®æ§ãç¶æã§ããããšã«æ°ã¥ããŸããã 圌ãã®æ°ããã¢ãããŒããã©ã®ãããªãã®ãã瀺ãå³ã§ãã®èšäºãçµããŸãããã ããã§ã¯äž»ã«ã¢ããªã±ãŒã·ã§ã³ãšãµãŒãã¹ã«ã€ããŠè©±ããŸãããGitOps ã䜿çšããŠãã©ãããã©ãŒã å šäœã管çã§ããããšã«æ³šæããŠãã ããã
Kubernetesã®ãªãã¬ãŒãã£ã³ã°ã¢ãã«
次ã®å³ãèŠãŠãã ããã ããã¯ãGit ãšã³ã³ãã㌠ã€ã¡ãŒãž ãªããžããªãã次㮠XNUMX ã€ã®èª¿æŽãããã©ã€ããµã€ã¯ã«ã®å ±æãªãœãŒã¹ãšããŠæäŸããŸãã
- Git ã«å¯ŸããŠãã¡ã€ã«ãèªã¿æžãããã³ã³ãã㌠ã€ã¡ãŒãžã®ãªããžããªãæŽæ°ã§ããç¶ç¶ççµ±åãã€ãã©ã€ã³ã
- ãããã€ã¡ã³ããšç®¡çããã³å¯èŠ³æž¬æ§ãçµã¿åãããã©ã³ã¿ã€ã GitOps ãã€ãã©ã€ã³ã Git ã«å¯ŸããŠãã¡ã€ã«ã®èªã¿åããšæžã蟌ã¿ãè¡ããã³ã³ãã㌠ã€ã¡ãŒãžãããŠã³ããŒãã§ããŸãã
äž»ãªçºèŠã¯äœã§ãã?
- é¢å¿äºã®åé¢æ³šïŒäž¡æ¹ã®ãã€ãã©ã€ã³ã¯ãGit ãŸãã¯ã€ã¡ãŒãž ãªããžããªãæŽæ°ããããšã«ãã£ãŠã®ã¿éä¿¡ã§ããããšã«æ³šæããŠãã ããã èšãæããã°ãCI ãšã©ã³ã¿ã€ã ç°å¢ã®éã«ã¯ãã¡ã€ã¢ãŠã©ãŒã«ããããŸãã ç§ãã¡ã¯ããããäžå€ãã¡ã€ã¢ãŠã©ãŒã«ããšåŒãã§ããŸãã (äžå€ãã¡ã€ã¢ãŠã©ãŒã«)ããã¹ãŠã®ãªããžããªæŽæ°ã«ããæ°ããããŒãžã§ã³ãäœæãããããã§ãã ãã®ãããã¯ã®è©³çŽ°ã«ã€ããŠã¯ãã¹ã©ã€ã 72 ïœ 87 ãåç
§ããŠãã ããã
ãã®ãã¬ãŒã³ããŒã·ã§ã³ . - ä»»æã® CI ããã³ Git ãµãŒããŒã䜿çšã§ããŸã: GitOps ã¯ããããã³ã³ããŒãã³ãã§åäœããŸãã ãæ°ã«å ¥ãã® CI ããã³ Git ãµãŒããŒãã€ã¡ãŒãž ãªããžããªããã¹ã ã¹ã€ãŒããåŒãç¶ã䜿çšã§ããŸãã åžå Žã«ããä»ã®ã»ãšãã©ãã¹ãŠã®ç¶ç¶çããªããªãŒ ããŒã«ã«ã¯ãç¬èªã® CI/Git ãµãŒããŒãŸãã¯ã€ã¡ãŒãž ãªããžããªãå¿ èŠã§ãã ããã¯ãã¯ã©ãŠã ãã€ãã£ãã®éçºã«ãããå¶éèŠå ã«ãªãå¯èœæ§ããããŸãã GitOps ã䜿çšãããšã䜿ãæ £ããããŒã«ã䜿çšã§ããŸãã
- çµ±åããŒã«ãšããŠã®ã€ãã³ã: Git å ã®ããŒã¿ãæŽæ°ããããšããã«ãWeave Flux (ãŸã㯠Weave Cloud ãªãã¬ãŒã¿ãŒ) ãã©ã³ã¿ã€ã ã«éç¥ããŸãã Kubernetes ãå€æŽã»ãããåãå ¥ãããã³ã«ãGit ãæŽæ°ãããŸãã ããã«ããã以äžã«ç€ºãããã«ãGitOps ã®ã¯ãŒã¯ãããŒãæŽçããããã®ã·ã³ãã«ãªçµ±åã¢ãã«ãæäŸãããŸãã
ãŸãšã
GitOps ã¯ãææ°ã® CI/CD ããŒã«ã«å¿ èŠãªåŒ·åãªæŽæ°ä¿èšŒãæäŸããŸãã
- ãªãŒãã¡ãŒã·ã§ã³;
- åæ;
- ã¹ãçæ§ã
- 決å®äž»çŸ©ã
ããã¯ãã¯ã©ãŠã ãã€ãã£ãéçºè ã«éçšã¢ãã«ãæäŸãããããéèŠã§ãã
- ã·ã¹ãã ã管çããã³ç£èŠããããã®åŸæ¥ã®ããŒã«ã¯ãã©ã³ããã¯å ã§éçšããéçšããŒã ã«é¢é£ä»ããããŠããŸãã (äžé£ã®æ¥åžžçãªæé ãšæäœ - ããããã®ç¿»èš³)ãç¹å®ã®å±éã«é¢é£ä»ããããŠããŸãã
- ã¯ã©ãŠã ãã€ãã£ã管çã§ã¯ãéçºããŒã ãè¿ éã«å¯Ÿå¿ã§ããããã«ãå¯èŠ³æž¬æ§ããŒã«ã¯ãããã€ã¡ã³ãã®çµæã枬å®ããæè¯ã®æ¹æ³ã§ãã
ããŸããŸãªã¯ã©ãŠãã«åæ£ããå€æ°ã®ã¯ã©ã¹ã¿ãŒãšãç¬èªã®ããŒã ãšå±éèšç»ãæã€å€æ°ã®ãµãŒãã¹ãæ³åããŠãã ããã GitOps ã¯ããã®è±å¯ãªãã¹ãŠã管çããããã®ã¹ã±ãŒã«äžå€ã¢ãã«ãæäŸããŸãã
翻蚳è ããã®è¿œäŒž
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
GitOps: ãã«ã¡ãœãããšããã·ã¥ã¡ãœããã®æ¯èŒ "; - «
Kubernetes ãªãœãŒã¹ãç£èŠããããã® kubedog ã©ã€ãã©ãªã®çŽ¹ä» "; - «
Kubernetes ã®æ¡åŒµãšè£è¶³ (æŠèŠãšãã㪠ã¬ããŒã) 'ã
ç»é²ãŠãŒã¶ãŒã®ã¿ãã¢ã³ã±ãŒãã«åå ã§ããŸãã
ããã XNUMX ã€ã®ç¿»èš³ã Habré ã«æ²èŒãããåã«ãGitOps ã«ã€ããŠãåç¥ã§ããã?
-
ã¯ãããã¹ãŠç¥ã£ãŠããŸãã
-
è¡šé¢çã«ã ã
-
ããŒ
35 人ã®ãŠãŒã¶ãŒãæ祚ããŸããã 10åã®ãŠãŒã¶ãŒãæ£æš©ããã
åºæïŒ habr.com