
ç§ãã¡Laterã§ã¯
ãéä¿¡äºæ¥è
åãã®è«æ±æžãäœæããŠããŸãã Habréã®ããã°ã§ã¯ãã·ã¹ãã ã®æ©èœãšãã®éçºã®è©³çŽ°ïŒ
ãã©ãŒã«ããã¬ã©ã³ã¹ã®ç¢ºä¿ãªã© ïŒã ãã§ãªããã€ã³ãã©ã¹ãã©ã¯ãã£å
šäœã®æäœã«é¢ããè³æãå
¬éããŠããŸãã Haleby.seã®ãããžã§ã¯ããšã³ãžãã¢ã¯ãDockerã³ã³ããã調æŽããããŒã«ãšããŠKubernetesãã¯ãããžãŒãéžæããçç±ã説æããããã°æçš¿ãæžããŸããã ãã®èšäºã®äž»ãªèããã玹ä»ããŸãã
èæ¯
ãããžã§ã¯ããšã³ãžãã¢ãªã³ã°ããŒã ã¯ãåœåãåãµãŒãã¹ã«Jenkinsã®ç¶ç¶çããªããªãŒææ³ã䜿çšããŠããŸããã ããã«ãããåã³ãããã§çµ±åãã¹ããå®è¡ããã¢ãŒãã£ãã¡ã¯ããšDockerã€ã¡ãŒãžãçæããŠããã¹ããµãŒããŒã«å±éã§ããŸããã 1åã¯ãªãã¯ããã ãã§ãä»»æã®ã€ã¡ãŒãžããæŠéããµãŒããŒã«å±éã§ããŸãã ã¹ããŒã ã¯æ¬¡ã®ããã«ãªããŸããã

Johnããã³Doeãšããã»ã«ã«ã¯ãç¹å®ã®ããŒãã«ãããã€ãããDockerã³ã³ãããŒã®ã»ãããå«ãŸããŠããŸãã ããã«ã
Ansibleã¯ããããžã§ãã³ã°ã«äœ¿çšãããŸãã ãã®çµæãæ°ããã¯ã©ãŠããµãŒããŒãäœæããŠãæ£ããããŒãžã§ã³ã®Docker / Docker-Composeãã€ã³ã¹ããŒã«ãããã¡ã€ã¢ãŠã©ãŒã«ã«ãŒã«ãæ§æãã1ã€ã®ã³ãã³ãã§ä»ã®èšå®ãå®è¡ã§ããŸãã Dockerã³ã³ããã§å®è¡ãããŠããåãµãŒãã¹ã«ã¯ãé害ãçºçããå Žåã«ãµãŒãã¹ããçºçãããããŠã©ããããã°ã¹ã¯ãªããããããŸãã ãã ãããã®æ§æã§ã¯åé¡ãçºçããå¯èœæ§ããããŸãã

DoeãµãŒããŒã1æ©ã§ãçãå°œãããïŒãŸãã¯çæçãªé倧ãªé害ãçºçããïŒå Žåããããžã§ã¯ãã®æè¡ããŒã ã¯ã·ã¹ãã ã皌åç¶æ
ã«æ»ãããã«æ·±å€ã«ç«ã¡äžããå¿
èŠããããŸãã Doeã«ã€ã³ã¹ããŒã«ããããµãŒãã¹ã¯ãJohnãªã©ã®å¥ã®ãµãŒããŒã«èªåçã«ç§»åããŸããããã®ããããã°ããã®éãã·ã¹ãã ãåäœããªããªããŸãã
ä»ã®åé¡ããããŸã-ã³ã³ããã®æ倧æ°ã®åãããŒãäžã®å Žæããããã¯ãŒã¯æ€åºïŒãµãŒãã¹æ€åºïŒããã¢ããããŒããæŽæ°ããã°ããŒã¿ã®éçŽã ããããã¹ãŠã«äœããã®åœ¢ã§å¯ŸåŠããå¿
èŠããããŸããã

