Kubernetes ã¯ãã¯ã©ã¹ã¿ãŒåãããéçšç°å¢ã§ Docker ã³ã³ãããŒãå®è¡ããããã®åªããããŒã«ã§ãã ãã ããKubernetes ã§ã¯è§£æ±ºã§ããªãåé¡ããããŸãã é »ç¹ã«éçšç°å¢ããããã€ããå Žåã¯ãããã»ã¹ã®ããŠã³ã¿ã€ã ãåé¿ããããã«å®å šã«èªååããã Blue/Green ãããã€ã¡ã³ããå¿ èŠã§ãããŸããå€éš HTTP ãªã¯ãšã¹ããåŠçããSSL ãªãããŒããå®è¡ããå¿ èŠããããŸãã ããã«ã¯ãha-proxy ãªã©ã®ããŒã ãã©ã³ãµãŒãšã®çµ±åãå¿ èŠã§ãã ãã XNUMX ã€ã®èª²é¡ã¯ãã¯ã©ãŠãç°å¢ã§å®è¡ããå Žåã® Kubernetes ã¯ã©ã¹ã¿ãŒèªäœã®åèªåã¹ã±ãŒãªã³ã°ã§ã (ããšãã°ãå€éã«ã¯ã©ã¹ã¿ãŒãéšåçã«ã¹ã±ãŒã«ããŠã³ãããªã©)ã
Kubernetes ã«ã¯ãããã®æ©èœããã®ãŸãŸã§ã¯åãã£ãŠããŸããããåæ§ã®åé¡ã解決ããããã«äœ¿çšã§ãã API ãæäŸãããŠããŸãã Kubernetes ã¯ã©ã¹ã¿ãŒã®èªååããã Blue/Green ãããã€ã¡ã³ããšã¹ã±ãŒãªã³ã°ã®ããã®ããŒã«ã¯ããªãŒãã³ãœãŒã¹ã«åºã¥ããŠäœæããã Cloud RTI ãããžã§ã¯ãã®äžéšãšããŠéçºãããŸããã
ãã®èšäº (ãã㪠ãã©ã³ã¹ã¯ãªãã) ã§ã¯ãKubernetes ãä»ã®ãªãŒãã³ ãœãŒã¹ ã³ã³ããŒãã³ããšãšãã«ã»ããã¢ããããŠãæ¬çªç°å¢ã§ããŠã³ã¿ã€ã ãªã㧠git ã³ãããããã³ãŒããåãå ¥ããæ¬çªç°å¢ãäœæããæ¹æ³ã説æããŸãã
ãããã£ãŠãå€éšããã¢ããªã±ãŒã·ã§ã³ã«ã¢ã¯ã»ã¹ã§ããããã«ãªããšãèªååã®å®å šãªã»ããã¢ãããéå§ã§ããŸããã€ãŸããgit commit ãå®è¡ã§ãã段éãŸã§èªååãé²ãããã® git commit ãæ¬çªç°å¢ã«ç¢ºå®ã«åæ ãããããã«ããããšãã§ããŸãã åœç¶ã®ããšãªããããããã®æé ãå®è£ ãããšããå±éãå®è£ ãããšãã«ãããŠã³ã¿ã€ã ãçºçããããšã¯æãŸãããããŸããã ãããã£ãŠãKubernetes ã®èªåå㯠API ããå§ãŸããŸãã
Kubernetes ã¯ããã®ãŸãŸäœ¿çšããã°çç£çã«äœ¿çšã§ããããŒã«ã§ã¯ãããŸããã ãã¡ãããkubectl ãªã©ã䜿çšããŠãããè¡ãããšãã§ããŸãããããã§ãããã®ãã©ãããã©ãŒã ã§æãèå³æ·±ã䟿å©ãªã®ã¯ API ã§ãã API ãäžé£ã®é¢æ°ãšããŠäœ¿çšãããšãKubernetes ã§å®è¡ãããã»ãŒãã¹ãŠã®ããšã«ã¢ã¯ã»ã¹ã§ããŸãã kubectl èªäœã REST API ã䜿çšããŸãã
ãã㯠REST ã§ããããããã® API ãæäœããã«ã¯ä»»æã®èšèªãããŒã«ã䜿çšã§ããŸãããã«ã¹ã¿ã ã©ã€ãã©ãªã䜿çšãããšäœæ¥ãã¯ããã«ç°¡åã«ãªããŸãã ç§ã®ããŒã ã¯ãã®ãããªã©ã€ãã©ãªã 2 ã€äœæããŸãããXNUMX ã€ã¯ Java/OSGi çšããã XNUMX ã€ã¯ Go çšã§ãã XNUMX çªç®ã®ãã®ã¯ããŸã䜿çšãããŸãããããããã®å Žåã§ãããããã®äŸ¿å©ãªãã®ãèªç±ã«äœ¿çšã§ããŸãã ãããã¯éšåçã«ã©ã€ã»ã³ã¹ããããªãŒãã³ãœãŒã¹ ãããžã§ã¯ãã§ãã ããŸããŸãªèšèªã«å¯Ÿå¿ãããã®ãããªã©ã€ãã©ãªãå€æ°ãããããæé©ãªãã®ãéžæã§ããŸãã
ãããã£ãŠãå±éã®èªååãéå§ããåã«ãããã»ã¹ãããŠã³ã¿ã€ã ã®åœ±é¿ãåããªãããšã確èªããå¿
èŠããããŸãã ããšãã°ãç§ãã¡ã®ããŒã ã¯ã人ã
ãã¢ããªã±ãŒã·ã§ã³ãæããã䜿çšããæ¥äžã®æé垯ã«æ¬çªç°å¢ã®ãããã€ã¡ã³ããå®è¡ããããããã®ããã»ã¹ã®é
延ãé¿ããããšãéèŠã§ãã ããŠã³ã¿ã€ã ãåé¿ããããã«ãBlue/Green ãããã€ã¡ã³ããŸãã¯ããŒãªã³ã° ã¢ããããŒãã® 2 ã€ã®æ¹æ³ã䜿çšãããŸãã åŸè
ã®å Žåãã¢ããªã±ãŒã·ã§ã³ã® 5 ã€ã®ã¬ããªã«ãå®è¡ãããŠããå Žåãããã㯠XNUMX ã€ãã€é çªã«æŽæ°ãããŸãã ãã®æ¹æ³ã¯ããŸãæ©èœããŸãããå±éããã»ã¹äžã«ç°ãªãããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãåæã«å®è¡ããŠããå Žåã«ã¯é©ããŠããŸããã ãã®å Žåãããã¯ãšã³ããå€ãããŒãžã§ã³ãå®è¡ããŠããéã«ãŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ãæŽæ°ãããšãã¢ããªã±ãŒã·ã§ã³ã¯åäœãåæ¢ããŸãã ãããã£ãŠãããã°ã©ãã³ã°ã®èŠ³ç¹ããããã®ãããªç¶æ³ã§äœæ¥ããããšã¯éåžžã«å°é£ã§ãã
ããããã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããèªååããããã« Blue/Green ãããã€ã¡ã³ãã䜿çšããããšã奜ãçç±ã® XNUMX ã€ã§ãã ãã®æ¹æ³ã§ã¯ãäžåºŠã« XNUMX ã€ã®ããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã®ã¿ãã¢ã¯ãã£ãã«ãªãããã«ããå¿ èŠããããŸãã
é/ç·ã®å±éã¡ã«ããºã ã¯æ¬¡ã®ããã«ãªããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ãã©ãã£ãã¯ã¯ ha-proxy çµç±ã§åä¿¡ãããåãããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã®å®è¡äžã®ã¬ããªã«ã«è»¢éãããŸãã
æ°ãããããã€ã¡ã³ããè¡ããããšãã¯ãDeployer ã䜿çšããŸããããã«ãããæ°ããã³ã³ããŒãã³ããäžããããæ°ããããŒãžã§ã³ããããã€ãããŸãã ã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ããããã€ãããšããããšã¯ãæ°ããã¬ããªã«ã®ã»ããããçæãããããã®åŸãæ°ããããŒãžã§ã³ã®ãããã®ã¬ããªã«ãå¥ã®æ°ãããããã§èµ·åãããããšãæå³ããŸãã ãã ããha-proxy ã¯ãããã«ã€ããŠäœãèªèããããŸã ã¯ãŒã¯ããŒãããããã«ã«ãŒãã£ã³ã°ããŸããã
ãããã£ãŠããŸããæ°ããããŒãžã§ã³ã®ãã«ã¹ ãã§ãã¯ã®ããã©ãŒãã³ã¹ ãã§ãã¯ãå®è¡ããŠãã¬ããªã«ãè² è·ã«å¯Ÿå¿ã§ããç¶æ ã§ããããšã確èªããå¿ èŠããããŸãã
ãã¹ãŠã®å±éã³ã³ããŒãã³ãã¯ãäœããã®åœ¢åŒã®ãã«ã¹ ãã§ãã¯ããµããŒãããå¿
èŠããããŸãã ããã¯ãã¹ããŒã¿ã¹ 200 ã®ã³ãŒããåä¿¡ããå Žåã®éåžžã«åçŽãª HTTP åŒã³åºããã§ãã¯ããŸãã¯ã¬ããªã«ãšããŒã¿ããŒã¹ããã³ä»ã®ãµãŒãã¹ãšã®æ¥ç¶ãåçç°å¢æ¥ç¶ã®å®å®æ§ããã§ãã¯ãããã詳现ãªãã§ãã¯ã§ãã ããããŠãã¹ãŠãæ£ããèµ·åããŠåäœãããã©ããã ãã®ããã»ã¹ã¯éåžžã«è€éã«ãªãå ŽåããããŸãã
æŽæ°ããããã¹ãŠã®ã¬ããªã«ãåäœããŠããããšãã·ã¹ãã ã確èªããåŸãDeployer ã¯æ§æãæŽæ°ããha-proxy ãåæ§æããæ£ãã confd ãæž¡ããŸãã
ãã®åŸåããŠããã©ãã£ãã¯ã¯æ°ããããŒãžã§ã³ã®ã¬ããªã«ãæã€ãããã«éä¿¡ãããå€ããããã¯æ¶ããŸãã
ãã®ã¡ã«ããºã 㯠Kubernetes ã®æ©èœã§ã¯ãããŸããã ãã«ãŒ/ã°ãªãŒã³ ãããã€ã¡ã³ãã®æŠå¿µã¯ããªãåããååšããŠãããåžžã«ããŒã ãã©ã³ãµãŒã䜿çšãããŠããŸããã ãŸãããã¹ãŠã®ãã©ãã£ãã¯ãã¢ããªã±ãŒã·ã§ã³ã®å€ãããŒãžã§ã³ã«è»¢éããæŽæ°åŸã«ãã©ãã£ãã¯ãæ°ããããŒãžã§ã³ã«å®å
šã«è»¢éããŸãã ãã®åå㯠Kubernetes ã ãã§äœ¿çšãããããã§ã¯ãããŸããã
次ã«ãæ°ããå±éã³ã³ããŒãã³ãã§ãã Deployer ã玹ä»ããŸããããã¯ããã«ã¹ ãã§ãã¯ã®å®è¡ããããã·ã®åæ§æãªã©ãè¡ããŸãã ããã¯å€éšã®äžçã«ã¯é©çšãããªãæŠå¿µã§ãããKubernetes ã®å éšã«ååšããŸãã ãªãŒãã³ãœãŒã¹ ããŒã«ã䜿çšããŠç¬èªã® Deployer ã³ã³ã»ãããäœæããæ¹æ³ã説æããŸãã
ãããã£ãŠãDeployer ãæåã«è¡ãããšã¯ãKubernetes API ã䜿çšã㊠RC ã¬ããªã±ãŒã·ã§ã³ ã³ã³ãããŒã©ãŒãäœæããããšã§ãã ãã® API ã¯ãããã«ãããã€ããããã®ããããšãµãŒãã¹ãäœæããŸããã€ãŸããã¢ããªã±ãŒã·ã§ã³çšã«ãŸã£ããæ°ããã¯ã©ã¹ã¿ãŒãäœæããŸãã RC ã¯ãã¬ããªã«ãéå§ãããããšã確èªãããšããã«ãã¬ããªã«ã®æ©èœã«ã€ããŠãã«ã¹ ãã§ãã¯ãå®è¡ããŸãã ãããè¡ãããã«ãDeployer 㯠GET /health ã³ãã³ãã䜿çšããŸãã é©åãªã¹ãã£ã³ ã³ã³ããŒãã³ããå®è¡ããã¯ã©ã¹ã¿ãŒã®æäœããµããŒããããã¹ãŠã®èŠçŽ ããã§ãã¯ããŸãã
ãã¹ãŠã®ããããæ£åžžæ§ãå ±åããåŸãDeployer ã¯æ°ããæ§æèŠçŽ ã§ãã etcd åæ£ã¹ãã¬ãŒãžãäœæããŸããããã¯ãããŒã ãã©ã³ãµãŒæ§æã®ä¿åãªã©ãKubernetes ã«ãã£ãŠå
éšçã«äœ¿çšãããŸãã ããŒã¿ã etcd ã«æžã蟌ã¿ãconfd ãšåŒã°ããå°ããªããŒã«ã etcd ã®æ°ããããŒã¿ãç£èŠããŸãã
åæèšå®ãžã®å€æŽãæ€åºãããšãæ°ããèšå®ãã¡ã€ã«ãçæããha-proxy ã«è»¢éããŸãã ãã®å Žåãha-proxy ã¯æ¥ç¶ã倱ãããšãªãåèµ·åããã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ãåäœã§ããããã«ããæ°ãããµãŒãã¹ãžã®è² è·ã«å¯ŸåŠããŸãã
ã芧ã®ãšãããã³ã³ããŒãã³ããè±å¯ã§ããã«ãããããããããã§ã¯è€éãªããšã¯äœããããŸããã API ãš etcd ã«ã¯ãã£ãšæ³šæãæãå¿
èŠããããŸãã ç§ãã¡èªèº«ã䜿çšããŠãããªãŒãã³ãœãŒã¹ ãããã€ã€ãŒãAmdatu Kubernetes Deployer ã«ã€ããŠã話ããããšæããŸãã
ãã㯠Kubernetes ãããã€ã¡ã³ãã調æŽããããã®ããŒã«ã§ããã次ã®æ©èœããããŸãã
- ãã«ãŒ/ã°ãªãŒã³å±éã
- å€éšããŒããã©ã³ãµãŒã®ã»ããã¢ããã
- ãããã€ã¡ã³ãèšè¿°åã®ç®¡çã
- å®éã®å±éã管çããã
- å°å ¥æã«ãã«ã¹ãã§ãã¯ã®æ©èœããã§ãã¯ããã
- ããããžã®ç°å¢å€æ°ã®å®è£ ã
ãã® Deployer 㯠Kubernetes API äžã«æ§ç¯ãããŠããããã³ãã«ãšãããã€ã¡ã³ãã管çããããã® REST API ãšããããã€ã¡ã³ã ããã»ã¹äžã«ãã°ãã¹ããªãŒãã³ã°ããããã® Websocket API ãæäŸããŸãã
ããŒã ãã©ã³ãµãŒæ§æããŒã¿ã etcd ã«é 眮ãããããããã«äœ¿çšã§ãããµããŒããåãã ha-proxy ã䜿çšããå¿ èŠã¯ãªããç¬èªã®ããŒã ãã©ã³ãµãŒæ§æãã¡ã€ã«ãç°¡åã«äœ¿çšã§ããŸãã Amdatu Deployer ã¯ãKubernetes èªäœãšåæ§ã« Go ã§æžãããŠãããApache ã«ãã£ãŠã©ã€ã»ã³ã¹ãããŠããŸãã
ãã®ããŒãžã§ã³ã®ãããã€ã€ã䜿ãå§ããåã«ãå¿ èŠãªãã©ã¡ãŒã¿ãæå®ãã次ã®ãããã€ã¡ã³ãèšè¿°åã䜿çšããŸããã
ãã®ã³ãŒãã®éèŠãªãã©ã¡ãŒã¿ã® XNUMX ã€ã¯ããuseHealthCheckããã©ã°ãæå¹ã«ããããšã§ãã ãããã€ã¡ã³ãããã»ã¹äžã«å¥å
šæ§ãã§ãã¯ãå®è¡ããå¿
èŠãããããšãæå®ããå¿
èŠããããŸãã æ€èšŒããå¿
èŠã®ãªããµãŒãããŒãã£ã®ã³ã³ããããããã€ã¡ã³ãã§äœ¿çšããå Žåããã®èšå®ãç¡å¹ã«ããããšãã§ããŸãã ãã®èšè¿°åã¯ãha-proxy ã«å¿
èŠãªã¬ããªã«ã®æ°ãšããã³ããšã³ã URL ã瀺ããŸãã æåŸã¯ãããä»æ§ãã©ã°ãpodspecãã§ãKubernetes ãåŒã³åºããŠããŒãæ§æãã€ã¡ãŒãžãªã©ã®æ
å ±ãååŸããŸãã ããã¯éåžžã«åçŽãª JSON èšè¿°åã§ãã
ãªãŒãã³ãœãŒã¹ Amdatu ãããžã§ã¯ãã®äžéšã§ãããã 2 ã€ã®ããŒã«ã¯ãDeploymentctl ã§ãã ãããã€ã¡ã³ããæ§æããããã® UI ãããããããã€ã¡ã³ãå±¥æŽãä¿åãããµãŒãããŒã㣠ãŠãŒã¶ãŒãéçºè ããã®ã³ãŒã«ããã¯çšã® Webhook ãå«ãŸããŠããŸãã Amdatu Deployer èªäœã¯ REST API ã§ãããããUI ã䜿çšããããšã¯ã§ããŸãããããã®ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãããšãAPI ã䜿çšããã«ãããã€ã¡ã³ããã¯ããã«ç°¡åã«ãªããŸãã Deploymentctl ã¯ãAngular XNUMX ã䜿çšã㊠OSGi/Vertx ã§äœæãããŸãã
ããã§ã¯ãäºåã«é²ç»ããé²é³ã䜿çšããŠäžèšã®å 容ãç»é¢äžã§ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããŸãã®ã§ãåŸ ã€å¿ èŠã¯ãããŸããã åçŽãª Go ã¢ããªã±ãŒã·ã§ã³ããããã€ããŸãã ãããŸã§ã« Go ãè©ŠããããšããªããŠããå¿é ããå¿ èŠã¯ãããŸãããããã¯éåžžã«åçŽãªã¢ããªã±ãŒã·ã§ã³ãªã®ã§ãç解ã§ããã¯ãã§ãã
ããã§ã¯ã/health ã«ã®ã¿å¿çãã HTTP ãµãŒããŒãäœæããŠããããããã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã«ã¹ ãã§ãã¯ã®ã¿ããã¹ãããä»ã¯äœããã¹ãããŸããã ãã§ãã¯ã«åæ Œãããšã以äžã«ç€ºã JSON æ§é ã䜿çšãããŸãã ããã«ã¯ããããã€ã€ãŒã«ãã£ãŠãããã€ãããã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ããã¡ã€ã«ã®å
é ã«è¡šç€ºãããã¡ãã»ãŒãžãããã³ã¢ããªã±ãŒã·ã§ã³ãåäœããŠãããã©ããã瀺ãããŒã« ããŒã¿åãå«ãŸããŠããŸãã
ãã¡ã€ã«ã®å é ã«åºå®ã®ããŒã«å€ãé 眮ãããããæåŸã®è¡ã§å°ãããŸãããŸãããããã¯ãå°æ¥çã«ã¯ãç°åžžãªãã¢ããªã±ãŒã·ã§ã³ã§ããããã€ããã®ã«åœ¹ç«ã¡ãŸãã ããã«ã€ããŠã¯åŸã§æ±ããŸãã
ããã§ã¯å§ããŸãããã ãŸããã³ãã³ã ~ kubectl get pods ã䜿çšããŠå®è¡äžã®ãããã®ååšã確èªããããã³ããšã³ã URL ããã®å¿çããªãããšã«åºã¥ããŠãçŸåšãããã€ã¡ã³ããè¡ãããŠããªãããšã確èªããŸãã
次ã«ç»é¢ã«ã¯ãåè¿°ãã Deploymentctl ã€ã³ã¿ãŒãã§ã€ã¹ã衚瀺ãããŸããããã§ã¯ãåå空éãã¢ããªã±ãŒã·ã§ã³åããããã€ã¡ã³ã ããŒãžã§ã³ãã¬ããªã«ã®æ°ãããã³ããšã³ã URLãã³ã³ãããŒåãã€ã¡ãŒãžããªãœãŒã¹å¶éããã«ã¹ ãã§ãã¯çšã®ããŒãçªå·ãªã©ã®ãããã€ã¡ã³ã ãã©ã¡ãŒã¿ãŒãèšå®ãããŠããŸããçã ãªãœãŒã¹å¶éã¯ãå¯èœãªéãæ倧éã®ããŒããŠã§ã¢ã䜿çšã§ããããã«ãããããéåžžã«éèŠã§ãã ããã§ãå±éãã°ã衚瀺ããããšãã§ããŸãã
ããã§ã³ãã³ã ~ kubectl get pods ãç¹°ãè¿ããšãã·ã¹ãã ã 20 ç§éãããªãŒãºããããã®éã« ha-proxy ãåæ§æãããŠããããšãããããŸãã ãã®åŸãããããèµ·åãããããã€ã¡ã³ã ãã°ã«ã¬ããªã«ã衚瀺ãããŸãã
ãããªãã 20 ç§ã®åŸ
æ©éšåãåãåã£ããšãããã¢ããªã±ãŒã·ã§ã³ã®æåã®ããŒãžã§ã³ããããã€ãããããšãç»é¢äžã§ç¢ºèªã§ããŸãã ããã¯ãã¹ãŠ UI ã®ã¿ã䜿çšããŠè¡ãããŸããã
次ã«ãXNUMX çªç®ã®ããŒãžã§ã³ãè©ŠããŠã¿ãŸãããã ãããè¡ãã«ã¯ãã¢ããªã±ãŒã·ã§ã³ã®ã¡ãã»ãŒãžããHello, Kubernetes!ãããå€æŽããŸãã ãHello, Deployer!ããšããã¡ãã»ãŒãžã衚瀺ããããšãã·ã¹ãã ã¯ãã®ã€ã¡ãŒãžãäœæã㊠Docker ã¬ãžã¹ããªã«é
眮ããŸãããã®åŸãDeploymentctl ãŠã£ã³ããŠã§ [Deploy] ãã¿ã³ãå床ã¯ãªãã¯ããã ãã§ãã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã®æåã®ããŒãžã§ã³ããããã€ãããšããšåãæ¹æ³ã§ããããã€ã¡ã³ã ãã°ãèªåçã«èµ·åãããŸãã
ã³ãã³ã ~ kubectl get pods ã¯ãçŸåš 2 ã€ã®ããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãå®è¡äžã§ããããšã瀺ããŠããŸãããããã³ããšã³ãã§ã¯ãŸã ããŒãžã§ã³ 1 ãå®è¡äžã§ããããšã瀺ãããŠããŸãã
ããŒã ãã©ã³ãµãŒã¯ããã«ã¹ ãã§ãã¯ãå®äºããã®ãåŸ
ã£ãŠããããã©ãã£ãã¯ãæ°ããããŒãžã§ã³ã«ãªãã€ã¬ã¯ãããŸãã 20 ç§åŸãcurl ã«åãæ¿ãããšãã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ 2 ããããã€ãããæåã®ããŒãžã§ã³ãåé€ãããããšãããããŸãã
ããã¯ãå¥å
šãªãã¢ããªã±ãŒã·ã§ã³ã®å±éã§ããã ã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ã§ãHealthy ãã©ã¡ãŒã¿ãŒã true ãã false ã«å€æŽããå Žåãã€ãŸãããã«ã¹ ãã§ãã¯ã«å€±æããç°åžžãªã¢ããªã±ãŒã·ã§ã³ããããã€ããããšããå Žåã«äœãèµ·ããããèŠãŠã¿ãŸãããã ããã¯ãéçºæ®µéã§ã¢ããªã±ãŒã·ã§ã³ã«äœããã®æ§æãšã©ãŒãçºçãããã®åœ¢åŒã§éçšç°å¢ã«éä¿¡ãããå Žåã«çºçããå¯èœæ§ããããŸãã
ã芧ã®ãšããããããã€ã¡ã³ãã¯äžèšã®ãã¹ãŠã®æé ãå®è¡ãã~kubectl get pods ã¯äž¡æ¹ã®ããããå®è¡äžã§ããããšã瀺ããŸãã ãã ããåã®å±éãšã¯ç°ãªãããã°ã«ã¯ã¿ã€ã ã¢ãŠã ã¹ããŒã¿ã¹ã衚瀺ãããŸãã ã€ãŸãããã«ã¹ãã§ãã¯ã倱æãããããã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ããããã€ã§ããŸããã ãã®çµæãã·ã¹ãã ã¯å€ãããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã®äœ¿çšã«æ»ããæ°ããããŒãžã§ã³ã¯åã«ã¢ã³ã€ã³ã¹ããŒã«ãããããšãããããŸãã
ããã®è¯ãç¹ã¯ãã¢ããªã±ãŒã·ã§ã³ã«åæã«èšå€§ãªæ°ã®ãªã¯ãšã¹ããå
¥ã£ãŠãããšããŠãããããã€ã¡ã³ãæé ã®å®è£
äžã«ããŠã³ã¿ã€ã ãçºçããããšã«ããæ°ä»ããªãããšã§ãã å¯èœãªéãå€ãã®ãªã¯ãšã¹ããéä¿¡ãã Gatling ãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠãã®ã¢ããªã±ãŒã·ã§ã³ããã¹ããããšããããã®ãªã¯ãšã¹ãã¯ãããããããããããŸããã ããã¯ããŠãŒã¶ãŒããªã¢ã«ã¿ã€ã ã§ã®ããŒãžã§ã³æŽæ°ã«æ°ä»ããªãããšãæå³ããŸãã 倱æããå Žåã¯å€ãããŒãžã§ã³ã§äœæ¥ãç¶è¡ãããæåããå Žåã¯ãŠãŒã¶ãŒã¯æ°ããããŒãžã§ã³ã«åãæ¿ããŸãã
倱æããå¯èœæ§ãããã®ã¯ XNUMX ã€ã ãã§ãããã«ã¹ ãã§ãã¯ã¯æåããããã¯ãŒã¯ããŒããé©çšããããšããã«ã¢ããªã±ãŒã·ã§ã³ã倱æããå Žåã§ããã€ãŸããå±éãå®äºããåŸã«ã®ã¿åŽ©å£ãçºçããŸãã ãã®å Žåãæåã§å€ãããŒãžã§ã³ã«ããŒã«ããã¯ããå¿ èŠããããŸãã ããã§ãKubernetes çšã«èšèšããããªãŒãã³ãœãŒã¹ ããŒã«ã䜿çšã㊠Kubernetes ã䜿çšããæ¹æ³ãæ€èšããŸããã ãããã®ããŒã«ããã«ã/ããã〠ãã€ãã©ã€ã³ã«çµã¿èŸŒããšãããã〠ããã»ã¹ãã¯ããã«ç°¡åã«ãªããŸãã åæã«ããããã€ã¡ã³ããéå§ããã«ã¯ããŠãŒã¶ãŒ ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãããããã¹ã¿ãŒãžã®ã³ããããªã©ã䜿çšããŠãã®ããã»ã¹ãå®å šã«èªååããããšãã§ããŸãã
ç§ãã¡ã®ãã«ã ãµãŒããŒã¯ Docker ã€ã¡ãŒãžãäœæããããã Docker Hub ãŸãã¯äœ¿çšããã¬ãžã¹ããªã«ããã·ã¥ããŸãã Docker Hub 㯠Webhook ããµããŒãããŠãããããäžèšã®æ¹æ³ã§ Deployer çµç±ã§ãªã¢ãŒã ãããã€ã¡ã³ããããªã¬ãŒã§ããŸãã ãã®ããã«ããŠãæœåšçãªéçšç°å¢ãžã®ã¢ããªã±ãŒã·ã§ã³ã®ãããã€ã¡ã³ããå®å
šã«èªååã§ããŸãã
次ã®ãããã¯ãKubernetes ã¯ã©ã¹ã¿ãŒã®ã¹ã±ãŒãªã³ã°ã«é²ã¿ãŸãããã kubectl ã³ãã³ãã¯ã¹ã±ãŒãªã³ã° ã³ãã³ãã§ããããšã«æ³šæããŠãã ããã ããã«å€ãã®å©ããåããã°ãæ¢åã®ã¯ã©ã¹ã¿ãŒå ã®ã¬ããªã«ã®æ°ãç°¡åã«å¢ããããšãã§ããŸãã ãã ããå®éã«ã¯ãéåžžã¯ãããã§ã¯ãªãããŒãã®æ°ãå¢ããå¿ èŠããããŸãã
åæã«ãæ¥åæéäžã¯å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ ã€ã³ã¹ã¿ã³ã¹ã®æ°ãå¢ããå¿
èŠãããå Žåããããå€é㯠Amazon ãµãŒãã¹ã®ã³ã¹ããåæžããããã«ãå®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ ã€ã³ã¹ã¿ã³ã¹ã®æ°ãæžããå¿
èŠãããå ŽåããããŸãã ããã¯ããããã®æ°ãã¹ã±ãŒãªã³ã°ããã ãã§ååã§ãããšããæå³ã§ã¯ãããŸãããããŒãã® XNUMX ã€ãã¢ã€ãã«ç¶æ
ã§ãã£ãŠããAmazon ã«æéãæ¯æãå¿
èŠãããããã§ãã ã€ãŸãããããã®ã¹ã±ãŒãªã³ã°ãšãšãã«ã䜿çšãããã·ã³ã®æ°ãã¹ã±ãŒãªã³ã°ããå¿
èŠããããŸãã
Amazon ã䜿çšãããä»ã®ã¯ã©ãŠã ãµãŒãã¹ã䜿çšãããã«ããããããKubernetes ã¯äœ¿çšãããŠãããã·ã³ã®æ°ã«ã€ããŠäœãç¥ããªããããããã¯å°é£ãªå ŽåããããŸãã ããŒã ã¬ãã«ã§ã·ã¹ãã ãæ¡åŒµã§ããããŒã«ããããŸããã
ãããã£ãŠãããŒããšãããã®äž¡æ¹ã管çããå¿
èŠããããŸãã AWS API ãšã¹ã±ãŒãªã³ã° ã°ã«ãŒã ãã·ã³ã䜿çšããŠæ°ããããŒãã®èµ·åãç°¡åã«ã¹ã±ãŒã«ããKubernetes ã¯ãŒã«ãŒ ããŒãã®æ°ãæ§æã§ããŸãã ãŸããcloud-init ãŸãã¯åæ§ã®ã¹ã¯ãªããã䜿çšããŠãKubernetes ã¯ã©ã¹ã¿ãŒã«ããŒããç»é²ããããšãã§ããŸãã
æ°ãããã·ã³ã¯ Scaling ã°ã«ãŒãã§èµ·åããããŒããšããŠèªèº«ãèµ·åãããã¹ã¿ãŒã®ã¬ãžã¹ããªã«ç»é²ããŠåäœãéå§ããŸãã ãã®åŸãçµæã®ããŒãã§äœ¿çšããã¬ããªã«ã®æ°ãå¢ããããšãã§ããŸãã ã¹ã±ãŒã«ããŠã³ã«ã¯ããäžèŠãªããã·ã³ã®é»æºããªãã«ããåŸããã§ã«å®è¡äžã®ã¢ããªã±ãŒã·ã§ã³ãç Žå£ãããªãããã«ããå¿
èŠããããããããå€ãã®åŽåãå¿
èŠã§ãã ãã®ãããªã·ããªãªãé²ãã«ã¯ãããŒãããã¹ã±ãžã¥ãŒã«äžå¯ãã¹ããŒã¿ã¹ã«èšå®ããå¿
èŠããããŸãã ããã¯ãããã©ã«ãã®ã¹ã±ãžã¥ãŒã©ãŒã DaemonSet ããããã¹ã±ãžã¥ãŒã«ãããšãã«ãããã®ããŒããç¡èŠããããšãæå³ããŸãã ã¹ã±ãžã¥ãŒã©ãŒã¯ãããã®ãµãŒããŒããäœãåé€ããŸããããããã§æ°ããã³ã³ãããŒãèµ·åããããšããããŸããã 次ã®ã¹ãããã¯ããã¬ã€ã³ ããŒããåé€ããããšã§ããã€ãŸããå®è¡äžã®ãããããã¬ã€ã³ ããŒãããå¥ã®ãã·ã³ããŸãã¯ããã«ååãªå®¹éãæã€ä»ã®ããŒãã«è»¢éããŸãã ãããã®ããŒãã«ã³ã³ãããŒãååšããªãããšã確èªããããKubernetes ããã³ã³ãããŒãåé€ã§ããŸãã ãã®åŸãããã㯠Kubernetes ã«å¯ŸããŠååšããªããªããŸãã 次ã«ãAWS API ã䜿çšããŠãäžèŠãªããŒããŸãã¯ãã·ã³ãç¡å¹ã«ããå¿
èŠããããŸãã
AWS API ã«äŒŒãå¥ã®ãªãŒãã³ãœãŒã¹ ã¹ã±ãŒãªã³ã° ããŒã«ã§ãã Amdatu Scalerd ã䜿çšã§ããŸãã ã¯ã©ã¹ã¿ãŒå
ã®ããŒããè¿œå ãŸãã¯åé€ããããã® CLI ãæäŸããŸãã ãã®èå³æ·±ãæ©èœã¯ã次㮠json ãã¡ã€ã«ã䜿çšããŠã¹ã±ãžã¥ãŒã©ãŒãæ§æã§ããããšã§ãã
瀺ãããŠããã³ãŒãã¯ãå€éã®ã¯ã©ã¹ã¿ãŒå®¹éãååã«æžãããŸãã 䜿çšå¯èœãªã¬ããªã«ã®æ°ãš Amazon ã¯ã©ã¹ã¿ãŒã®å¿
èŠãªå®¹éã®äž¡æ¹ãæ§æããŸãã ãã®ã¹ã±ãžã¥ãŒã©ãŒã䜿çšãããšãå€éã«ããŒãæ°ãèªåçã«æžããæã«ããŒãæ°ãå¢ãããããAmazon ãªã©ã®ã¯ã©ãŠã ãµãŒãã¹ã®ããŒãã䜿çšããã³ã¹ããç¯çŽã§ããŸãã ãã®æ©èœã¯ Kubernetes ã«ã¯çµã¿èŸŒãŸããŠããŸããããScalerd ã䜿çšãããšããã®ãã©ãããã©ãŒã ãå¿
èŠã«å¿ããŠæ¡åŒµã§ããŸãã
å€ãã®äººããããã¯ããã§ããã®ã§ãããéåžžã¯éçã§ããç§ã®ããŒã¿ããŒã¹ã¯ã©ããªãã®ã§ãããã?ããšèšãããšãææããŠãããããšæããŸãã Kubernetes ã®ãããªåçç°å¢ã§ãã®ãããªãã®ãå®è¡ããã«ã¯ã©ãããã°ããã§ãããã? ç§ã®æèŠã§ã¯ãããã¯ãã¹ãã§ã¯ãªããKubernetes ã§ããŒã¿ ãŠã§ã¢ããŠã¹ãå®è¡ããããšããã¹ãã§ã¯ãããŸããã ããã¯æè¡çã«ã¯å¯èœã§ãããã€ã³ã¿ãŒãããäžã«ãã®ããŒãã«é¢ãããã¥ãŒããªã¢ã«ããããŸãããããã¯ããªãã®äººçãéåžžã«è€éã«ããã§ãããã
ã¯ããKubernetes ã«ã¯æ°žç¶ã¹ãã¢ã®æŠå¿µããããMongo ã MySQL ãªã©ã®ããŒã¿ ã¹ãã¢ãå®è¡ããŠã¿ãããšãã§ããŸãããããã¯éåžžã«åŽåãèŠããäœæ¥ã§ãã ããã¯ãããŒã¿ ãŠã§ã¢ããŠã¹ãåçç°å¢ãšã®å¯Ÿè©±ãå®å
šã«ã¯ãµããŒãããŠããªãããã§ãã ã»ãšãã©ã®ããŒã¿ããŒã¹ã¯ãã¯ã©ã¹ã¿ãŒã®æåæ§æãå«ã倧å¹
ãªæ§æãå¿
èŠãšããèªåã¹ã±ãŒãªã³ã°ãªã©ã奜ã¿ãŸããã
ãããã£ãŠãKubernetes ã§ããŒã¿ ãŠã§ã¢ããŠã¹ãå®è¡ããããšããŠäœæ¥ãè€éã«ãªãã¹ãã§ã¯ãããŸããã 䜿ãæ
£ãããµãŒãã¹ã䜿çšããŠåŸæ¥ã®æ¹æ³ã§äœæ¥ãæŽçãããããã䜿çšããæ©èœã Kubernetes ã«æäŸããã ãã§ãã
ãã®ãããã¯ã®ç· ãããããšããŠãç§ã®ããŒã ãåãçµãã§ãã Kubernetes ããŒã¹ã® Cloud RTI ãã©ãããã©ãŒã ã玹ä»ããããšæããŸãã éäžãã°ãã¢ããªã±ãŒã·ã§ã³ãšã¯ã©ã¹ã¿ãŒã®ç£èŠããã®ä»å€ãã®äŸ¿å©ãªæ©èœãæäŸããŸãã Grafana ãªã©ã®ããŸããŸãªãªãŒãã³ãœãŒã¹ ããŒã«ã䜿çšããŠã¢ãã¿ãªã³ã°ã衚瀺ããŸãã
Kubernetes 㧠ha-proxy ããŒããã©ã³ãµãŒã䜿çšããçç±ã«ã€ããŠã®è³ªåããããŸããã çŸåšãè² è·åæ£ã«ã¯ 2 ã€ã®ã¬ãã«ããããããè¯ã質åã§ãã Kubernetes ãµãŒãã¹ã¯äŸç¶ãšããŠä»®æ³ IP ã¢ãã¬ã¹äžã«ååšããŸãã Amazon ãã¯ã©ãŠã ãã¹ãã«éè² è·ãããããšã¢ãã¬ã¹ãå€æŽããããããå€éšãã¹ã ãã·ã³ã®ããŒãã«ãããã䜿çšããããšã¯ã§ããŸããã ãããããã©ãã£ãã¯ã Kubernetes ãšã·ãŒã ã¬ã¹ã«éä¿¡ã§ããããã«ãããéçãªæ§é ãäœæããããã«ãha-proxy ããµãŒãã¹ã®åã«é
眮ããçç±ã§ãã
ãã XNUMX ã€ã®è¯ã質åã¯ããã«ãŒ/ã°ãªãŒã³ ãããã€ã¡ã³ããå®è¡ãããšãã«ããŒã¿ããŒã¹ ã¹ããŒãã®å€æŽã«ã©ã®ããã«å¯ŸåŠã§ããããšããããšã§ãã å®éã®ãšãããKubernetes ã䜿çšãããã©ããã«é¢ä¿ãªããããŒã¿ããŒã¹ ã¹ããŒãã®å€æŽã¯å°é£ãªäœæ¥ã§ãã å€ãã¹ããŒããšæ°ããã¹ããŒãã«äºææ§ãããããšã確èªããå¿ èŠããããŸãããã®åŸãããŒã¿ããŒã¹ãæŽæ°ããŠãã¢ããªã±ãŒã·ã§ã³èªäœãæŽæ°ã§ããŸãã ããŒã¿ããŒã¹ããããã¹ã¯ããããŠããã¢ããªã±ãŒã·ã§ã³ãæŽæ°ã§ããŸãã æ°ããã¹ããŒãã䜿çšããŠå®å šã«æ°ããããŒã¿ããŒã¹ ã¯ã©ã¹ã¿ãŒãèµ·åãã人ãç§ã¯ç¥ã£ãŠããŸããMongo ã®ãããªã¹ããŒã ã¬ã¹ ããŒã¿ããŒã¹ãããå Žåãããã¯ãªãã·ã§ã³ã§ããããããã«ããç°¡åãªäœæ¥ã§ã¯ãããŸããã ä»ã«ã質åãããããŸãããããéèŽããã ãããããšãããããŸãã
ããã€ãã®åºå ð
ãã€ãã宿æ³ããã ãããããšãããããŸãã ç§ãã¡ã®èšäºãæ°ã«å
¥ã£ãŠããŸãã? ãã£ãšèå³æ·±ãã³ã³ãã³ããèŠããã§ãã? 泚æããããå人ã«å§ãããããŠç§ãã¡ããµããŒãããŠãã ããã
ã¢ã ã¹ãã«ãã ã®ãšã¯ã€ãã¯ã¹ Tier IV ããŒã¿ã»ã³ã¿ãŒã§ã¯ Dell R730xd ã 2 åå®ã? ããã ã
åºæïŒ habr.com