åœç€Ÿã®ãã¯ãã«ã« ãã£ã¬ã¯ã¿ãŒã®ææ°ã®è¬æŒã«åºã¥ããåºçç©ããããã°ãéå§ããŸãã
31æXNUMXæ¥ã®ã«ã³ãã¡ã¬ã³ã¹ã«ãŠ
XNUMXæéããæéããã ããæ©äŒãããããŸãããã
Docker ã䜿çšããç¶ç¶çããªããªãŒ
äžã« é£ç¶æŸåº ç§ãã¡ã¯ãã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã Git ãªããžããªããæåã«å®çšŒåç°å¢ã«å°éãããã®åŸã¢ãŒã«ã€ãã«å°éãããšããäžé£ã®ã€ãã³ããç解ããŠããŸãã 圌女ã¯ãããªæãã§ãã Git â ãã«ã â ãã¹ã â ãªãªãŒã¹ â éçš.
ã¬ããŒãã®å€§éšåã¯ãã«ã段é (ã¢ããªã±ãŒã·ã§ã³ã®ã¢ã»ã³ããª) ã«åœãŠãããŠããããªãªãŒã¹ãšæäœã®ãããã¯ã«ã€ããŠã¯ç°¡åã«è§ŠããããŠããŸãã åé¡ãšããã解決ã§ãããã¿ãŒã³ã«ã€ããŠèª¬æããŸããããããã®ãã¿ãŒã³ã®å
·äœçãªå®è£
ã¯ç°ãªãå ŽåããããŸãã
ãããããªããã㧠Docker ãå¿ èŠãªã®ã§ãããã? ãã®ãªãŒãã³ãœãŒã¹ ããŒã«ã®æèã§ç¶ç¶çããªããªãŒã®å®è·µã«ã€ããŠè©±ãããšã«ããã®ã¯åœç¶ã®ããšã§ããã ã¬ããŒãå šäœã¯ãã®äœ¿çšæ³ã«ç¹åããŠããŸãããã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã®ããŒã«ã¢ãŠãã®äž»ãªãã¿ãŒã³ãèæ ®ãããšãå€ãã®çç±ãæããã«ãªããŸãã
äž»ãªå±éãã¿ãŒã³
ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ãããŒã«ã¢ãŠããããšãã¯ãå¿ ã次ã®ãããªåé¡ã«çŽé¢ããŸãã ããŠã³ã¿ã€ã ã®åé¡ãæ¬çªãµãŒããŒã®åãæ¿ãæã«çæãããŸãã ã¢ããªã±ãŒã·ã§ã³ã®å€ãããŒãžã§ã³ããæ°ããããŒãžã§ã³ãžã®ãã©ãã£ãã¯ãå³åº§ã«åãæ¿ããããšã¯ã§ããŸããããŸããæ°ããããŒãžã§ã³ãæ£åžžã«ããŠã³ããŒããããã ãã§ãªããããŠã©ãŒã ã¢ãããããŠããããš (ã€ãŸãããªã¯ãšã¹ããåŠçããå®å šãªæºåãã§ããŠããããš) ã確èªããå¿ èŠããããŸãã
ãããã£ãŠããã°ããã®éã¯ãã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ã®ããŒãžã§ã³ (æ°æ§) ãåæã«åäœããŸãã ããã¯èªåçã«æ¬¡ã®ããšã«ã€ãªãããŸã å
±æãªãœãŒã¹ã®ç«¶å: ãããã¯ãŒã¯ããã¡ã€ã« ã·ã¹ãã ãIPC ãªã©ã Docker ã䜿çšãããšãåããã¹ã (ãµãŒããŒ/ä»®æ³ãã·ã³) å
ã§ãªãœãŒã¹ã®åé¢ãä¿èšŒãããç°ãªãããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãå¥ã
ã®ã³ã³ãããŒã§å®è¡ããããšã§ããã®åé¡ã¯ç°¡åã«è§£æ±ºãããŸãã ãã¡ãããæç±æããŸã£ãã䜿ããã«ããã€ãã®ããªãã¯ã䜿çšããŠãªããšãããããšãã§ããŸãããæ¢è£œã®äŸ¿å©ãªããŒã«ãããå Žåã¯ãéã®çç±ããããŸã-ãããç¡èŠããªãã§ãã ããã
ã³ã³ããåã¯ãå°å ¥æã«ä»ã«ãå€ãã®å©ç¹ããããããŸãã ã©ã®ã¢ããªã±ãŒã·ã§ã³ãäŸåããŸã ç¹å®ã®ããŒãžã§ã³ (ãŸãã¯ããŒãžã§ã³ç¯å²) éèš³è ãã¢ãžã¥ãŒã«/æ¡åŒµæ©èœãªã©ã®å¯çšæ§ãšãã®ããŒãžã§ã³ã ãããŠãããã¯çŽæ¥å®è¡å¯èœãªç°å¢ã ãã§ãªããç°å¢å šäœã«ãåœãŠã¯ãŸããŸãã ã·ã¹ãã ãœãããŠã§ã¢ ãšãã®ããŒãžã§ã³ (䜿çšããã Linux ãã£ã¹ããªãã¥ãŒã·ã§ã³ãŸã§)ã ã³ã³ããã«ã¯ã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã ãã§ãªããå¿ èŠãªããŒãžã§ã³ã®ãã¬ã€ã³ã¹ããŒã«ãããã·ã¹ãã ãœãããŠã§ã¢ãšã¢ããªã±ãŒã·ã§ã³ ãœãããŠã§ã¢ãå«ãŸããŠãããããäŸåé¢ä¿ã®åé¡ãå¿ããããšãã§ããŸãã
äžè¬åããŸããã äž»ãªå±éãã¿ãŒã³ æ°ããããŒãžã§ã³ã§ã¯ã次ã®èŠçŽ ãèæ ®ãããŸãã
- æåã¯ãå€ãããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãæåã®ã³ã³ãããŒã§å®è¡ãããŸãã
- ãã®åŸãæ°ããããŒãžã§ã³ãããŒã«ã¢ãŠããããXNUMX çªç®ã®ã³ã³ãããŒã§ããŠã©ãŒã ã¢ããããããŸãã ãã®æ°ããããŒãžã§ã³èªäœã«ã¯ãæŽæ°ãããã¢ããªã±ãŒã·ã§ã³ ã³ãŒãã ãã§ãªãããã®äŸåé¢ä¿ãã·ã¹ãã ã³ã³ããŒãã³ã (ããšãã°ãOpenSSL ã®æ°ããããŒãžã§ã³ããã£ã¹ããªãã¥ãŒã·ã§ã³å šäœ) ãå«ãŸããå¯èœæ§ãããããšã«æ³šæããŠãã ããã
- æ°ããããŒãžã§ã³ããªã¯ãšã¹ããåŠçããæºåãå®å šã«æŽããšããã©ãã£ãã¯ã¯æåã®ã³ã³ãããã XNUMX çªç®ã®ã³ã³ããã«åãæ¿ãããŸãã
- å€ãããŒãžã§ã³ãåæ¢ã§ããããã«ãªããŸããã
ã¢ããªã±ãŒã·ã§ã³ã®ç°ãªãããŒãžã§ã³ãå¥ã ã®ã³ã³ãããŒã«ãããã€ãããã®ã¢ãããŒãã«ã¯ãå¥ã®å©äŸ¿æ§ãæäŸãããŸãã ã¯ã€ãã¯ããŒã«ãã㯠å€ãããŒãžã§ã³ã«æ»ããŸã (çµå±ã®ãšããããã©ãã£ãã¯ãç®çã®ã³ã³ãããŒã«åãæ¿ããã ãã§ååã§ã)ã
æåŸã®æåã®æšå¥šäºé
ã¯ãè¹é·ã§ããéãèŠã€ããããšãã§ããªããã®ã®ããã«èãããŸãã[Docker ã䜿çšããŠç¶ç¶çããªããªãŒãæ§æããå Žå] Docker ã䜿çšãã [ãããŠãããäœãããããããç解ãã]ã ããã¯ãã¹ãŠã®åé¡ã解決ããç¹å¹è¬ã§ã¯ãªããçŽ æŽãããåºç€ãæäŸããããŒã«ã§ããããšãå¿ããªãã§ãã ããã
åçŸæ§
ãåçŸæ§ããšã¯ãã¢ããªã±ãŒã·ã§ã³ãæäœãããšãã«ééããäžè¬åãããäžé£ã®åé¡ãæå³ããŸãã ç§ãã¡ã¯ãã®ãããªã±ãŒã¹ã«ã€ããŠè©±ããŠããŸãã
- ã¹ããŒãžã³ã°ã®ããã«å質éšéã«ãã£ãŠãã§ãã¯ãããã¹ã¯ãªããã¯ãæ¬çªç°å¢ã§æ£ç¢ºã«åçŸãããå¿ èŠããããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã¯ãããŸããŸãªãªããžã㪠ãã©ãŒããããã±ãŒãžãåä¿¡ã§ãããµãŒããŒäžã§å ¬éãããŸã (æéã®çµéãšãšãã«ãã¢ããªã±ãŒã·ã§ã³ã¯æŽæ°ãããã€ã³ã¹ããŒã«ãããŠããã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ãæŽæ°ãããŸã)ã
- ãå°å ã§ã¯ãã¹ãŠããŸããããŸãïŒã (...ãããŠéçºè ã¯éçšç°å¢ã«å ¥ãããšãã§ããŸããã)
- å€ã (ã¢ãŒã«ã€ãããã) ããŒãžã§ã³ã§äœãã確èªããå¿ èŠããããŸãã
- ...
ãã®äžè¬çãªæ¬è³ªã¯ã䜿çšãããç°å¢ã®å®å šãªéµå®ïŒããã³äººçèŠå ã®äžåšïŒãå¿ èŠã§ãããšããäºå®ã«èŠçŽãããŸãã åçŸæ§ãã©ã®ããã«ä¿èšŒã§ããã§ãããã? Dockerã€ã¡ãŒãžãäœæãã Git ã®ã³ãŒãã«åºã¥ããŠããã¹ã ãµã€ããéçšç°å¢ãããã°ã©ããŒã®ããŒã«ã« ãã·ã³ãªã©ãããããã¿ã¹ã¯ã«äœ¿çšããŸããåæã«ãå®è¡ãããã¢ã¯ã·ã§ã³ãæå°éã«æããããšãéèŠã§ãã åŸã® ç»åã®çµã¿ç«ãŠ: åçŽã§ããã°ããã»ã©ããšã©ãŒãçºçããå¯èœæ§ã¯äœããªããŸãã
ã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ã³ãŒãã§ã
ã€ã³ãã©ã¹ãã©ã¯ãã£èŠä»¶ (ãµãŒã㌠ãœãããŠã§ã¢ã®å¯çšæ§ããã®ããŒãžã§ã³ãªã©) ã圢åŒåãããŠãããããããã°ã©ã ããããŠããªãå Žåãã¢ããªã±ãŒã·ã§ã³ã®æŽæ°ãããŒã«ã¢ãŠããããšãæ²æšãªçµæãçããå¯èœæ§ããããŸãã ããšãã°ãã¹ããŒãžã³ã°ã§ã¯ãã§ã« PHP 7.0 ã«åãæ¿ããããã«å¿ããŠã³ãŒããæžãçŽããŠããŸãããã®åŸãæ¬çªç°å¢ã§å€ã PHP (5.5) ã䜿çšãããŠãããšããã£ãšèª°ããé©ãã§ãããã ã€ã³ã¿ããªã¿ã®ããŒãžã§ã³ã«ããã倧ããªå€æŽãå¿ããããšã¯ãªããããããŸãããããæªéã¯çŽ°éšã«å®¿ããã®ã§ããé©ãã¯äŸåé¢ä¿ã®ãã€ããŒã¢ããããŒãã«ãããããããŸããã
ãã®åé¡ã解決ããã¢ãããŒãã¯æ¬¡ã®ããã«ç¥ãããŠããŸãã IaC (Infra Structure as Codeããã³ãŒããšããŠã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã) ããã«ã¯ãã¢ããªã±ãŒã·ã§ã³ ã³ãŒããšãšãã«ã€ã³ãã©ã¹ãã©ã¯ãã£èŠä»¶ãä¿åããããšãå«ãŸããŸãã ããã䜿çšãããšãéçºè ãš DevOps ã¹ãã·ã£ãªã¹ãã¯ãåã Git ã¢ããªã±ãŒã·ã§ã³ ãªããžããªãããã®ç°ãªãéšåã§æäœã§ããŸãã ãã®ã³ãŒããããGit 㧠Docker ã€ã¡ãŒãžãäœæãããã€ã³ãã©ã¹ãã©ã¯ãã£ã®è©³çŽ°ããã¹ãŠèæ ®ããŠã¢ããªã±ãŒã·ã§ã³ããããã€ãããŸãã ç°¡åã«èšãã°ãç»åãçµã¿ç«ãŠãããã®ã¹ã¯ãªãã (ã«ãŒã«) ã¯ãœãŒã¹ ã³ãŒããšåããªããžããªã«ååšããããŒãžãããå¿ èŠããããŸãã
ãã«ãã¬ã€ã€ãŒ ã¢ããªã±ãŒã·ã§ã³ ã¢ãŒããã¯ãã£ã®å Žå (ããšãã°ãDocker ã³ã³ãããŒå
ã§æ¢ã«å®è¡ãããŠããã¢ããªã±ãŒã·ã§ã³ã®åã«ç«ã€ nginx ããããŸã)ãåã¬ã€ã€ãŒã® Git ã®ã³ãŒããã Docker ã€ã¡ãŒãžãäœæããå¿
èŠããããŸãã 次ã«ãæåã®ã€ã¡ãŒãžã«ã¯ã€ã³ã¿ãŒããªã¿ãŒãšãã®ä»ã®ãè¿ããäŸåé¢ä¿ãæã€ã¢ããªã±ãŒã·ã§ã³ãå«ãŸããXNUMX çªç®ã®ã€ã¡ãŒãžã«ã¯ã¢ããã¹ããªãŒã ã® nginx ãå«ãŸããŸãã
Docker ã€ã¡ãŒãžãGit ãšã®éä¿¡
Git ããåéããããã¹ãŠã® Docker ã€ã¡ãŒãžã¯ãäžæãšãªãªãŒã¹ã® XNUMX ã€ã®ã«ããŽãªã«åé¡ãããŸãã äžæçãªã€ã¡ãŒãž Git ã®ãã©ã³ãã®ååã§ã¿ã°ä»ããããŠããã次ã®ã³ãããã«ãã£ãŠäžæžããããå¯èœæ§ãããããã¬ãã¥ãŒã®ã¿ã«ããŒã«ã¢ãŠããããŸã (æ¬çªç°å¢ã«ã¯ããŒã«ã¢ãŠããããŸãã)ã ããããªãªãŒã¹çãšã®äž»ãªéãã§ããã©ã®ç¹å®ã®ã³ããããå«ãŸããŠãããã¯æ±ºããŠããããŸããã
äžæã€ã¡ãŒãžã«åéããããšã¯çã«ããªã£ãŠããŸãããã¹ã¿ãŒ ãã©ã³ã (ãã¹ã¿ãŒ ãã©ã³ããå¥ã®ãµã€ãã«èªåçã«ããŒã«ã¢ãŠãããŠããã¹ã¿ãŒã®çŸåšã®ããŒãžã§ã³ãåžžã«ç¢ºèªã§ããŸã)ããªãªãŒã¹ã®ãããã©ã³ããç¹å®ã®ã€ãããŒã·ã§ã³ã®ãã©ã³ãã§ãã
äžæã€ã¡ãŒãžã®ãã¬ãã¥ãŒãå®çšŒåç°å¢ã«å€æããå¿
èŠãçããåŸãéçºè
ã¯ç¹å®ã®ã¿ã°ãä»ããŸãã ã¿ã°ããšã«èªååé ãªãªãŒã¹ã€ã¡ãŒãž (ãã®ã¿ã°ã¯ Git ã®ã¿ã°ã«å¯Ÿå¿ããŸã) ã¹ããŒãžã³ã°ã«ããŒã«ã¢ãŠããããŸãã å質éšéã«ããæ€èšŒãæåãããšãçç£ã«é²ã¿ãŸãã
ããã
ããã§èª¬æããå 容 (ããŒã«ã¢ãŠããã€ã¡ãŒãžã®ã¢ã»ã³ããªããã®åŸã®ã¡ã³ããã³ã¹) ã¯ãã¹ãŠãBash ã¹ã¯ãªããããã®ä»ã®ãå³åžãããŒã«ã䜿çšããŠç¬ç«ããŠå®è£ ã§ããŸãã ãããããããè¡ããšãããæç¹ã§å®è£ ãéåžžã«è€éã«ãªããå¶åŸ¡æ§ãäœäžããããšã«ãªããŸãã ãããç解ããŠãç§ãã¡ã¯ CI/CD ãæ§ç¯ããããã®ç¬èªã®ç¹æ®ãªã¯ãŒã¯ãã㌠ãŠãŒãã£ãªãã£ãäœæããããã«ãªããŸããã ããã.
ãã®ãœãŒã¹ ã³ãŒã㯠Ruby ã§æžãããŠããããªãŒãã³ãœãŒã¹ã§å
¬éãããŠããŸãã
13 幎 2019 æ XNUMX æ¥æŽæ°: çŸåšãããžã§ã¯ãäž ããã ã«ååå€æŽãããŸãã
Kubernetes
ãã XNUMX ã€ã®æ¢è£œã®ãªãŒãã³ãœãŒã¹ ããŒã«ã¯ãå°éçãªç°å¢ã§æ¢ã«å€§ããªè©äŸ¡ãåŸãŠããŸãã KubernetesãDocker 管çã¯ã©ã¹ã¿ãŒã Docker äžã«æ§ç¯ããããããžã§ã¯ãã®éçšã«ããã Docker ã®äœ¿çšã«é¢ãããããã¯ã¯ã¬ããŒãã®ç¯å²ãè¶ ããŠããããããã¬ãŒã³ããŒã·ã§ã³ã¯ããã€ãã®èå³æ·±ãæ©èœã®æŠèŠã«éå®ãããŠããŸãã
ããŒã«ã¢ãŠãã®ããã«ãKubernetes ã¯ä»¥äžãæäŸããŸãã
- readiness ãããŒã - ã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ã®æºåãã§ããŠãããã確èªããŸã (ãã©ãã£ãã¯ããã®ããŒãžã§ã³ã«åãæ¿ãããã)ã
- ããŒãªã³ã°æŽæ° - ã³ã³ãããŒã®ã¯ã©ã¹ã¿ãŒå ã®é 次ã€ã¡ãŒãžæŽæ° (ã·ã£ããããŠã³ãæŽæ°ãèµ·åã®æºåããã©ãã£ãã¯ã®åãæ¿ã)ã
- åææŽæ° - ç°ãªãã¢ãããŒãã§ã¯ã©ã¹ã¿ãŒå ã®ã€ã¡ãŒãžãæŽæ°ããŸããæåã«ã³ã³ãããŒã®ååãæŽæ°ãã次ã«æ®ãã®ã³ã³ãããŒãæŽæ°ããŸãã
- Canary ãªãªãŒã¹ - ç°åžžãç£èŠããããã«ãéããã (å°æ°ã®) æ°ã®ã³ã³ããäžã§æ°ããã€ã¡ãŒãžãèµ·åããŸãã
ç¶ç¶çããªããªãŒã¯åã«æ°ããããŒãžã§ã³ããªãªãŒã¹ããã ãã§ã¯ãªããããKubernetes ã«ã¯ãã®åŸã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã®ã¡ã³ããã³ã¹ã®ããã®å€ãã®æ©èœ (ãã¹ãŠã®ã³ã³ããã®çµã¿èŸŒã¿ç£èŠãšãã®ã³ã°ãèªåã¹ã±ãŒãªã³ã°ãªã©) ãåãã£ãŠããŸãããããã¯ãã¹ãŠãã§ã«æ©èœããŠãããé©åãªæ©èœãè¿œå ãããã®ãåŸ ã€ã ãã§ããããã»ã¹ãžã®å®è£ ã
æçµçãªæšå¥šäºé
- ããã«ãŒã䜿çšããŸãã
- ããããããŒãºã«å¯Ÿå¿ããã¢ããªã±ãŒã·ã§ã³ã® Docker ã€ã¡ãŒãžãäœæããŸãã
- ãã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ã³ãŒãã§ããããšããååã«åŸã£ãŠãã ããã
- Git ã Docker ã«ãªã³ã¯ããŸãã
- ããŒã«ã¢ãŠãã®é åºã調æŽããŸãã
- æ¢è£œã®ãã©ãããã©ãŒã (Kubernetes ãŸãã¯ãã®ä») ã䜿çšããŸãã
ãããªãšã¹ã©ã€ã
ããã©ãŒãã³ã¹åç»ïŒçŽXNUMXæéïŒ
å ±åæžã®ãã¬ãŒã³ããŒã·ã§ã³:
PS
ç§ãã¡ã®ããã°ã®ãããã¯ã«é¢ãããã®ä»ã®ã¬ããŒã:
- «
werf - Kubernetes ã® CI / CD çšããŒã« (æŠèŠãšãããªã¬ããŒã) » (Dmitry Stolyarovã27 幎 2019 æ XNUMX æ¥ãDevOpsConf ã«ãŠ); - «
ããŒã¿ããŒã¹ãšKubernetes » (Dmitry Stolyarovã8 幎 2018 æ XNUMX æ¥ HighLoad++); - «
Kubernetes ãš GitLab ã䜿çšãã CI/CD ã®ãã¹ã ãã©ã¯ãã£ã¹ » (Dmitry Stolyarovã7 幎 2017 æ XNUMX æ¥ HighLoad++); - «
å°èŠæš¡ãããžã§ã¯ãã«ããã Kubernetes ã®çµéš » (ããããªãŒã»ã¹ããªã£ããã6 幎 2017 æ XNUMX æ¥ãRootConf ã«ãŠ).
åºæïŒ habr.com