å¿
èŠãªã®ã¯ãéæ³ã®ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ãããã䜿çšããŠãã¯ã©ã¹ã¿ãŒã®ããŒãéã§ã³ã³ãããŒãåæ£ã§ããŸãã åäžã®ããŒããšåãããã«å€ãã®ããŒãã§äœæ¥ã§ããããã«ããå¿
èŠããããŸããã ãã®éæ³ã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ããã¯ã©ã¹ã¿ãŒå
ã®ãã®ãããªDockerã³ã³ãããŒã®3ã€ã®ã³ããŒãå±éãããã¹ãŠãæ©èœããããšã確èªãããããšãã§ããå¿
èŠããããŸããã çŽ æŽãããèšç»ïŒ æ®ã£ãå¯äžã®ããšã¯ããã®ãããªãã¬ãŒã ã¯ãŒã¯ãèŠã€ããããšã§ããã
ãŠã£ãã·ã¥ãªã¹ã
ãã¯ãããžãŒã¯éåžžã«æ¥éã«éçºãããŠãããããéåžžã«äžçšåºŠã®åºæºãæºããå Žåã§ããäžå®æéåç¶ãç¶æããããããªæ¹æ³ã§ããŒã«ãéžæããå¿
èŠããããŸãã Halebyã®ãšã³ãžãã¢ã¯ãã倢ã®ãã¬ãŒã ã¯ãŒã¯ãã§æ¢ã«äœ¿çšãã
docker-composeã®ãããªãã®ã䜿çšããããšèããŠããŸããããã«ãããå€ãã®åæ§æãšæ§æäœæ¥ãäžèŠã«ãªããŸãã
ããã«ããã¬ãŒã ã¯ãŒã¯ã®ã·ã³ãã«ããšãå¶åŸ¡ãå°é£ãªããžãã¯æ©èœãå€ãããªãããšããã©ã¹ã«ãªããŸãã ããçš®ã®ã¢ãžã¥ã©ãŒãœãªã¥ãŒã·ã§ã³ã¯å®ç§ã§ãå¿
èŠã«å¿ããŠäžéšã®éšåã亀æããå¯èœæ§ãæ®ããŸãã ãªãŒãã³ã©ã€ã»ã³ã¹ããã©ã¹ã«ãªããŸãããã®å Žåããããžã§ã¯ãã®é²è¡ç¶æ³ã远跡ãã掻çºãªã³ãã¥ããã£ãååšããããšã確èªããã®ã¯ç°¡åã§ãã
ããã«ãHalebyããŒã ã®ã¡ã³ããŒã¯ãåæã«è€æ°ã®ã¯ã©ãŠãå
ã®ã³ã³ãããŒãæäœããããã®ãµããŒããšããããã¯ãŒã¯æ€åºæ©èœã®ååšãåžæããŠããŸãã ãŸãããšã³ãžãã¢ã¯ã»ããã¢ããã«å€ãã®æéãè²»ããããšãæãŸãªãã£ãããããµãŒãã¹ã¢ãã«ãšããŠãã¬ãŒã ã¯ãŒã¯ã䜿çšããããšããå§ãããŸãã
ãã¬ãŒã ã¯ãŒã¯ã®éžæ
åžå Žã§å©çšå¯èœãªãªãã·ã§ã³ã®åæã«ãããããã€ãã®åè£ãã¬ãŒã ã¯ãŒã¯ãéžæããããšãå¯èœã«ãªããŸããã ãããã®äžã§ïŒ
AWS ECS
AWS ECS Container Serviceã¯ãAmazon EC2ã€ã³ã¹ã¿ã³ã¹ã¯ã©ã¹ã¿ãŒå
ã®Dockerã³ã³ãããŒãéå§ãåæ¢ãæäœã§ãããéåžžã«ã¹ã±ãŒã©ãã«ã§é«éãªã³ã³ãããŒç®¡çããŒã«ã§ãã ãã®ã¯ã©ãŠãã§ãããžã§ã¯ãããã§ã«æ©èœããŠããå Žåããã®ãªãã·ã§ã³ãèæ
®ããªãã®ã¯å¥åŠã§ãã ãã ããHalebyã¯Amazonã§æ©èœããªãã£ããããäŒç€Ÿã®ãšã³ãžãã¢ã«ãšã£ãŠãã®ç§»è¡ã¯æè¯ã®ãœãªã¥ãŒã·ã§ã³ã§ã¯ãªãããã«æãããŸããã
ããã«ãã·ã¹ãã ã«ã¯ãããã¯ãŒã¯æ€åºæ©èœãçµã¿èŸŒãŸããŠããªãããšãå€æããŸãããããã¯éèŠãªèŠä»¶ã®1ã€ã§ããã ãŸããAWS ECSã®å Žåã1ã€ã®ããŒãã®1ã€ã®ããŒãã䜿çšããŠå€ãã®ã³ã³ãããŒãèµ·åããããšã¯ã§ããŸããã
Docker swarm
Docker Swarmã¯ãDockerã®ãã€ãã£ãã¯ã©ã¹ã¿ãªã³ã°ããŒã«ã§ãã Swarmã¯Docker APIã䜿çšããŠãããããDockerããŒã¢ã³ãšé£æºã§ããããŒã«ã¯ãããã䜿çšããŠã¹ã±ãŒãªã³ã°ã§ããŸãã Halebyã¯docker-composeã䜿çšããŠãããããåŸè
ã®ãªãã·ã§ã³ã¯éåžžã«é
åçã§ããã ããã«ã䜿ãæ
£ãããã¯ãããžã®ãã€ãã£ãããŒã«ã䜿çšããããšã§ãããŒã ã¯äœãæ°ããããšãåŠã¶å¿
èŠããªããªããŸããã
ãããããã¹ãŠãããã»ã©ãã©è²ã§ã¯ãããŸããã§ããã Swarmã¯ãããã¯ãŒã¯æ€åºã®ããã«è€æ°ã®ãšã³ãžã³ããµããŒãããŠãããšããäºå®ã«ãããããããå®è¡å¯èœãªçµ±åãèšå®ããããšã¯ç°¡åãªäœæ¥ã§ã¯ãããŸããã ããã«ãSwarmã¯ãããŒãžããµãŒãã¹ã§ã¯ãªãããããããžã§ã¯ãããŒã ã®èšç»ã«å
ã
å«ãŸããŠããªãã£ãäœæ¥ãèªåã§æ§æããã³ä¿å®ããå¿
èŠããããŸãã
ããã«ãã³ã³ãããèªåçã«æŽæ°ããããšãã§ããŸããã ãããè¡ãã«ã¯ãããšãã°ãã³ã³ããã®ããŸããŸãªã°ã«ãŒãã®ããŒããã©ã³ãµãŒãšããŠNginxãæ§æããå¿
èŠããããŸãã ãŸããã€ã³ã¿ãŒãããäžã®å€ãã®ãšã³ãžãã¢ãSwarmã®ããã©ãŒãã³ã¹ã«ã€ããŠçåãè¡šæã
ãŸãã ãããšãã°
Google瀟å¡ãªã©ã§ãã
ã¡ãœã¹ãã§ã¢DCOS

