ç§ãã¡ True Engineering ã¯ãã客æ§ã®ãµãŒããŒã«æŽæ°ãç¶ç¶çã«é ä¿¡ããããã»ã¹ãèšå®ããŠããããã®çµéšãå ±æããããšèããŠããŸãã
ãŸãã顧客åãã«ãªã³ã©ã€ã³ ã·ã¹ãã ãéçºããç¬èªã® Kubernetes ã¯ã©ã¹ã¿ãŒã«ãããã€ããŸããã çŸåšãåœç€Ÿã®é«è² è·ãœãªã¥ãŒã·ã§ã³ã¯ã客æ§ã®ãã©ãããã©ãŒã ã«ç§»è¡ããŠããããã®ãã©ãããã©ãŒã ã«å¯ŸããŠå®å šã«èªååãããç¶ç¶çå±éããã»ã¹ãã»ããã¢ãããããŠããŸãã ãã®ãããã§ãåžå Žæå ¥ãŸã§ã®æéãççž®ããã補åç°å¢ã«å€æŽãå ããããšãã§ããŸããã
ãã®èšäºã§ã¯ãç¶ç¶çå±é (CD) ããã»ã¹ãŸãã¯é¡§å®¢ã®ãã©ãããã©ãŒã ãžã®æŽæ°ã®é ä¿¡ã®ãã¹ãŠã®æ®µéã«ã€ããŠèª¬æããŸãã
- ãã®ããã»ã¹ã¯ã©ã®ããã«ããŠå§ãŸãã®ã§ãããã?
- 顧客㮠Git ãªããžããªãšã®åæã
- ããã¯ãšã³ããšããã³ããšã³ãã®ã¢ã»ã³ããªã
- ãã¹ãç°å¢ã§ã®ã¢ããªã±ãŒã·ã§ã³ã®èªåå±éã
- æ¬çªç°å¢ãžã®èªåãããã€ã¡ã³ãã
éäžã§èšå®ã®è©³çŽ°ãå ±æããŸãã
1.CDãèµ·åãã
ç¶ç¶çãããã€ã¡ã³ãã¯ãéçºè ã Git ãªããžããªã®ãªãªãŒã¹ ãã©ã³ãã«å€æŽãããã·ã¥ããããšããå§ãŸããŸãã
ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã€ã¯ããµãŒãã¹ ã¢ãŒããã¯ãã£äžã§å®è¡ããããã®ãã¹ãŠã®ã³ã³ããŒãã³ã㯠XNUMX ã€ã®ãªããžããªã«ä¿åãããŸãã ãã®ãããã§ããã€ã¯ããµãŒãã¹ã® XNUMX ã€ãå€æŽãããå Žåã§ãããã¹ãŠã®ãã€ã¯ããµãŒãã¹ãåéãããŠã€ã³ã¹ããŒã«ãããŸãã
ããã€ãã®çç±ãããXNUMX ã€ã®ãªããžããªãéããŠäœæ¥ãæŽçããŸããã
- éçºã®å®¹æã - ã¢ããªã±ãŒã·ã§ã³ã¯ç©æ¥µçã«éçºãããŠããããããã¹ãŠã®ã³ãŒããäžåºŠã«æäœã§ããŸãã
- åäžã®ã·ã¹ãã ãšããŠã®ã¢ããªã±ãŒã·ã§ã³ããã¹ãŠã®ãã¹ãã«åæ Œãã顧客ã®å®çšŒåç°å¢ã«é ä¿¡ãããããšãä¿èšŒããåäžã® CI/CD ãã€ãã©ã€ã³ã
- ããŒãžã§ã³ã®æ··ä¹±ãæé€ããŸãããã€ã¯ããµãŒãã¹ã®ããŒãžã§ã³ã®ããããä¿åããHelm ã¹ã¯ãªããã§åãã€ã¯ããµãŒãã¹ã®æ§æãèšè¿°ããå¿ èŠããããŸããã
2. ã客æ§ã®ãœãŒã¹ã³ãŒãã®Gitãªããžããªãšã®åæ
å ããããå€æŽã¯ã顧客㮠Git ãªããžããªãšèªåçã«åæãããŸãã ããã§ã¢ããªã±ãŒã·ã§ã³ ã¢ã»ã³ããªãæ§æããããã©ã³ãã®æŽæ°åŸã«èµ·åãããç¶ç¶ãžã®ãããã€ãè¡ãããŸãã ã©ã¡ãã®ããã»ã¹ããç°å¢å ã® Git ãªããžããªããå§ãŸããŸãã
éçºãšãã¹ãã«ã¯ç¬èªã®ç°å¢ãå¿ èŠã§ããããã顧客ã®ãªããžããªãçŽæ¥æäœããããšã¯ã§ããŸããã åœç€Ÿã¯ãããã®ç®ç㧠Git ãªããžããªã䜿çšããŠãããGit ãªããžããªãšåæãããŠããŸãã éçºè ããªããžããªã®é©åãªãã©ã³ãã«å€æŽãæçš¿ãããšãGitLab ã¯çŽã¡ã«ãããã®å€æŽã顧客ã«ããã·ã¥ããŸãã
ãã®åŸãçµã¿ç«ãŠãè¡ãå¿
èŠããããŸãã ããã¯ãããã¯ãšã³ããšããã³ããšã³ãã®ã¢ã»ã³ããªããã¹ããæ¬çªç°å¢ãžã®é
ä¿¡ãšããè€æ°ã®æ®µéã§æ§æãããŸãã
3. ããã¯ãšã³ããšããã³ããšã³ãã®çµã¿ç«ãŠ
ããã¯ãšã³ããšããã³ããšã³ãã®æ§ç¯ã¯ãGitLab Runner ã·ã¹ãã ã§å®è¡ããã XNUMX ã€ã®äžŠè¡ã¿ã¹ã¯ã§ãã å ã®ã¢ã»ã³ããªæ§æã¯åããªããžããªã«ãããŸãã
GitLab Runner ã¯ãå¿
èŠãªãªããžããªããã³ãŒããååŸããJava ã¢ããªã±ãŒã·ã§ã³ã®ãã«ã ã³ãã³ãã䜿çšããŠãããã¢ã»ã³ãã«ããDocker ã¬ãžã¹ããªã«éä¿¡ããŸãã ããã§ã¯ããã¯ãšã³ããšããã³ããšã³ããçµã¿ç«ãŠãDocker ã€ã¡ãŒãžãååŸããããã顧客åŽã®ãªããžããªã«çœ®ããŸãã 䜿çšãã Docker ã€ã¡ãŒãžã管çãããã
ã€ã¡ãŒãžã®ããŒãžã§ã³ããDocker ã§å ¬éããããªãªãŒã¹ ããŒãžã§ã³ãšåæããŸãã ã¹ã ãŒãºãªæäœã®ããã«ãããã€ãã®èª¿æŽãè¡ããŸããã
1. ã³ã³ããã¯ãã¹ãç°å¢ãšå®çšŒåç°å¢ã®éã§åæ§ç¯ãããŸããã ãã©ã¡ãŒã¿åãè¡ã£ãŠãåãã³ã³ãããŒãåæ§ç¯ããã«ãã¹ãç°å¢ãšéçšç°å¢ã®äž¡æ¹ã§ãã¹ãŠã®èšå®ãç°å¢å€æ°ããµãŒãã¹ã䜿çšã§ããããã«ããŸããã
2. Helm çµç±ã§ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ããã«ã¯ããã®ããŒãžã§ã³ãæå®ããå¿ èŠããããŸãã ããã¯ãšã³ããããã³ããšã³ããæ§ç¯ããã¢ããªã±ãŒã·ã§ã³ãæŽæ°ããŸããããã㯠8 ã€ã®ç°ãªãã¿ã¹ã¯ã§ãããããã©ãã§ãåãããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããããšãéèŠã§ãã KXNUMXS ã¯ã©ã¹ã¿ãŒæ§æãšã¢ããªã±ãŒã·ã§ã³ãåã Git ãªããžããªãŒã«ããããããã®ã¿ã¹ã¯ã§ã¯ Git å±¥æŽã®ããŒã¿ã䜿çšããŸãã
ã³ãã³ãå®è¡çµæããã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ãååŸããŸã
git describe --tags --abbrev=7
.
4. ãã¹ãç°å¢ãžã®ãã¹ãŠã®å€æŽã®èªåå±é (UAT)
ãã®ãã«ã ã¹ã¯ãªããã®æ¬¡ã®ã¹ãããã¯ãK8S ã¯ã©ã¹ã¿ãŒãèªåçã«æŽæ°ããããšã§ãã ããã¯ãã¢ããªã±ãŒã·ã§ã³å šäœãæ§ç¯ããããã¹ãŠã®ã¢ãŒãã£ãã¡ã¯ãã Docker ã¬ãžã¹ããªã«å ¬éãããŠããå Žåã«çºçããŸãã ãã®åŸããã¹ãç°å¢ã®ã¢ããããŒããéå§ãããŸãã
ã¯ã©ã¹ã¿ãŒã®æŽæ°ã¯æ¬¡ã䜿çšããŠéå§ãããŸã
K8S ã¯ã©ã¹ã¿ãŒæ§æãã¢ã»ã³ããªãšãšãã«æäŸããŸãã ãããã£ãŠã次ã®ã¹ãããã¯ãconfigMapããããã€ã¡ã³ãããµãŒãã¹ãã·ãŒã¯ã¬ãããããã³å€æŽãããã®ä»ã® K8S æ§æãæŽæ°ããããšã§ãã
次ã«ãHelm ã¯ãã¹ãç°å¢ã§ã¢ããªã±ãŒã·ã§ã³èªäœã® RollOut æŽæ°ãå®è¡ããŸãã ã¢ããªã±ãŒã·ã§ã³ãéçšç°å¢ã«ãããã€ãããåã ããã¯ããã¹ãç°å¢ã«å°å ¥ããããžãã¹æ©èœããŠãŒã¶ãŒãæåã§ãã¹ãã§ããããã«ããããã«è¡ãããŸãã
5. ãã¹ãŠã®å€æŽãæ¬çªç°å¢ã«èªåçã«ãããã€ãã
æŽæ°ãéçšç°å¢ã«ãããã€ããã«ã¯ãGitLab ã§ãã¿ã³ã XNUMX ã€ã¯ãªãã¯ããã ãã§ãã³ã³ãããããã«éçšç°å¢ã«é ä¿¡ãããŸãã
åãã¢ããªã±ãŒã·ã§ã³ã¯ãåæ§ç¯ããããšãªãããã¹ãç°å¢ãšéçšç°å¢ã®ç°ãªãç°å¢ã§åäœã§ããŸãã ã¢ããªã±ãŒã·ã§ã³ã§ã¯äœãå€æŽããã«åãææç©ã䜿çšãããã©ã¡ãŒã¿ãŒãå€éšã§èšå®ããŸãã
ã¢ããªã±ãŒã·ã§ã³èšå®ã®æè»ãªãã©ã¡ãŒã¿åã¯ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããç°å¢ã«å¿ããŠç°ãªããŸãã ãã¹ãŠã®ç°å¢èšå®ãå€éšã«ç§»åããŸããããã¹ãŠã K8S æ§æãš Helm ãã©ã¡ãŒã¿ãŒãéããŠãã©ã¡ãŒã¿ãŒåãããŸãã Helm ãã¢ã»ã³ããªããã¹ãç°å¢ã«ãããã€ãããšããã¹ãèšå®ãã¢ã»ã³ããªã«é©çšããã補åèšå®ãéçšç°å¢ã«é©çšãããŸãã
æãå°é£ã ã£ãã®ã¯ã䜿çšããããã¹ãŠã®ãµãŒãã¹ãšç°å¢ã«äŸåããå€æ°ããã©ã¡ãŒã¿åããããããç°å¢å€æ°ãš Helm ã®ç°å¢ãã©ã¡ãŒã¿ã®èª¬ææ§æã«å€æããããšã§ããã
ã¢ããªã±ãŒã·ã§ã³èšå®ã§ã¯ç°å¢å€æ°ã䜿çšããŸãã ãããã®å€ã¯ãGo ãã³ãã¬ãŒãã䜿çšããŠãã³ãã¬ãŒãåããã K8S configmap ã䜿çšããŠã³ã³ãããŒã«èšå®ãããŸãã ããšãã°ãç°å¢å€æ°ããã¡ã€ã³åã«èšå®ããã«ã¯ã次ã®ããã«å®è¡ã§ããŸãã
APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}
.Values.global.env â ãã®å€æ°ã«ã¯ãç°å¢ (prodãstageãUAT) ã®ååãæ ŒçŽãããŸãã
.Values.app.properties.app_external_domain â ãã®å€æ°ã§ã¯ã.Values.yaml ãã¡ã€ã«å
ã®ç®çã®ãã¡ã€ã³ãèšå®ããŸãã
ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ãããšããHelm ã¯ãã³ãã¬ãŒããã configmap.yaml ãã¡ã€ã«ãäœæããã¢ããªã±ãŒã·ã§ã³ã®æŽæ°ãéå§ãããç°å¢ã«å¿ã㊠APP_EXTERNAL_DOMAIN å€ã«å¿ èŠãªå€ãå ¥åããŸãã ãã®å€æ°ã¯ã³ã³ããå ã«ãã§ã«èšå®ãããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ããã¢ã¯ã»ã¹ã§ãããããã¢ããªã±ãŒã·ã§ã³ç°å¢ããšã«ãã®å€æ°ã®å€ãç°ãªããŸãã
æ¯èŒçæè¿ãconfigMaps ãšã®é£æºãå«ã K8S ãµããŒãã Spring Cloud ã«ç»å ŽããŸããã
åèšã§
ãããã£ãŠãç¶ç¶çãããã€ã¡ã³ãã¯æ§æãããæ©èœããŠããŸãã ãã¹ãŠã®æŽæ°ã¯ XNUMX åã®ããŒã¹ãããŒã¯ã§è¡ãããŸãã 補åç°å¢ãžã®å€æŽã¯èªåçã«åæ ãããŸãã ãããŠéèŠãªã®ã¯ãã¢ããããŒãã«ãã£ãŠã·ã¹ãã ãåæ¢ããããã§ã¯ãããŸããã
ä»åŸã®èšç»: ããŒã¿ããŒã¹ã®èªå移è¡
ç§ãã¡ã¯ããŒã¿ããŒã¹ãã¢ããã°ã¬ãŒããããããã®å€æŽãããŒã«ããã¯ããå¯èœæ§ãæ€èšããŸããã çµå±ã®ãšãããã¢ããªã±ãŒã·ã§ã³ã® XNUMX ã€ã®ç°ãªãããŒãžã§ã³ãåæã«å®è¡ãããŠããŸããå€ãããŒãžã§ã³ãå®è¡äžã§ãæ°ããããŒãžã§ã³ãèµ·åããŠããŸãã ãããŠãæ°ããããŒãžã§ã³ãåäœããããšã確å®ãªå Žåã«ã®ã¿ãå€ãããŒãžã§ã³ããªãã«ããŸãã ããŒã¿ããŒã¹ã移è¡ãããšãäž¡æ¹ã®ããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã§äœæ¥ã§ããããã«ãªããŸãã
ãããã£ãŠãååããã®ä»ã®ããŒã¿ãåçŽã«å€æŽããããšã¯ã§ããŸããã ãã ããæ°ããåãäœæããå€ãåããããã«ããŒã¿ãã³ããŒããããŒã¿ãæŽæ°ãããšãã«å¥ã®åã§åæã«ã³ããŒãšæŽæ°ãè¡ãããªã¬ãŒãäœæã§ããŸãã ãŸããã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ã®ãããã€ãæåããåŸããªãªãŒã¹åŸã®ãµããŒãæéãçµäºãããšãäžèŠã«ãªã£ãå€ãåãšããªã¬ãŒãåé€ã§ããããã«ãªããŸãã
ã¢ããªã±ãŒã·ã§ã³ã®æ°ããããŒãžã§ã³ãæ£ããåäœããªãå Žåã¯ãããŒã¿ããŒã¹ã®ä»¥åã®ããŒãžã§ã³ãå«ãã以åã®ããŒãžã§ã³ã«ããŒã«ããã¯ã§ããŸãã ã€ãŸããä»åã®å€æŽã«ãããã¢ããªã±ãŒã·ã§ã³ã®è€æ°ã®ããŒãžã§ã³ãåæã«äœæ¥ã§ããããã«ãªããŸãã
K8S ãžã§ããä»ããŠããŒã¿ããŒã¹ã®ç§»è¡ãèªååããCD ããã»ã¹ã«çµ±åããäºå®ã§ãã ãããŠãç§ãã¡ã¯ãã®çµéšãããã¬ã§å¿
ãå
±æããŸãã
åºæïŒ habr.com