Kubernetes ã«ãããã€ããæåã®ã¹ãããã¯ãã¢ããªã±ãŒã·ã§ã³ãã³ã³ãããŒã«é
眮ããããšã§ãã ãã®ã·ãªãŒãºã§ã¯ãå°ãããŠå®å
šãªã³ã³ãã㌠ã€ã¡ãŒãžãäœæããæ¹æ³ãèŠãŠãããŸãã
Docker ã®ãããã§ãã³ã³ãã ã€ã¡ãŒãžã®äœæããã€ãŠãªãã»ã©ç°¡åã«ãªããŸããã åºæ¬ã€ã¡ãŒãžãæå®ããå€æŽãè¿œå ããŠãã³ã³ãããŒãäœæããŸãã
ãã®ææ³ã¯å
¥éã«ã¯æé©ã§ãããããã©ã«ãã®åºæ¬ã€ã¡ãŒãžã䜿çšãããšãè匱æ§ããã£ã±ãã®å€§ããªã€ã¡ãŒãžã§å®å
šã§ãªãäœæ¥ãè¡ãããå¯èœæ§ããããŸãã
ããã«ãDocker ã®ã»ãšãã©ã®ã€ã¡ãŒãžã¯ããŒã¹ ã€ã¡ãŒãžãšã㊠Debian ãŸã㯠Ubuntu ã䜿çšããŠãããããã«ããåªããäºææ§ãšç°¡åãªã«ã¹ã¿ãã€ãº (Docker ãã¡ã€ã«ã«å¿ èŠãªã³ãŒãã¯ããã 700 è¡) ãæäŸãããŸãããããŒã¹ ã€ã¡ãŒãžã«ããã³ã³ããã«æ°çŸã¡ã¬ãã€ãã®è¿œå è² è·ãè¿œå ãããå¯èœæ§ããããŸãã ããšãã°ãGo ã®ãhello-worldãã¢ããªã±ãŒã·ã§ã³ã®åçŽãª node.js ãã¡ã€ã«ã¯çŽ XNUMX ã¡ã¬ãã€ãã§ãããå®éã®ã¢ããªã±ãŒã·ã§ã³ã®ãµã€ãºã¯ãããæ°ã¡ã¬ãã€ãã§ãã
ãããã£ãŠããã®äœåãªã¯ãŒã¯ããŒãã¯ãã¹ãŠããžã¿ã« ã¹ããŒã¹ã®ç¡é§ã§ãããã»ãã¥ãªãã£ã®è匱æ§ããã°ã®æ Œå¥œã®é ãå Žæã«ãªããŸãã ããã§ã¯ãã³ã³ãã ã€ã¡ãŒãžã®ãµã€ãºãåæžãã XNUMX ã€ã®æ¹æ³ãèŠãŠã¿ãŸãããã
XNUMX ã€ç®ã¯å°ããªåºæ¬ã€ã¡ãŒãžã䜿çšããæ¹æ³ã§ãXNUMX ã€ç®ã¯ãã«ã㌠ãã¿ãŒã³ã䜿çšããæ¹æ³ã§ãã ãããããã³ã³ãããŒã®ãµã€ãºãåæžããã«ã¯ãããå°ããåºæ¬ã€ã¡ãŒãžã䜿çšããã®ãæãç°¡åãªæ¹æ³ã§ãã ããããã䜿çšããŠããèšèªãŸãã¯ã¹ã¿ãã¯ãæäŸãããªãªãžãã«ã®ã¢ããªã±ãŒã·ã§ã³ ã€ã¡ãŒãžã¯ãããã©ã«ãã®ã€ã¡ãŒãžãããã¯ããã«å°ãããšèããããŸãã node.js ã³ã³ãããèŠãŠã¿ãŸãããã
Docker ã®ããã©ã«ãã§ã¯ãnode:8 ã®åºæ¬ã€ã¡ãŒãž ãµã€ãºã¯ 670 MB ã§ãããnode:8-alpine ã€ã¡ãŒãžã®ãµã€ãºã¯ããã 65 MBãã€ãŸã 10 åã® XNUMX ã§ãã ããå°ãã Alpine åºæ¬ã€ã¡ãŒãžã䜿çšãããšãã³ã³ãããŒã®ãµã€ãºã倧å¹
ã«çž®å°ãããŸãã Alpine ã¯å°å軜éã® Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ãããã³ã³ãããŒãå°ããä¿ã¡ãªããå€ãã®ã¢ããªã±ãŒã·ã§ã³ãšäºææ§ããããããDocker ãŠãŒã¶ãŒã®éã§éåžžã«äººæ°ããããŸãã æšæºã® Docker ã®ãnodeãã€ã¡ãŒãžãšã¯ç°ãªãããnode:alpineãã¯å€ãã®ãµãŒãã¹ ãã¡ã€ã«ãšããã°ã©ã ãåé€ããã¢ããªã±ãŒã·ã§ã³ãå®è¡ããã®ã«ååãªãã®ã ããæ®ããŸãã
ããå°ããããŒã¹ ã€ã¡ãŒãžã«ç§»è¡ããã«ã¯ãDockerfile ãæŽæ°ããŠæ°ããããŒã¹ ã€ã¡ãŒãžã®æäœãéå§ããã ãã§ãã
ããã§ã¯ãå€ã onbuild ã€ã¡ãŒãžãšã¯ç°ãªããã³ãŒããã³ã³ãããŒã«ã³ããŒããäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã æ°ãã Dockerfile ã§ã¯ãã³ã³ãããŒã¯ãnode:alpine ã€ã¡ãŒãžã§éå§ããã³ãŒãçšã®ãã£ã¬ã¯ããªãäœæããNPM ããã±ãŒãž ãããŒãžã£ãŒã䜿çšããŠäŸåé¢ä¿ãã€ã³ã¹ããŒã«ããæåŸã« server.js ãå®è¡ããŸãã
ãã®ã¢ããã°ã¬ãŒãã«ãããã³ã³ãããŒã®ãµã€ãºã 10 åã® XNUMX ã«å°ãããªããŸãã 䜿çšããŠããããã°ã©ãã³ã°èšèªãŸãã¯ã¹ã¿ãã¯ã«åºæ¬ã€ã¡ãŒãžçž®å°æ©èœããªãå Žåã¯ãAlpine Linux ã䜿çšããŠãã ããã ãŸããã³ã³ãããŒã®å
容ãå®å
šã«ç®¡çããæ©èœãæäŸããŸãã å°ããªåºæ¬ã€ã¡ãŒãžã䜿çšããããšã¯ãå°ããªã³ã³ãããŒãè¿
éã«äœæããããã®åªããæ¹æ³ã§ãã ãã ããBuilder ãã¿ãŒã³ã䜿çšãããšãããã«å€§å¹
ãªåæžãéæã§ããŸãã
ã€ã³ã¿ãŒããªã¿åèšèªã§ã¯ããœãŒã¹ ã³ãŒãã¯ãŸãã€ã³ã¿ããªã¿ã«æž¡ããã次ã«çŽæ¥å®è¡ãããŸãã ã³ã³ãã€ã«èšèªã§ã¯ããŸããœãŒã¹ ã³ãŒããã³ã³ãã€ã« ã³ãŒãã«å€æãããŸãã ãã ããã³ã³ãã€ã«ã§ã¯ãã³ãŒãã®å®è¡ã«å®éã«ã¯å¿
èŠã®ãªãããŒã«ã䜿çšãããããšããããããŸãã ããã¯ããããã®ããŒã«ãæçµã³ã³ããããå®å
šã«åé€ã§ããããšãæå³ããŸãã ããã«ã¯ãã«ããŒãã¿ãŒã³ã䜿çšã§ããŸãã
ã³ãŒãã¯æåã®ã³ã³ãããŒã§äœæãããã³ã³ãã€ã«ãããŸãã ã³ã³ãã€ã«ãããã³ãŒãã¯ãã³ãŒãã®ã³ã³ãã€ã«ã«å¿
èŠãªã³ã³ãã€ã©ãŒãããŒã«ã䜿çšããã«ãæçµã³ã³ãããŒã«ããã±ãŒãžåãããŸãã ãã®ããã»ã¹ãéã㊠Go ã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŠã¿ãŸãããã ãŸããonbuild ã€ã¡ãŒãžãã Alpine Linux ã«ç§»è¡ããŸãã
æ°ãã Dockerfile ã§ã¯ãã³ã³ãããŒã¯ golang:alpine ã€ã¡ãŒãžããå§ãŸããŸãã 次ã«ãã³ãŒãçšã®ãã£ã¬ã¯ããªãäœæããããããœãŒã¹ ã³ãŒãã«ã³ããŒãããã®ãœãŒã¹ ã³ãŒãããã«ãããŠãã¢ããªã±ãŒã·ã§ã³ãå®è¡ããŸãã ãã®ã³ã³ãã㯠onbuild ã³ã³ãããããã¯ããã«å°ããã§ãããå®éã«ã¯å¿
èŠã®ãªãã³ã³ãã€ã©ããã®ä»ã® Go ããŒã«ãå«ãŸããŠããŸãã ããã§ã¯ãã³ã³ãã€ã«ãããããã°ã©ã ãæœåºããŠãç¬èªã®ã³ã³ãããŒã«å
¥ããŠã¿ãŸãããã
ãã® Docker ãã¡ã€ã«ã«ã¯å¥åŠãªç¹ãããããšã«æ°ã¥ããããããŸããããã®ãã¡ã€ã«ã«ã¯ 4 ã€ã® FROM è¡ãå«ãŸããŠããŸãã æåã® XNUMX è¡ã®ã»ã¯ã·ã§ã³ã¯ããã®ã¹ããŒãžã®ååã« AS ããŒã¯ãŒãã䜿çšããŠããããšãé€ããŠãåã® Dockerfile ãšãŸã£ããåãã«èŠããŸãã 次ã®ã»ã¯ã·ã§ã³ã«ã¯ãæ°ããã€ã¡ãŒãžãéå§ããããã®æ°ãã FROM è¡ããããgolang:alpine ã€ã¡ãŒãžã®ä»£ããã« Raw alpine ãããŒã¹ ã€ã¡ãŒãžãšããŠäœ¿çšããŸãã
Raw Alpine Linux ã«ã¯ SSL 蚌ææžãã€ã³ã¹ããŒã«ãããŠããªããããHTTPS çµç±ã®ã»ãšãã©ã® API åŒã³åºãã倱æããŸãããã®ãããããã€ãã®ã«ãŒã CA 蚌ææžãã€ã³ã¹ããŒã«ããŸãããã
ããããã楜ããéšåã§ããã³ã³ãã€ã«ãããã³ãŒããæåã®ã³ã³ãããã 5 çªç®ã®ã³ã³ããã«ã³ããŒããã«ã¯ã12 çªç®ã®ã»ã¯ã·ã§ã³ã® 700 è¡ç®ã«ãã COPY ã³ãã³ãã䜿çšããã ãã§ãã XNUMX ã€ã®ã¢ããªã±ãŒã·ã§ã³ ãã¡ã€ã«ã®ã¿ãã³ããŒãããGo ãŠãŒãã£ãªã㣠ããŒã«ã«ã¯åœ±é¿ããŸããã æ°ãããã«ãã¹ããŒãž Docker ãã¡ã€ã«ã«å«ãŸããã³ã³ãã ã€ã¡ãŒãžã®ãµã€ãºã¯ããã XNUMX ã¡ã¬ãã€ãã§ãããå
ã®ã³ã³ãã ã€ã¡ãŒãžã®ãµã€ãºã¯ XNUMX ã¡ã¬ãã€ãã§ãããããã¯å€§ããªéãã§ãã
ãããã£ãŠãå°ããªããŒã¹ ã€ã¡ãŒãžãšãã«ã㌠ãã¿ãŒã³ã䜿çšããããšã¯ãå€ãã®äœæ¥ãè¡ããã«ã¯ããã«å°ããªã³ã³ãããäœæããããã®åªããæ¹æ³ã§ãã
ã¢ããªã±ãŒã·ã§ã³ ã¹ã¿ãã¯ã«ãã£ãŠã¯ãã€ã¡ãŒãžãšã³ã³ãããŒã®ãµã€ãºãåæžããè¿œå ã®æ¹æ³ãããå¯èœæ§ããããŸãããå°ããã³ã³ãããŒã«ã¯æ¬åœã«æž¬å®å¯èœãªå©ç¹ãããã®ã§ãããã? å°åã³ã³ãããŒãéåžžã«å¹æçã§ãã XNUMX ã€ã®é å (ããã©ãŒãã³ã¹ãšã»ãã¥ãªãã£) ãèŠãŠã¿ãŸãããã
ããã©ãŒãã³ã¹ã®åäžãè©äŸ¡ããã«ã¯ãã³ã³ãããŒã®äœæãã¬ãžã¹ããªãŒãžã®æ¿å ¥ (ããã·ã¥)ãããããã³ã³ãããŒã®ååŸ (ãã«) ã®ããã»ã¹ã«ãããæéãèæ ®ããŸãã å°ããã³ã³ããã«ã¯ã倧ããã³ã³ãããããæãããªå©ç¹ãããããšãããããŸãã
Docker ã¯ã¬ã€ã€ãŒããã£ãã·ã¥ãããããåŸç¶ã®ãã«ãã¯éåžžã«é«éã«ãªããŸãã ãã ããã³ã³ãããŒã®æ§ç¯ãšãã¹ãã«äœ¿çšããã CI ã·ã¹ãã ã®å€ãã¯ã¬ã€ã€ãŒããã£ãã·ã¥ããªããããæéã倧å¹
ã«ç¯çŽã§ããŸãã ã芧ã®ãšããã倧ããªã³ã³ãããŒã®ãã«ãæéã¯ããã·ã³ã®èœåã«å¿ã㊠34 ïœ 54 ç§ã§ãããã³ã³ãããŒã䜿çšããå Žåã¯ããã«ã㌠ãã¿ãŒã³ã䜿çšãããš 23 ïœ 28 ç§ã«ççž®ãããŸãã ãã®çš®ã®äœæ¥ã§ã¯ãçç£æ§ã 40 ïœ 50% åäžããŸãã ãããã£ãŠãã³ãŒããäœåãã«ãããŠãã¹ãããããèããŠãã ããã
ã³ã³ãããŒãæ§ç¯ããããããã®ã€ã¡ãŒãžãã³ã³ãã㌠ã¬ãžã¹ããªã«ããã·ã¥ã (ããã·ã¥ ã³ã³ãã㌠ã€ã¡ãŒãž)ãKubernetes ã¯ã©ã¹ã¿ãŒã§äœ¿çšã§ããããã«ããå¿ èŠããããŸãã Google Container Registry ã䜿çšããããšããå§ãããŸãã
Google Container Registry (GCR) ã䜿çšãããšãçã®ã¹ãã¬ãŒãžãšãããã¯ãŒã¯ã®æéã®ã¿ãæ¯æããè¿œå ã®ã³ã³ãã管çæéã¯ããããŸããã ãã©ã€ããŒãã§å®å
šããããŠéåžžã«é«éã§ãã GCR ã¯ããã«æäœãé«éåããããã«å€ãã®ããªãã¯ã䜿çšããŸãã ã芧ã®ãšããã go:onbuild ã䜿çšã㊠Docker ã³ã³ãã ã€ã¡ãŒãž ã³ã³ãããæ¿å
¥ããã«ã¯ãã³ã³ãã¥ãŒã¿ã®ããã©ãŒãã³ã¹ã«å¿ã㊠15 ïœ 48 ç§ããããŸãããŸããããå°ããã³ã³ããã§åãæäœãè¡ããšãçç£æ§ã®äœããã·ã³ã®å Žå㯠14 ïœ 16 ç§ããããŸããåäœé床ã®ã¡ãªããã3åã«ãªããŸãã ãã倧ããªãã·ã³ã®å ŽåãGCR ã¯ç»åã®å
±æããŒã¿ããŒã¹ã«ã°ããŒãã« ãã£ãã·ã¥ã䜿çšãããããæéã¯ã»ãŒåãã«ãªããŸããã€ãŸããç»åãããŒãããå¿
èŠããŸã£ãããããŸããã äœé»åã³ã³ãã¥ãŒã¿ãŒã§ã¯ CPU ãããã«ããã¯ã«ãªããããå°ããªã³ã³ãããŒã䜿çšããå©ç¹ã¯éåžžã«å€§ãããªããŸãã
GCR ã䜿çšããŠããå Žåã¯ããã«ã ã·ã¹ãã ã®äžéšãšã㊠Google Container Builder (GCB) ã䜿çšããããšã匷ããå§ãããŸãã
ã芧ã®ãšãããããã䜿çšãããšãçç£çãªãã·ã³ããããã«ã + ããã·ã¥æäœã®æéãççž®ããã¯ããã«åªããçµæãéæã§ããŸãããã®å Žåãã³ã³ãããŒããã«ãããŠãã¹ãã«éä¿¡ããããã»ã¹ãã»ãŒ 2 åéããªããŸãã ããã«ãæ¯æ¥ 120 åã®ç¡æãã«ãæéãååŸã§ããã»ãšãã©ã®å Žåãã³ã³ãããŒæ§ç¯ã®ããŒãºãã«ããŒã§ããŸãã
次ã«ãæãéèŠãªããã©ãŒãã³ã¹ææšãã€ãŸããã« ã³ã³ããã®ååŸãŸãã¯ããŠã³ããŒãã®é床ãç¶ããŸãã ãŸããããã·ã¥æäœã«ãããæéãããŸãæ°ã«ããªãå Žåããã« ããã»ã¹ã®é·ãã¯ã·ã¹ãã å šäœã®ããã©ãŒãã³ã¹ã«é倧ãªåœ±é¿ãäžããŸãã XNUMX ã€ã®ããŒããããªãã¯ã©ã¹ã¿ãŒãããããã®ãã¡ã® XNUMX ã€ã«é害ãçºçãããšããŸãã Google Kubernetes Engine ãªã©ã®ç®¡çã·ã¹ãã ã䜿çšããŠããå Žåãæ»ãã ããŒãã¯èªåçã«æ°ããããŒãã«çœ®ãæããããŸãã ãã ãããã®æ°ããããŒãã¯å®å šã«ç©ºã«ãªããããåäœãéå§ããã«ã¯ãã¹ãŠã®ã³ã³ããããã®ããŒãã«ãã©ãã°ããå¿ èŠããããŸãã ãã«æäœã«ååãªæéããããå Žåãã¯ã©ã¹ã¿ãŒã¯ãã£ãšäœãããã©ãŒãã³ã¹ã§å®è¡ãããŸãã
ããã¯ãã¯ã©ã¹ã¿ãŒãžã®æ°ããããŒãã®è¿œå ãããŒãã®ã¢ããã°ã¬ãŒãããŸãã¯ãããã€ã¡ã³ãçšã®æ°ããã³ã³ãããŒãžã®åãæ¿ããªã©ãããŸããŸãªã±ãŒã¹ã§çºçããå¯èœæ§ããããŸãã ãããã£ãŠããã«æœåºæéãæå°éã«æããããšãéèŠãªèŠçŽ ã«ãªããŸãã å°ããã³ã³ããã®ããŠã³ããŒãã倧ããã³ã³ãããããã¯ããã«é«éã§ããããšã¯åŠå®ã§ããŸããã Kubernetes ã¯ã©ã¹ã¿ãŒå ã§è€æ°ã®ã³ã³ãããŒãå®è¡ããŠããå Žåã¯ãæéãå€§å¹ ã«ç¯çŽã§ããå¯èœæ§ããããŸãã
ãã®æ¯èŒãèŠãŠãã ããããã·ã³ã®èœåã«å¿ããŠãå°ããªã³ã³ãããŒã§ã®ãã«æäœã¯ã go:onbuild ã䜿çšããåãæäœããã 4 ïœ 9 åã® XNUMX ã®æéãããããŸãã å
±æã®å°ããªã³ã³ãã㌠ããŒã¹ ã€ã¡ãŒãžã䜿çšãããšãæ°ãã Kubernetes ããŒãããããã€ããŠãªã³ã©ã€ã³ã«ãããŸã§ã®æéãšé床ã倧å¹
ã«ççž®ãããŸãã
ã»ãã¥ãªãã£ã®åé¡ãèŠãŠã¿ãŸãããã å°ããªã³ã³ããã¯æ»æ察象é åãå°ããããã倧ããªã³ã³ãããããã¯ããã«å®å šã§ãããšèããããŠããŸãã æ¬åœãïŒ Google Container Registry ã®æã䟿å©ãªæ©èœã® XNUMX ã€ã¯ãã³ã³ããã®è匱æ§ãèªåçã«ã¹ãã£ã³ããæ©èœã§ãã æ°ãæåãonbuild ã³ã³ãããŒãšãã«ãã¹ããŒãž ã³ã³ãããŒã®äž¡æ¹ãäœæããã®ã§ãããã«è匱æ§ããããã©ããã確èªããŠã¿ãŸãããã
ãã®çµæã¯é©ãã¹ããã®ã§ãå°ããªã³ã³ããã§ã¯äžçšåºŠã®è匱æ§ã 3 件ã®ã¿æ€åºããã倧ããªã³ã³ããã§ã¯é倧ãªè匱æ§ã 16 件ããã®ä»ã® 376 件ãèŠã€ãããŸããã 倧ããªã³ã³ããã®å
容ãèŠããšãã»ãšãã©ã®ã»ãã¥ãªãã£åé¡ã¯ã¢ããªã±ãŒã·ã§ã³ãšã¯é¢ä¿ããªãã䜿çšããããŠããªãããã°ã©ã ã«é¢é£ããŠããããšãããããŸãã ãããã£ãŠã人ã
ã倧ããªæ»æ察象é åã«ã€ããŠè©±ããšããããã¯ãããæå³ããŸãã
éèŠãªç¹ã¯æããã§ããã·ã¹ãã ã«å®éã®ããã©ãŒãã³ã¹ãšã»ãã¥ãªãã£äžã®å©ç¹ããããããããå°ããªã³ã³ãããæ§ç¯ããå¿
èŠããããŸãã
ããã€ãã®åºå ð
ãã€ãã宿æ³ããã ãããããšãããããŸãã ç§ãã¡ã®èšäºãæ°ã«å
¥ã£ãŠããŸãã? ãã£ãšèå³æ·±ãã³ã³ãã³ããèŠããã§ãã? 泚æããããå人ã«å§ãããããŠç§ãã¡ããµããŒãããŠãã ããã
ã¢ã ã¹ãã«ãã ã®ãšã¯ã€ãã¯ã¹ Tier IV ããŒã¿ã»ã³ã¿ãŒã§ã¯ Dell R730xd ã 2 åå®ã? ããã ã
åºæïŒ habr.com