AWSã§DCOSïŒããŒã¿ã»ã³ã¿ãŒãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ïŒãèšå®ããŠäœæ¥ãéå§ããåŸãMesosphereã¯é©åãªãªãã·ã§ã³ã®ããã§ãã 䟿å©ãªã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšãããšãå®è¡äžã®ãµãŒãã¹ãããã»ããµã®è² è·ãã¡ã¢ãªæ¶è²»ãªã©ãã¯ã©ã¹ã¿ãŒã«é¢ãããã¹ãŠã®æ
å ±ãååŸã§ããŸãã DCOSã¯ãã©ã®ã¯ã©ãŠãã§ããäžåºŠã«è€æ°ã®ã¯ã©ãŠãã§åäœã§ããŸãã
Mesosã¯ã倧èŠæš¡ãªã¯ã©ã¹ã¿ãŒã§æ©èœããããšãå®èšŒãããŠããããŒã«ã§ãã DCOSã§ã¯ãã³ã³ãããŒã ãã§ãªããRubyãªã©ã®åã
ã®ã¢ããªã±ãŒã·ã§ã³ãå®è¡ã§ããã·ã³ãã«ãªdcos installã³ãã³ãã䜿çšããŠéèŠãªãµãŒãã¹ãã€ã³ã¹ããŒã«ã§ããŸãïŒããã¯ããŒã¿ã»ã³ã¿ãŒã®apt-getã«äŒŒãŠããŸãïŒã
ããã«ããã®ããŒã«ã䜿çšãããšãè€æ°ã®ã¯ã©ã¹ã¿ãŒãåæã«æäœã§ããŸããåãã·ã¹ãã å
ã§MarathonãKubernetesãDockerãSwarmãå®è¡ã§ããŸãã
ãã ããé·æãšãšãã«ããã®ãªãã·ã§ã³ã«ã¯æ¬ ç¹ããããŸããã ããšãã°ãè€æ°ã®ã¯ã©ãŠãã§ã®äœæ¥ã®ãµããŒãã¯ãMesosphere DCOSã®ãšã³ã¿ãŒãã©ã€ãºããŒãžã§ã³ã«ã®ã¿ååšããŸããããã®ããŒãžã§ã³ã®äŸ¡æ Œã¯ãµã€ãã«èšèŒãããŠãããããªã¯ãšã¹ãã«å¿çãã人ã¯ããŸããã
ãŸããåœæã®ããã¥ã¡ã³ãïŒ2015幎10æ/ 11æïŒã«ã¯ãã·ã¹ãã ãäžæããããšãªãæ°ããã¯ã©ã¹ã¿ãŒã«ç§»åããæ¹æ³ã«é¢ããæ
å ±ãå«ãŸããŠããŸããã§ãã-ããã¯ç®¡çããããµãŒãã¹ã§ããªãããã移åäžã«åé¡ãçºçããå¯èœæ§ãããããšãç解ããããšãéèŠã§ãã
è
«ç
ãããžã§ã¯ãããŒã ã¯ããããéçºããã³éçšã®ããã®Dockerãã©ãããã©ãŒã ããšèª¬æãããããããã¯ã©ãŠãã§ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ãå±éã管çããããšããã¹ããŒã¬ã³ãèãããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã¯æ¬¡ã®ããã«ãªããŸãã

