Docker Compose ãš KubernetesïŒå°èŠæš¡ã¢ããªã®ããã®ãã§ãã¯ãªã¹ã
Docker Compose ãš KubernetesïŒãã®ãã§ãã¯ãªã¹ãã§ãCompose ãååãªå ŽåãšãªãŒãã¹ã±ãŒãªã³ã°ãããŒãªã³ã°ã¢ããããŒããªã© K8s ã®æ©èœãå¿ èŠã«ãªãå Žåã倿ããŸãã

æ¬åœã«éžãã§ããããš\n\nDocker Compose ãš Kubernetes ã®éãã¯ãåçŽ vs é«åºŠããšãã£ã話ã§ã¯ãããŸããã1 å°ã®ãµãŒããŒã§å°ããæŽã£ããã·ã³ã®ããã«ã¢ããªãåããããéšåãå£ããŠãåãç¶ããããã«èšèšãããã·ã¹ãã ã§åãããã®éãã§ãã\n\nå€ãã®å°ããªããŒã ã«å¿
èŠãªã®ã¯ãã©ãããã©ãŒã ã§ã¯ãªããéå±ã§äºæž¬å¯èœãªåºæ¬ã§ãïŒã¢ããªãèµ·åããŠçšŒåãããã¢ããããŒãããã©ãã«ãªãè¡ããäœãå£ãããšãã«çŽ æ©ã埩æ§ããããšã\n\nã³ã³ããããŒã«ã¯æ®éãã€ã¡ãŒãžã®ãã«ãããµãŒãã¹ã®å®è¡ãæéãéãã倿Žç®¡çãšãã3ã€ã®ä»äºãæ±ããŸãããããããæ··åãããã¡ã§ããCompose ã¯äž»ã«åäžãã¹ãäžã§äžçµã®ãµãŒãã¹ïŒã¢ããªãDBããã£ãã·ã¥ïŒãäžç·ã«åããããšã«ãã©ãŒã«ã¹ããŠããŸããKubernetes ã¯ã¯ã©ã¹ã¿å
šäœã§ãµãŒãã¹ãåãããã¹ã±ãžã¥ãŒãªã³ã°ããã«ã¹ãã§ãã¯ã段éçãªå€æŽãšãã£ãã«ãŒã«ãæäŸããŸãã\n\nã€ãŸãæ¬åœã®æ±ºæã¯éåžžãæ¬¡ã®ãããªãã¬ãŒããªãã«é¢ãããã®ã§ãïŒ\n\n- 1 å°ã®ãã¹ãã端ãã端ãŸã§çè§£ããã®ããè€æ°ããŒãã§å¯åéšãå¢ããŠãåãå
¥ããã®ã\n- æåã®äºå®ãããæŽæ°ããèªååãããããŒã«ã¢ãŠããšå®å
šè£
眮ã\n- åºæ¬çãªåèµ·åã§ååããåé·æ§ã«ããã»ã«ãããŒãªã³ã°ãå¿
èŠã\n- äºåã«ãã£ãã·ãã£ãèšç»ããããè² è·ã«å¿ããŠåå¿ããã¹ã±ãŒã«ã«ãŒã«ã\n- ã·ã³ãã«ãªãããã¯ãŒã¯ãšã·ãŒã¯ã¬ãã管çãããã©ãã£ãã¯ãšèšå®ã®ããã®ã³ã³ãããŒã«ãã¬ãŒã³ã\n\nç®æšã¯ãä¿¡é Œæ§ã®èŠä»¶ãæºããæå°ã®æ§æã«ã¢ããªãåãããããšã§ããæåããéå°ã«äœã蟌ãã§åŸã§åŸæããªãããã«ããŸãããã\n\n## ãžã£ãŒãŽã³æãã®ç°¡åãªå®çŸ©\n\nDocker Compose ãäžèšã§ïŒè€æ°ã³ã³ããïŒWebãAPIãDBãã¯ãŒã«ãŒãªã©ïŒãäžã€ã®èšå®ãã¡ã€ã«ã§èšè¿°ãã1 å°ã®ãã·ã³ã§äžç·ã«åããããã®ä»çµã¿ã§ãã\n\nKubernetes ãäžèšã§ïŒã³ã³ãããã¯ã©ã¹ã¿äžã§å®è¡ããå¥å
šæ§ãä¿ã¡ãæŽæ°ãšã¹ã±ãŒãªã³ã°ã管çãããªãŒã±ã¹ãã¬ãŒã¿ãŒã§ãã\n\nãããã¯ãŒãã³ã°ã¯äž¡è
ãšãæ±ããããã§ãããç¯å²ãéããŸããCompose ã§ã¯ãµãŒãã¹ã¯åäžãã¹ãäžã§ãµãŒãã¹åã䜿ã£ãŠéä¿¡ããŸããKubernetes ã§ã¯è€æ°ãã·ã³ã«ãŸããããéåžžã¯å®å®ãã Service åã®è£ã§éä¿¡ããå€éšããã®å
¥ãå£ãæŽãããšãã« Ingress ã®ãããªã«ãŒãã£ã³ã°ã«ãŒã«ã远å ããŸãã\n\nã¹ãã¬ãŒãžã¯å€æã®åããç®ã«ãªããã¡ã§ããCompose ã¯éåžžããã¹ãäžã®ããŒã«ã«ããªã¥ãŒã ã管çãããããã¯ãŒã¯ãã£ã¹ã¯ãæããŸããKubernetes ã¯ã¹ãã¬ãŒãžã Persistent Volume ãšããŠå¥ã®ãªãœãŒã¹æ±ãã«ãã坿¬æ§ãäžããäžæ¹ã§èšå®äœæ¥ãšå¯åéšãå¢ããŸãã\n\nã·ãŒã¯ã¬ãããå®åã§ã¯éããŸããCompose ã¯ç°å¢å€æ°æ³šå
¥ãã·ãŒã¯ã¬ãããã¡ã€ã«ã䜿ããŸããããã¹ããšãããã€ããã»ã¹ã®ä¿è·ã¯èªåã§ããå¿
èŠããããŸããKubernetes ã¯ã·ãŒã¯ã¬ããã®ä»çµã¿ãšã¢ã¯ã»ã¹ã«ãŒã«ãæã¡ãŸããããããã®ãªãœãŒã¹ãšããªã·ãŒã管çããå¿
èŠããããŸãã\n\n### æ¥åžžã®éã\n\nå€ããã®ã¯äž»ã«éçšã®æéã§ãã£ãŠãã³ãŒãã§ã¯ãããŸããã\n\nCompose ã ãšèšå®ãå€ããŠã€ã¡ãŒãžã pull ãããµãŒãã¹ãåèµ·åãã1 å°ã®ããã¯ã¹ã®ãã°ãç£èŠããŸããããã¯ã¢ããããã£ã¹ã¯ç®¡çã¯æåã§ããåãããããããšãå€ãã§ãã\n\nKubernetes ã ãšãããã§ã¹ããé©çšããPod ãç£èŠããNamespace ãæš©éãæ±ããè€æ°ããŒãã«ãŸãããåé¡ããããã°ããŸããããã¯ã¢ãããã¹ãã¬ãŒãžã¯ã©ã¹ãã¢ããã°ã¬ãŒãã¯åŒ·åã§ããå®éã«èšç»ãå¿
èŠã§ãã\n\nAppMaster ã®ãããªããŒã³ãŒããã©ãããã©ãŒã ã§éçºããŠããå Žåãã¢ããªããžãã¯ã®å€æŽã¯éãäžæ¹ã§ããã¹ãã£ã³ã°ã®éžæããããã€ãšã©ã³ã¿ã€ã ãã©ãã ããèŠå®ããå¿
èŠãããããæ±ºããŸãã\n\n## Compose ã§ååãªã±ãŒã¹\n\nå€ãã®å°ããªããŒã ã«ãšã£ãŠãæå㯠Docker Compose ã®æ¹ãå§åçã«åççãªããšãå€ãã§ããã¢ããªãæ°åã®ãµãŒãã¹ã§ããã©ãã£ãã¯ãæŠãäºæž¬å¯èœãªããCompose ã§å
šäœãäžç·ã«å®è¡ããã®ã¯æå¿«ã§ã·ã³ãã«ã§ãã\n\nCompose ã¯ãåäžã®ä¿¡é Œã§ãããã·ã³ïŒå°ããã® VM ããªã³ãã¬ã®ãµãŒãïŒã§ã¹ã¿ãã¯å
šäœãåããããšãã«åããŠããŸããäžè¬çãªæ§æãã€ãŸãããã³ããšã³ããAPIãã¯ãŒã«ãŒãDB ãããã«åœãããŸãã\n\nã¢ããããŒãæã«çæéã®ããŠã³ã¿ã€ã ã蚱容ãããå Žåã Compose ã§åé¡ãããŸãããå€ãã®å°èŠæš¡ããžãã¹ã¯éããªæé垯ã«åèµ·åãè¡ããŸããããªãªãŒã¹ãã¹ã±ãžã¥ãŒã«ã§ããã°ååã§ãã\n\n次ã®ãããªæ¡ä»¶ãæã£ãŠãããªã Compose ã§ååãªããšãå€ãã§ãïŒãããã 2ã6 ãµãŒãã¹ã§åœ¢ãããŸãå€ãããªãã1 å°ã®ãµãŒããããŒã¯ãåŠçã§ããäœè£ããããæåãããã€ïŒã€ã¡ãŒãžã pull ããŠã³ã³ãããåèµ·åããïŒãèŠã«ãªããªããã¢ããããŒãæã®çãäžæã蚱容ã§ããã\n\nå
·äœäŸïŒå°åã®ãµãŒãã¹æ¥ã顧客ããŒã¿ã«ãšç®¡çããŒã«ãéå¶ããŠããã±ãŒã¹ããã°ã€ã³ãããŒã¿ããŒã¹ãã¡ãŒã«éç¥ãå¿
èŠã§ãå©çšãæ¥åæéã«åããªãã1 å°ã® VM ã«ã¢ããªãš DB ã眮ã Compose ã§éçšããæ¹ããã¯ã©ã¹ã¿ãåããããå®ããŠç®¡çããããå ŽåããããŸãã\n\nããäžã€ã®ææšã¯ãã¢ããªã®æ§ç¯ãæå€§ã®åé¡ã§ãéçšãäºã®æ¬¡ãã®å Žåã§ããCompose ã¯éçšã®ç¯å²ãå°ããä¿ãŠãŸããAppMaster ã¯ããã¯ãšã³ããWebãã¢ãã€ã«ãçæããèšèšãªã®ã§ãã€ã³ãã©æŽåã«äœé±éãåãããã«æžãç¹ã§ãæå©ã§ãã\n\n## Kubernetes ãæå³ãæã¡å§ããæ\n\nDocker Compose ãš Kubernetes ã§è¿·ããšããåå²ç¹ã¯å¿
ããããã¢ããªã倧ãããªã£ãããã§ã¯ãããŸããããè€æ°å°ã§ç¢ºå®ãªçšŒåããããããããå®å
šãªéçšãå¿
èŠãããéµã§ãã\n\nKubernetes ãé©ããŠããã®ã¯ãã¢ããªããã¯ãã·ã³ã°ã«ããã¯ã¹ã§åãŸãããéšåé害ãèµ·ããŠããã©ãããã©ãŒã ã«ä»»ããŠçšŒåãç¶ããããšãã§ãã\n\nKubernetes ã®é åã«å
¥ã£ãããšã瀺ãäžè¬çãªãµã€ã³ïŒ\n\n- ãããã€æã«ããŠã³ã¿ã€ã ã蚱容ã§ãããããŒããŠã³ã¿ã€ã ãç®æšã§ãã\n- è€æ°ãµãŒãã§çšŒåããŠããã1 å°ã® VM ãæ»ãã§ãèªå埩æ§ãå¿
èŠ\n- ãã©ãã£ãã¯ãã¹ãã€ã¯ãããããè² è·ã«å¿ããèªåçãªãã£ãã·ãã£èª¿æŽã欲ãã\n- ãªãªãŒã¹ãå®å
šã«è¡ããåé¡ãããã°çŽ æ©ãããŒã«ããã¯ããã\n- ã³ã³ãã©ã€ã¢ã³ã¹ã顧客èŠä»¶ã§ã·ãŒã¯ã¬ãããã¢ã¯ã»ã¹ã®ç®¡çãç£æ»ãå¿
èŠ\n\nå
·äœäŸïŒAPIãWeb ããã³ããšã³ããããã¯ã°ã©ãŠã³ãã¯ãŒã«ãŒãæã€å°ããªããžãã¹ããæå㯠Compose ã§ 1 å°ã®ãµãŒãã«èŒããŠéçšããŸããåŸã« 2ã3 å°ã«åããŠãªã¹ã¯ãäžããããšããŠããåäžãã¹ãé害ã§ã¢ããªå
šäœãèœã¡ããããã€ãå€äžã®ãã§ãã¯ãªã¹ãã«ãªã£ãŠããŸãå Žé¢ãåºãŠããŸããKubernetes ãªãã¯ãŒã¯ããŒããåã¹ã±ãžã¥ãŒã«ãããã«ã¹ãã§ãã¯ã§åèµ·åããæšæºåãããæ¹æ³ã§å€æŽãããŒãªã³ã°ã§ããŸãã\n\nããŒã ãæé·ããŠããå Žåã Kubernetes ãåãããšãå€ãã§ããæš©éãããŒã«ãã¯ã£ããããç¹°ãè¿ãå¯èœãªãããã€ãéèŠã«ãªããŸãã\n\nAppMaster ã§äœã£ãŠã¯ã©ãŠãã«æ¬çªã眮ãäºå®ãªããKubernetes ã¯æ¬åœã«å¿
èŠã«ãªã£ãæã«ãéå±ã§å®å®ãããåºç€ã«ãªãåŸãŸããé«å¯çšæ§ãå¶åŸ¡ããããããã€ãæ¬åœã«å¿
èŠãšãããªãæ€èšãã䟡å€ããããŸãã\n\n## ããŒãªã³ã°ã¢ããããŒãïŒæ¬åœã«å¿
èŠãïŒ\n\nDocker Compose ãš Kubernetes ãæ¯ã¹ããšãããããŒãªã³ã°ã¢ããããŒããã¯ãã°ãã°å¿
é ã®ããã«èãããŸããå°èŠæš¡ããžãã¹ã§ã¯ãæ¯é±å®éã«å°ãåé¡ã解決ããŠãããã©ããã§å€æããŠãã ããã\n\nããŠã³ã¿ã€ã ãå
·äœçã«å®çŸ©ããŸãããããããã€äžã« 2ã5 åã¢ããªã䜿ããªããŠãæ§ããªãã§ããïŒãããšãã»ãŒãŒãããŠã³ã¿ã€ã ãå¿
èŠã§ã1 åã§ã泚æããµããŒãã倱ãããããã ãšå°ããŸããïŒ\n\nã¡ã³ããã³ã¹ãŠã£ã³ããŠã§ã®æŽæ°ãå¯èœãªããããŒãªã³ã°ã¢ããããŒãã¯éå°ãªããšãå€ãã§ããå€ãã®å°ããªããŒã ã¯æ·±å€ãå©çšãå°ãªãæéã«ãããã€ããçãã¡ã³ããã³ã¹è¡šç€ºãåºãæŠç¥ã§ååã§ãã\n\nããŒãªã³ã°ã¢ããããŒããäžããäž»ãªå©ç¹ã¯ãã³ã³ãããåŸã
ã«çœ®ãæããŠäžéšã®å®¹éããªã³ã©ã€ã³ã«ä¿ãŠãããšã§ãããã ãããããããã€ãèªåçã«å®å
šã«ããããã§ã¯ãããŸãããäºææ§ã®ãã DB 倿ŽïŒãããã¯ç§»è¡èšç»ïŒãå®éã®ã¬ãã£ãã¹ãåæ ãããã«ã¹ãã§ãã¯ãæ°ããŒãžã§ã³ãåäœã¯ãããæåãããããå Žåã®ããŒã«ããã¯èšç»ãåé¡ãçŽ æ©ãæ€ç¥ããç£èŠãäŸç¶å¿
èŠã§ãã\n\nåäžã€ã³ã¹ã¿ã³ã¹ããªããŒã¹ãããã·ã®èåŸã§åãããŠããã ããªããããŒãªã³ã°ããŠãçãäžæã¯èµ·ãåŸãŸããé·æéã®ãªã¯ãšã¹ããã¡ã¢ãªå
ã»ãã·ã§ã³ããããšç¹ã«ããã§ãã\n\n### ããå¹ã代æ¿ç\n\nCompose ã§ã¯å€ãã®ããŒã ãã·ã³ãã«ãªãã«ãŒã°ãªãŒã³é¢šã®ã¢ãããŒãã䜿ããŸãïŒæ°ããŒãžã§ã³ãå¥ããŒãã§å€ããã®ãšäžŠã¹ãŠèµ·åãããããã·ãåãæ¿ããŠããå€ãã³ã³ãããåé€ãããå°ãã¹ã¯ãªããåãšéçšã®èŠåŸãå¿
èŠã§ããããã«ã¯ã©ã¹ã¿ã«ç§»è¡ããããšãªã倧åã®å©ç¹ãåŸãããŸãã\n\nKubernetes ã®ããŒãªã³ã°ã¢ããããŒãã¯ãè€æ°ã¬ããªã«ã確ããªãã«ã¹ãã§ãã¯ãé »ç¹ãªãããã€ãããå Žåã«å¹æãåºãŸããAppMaster ã§ãããžã§ã¯ããæŽæ°ããŠæ°ãã«ããé »ç¹ã«ãããã€ãããããªå Žåãã¹ã ãŒãºãªãªãªãŒã¹ãããŒã¯äŸ¡å€ããããŸãããããŠã³ã¿ã€ã ãå®éã«ããžãã¹ã«çæãã©ãããå€æåºæºã§ãã\n\n## ãªãŒãã¹ã±ãŒãªã³ã°ïŒå°èŠæš¡ã¢ããªåãã®çŸå®ãã§ãã¯\n\nãªãŒãã¹ã±ãŒãªã³ã°ã¯ç¡æã®æ§èœç¢ºä¿ã®ããã«èãããŸãããå®åã§ã¯ã¢ããªãããã«é©ããŠããŠãæ¡åŒµããäœå°ãããæã«ããããŸããããŸããã\n\nãªãŒãã¹ã±ãŒãªã³ã°ãæ©èœããã«ã¯éåžžãæ¬¡ã®3ã€ãå¿
èŠã§ãïŒè€æ°ã³ããŒã§åãããµãŒãã¹ïŒã¹ããŒãã¬ã¹ïŒãä¿¡é Œã§ããã¡ããªã¯ã¹ïŒCPUãã¡ã¢ãªããªã¯ãšã¹ãæ°ããã¥ãŒã®æ·±ãïŒããããŠæ¡åŒµã§ããäœå°ãã£ãã·ãã£ïŒè¿œå ããŒããã¯ã©ãŠãã®äœåïŒã\n\nåçŽãªçç±ã§å€±æããããšãå€ãã§ãããŠãŒã¶ãŒã»ãã·ã§ã³ãã¡ã¢ãªå
ã«ä¿æããŠãããšæ°ããã³ããŒã«ã¯ã»ãã·ã§ã³ããªããã°ã¢ãŠããããããŸããèµ·åã«2ã3åããããšã¹ã±ãŒãªã³ã°ã®åå¿ãé
ãããŸããããã«ããã¯ã DB ãåäžã®ãã¥ãŒãå€éš API ã«ããå Žåãã¢ããªã³ã³ãããå¢ãããŠãæå³ããããŸããã\n\nKubernetes ããªãŒãã¹ã±ãŒãªã³ã°ã®ããã ãã«æ¡çšããåã«ãç°¡åãªæ¹åã詊ããŠãã ããïŒVM ãµã€ãºãäžæ®µäžãããCPU/RAM ã®äœè£ãäœããCDN ããã£ãã·ã¥ãå°å
¥ãããäºæž¬å¯èœãªããŒã¯ã«ã¯ã¹ã±ãžã¥ãŒã«ã¹ã±ãŒãªã³ã°ã䜿ããèµ·åæéãçããããã¬ãŒãå¶éãå
¥ããŠã¹ãã€ã¯ãããéãããªã©ã\n\nãªãŒãã¹ã±ãŒãªã³ã°ã¯ããã©ãã£ãã¯ãäžèŠåã§éå°ããããžã§ãã³ã°ãé«ã³ã¹ãã§ããããµãŒãã¹ãå®å
šã«è€æ°ã³ããŒã§åãã㊠DB ãæ°ããªããã«ããã¯ã«ããªãèŠèŸŒã¿ãããå Žåã«äŸ¡å€ãçºæ®ããŸããAppMaster ã®ãããªããŒã«ã§çæããããµãŒãã¹ããããã€ãããªããæ©ãæ®µéã§ã¹ããŒãã¬ã¹èšèšãšèµ·åã®éããæèããŠãããšãåŸã§ã¹ã±ãŒã«ãããããªããŸãã\n\n## ããŒã¿ãšç¶æ
ïŒéžæãå·Šå³ããèŠçŽ \n\nã»ãšãã©ã®å°èŠæš¡ã¢ããªã®é害㯠Web ã³ã³ãããåå ã§ã¯ãªããããŒã¿åšãïŒããŒã¿ããŒã¹ããã¡ã€ã«ãæ°žç¶åãå¿
èŠãªãã®ïŒãåå ã§ããDocker Compose ãš Kubernetes ã®éžæã§ã¯ãç¶æ
管çãæ±ºå®æã«ãªãããšãå€ãã§ãã\n\nããŒã¿ããŒã¹ã«ã¯å°å³ã ãã©éèŠãªäžã€ãå¿
èŠã§ãïŒããã¯ã¢ããããã€ã°ã¬ãŒã·ã§ã³ãäºæž¬å¯èœãªã¹ãã¬ãŒãžãCompose ã§ã¯ Postgres ã³ã³ãããšååä»ãããªã¥ãŒã ã§éçºãå°ããªå
éšããŒã«ã«ã¯åååããŸããããã¹ãã®ãã£ã¹ã¯ãæºæ¯ã«ãªã£ãããVM ã眮ãæããå¿
èŠãåºããããããã¯èª°ãã誀ã£ãŠ docker compose down -v ãå®è¡ãããã©ããªãããæ£çŽã«èããå¿
èŠããããŸãã\n\nKubernetes ã§ããŒã¿ããŒã¹ãåããããšã¯å¯èœã§ãããã¹ãã¬ãŒãžã¯ã©ã¹ãPersistent VolumeãStatefulSetããªãã¬ãŒã¿ãŒã®ã¢ããã°ã¬ãŒããªã©å¯åéšãå¢ããŸããå€ãã®ããŒã ããŸã æ©ãããæ®µéã§ããŒã¿ããŒã¹ãã¯ã©ã¹ã¿å
ã«å
¥ããŠããŸãããã®åŸãåã«ç§»åãããã ãã§ã鱿«äœæ¥ã«ãªãããšã«æ°ã¥ããŸãã\n\nå°ããªããžãã¹ã«å¯Ÿããå®çšçãªããã©ã«ãã¯ã·ã³ãã«ã§ãïŒã¹ããŒãã¬ã¹ãªã¢ããªã¯ Compose ã Kubernetes ã§åãããããŒã¿ã¯ãããŒãžããµãŒãã¹ã«çœ®ããŸãã\n\n### ç¶æ
ã«é¢ããç°¡åãªãã§ãã¯ãªã¹ã\n\n次ã®ãããããåœãŠã¯ãŸããªããç¶æ
ã第äžçŽèŠä»¶ãšããŠæ±ããDIY ãé¿ããããšãæ€èšããŠãã ããïŒãã€ã³ãã€ã³ã¿ã€ã ã§ã®åŸ©æ§ãå¿
èŠãåãªãªãŒã¹ã§ãã€ã°ã¬ãŒã·ã§ã³ãèµ°ãããïŒããŒã«ããã¯èšç»ãå¿
èŠã倱ããªããŠãŒã¶ãŒãã¡ã€ã«ãä¿åããŠãããåèµ·ååŸãæ®ãããšãå¿
èŠãªãã¥ãŒããã£ãã·ã¥ã䜿ã£ãŠãããä¿åãã¢ã¯ã»ã¹å¶åŸ¡ã«é¢ããã³ã³ãã©ã€ã¢ã³ã¹èŠä»¶ãããã\n\nã¹ããŒããã«ãªãµãŒãã¹ã¯ã¯ã©ã¹ã¿åãé£ããããŸãããã¥ãŒãå
±æãã¡ã€ã«ã¹ãã¬ãŒãžããµãŒããŒãµã€ãã»ãã·ã§ã³ã¯ãé©åã«èšèšãããŠããªããšã¹ã±ãŒãªã³ã°ã®é害ã«ãªããŸããå€ãã®ããŒã ãã»ãã·ã§ã³ãã¯ãããŒã Redis ã«ç§»ãããã¡ã€ã«ã¯ãªããžã§ã¯ãã¹ãã¬ãŒãžã«çœ®ãã®ã¯ãã®ããã§ãã\n\nAppMaster ã䜿ãå Žåã¯ãPostgreSQL ã«çŠç¹ãåœãŠãããŒã¿ã¢ããªã³ã°ããã®æ¹éã«åã£ãŠããŸãïŒPostgreSQL ããããŒãžãã«ããŠãçæãããããã¯ãšã³ããš Web/ã¢ãã€ã«ãéçšãæãç°¡åãªå Žæã«ãããã€ããŸãããã\n\n### ããã©ãããŠãããŒã¿ããŒã¹ããå
éšã§ãåãããªã\n\nãããåŸãå
éšã§åããå Žåã¯ã管çãããããã¯ã¢ãããšåŸ©å
ãã¹ããæç¢ºãªã¹ãã¬ãŒãžãšã¢ããã°ã¬ãŒãæé ããã£ã¹ã¯/ã¡ã¢ãª/æ¥ç¶æ°ã®ç£èŠãææžåãããçœå®³åŸ©æ§æé ããããŠãããçè§£ãããªã³ã³ãŒã«æ
åœè
ãçšæããããšãã³ãããããŠãã ããã\n\n## 絶察ã«çããªãéçšã®åºæ¬\n\nCompose ãéžãã§ã Kubernetes ãéžãã§ããæ¬çªã§ã¢ããªãå¥å
šã«ä¿ã€ããã®éå±ãªåºæ¬ã¯ããã€ããããŸããããããé£ã°ããšãåçŽãªãããã€ãå€éãã®ç«æ¶ãã«å€ãããŸãã\n\n### ç£èŠãšãã°ïŒé亀æžïŒ\n\näœãèµ·ããŠããããèŠããã5 ååã«äœãèµ·ãããã®èšé²ãå¿
èŠã§ããã€ãŸãå
šãµãŒãã¹ïŒã¢ããªãã¯ãŒã«ãŒãDBããªããŒã¹ãããã·ïŒã®ãã°ãäžå
çã«èŠãå Žæã"ãµãŒãã¹ãèœã¡ãŠãã" ã "ãšã©ãŒçãæ¥å¢" ã®ããã®åºæ¬çãªãã«ã¹ãã§ãã¯ãšã¢ã©ãŒããCPUã»ã¡ã¢ãªã»ãã£ã¹ã¯ã»DB æ¥ç¶ã®ç°¡åãªããã·ã¥ããŒãããããŠã€ã³ã·ãã³ãããããã€ã«çŽã¥ããããã®ãªãªãŒã¹ã®ã¿ã°ä»ããå¿
èŠã§ãã\n\nå°ããªäŸïŒãªã³ã©ã€ã³äºçŽã¢ããªãã¿ã€ã ã¢ãŠããå§ãããããŸã㯠Web ã³ã³ãããã¯ã©ãã·ã¥ããŠããã®ããDB ã®æ¥ç¶ãæ¯æžããŠããã®ããããã¯ã°ã©ãŠã³ããžã§ããè©°ãŸã£ãŠããã®ããçŽ æ©ã倿ããããã®ã§ãã\n\n### ã·ãŒã¯ã¬ãããèšå®ãã¢ã¯ã»ã¹å¶åŸ¡\n\nå°ããªããŒã ã¯ã·ãŒã¯ã¬ããã "ãã ã® env ãã¡ã€ã«" æ±ãã«ããã¡ã§ãããããããšèªèšŒæ
å ±ããã£ããã®ã¹ã¯ãªãŒã³ã·ã§ãããå€ãããã¯ã¢ããã«æ®ã£ãŠããŸããŸãã\n\næäœéã®å®å
šå¯ŸçïŒã·ãŒã¯ã¬ããããªããžããªå€ã«ä¿ç®¡ããã¡ã³ããŒãæãããããŒããŒã·ã§ã³ãããèšå®ãšã³ãŒããåããéçºïŒã¹ããŒãžã³ã°ïŒæ¬çªã§ãã¹ã¯ãŒããå
±æããªãããããã€ã§ããäººãšæ¬çªããŒã¿ãèªãã人ãåããïŒãããã¯å¥ã®åœ¹å²ïŒã誰ããã€äœããããã€ãããã®ç£æ»ãã°ãæ®ãã\n\nCompose ã§ãèŠåŸãããã°å¯ŸåŠã§ããŸããKubernetes ã¯ããå€ãã®çµã¿èŸŒã¿ã¬ãŒãã¬ãŒã«ãæäŸããŸãããããããã»ããã¢ããããŠåããŠå¹æãçºæ®ããŸãã\n\n### ã³ã³ãã©ã€ã¢ã³ã¹ïŒCompose ãè¶
ããéããªçç±\n\nããã©ãŒãã³ã¹ãååã§ããã³ã³ãã©ã€ã¢ã³ã¹èŠä»¶ã§å°æ¥ã®éžæãå€ããããšããããŸããç£æ»ãã°ã峿 Œãªã¢ã¯ã»ã¹å¶åŸ¡ãããŒã¿å±
äœå°èŠä»¶ãæ£åŒãªå€æŽç®¡çãªã©ã¯ãããŒã ã Kubernetes ããããŒãžããã©ãããã©ãŒã ã«æŒãäžããããšããããŸãã\n\nAppMaster ã§å
éšããŒã«ãäœãå Žåãåãã§ãïŒéçšã補åã®äžéšãšããŠæ±ããåŸåãã«ããªãã§ãã ããã\n\n## ããããçœ ãšé¿ãæ¹\n\næå€§ã®èª€ãã¯ãããããã£ãœãèŠããããããšèšã£ãŠè€éãªæ¹ãéžã¶ããšã§ããå€ãã®ããŒã ã«ãšã£ãŠ Docker Compose ãš Kubernetes ã®éžæã¯æè¡è«äºã§ã¯ãªããæéãšæ³šåã®åé¡ã§ãã\n\nãããããã¿ãŒã³ã¯ããã©ãã£ãã¯ãé倧è©äŸ¡ããŠåæ¥ãã Kubernetes ãéžã³ãã¯ã©ã¹ã¿èšå®ãæš©éããããã€ã¹ã¯ãªããã«äœé±éãè²»ãããã¢ããªèªäœãæŸçœ®ãããããšã§ããå®å
šãªæ¹æ³ã¯ä»æ¥ã®èŠä»¶ãæºããæãã·ã³ãã«ãªæ§æã§å§ããç§»è¡ã®ããªã¬ãŒãæç¢ºã«ããŠããããšã§ãã\n\næéãç¡é§ã«ããçœ ã¯æ¬¡ã®ãããªãã®ã§ãïŒ\n\n- "念ã®ãã" ã§ Kubernetes ãéžã¶ãCompose ã§æºãããªã 1ã2 ã®èŠä»¶ãæžãåºããããããããã§å€æããã\n- Kubernetes ãç£èŠãããã¯ã¢ããã眮ãæãããšæã蟌ãã眮ãæããªãã®ã§ã誰ãã¢ã©ãŒããåãåããããã°ãã©ãã«éããããããŒã¿ãã©ã埩å
ããããå
ã«æ±ºããã\n- ãã¹ãŠãã¹ããŒããã«ã«æ±ããç¶æ
ãäžç®æã«ãŸãšãïŒãããŒãžã DBãå°çšããªã¥ãŒã ãå€éšãµãŒãã¹ïŒãã¢ããªã³ã³ããã¯æšãŠãããåæã«ããã\n- ãããã¯ãŒã¯ãšã»ãã¥ãªãã£äœæ¥ãéå°è©äŸ¡ãããTLSããã¡ã€ã¢ãŠã©ãŒã«ãã·ãŒã¯ã¬ããã®æ±ããæå°æš©éãèšç»ã«å
¥ããã\n- æ©æã«ããŒã«ãå¢ããããããHelmããµãŒãã¹ã¡ãã·ã¥ãé«åºŠãª CI ã¹ãããã¯åœ¹ç«ã¡ãŸããããããããæ°ããé害ç¹ã«ãªããŸãã\n\näŸïŒAppMaster ãããšã¯ã¹ããŒãããã¢ããªããããã€ããããŒã ããæåã®æã Kubernetes ã®ã¢ããªã³èª¿æŽã«è²»ãããŠããã¯ã¢ãããåºæ¬çãªã¢ã©ãŒããåŸåãã«ãããšãæåã®é害ãèµ·ãããšãã«çãç®ãèŠãŸãããŸãã¯åºæ¬ãåºããå¿
èŠã«ãªã£ããæ®µéçã«è€éããè¶³ããŸãããã\n\n## 倿ãã§ãã¯ãªã¹ãïŒCompose ã Kubernetes ã\n\nè¿·ã£ããšãã®çŽ æ©ããã£ã«ã¿ãšããŠäœ¿ã£ãŠãã ãããæªæ¥ãå®ç§ã«äºæž¬ããå¿
èŠã¯ãããŸããã仿¥ã®ãªã¹ã¯ãã«ããŒããæå°ã®ããŒã«ãéžã¹ã°è¯ãã®ã§ãã\n\n### Compose ã§ååãªãšã\n\nCompose ã¯ã¢ããªãå°ããå¯ã«çµåããŠããïŒæŠã 1ã5 ã³ã³ããïŒãã¢ããããŒãæã®ããŠã³ã¿ã€ã ã蚱容ã§ããããã©ãã£ãã¯ãå®å®ããŠããããããã€ã¯æåã ã管çã§ãããéçšæéãç¯çŽãããã®ã§å¯åéšãæžããããããšããå Žåã«åããŸãã\n\n### Kubernetes ãå¹ããŠãããšã\n\nKubernetes ã广ãçºæ®ããã®ã¯ãèªåå埩ãå¿
èŠãªåãéšåãå¢ãããšããããé«ã皌åçãæ±ãããããšãããã©ãã£ãã¯ãã¹ãã€ããŒã§ãããšããè¿
éãªããŒã«ããã¯ãšå®å
šãªãªãªãŒã¹ãå¿
èŠãªãšãããããŠéçšïŒday-2ïŒãåŒãåããããããŒã ããããŒãžãç°å¢ã䜿ãå Žåã§ãã\n\näŸïŒç®¡çããŒã¿ã«ãšäºçŽ API ãæã€å°åãµãŒãã¹ã¯éåžž Compose ã«åããŸããé »ç¹ãªãªãªãŒã¹ãšå£ç¯çãªã¹ãã€ã¯ãããããŒã±ãããã¬ã€ã¹ã¯ KubernetesããŸã㯠AppMaster ã§äœã£ãã¢ããªã AppMaster Cloud ã®ãããªãããã€ãã©ãããã©ãŒã ã§éçšããæ¹ãæ©æµã倧ããããšããããŸãã\n\n## äŸïŒå°ããªããžãã¹ã¢ããªãéžã¶å Žé¢\n\nçŸå®¹å®€ã®äºçŽã¢ããªãæ³åããŠã¿ãŠãã ãããã·ã³ãã«ãª Web ããã³ããAPIããªãã€ã³ããŒãéãã¯ãŒã«ãŒãPostgres ããŒã¿ããŒã¹ããããŸãããªãŒããŒã¯ãªã³ã©ã€ã³äºçŽãã¹ã¿ããã®ã¹ã±ãžã¥ãŒã«ãåºæ¬çãªã¬ããŒããæ¬²ããã ãã§ãã\n\næåã¯ä¿¡é Œã§ãã1å°ã®ãµãŒãã§ Docker Compose ã䜿ããŸãã1ã€ã® compose ãã¡ã€ã«ã§ webãAPIãworkerãPostgres ã®4ãµãŒãã¹ãåãããå€éããã¯ã¢ãããåºæ¬çãªç£èŠãåèµ·åããªã·ãŒã远å ããŠåèµ·åæã«ãµãŒãã¹ã埩垰ããããã«ããŸããå°ããªããŒã ãšå®å®ãããã©ãã£ãã¯ãªãããããæãèœã¡çãéã§ã"Docker Compose vs Kubernetes" ãæ©ã¿ã®çš®ã«ããªãéžæã§ãã\n\næ°ãæåŸã«ããžãã¹ãæé·ããŠãããšããŸãããã©ãã£ãã¯ã¹ãã€ã¯ïŒããªããŒããã¢ãŒã·ã§ã³ïŒãçŸå®ã«ãªãã1 å°ã ãšé
ããªããããã㯠"äºçŽã¯24/7" ã®ãããªã¢ããã¿ã€ã ã®çŽæããããªããéžæã¯å€ãã£ãŠããŸãã\n\nãã®æç¹ã§ãã§ãã¯ãªã¹ã㯠Kubernetes ã®æ©èœãæãããšããããŸãããããã¯ããŒã ãæ¬åœã«ãããã䜿ãèŠæããããšãã®ã¿æå³ãæã¡ãŸãããªãŒãã¹ã±ãŒãªã³ã°ã¯è² è·ãäžèŠåã§è€æ°ã® API ã¬ããªã«ãããŒããã©ã³ãµãŒã®èåŸã§å®å
šã«åããããšãã«éèŠã§ããããŒãªã³ã°ã¢ããããŒãã¯æ¥åæéäžã«æŽæ°ããŠãç®ç«ããªãããšãå¿
é ã®ãšãã«æå³ãæã¡ãŸãã\n\näžè¬çãªæ±ºæã¯ããã§ãïŒ1 å°ãšååãªããã¯ã¢ããã§çŽæãå®ããé㯠Compose ãç¶ããè€æ°ããŒããå®å
šãªãããã€ãå¶åŸ¡ãããã¹ã±ãŒãªã³ã°ãæ¬åœã«å¿
èŠã«ãªã£ãã Kubernetes ã«ç§»ããAppMaster ã®ãããªããŒã³ãŒãã§äœãå ŽåããçæããããµãŒãã¹ãã©ãã«ã©ããããã€ãããã¯åãèãæ¹ã§æ±ºããŸãã\n\n## 次ã®äžæïŒéãæ±ºããŠç¶æãããããã\n\näžåºŠéžãã ããç®æšã¯å®ç§ãªã»ããã¢ããã§ã¯ãªããéçšã§ããŠæŽæ°ã§ããæ
ãŠãã«åŸ©æ§ã§ããç¶æ
ãäœãããšã§ãã\n\n### Docker Compose ãéžãã ã\n\nCompose ã䜿ããªãå¯åéšãå°ããä¿ã¡ãåºæ¬ãææžåããŠãã ãããæäœéããã¹ãæžã¿ã®ããã¯ã¢ããïŒDBãã¢ããããŒããã·ãŒã¯ã¬ããïŒãåºæ¬çãªç£èŠãšã¢ã©ãŒãïŒçšŒåããã£ã¹ã¯å®¹éãCPU/RAMãDB å¥åº·ïŒãã·ã³ãã«ãªæŽæ°æé ïŒã€ã¡ãŒãž pullããµãŒãã¹åèµ·åãããŒã«ããã¯ïŒããã°ããŸã確èªããå ŽæããããŠåŸ©æ§æé ãæžããçœå®³å¯Ÿå¿æé ãçšæããŠãã ããã\n\nããäžã€ã ã远å ãããªããæ¬çªãšåãæ§æã®ã¹ããŒãžã³ã°ç°å¢ãçšæããŸããããå€ãã® "Compose ã¯ä¿¡é Œã§ããªã" ãšãã話ã¯å®ã¯ãæ¬çªãšãã¹ããéãããåå ã§ãã\n\n### Kubernetes ãéžãã ã\n\nèªåã®ã¯ã©ã¹ã¿ãæåããæ§ç¯ããªãã§ãã ããããŸãã¯ãããŒãžã Kubernetes ã䜿ããåœé¢ã¯æ©èœãæå°éã«æããŸããäžã€ã® Namespaceãå°æ°ã®ãµãŒãã¹ãæç¢ºãªãªãªãŒã¹ããã»ã¹ãç®æšã«ããé«åºŠãªæ©èœã¯èª°ãç¶æããã®ã説æã§ãããšãã®ã¿è¿œå ããŸãã\n\næåã®ãã€ã«ã¹ããŒã³ã¯ã¹ããŒãã¬ã¹ãµãŒãã¹ã®ã·ã³ãã«ãªããŒãªã³ã°ã¢ããããŒããšãã¹ããŒããã«ãªéšåïŒDBããã¡ã€ã«ïŒã¯éåžžã¯ã©ã¹ã¿å€ã«çœ®ãèšç»ãæã€ããšã§ãã\n\næ©æã«éçšè² æ
ãæžãããããªããAppMaster (appmaster.io) ã¯ã³ãŒãäžèŠã§å®å
šãªã¢ããªãæ§ç¯ããAppMaster Cloud ã«ãããã€ããŠéçšã®è² æ
ã軜ãã§ããŸããå°æ¥å¿
èŠã«ãªãã°ãœãŒã¹ããšã¯ã¹ããŒãã㊠AWSãAzureãGoogle Cloudããããã¯èªåã€ã³ãã©ã§éçšããããšãå¯èœã§ãã
ãããã質å
ãããã€å ãä¿¡é Œã§ããåäžãµãŒããŒã«ãŸãšãããããããã€æã«çæéã®åèµ·åã蚱容ã§ãããªããããã©ã«ã㯠Docker Compose ãããããããŸããè€æ°ããŒããããå®å šãªããŒãªã³ã°ãªãªãŒã¹ãèªå埩æ§ãæ¬åœã«å¿ èŠã«ãªã£ãã Kubernetes ã«ç§»è¡ããŠãã ããã
Compose ã¯éåžžã2ã6 ãµãŒãã¹çšåºŠã§ãã©ãã£ãã¯ãäºæž¬å¯èœãã〠1 å°ã®ãã·ã³ã§ããŒã¯ãåŠçã§ããå Žåã«ååã§ãããããã€ãäžäººã管çã§ããéããªæéã«æŽæ°ã§ãããªãç¹ã«é©ããŠããŸãã
Kubernetes ã圹ç«ã€ã®ã¯ãè€æ°ãã·ã³ã§ã®é«å¯çšæ§ãå¿ èŠã§ãåäž VM ã®é害ã§ãµãŒãã¹å šäœãèœã¡ãã®ãé¿ãããæã§ããé »ç¹ã«ãããã€ããçŽ æ©ãããŒã«ããã¯ãå³ããã¢ã¯ã»ã¹å¶åŸ¡ãå¿ èŠãªå Žåã Kubernetes ãæ€èšããŸãã
å€ãã®å°èŠæš¡ã¢ããªã§ã¯äžèŠã§ããäºå®ãããããã€ã§ 2ã5 åçšåºŠã®ããŠã³ã¿ã€ã ã蚱容ã§ãããªããCompose ãšã¡ã³ããã³ã¹ãŠã£ã³ããŠã§ååãªããšãå€ãã§ãã
ããŒãªã³ã°ã¢ããããŒãã¯æ°ããã³ã³ãããæ®µéçã«å ¥ãæ¿ããŠäžéšã®å®¹éã皌åããç¶ããããå©ç¹ããããŸãããããŒã¿ããŒã¹ã®äºææ§ãå®éã®ã¬ãã£ãã¹ãã§ãã¯ãåé¡çºçæã®ããŒã«ããã¯èšç»ãªã©ã¯èªåã§ã¯è§£æ±ºããŸããããµãŒãã¹ãåäžã€ã³ã¹ã¿ã³ã¹ãããªãå Žåã¯ãããŒãªã³ã°ã§ãçãäžæã¯èµ·ããŸãã
å€ãã®å Žåãããã§ã¯ãããŸããããªãŒãã¹ã±ãŒãªã³ã°ãããŸãæ©èœããã«ã¯ãµãŒãã¹ãã¹ããŒãã¬ã¹ã§èµ·åãéããä¿¡é Œã§ããã¡ããªã¯ã¹ãšäœå°ã®ãã£ãã·ãã£ãå¿ èŠã§ããå€ãã®å°èŠæš¡ã¢ããªã§ã¯ VM ãäžã€äžã®ãµã€ãºã«ãããããã£ãã·ã¥ã远å ããæ¹ãçŸå®çã§ãã
ããŒã¿ãæææ±ºå®ã®éµã«ãªããŸããäžè¬çã«å®å šãªæ¹æ³ã¯ãã¢ããªã³ã³ãããç Žæ£å¯èœã«ä¿ã¡ïŒCompose ã§ã Kubernetes ã§ãïŒãPostgreSQL ããããŒãžããµãŒãã¹ã§éçšããããã¯ã¢ãããšåŸ©å ãã¹ããè¡ãããšã§ããã³ã³ããå ã«ããŒã¿ããŒã¹ã眮ãã®ã¯æ©ãããããšãå€ãã§ãã
Compose ã§ãã·ãŒã¯ã¬ãã管çã¯å¯èœã§ããããªããžããªã«èŒããªãããã¹ããšãããã€ããã»ã¹ãå®ãããšããéçšäžã®èŠåŸãå¿ èŠã§ããKubernetes ã¯ã·ãŒã¯ã¬ãããã¢ã¯ã»ã¹å¶åŸ¡ã®ä»çµã¿ãæã¡ãŸããããããæ£ããèšå®ããªããšå®å¿ã¯åŸãããŸããã
ã©ã¡ããéžãã§ããéäžãã°ãåºæ¬çãªã¡ããªã¯ã¹ïŒCPU/RAM/ãã£ã¹ã¯ãDB æ¥ç¶ïŒã皌å/ãšã©ãŒã®ã¢ã©ãŒãããããŠãã¹ãæžã¿ã®åŸ©å æé ã¯å¿ é ã§ããKubernetes ã¯ããã¯ã¢ãããç£èŠã眮ãæããŸããããCompose ããããããã¡ããšããã°ååä¿¡é Œã§ããŸãã
AppMaster ã¯ã³ãŒãäžèŠã§æ©ãå埩éçºã§ããç¹ã§åœ¹ç«ã¡ãŸããããã¹ãã£ã³ã°ã®éžæã¯äŸç¶ãšããŠéèŠã§ããåæã¯ AppMaster Cloud ã«ãããã€ããŠéçšè² è·ãæžãããæé·ããããœãŒã¹ããšã¯ã¹ããŒãããŠèªåã§ãã¹ãããããšãã§ããŸãã