DCOSã»ã©å£®èŠ³ã§ã¯ãªãããã«æãããããããŸããããããã§ãTutumã«ã¯ã³ãã³ãã©ã€ã³ãµããŒãããããŸãããã·ã¹ãã ã¯åçŽãªããŠã¹ã¯ãªãã¯ã§ã»ãšãã©ã®å¿
èŠãªæäœãå®è¡ã§ããŸãã ã·ã¹ãã ã®æäœãéå§ããã«ã¯ãã¯ã©ã¹ã¿ãŒã®åããŒãã«TutumãšãŒãžã§ã³ããã€ã³ã¹ããŒã«ããå¿
èŠããããŸãããã®åŸã管çããã«ã«ããŒãã衚瀺ããå§ããŸãã èå³æ·±ãç¹-Tutumã¯ãããã€ãã®ãµãŒãã¹ãŸãã¯ã³ã³ãããŒããã®ã¹ã¿ãã¯åºåãã©ãŒãããã䜿çšããŸããããã¯ãdocker-composeã«äŒŒãŠããŸãããã®ãããDockerã«ç²ŸéããŠããå°é家ã¯ããã«ç°¡åã«å§ããããšãã§ããŸãã
ããã«ãTutumã¯Flockerã¯ã©ã¹ã¿ãŒãžã®çµ±åãéããŠããªã¥ãŒã ããµããŒãããŸãã ç¹å®ã®ã³ã³ãããã匷å¶çµäºãããããã¹ãã¯æ£åžžã«åæ ŒããŸãã-ãããã¯åãç¶æ
ã§ïŒæã«ã¯ç°ãªãããŒãã§ïŒåäœæãããŸããã å¥ã®ãã©ã¹ã¯ãã³ã³ããéã®ãªã³ã¯ãäœæããæ©èœã§ãã-ãã®å©ããåããŠãç¹å®ã®ã³ã³ãããã°ã«ãŒãã«é¢é£ä»ããããšãã§ããŸãã
è² è·åæ£ã«ã¯ãä»®æ³ãã¹ãããµããŒãããHAProxyã䜿çšããããããHAProxyã€ã³ã¹ã¿ã³ã¹ããšã«è€æ°ã®ãµãŒãã¹ããã¹ãã§ããŸãã ãµãŒãã¹ã®ãããã€ãããŸããŸãªæ¹æ³ã§å®è¡ã§ããã¯ã©ã¹ã¿ãŒå
šäœã®Dockerãæ°åã¯ãªãã¯ããã ãã§æŽæ°ã§ããŸãã å°æ¥ãDockerã¯TutumãµãŒãã¹ã賌å
¥ãããããå°æ¥ã¯ãšã³ã·ã¹ãã ã«å®å
šã«çµ±åãããŸãã
ãã ããæé©ãªãã¬ãŒã ã¯ãŒã¯ã®æ€çŽ¢æã«ãTutumã¯ããŒã¿ãã¹ãäžã§ãã ããã«ããããããããã®ãªãã·ã§ã³ã«å¯Ÿããäž»ãªè°è«ã¯ããã¹ãäžã«ãšã³ãžãã¢ãç¹å¥ã«ããŒãã«å®å
šã«ã¢ã¯ã»ã¹ã§ããªãããã«ããå Žåã®ã€ã³ã·ãã³ãã§ãã-CPUã100ïŒ
ããŒããããšãSSHçµç±ã§ãã·ã³ã«æ¥ç¶ããããšããã§ããããã®ã³ã³ããã¯å¥ã®ããŒãã«è»¢éãããŸããã§ããã Tutumãã¯ãã«ã«ãµããŒãã¯ããã®åé¡ã«ç²ŸéããŠãããšè¿°ã¹ãŠããŸããããŸã ä¿®æ£ãããŠããŸããã ããã«æ€çŽ¢ããå¿
èŠããããŸããã
ã¯ãã«ããã¹

KubernetesããŒã ã¯ããããžã§ã¯ãããLinuxã³ã³ããã®ã¯ã©ã¹ã¿ãåäžã·ã¹ãã ãšããŠç®¡çããŠãéçºãé«éåããéçšãç°¡çŽ åãããããŒã«ãšããŠèª¬æããŠããŸãã ããã¯GoogleããµããŒããããªãŒãã³
ãããžã§ã¯ãã§ãããRed HatãMicrosoftãSaltStackãDockerãCoreOSãMesosphereãIBMãªã©ãä»ã®å€ãã®äŒæ¥ãéçºã«é¢äžããŠããŸãã
Kubernetesã®åªããŠããç¹ã¯ãã¯ã©ã¹ã¿ãŒã®æ§ç¯ãšæäœã«é¢ããGoogleã®10幎ã®çµéšããã¹ãŠç¡æã§çµã¿åãããŠããããšã§ãã Kubernetesã¯ãç¬èªã®ããŒããŠã§ã¢äžã§ããŸãã¯AWSãªã©ã®ç¹å¥ãªãã©ãŒã¡ãŒã·ã§ã³ãã³ãã¬ãŒããããã¯ã©ãŠããããã€ããŒã®èœåäžã§å®è¡ã§ããŸãã
ããã«ãGoogleã¯
Google Container EngineãšåŒã°ãã管çãããããŒãžã§ã³ã®KubernetesãæäŸããŠããŸãã ã€ã³ã¿ãŒãã§ã€ã¹ã®æ¬ é¥ã«ãããTutumã®å Žåã»ã©ç°¡åã«äœæ¥ãéå§ããããšã¯ã§ããŸãããããŠãŒã¶ãŒãã·ã¹ãã ãç解ããåŸã¯ããã®æäœãç°¡åã«ãªããŸãã
ãšã³ãžãã¢ããŒã ã¯å€ãã®ãã¹ããå®æœããŸããããã®éã«ãæŽæ°ã®æŽæ°ããã»ã¹ã§ããŒããã匷å¶çµäºããããã³ã³ãããã©ã³ãã ã«ç Žå£ããããã®æ°ã宣èšãããæ倧ããŒãè¶
ããŸããã åžžã«ãã¹ãŠãåé¡ãªãå®è¡ãããããã§ã¯ãããŸãããããããã®å Žåããç¹å®ã®æ€çŽ¢ã®åŸãç¶æ³ãä¿®æ£ããæ¹æ³ãèŠã€ããããšãã§ããŸããã
Kubernetesã®ãã1ã€ã®éèŠãªå©ç¹ã¯ãäžæããããšãªãã¯ã©ã¹ã¿ãŒå
šäœãã¢ããã°ã¬ãŒãã§ããããšã§ãã ãŸãããããã¯ãŒã¯æ€åºãæ©èœããŠããããšããã¹ãã§ç¢ºèªãããŸãããç®çã®
ãµãŒãã¹ã®ååïŒ
http://my-service
ïŒãã¢ãã¬ã¹ããŒã«å
¥åããã ãã§ãKubernetesã¯ç®çã®ã³ã³ãããžã®æ¥ç¶ãäœæããŸãã Kubernetesã¯ãã³ã³ããŒãã³ããçµã¿åãããããšãã§ããã¢ãžã¥ã©ãŒã·ã¹ãã ã§ãã
ãã¬ãŒã ã¯ãŒã¯ã«ã¯æ¬ ç¹ããããŸã-Google Container Engineã䜿çšããå Žåãã·ã¹ãã ã¯1ã€ã®ããŒã¿ã»ã³ã¿ãŒã«å¶éãããŸãã 圌ã«äœããèµ·ãã£ãå Žåãè¯ãããšã¯äœãèµ·ãããŸããã ããšãã°ãããŒããã©ã³ãµãŒã䜿çšããŠè€æ°ã®ã¯ã©ã¹ã¿ãŒãæŽçãããªã©ãããããç¶æ³ããæãåºãããšãã§ããŸãããããã«äœ¿çšã§ãããœãªã¥ãŒã·ã§ã³ã¯ãããŸããã ãã ããæ°ããããŒãžã§ã³ã®
Ubernetesãã¬ãŒã ã¯ãŒã¯ã®æ°ããããŒãžã§ã³ã§ã¯ãè€æ°ã®ããŒã¿ã»ã³ã¿ãŒã§ã®äœæ¥ã®ãµããŒããèšç»ãããŠããŸãã ããã«ãKubernetesã¯yaml圢åŒã䜿çšãããããdocker-composeãã¡ã€ã«ã®å€æãå¿
èŠã«ãªããŸãã ããã«ããã®ãããžã§ã¯ãã¯åãMesosã»ã©éçºãããŠããªããããå€æ°ã®ããŒãã§äœæ¥ã§ããŸãã
ãããã«
åžå Žã§å©çšå¯èœãªãªãã·ã§ã³ã調æ»ããåŸãHalebyããŒã ã¯Kubernetesã«æ±ºçããŸãããKubernetesã¯ãåé¡ã解決ããã®ã«æé©ãªããŒã«ã§ãããšãšã³ãžãã¢ã«æãããŸããã åæã«ãä»ã®èæ
®ããããµãŒãã¹ãè¯ãé¢ã«çŸããŸãããã圌ãã«ã¯æ¬ ç¹ãããããã®å Žåã¯åãå
¥ããããªãããšãå€æããŸããã