True Engineering ã§ã¯ã顧客ã®ãµãŒããŒã«æŽæ°ãç¶ç¶çã«é ä¿¡ããããã»ã¹ã確ç«ããŠããããã®çµéšãå ±æããããšèããŠããŸãã
ãŸããã客æ§åãã«ãªã³ã©ã€ã³ã·ã¹ãã ãéçºããèªç€Ÿã®Kubernetesã¯ã©ã¹ã¿ãŒã«å°å ¥ããŸãããçŸåšãé«è² è·ãœãªã¥ãŒã·ã§ã³ãã客æ§ã®ãã©ãããã©ãŒã ã«ç§»è¡ããå®å šèªååãããç¶ç¶çãããã€ã¡ã³ãããã»ã¹ãæ§ç¯ããŠããŸããããã«ãããåžå Žæå ¥ãŸã§ã®æéãã€ãŸãæ¬çªç°å¢ãžã®å€æŽã®é ä¿¡ãççž®ã§ããŸããã
ãã®èšäºã§ã¯ãç¶ç¶çãããã€ã¡ã³ã (CD) ããã»ã¹ãã€ãŸã顧客ã®ãã©ãããã©ãŒã ã«æŽæ°ãé ä¿¡ãããã¹ãŠã®æ®µéã«ã€ããŠèª¬æããŸãã
- ãã®ããã»ã¹ã¯ã©ã®ããã«å§ãŸãã®ã
- 顧客ã®Gitãªããžããªãšã®åæã
- ããã¯ãšã³ããšããã³ããšã³ãã®ã¢ã»ã³ããªã
- ãã¹ãç°å¢ãžã®ã¢ããªã±ãŒã·ã§ã³ã®èªåå±éã
- Prod ãžã®èªåãããã€ã
ã»ããã¢ããã®è©³çްã¯åŸã»ã©å ±æããŸãã

1. CDãèµ·åãã
ç¶ç¶çãããã€ã¡ã³ãã¯ãéçºè ã Git ãªããžããªã®ãªãªãŒã¹ ãã©ã³ãã«å€æŽãããã·ã¥ããããšããå§ãŸããŸãã
ç§ãã¡ã®ã¢ããªã±ãŒã·ã§ã³ã¯ãã€ã¯ããµãŒãã¹ã¢ãŒããã¯ãã£ã«åºã¥ããŠããããã¹ãŠã®ã³ã³ããŒãã³ãã¯åäžã®ãªããžããªã«ä¿åãããŠããŸããããã«ãããããšããã€ã¯ããµãŒãã¹ã®ããããã倿ŽããããšããŠãããã¹ãŠã®ãã€ã¯ããµãŒãã¹ãåéãããã€ã³ã¹ããŒã«ãããŸãã
ç§ãã¡ãäœæ¥ã 1 ã€ã®ãªããžããªã§æŽçããçç±ã¯ããã€ããããŸãã
- éçºã®å®¹æã - ã¢ããªã±ãŒã·ã§ã³ã¯ç©æ¥µçã«éçºãããŠããããããã¹ãŠã®ã³ãŒããåæã«æäœã§ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ãåäžã·ã¹ãã ãšããŠãã¹ãŠã®ãã¹ãã«åæ Œããé¡§å®¢ã®æ¬çªç°å¢ã«é ä¿¡ãããããšãä¿èšŒããåäžã® CI/CD ãã€ãã©ã€ã³ã
- ããŒãžã§ã³ã®æ··ä¹±ããªãããŸãããã€ã¯ããµãŒãã¹ã®ããŒãžã§ã³ã®ããããä¿åããããHelm ã¹ã¯ãªããã§åãã€ã¯ããµãŒãã¹ã®æ§æãèšè¿°ãããããå¿ èŠããªããªããŸãã
2. 顧客ã®GitãœãŒã¹ã³ãŒããªããžããªãšã®åæ
倿Žå 容ã¯ã客æ§ã®Gitãªããžããªãšèªåçã«åæãããŸããããã§ã¢ããªã±ãŒã·ã§ã³ã®ãã«ããèšå®ããããã©ã³ãã®æŽæ°åŸã«èµ·åãããæ¬çªç°å¢ãžã®ãããã€ãè¡ãããŸãããããã®ããã»ã¹ã¯ãããããã客æ§ã®ç°å¢å ã§Gitãªããžããªããå®è¡ãããŸãã
ç¬èªã®éçºã»ãã¹ãç°å¢ãå¿ èŠãªãããã客æ§ã®ãªããžããªãçŽæ¥æäœããããšã¯ã§ããŸããããã®ãããGitLabã®Gitãªããžããªã䜿çšããŠããŸãããã®ãªããžããªã¯ã客æ§ã®GitãªããžããªãšåæãããŠããŸããéçºè ãGitLabã®ãªããžããªã®å¯Ÿå¿ãããã©ã³ãã«å€æŽãããã·ã¥ãããšãGitLabã¯ããã«ãã®å€æŽãã客æ§ã«éä¿¡ããŸãã

ãã®åŸããã«ããè¡ãå¿
èŠããããŸãããã«ãã¯ãããã¯ãšã³ããšããã³ããšã³ãã®æ§ç¯ããã¹ãããããŠæ¬çªç°å¢ãžã®é
ä¿¡ãšããè€æ°ã®æ®µéããæ§æãããŸãã
3. ããã¯ãšã³ããšããã³ããšã³ãã®çµã¿ç«ãŠ
ããã¯ãšã³ããã«ããšããã³ããšã³ããã«ãã¯ãGitLab Runnerã·ã¹ãã ã§å®è¡ããã2ã€ã®äžŠè¡ã¿ã¹ã¯ã§ããåæãã«ãèšå®ã¯åããªããžããªã«ãããŸãã
.
GitLab Runnerã¯å¿ èŠãªãªããžããªããã³ãŒããååŸããJavaã¢ããªã±ãŒã·ã§ã³ã®ãã«ãã³ãã³ãã䜿çšããŠã¢ã»ã³ãã«ããDockerã¬ãžã¹ããªã«éä¿¡ããŸããããã§ããã¯ãšã³ããšããã³ããšã³ããã¢ã»ã³ãã«ããDockerã€ã¡ãŒãžãååŸããŠã顧客åŽã®ãªããžããªã«é 眮ããŸããDockerã€ã¡ãŒãžã®ç®¡çã«ã¯ã以äžã䜿çšããŸãã .
ã€ã¡ãŒãžã®ããŒãžã§ã³ããDockerã§å ¬éããããªãªãŒã¹ã®ããŒãžã§ã³ãšåæããŸããã¹ã ãŒãºãªåäœã®ããã«ãããã€ãã®èšå®ãè¡ããŸããã
1. ãã¹ãç°å¢ãšæ¬çªç°å¢éã§ã³ã³ããã¯åæ§ç¯ãããŸããããã¹ãç°å¢ãšæ¬çªç°å¢ã®äž¡æ¹ã§ãåãã³ã³ããããã¹ãŠã®èšå®ãç°å¢å€æ°ããµãŒãã¹ã䜿çšããŠåæ§ç¯ãªãã§åäœããããã«ããã©ã¡ãŒã¿åãããŠããŸãã
2. Helm çµç±ã§ã¢ããªã±ãŒã·ã§ã³ãæŽæ°ããã«ã¯ãããŒãžã§ã³ãæå®ããå¿ èŠããããŸããç§ãã¡ã®å Žåãããã¯ãšã³ããããã³ããšã³ãã®æ§ç¯ãã¢ããªã±ãŒã·ã§ã³ã®æŽæ°ã¯ããããç°ãªãã¿ã¹ã¯ã§ããããããã¹ãŠã®ç°å¢ã§åãããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã䜿çšããããšãéèŠã§ããK8S ã¯ã©ã¹ã¿ãŒæ§æãšã¢ããªã±ãŒã·ã§ã³ã¯åã Git ãªããžããªã«ããããããã®ã¿ã¹ã¯ã§ã¯ Git å±¥æŽã®ããŒã¿ã䜿çšããŸãã
ã³ãã³ãå®è¡ã®çµæããã¢ããªã±ãŒã·ã§ã³ã®ããŒãžã§ã³ãååŸããŸã
git describe --tags --abbrev=7.
4. ãã¹ãŠã®å€æŽããã¹ãç°å¢ïŒUATïŒã«èªåçã«å±éãã
ãã®ãã«ãã¹ã¯ãªããã®æ¬¡ã®ã¹ãããã¯ãK8Sã¯ã©ã¹ã¿ãŒãèªåçã«æŽæ°ããããšã§ããããã¯ãã¢ããªã±ãŒã·ã§ã³å šäœããã«ãããããã¹ãŠã®ã¢ãŒãã£ãã¡ã¯ããDockerã¬ãžã¹ããªã«å ¬éãããŠããããšãåæãšããŠããŸãããã®åŸããã¹ãç°å¢ã®æŽæ°ãéå§ãããŸãã
ã¯ã©ã¹ã¿ã®æŽæ°ã¯æ¬¡ã®ããã«éå§ãããŸã ãã®çµæãäœãåé¡ãçºçããå ŽåãHelm ã¯ãã¹ãŠã®å€æŽãèªåçãã€ç¬ç«ããŠããŒã«ããã¯ããŸãããã®åäœãç£èŠããå¿ èŠã¯ãããŸããã
ãã«ãã«ã¯ K8S ã¯ã©ã¹ã¿ãŒæ§æã忢±ãããŠããã®ã§ã次ã®ã¹ãããã§ã¯ãããæŽæ°ããŸãïŒconfigMapsããããã€ã¡ã³ãããµãŒãã¹ãã·ãŒã¯ã¬ãããããã³å€æŽãããã®ä»ã® K8S æ§æïŒã
ãã®åŸãHelm ã¯ãã¹ãç°å¢ã§ã¢ããªã±ãŒã·ã§ã³èªäœã® RollOut ã¢ããããŒããå®è¡ããŸããããã¯ãã¢ããªã±ãŒã·ã§ã³ãæ¬çªç°å¢ã«ãããã€ãããåã«ããŠãŒã¶ãŒããã¹ãç°å¢ã«ãªãªãŒã¹ãããããžãã¹æ©èœãæåã§ç¢ºèªã§ããããã«ããããã§ãã
5. ãã¹ãŠã®å€æŽãæ¬çªç°å¢ã«èªåçã«ãããã€ãã
ã¢ããããŒããæ¬çªç°å¢ã«ãããã€ããã«ã¯ãGitLab ã§ãã¿ã³ã 1 ã€ã¯ãªãã¯ããã ãã§ãã³ã³ãããããã«æ¬çªç°å¢ã«é ä¿¡ãããŸãã
åãã¢ããªã±ãŒã·ã§ã³ãããã¹ãç°å¢ãšæ¬çªç°å¢ãªã©ãç°ãªãç°å¢ã§åæ§ç¯ããããšãªãåäœãããããšãã§ããŸããã¢ããªã±ãŒã·ã§ã³èªäœã«ã¯äžå倿Žãå ãããåãææç©ã䜿çšãããã©ã¡ãŒã¿ã¯å€éšããèšå®ããŸãã
ã¢ããªã±ãŒã·ã§ã³èšå®ã®æè»ãªãã©ã¡ãŒã¿åã¯ãã¢ããªã±ãŒã·ã§ã³ãå®è¡ãããç°å¢ã«ãã£ãŠç°ãªããŸãããã¹ãŠã®ç°å¢èšå®ã¯å€éšåãããŠããã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 å€ã«å¿ èŠãªå€ãèšå®ããŸãããã®å€æ°ã¯ã³ã³ããå ã§æ¢ã«èšå®ãããŠããŸããã¢ããªã±ãŒã·ã§ã³ããã¢ã¯ã»ã¹ã§ãããããã¢ããªã±ãŒã·ã§ã³ç°å¢ããšã«ãã®å€æ°ã®å€ã¯ç°ãªããŸãã
æ¯èŒçæè¿ãSpring Cloud 㯠configMaps ã®ãµããŒããå«ã K8S ã®ãµããŒãã远å ããŸããã ãããžã§ã¯ãã¯çŸåšéçºäžã§åçãªå€åãèŠããããããæ¬çªç°å¢ã§ã¯äœ¿çšã§ããŸããããã ããç¶æ ãç©æ¥µçã«ç£èŠããéçºç°å¢ã®èšå®ã§äœ¿çšããŠããŸããå®å®æ¬¡ç¬¬ãç°å¢å€æ°ã®äœ¿çšããæ¬çªç°å¢ãžã®åãæ¿ããäºå®ããŠããŸãã
åèšã§
ããã§ãç¶ç¶çãããã€ã¡ã³ããã»ããã¢ããããã皌åç¶æ ã«ãªããŸããããã¹ãŠã®ã¢ããããŒãã¯ããŒæäœã²ãšã€ã§å®äºããŸããæ¬çªç°å¢ãžã®å€æŽã®é ä¿¡ã¯èªåçã«è¡ãããŸãããããŠéèŠãªã®ã¯ãã¢ããããŒãã«ãã£ãŠã·ã¹ãã ã®åäœã忢ãããªãããšã§ãã

å°æ¥ã®èšç»: èªåããŒã¿ããŒã¹ç§»è¡
ããŒã¿ããŒã¹ã®ã¢ããã°ã¬ãŒããšããããã®å€æŽãããŒã«ããã¯ããæ©èœã«ã€ããŠæ€èšããŸãããçµå±ã®ãšãããã¢ããªã±ãŒã·ã§ã³ã®2ã€ã®ç°ãªãããŒãžã§ã³ãåæã«å®è¡ãããŠããŸããå€ãããŒãžã§ã³ãå®è¡äžã§ãæ°ããããŒãžã§ã³ãèµ·åäžã§ãããããŠãæ°ããããŒãžã§ã³ãæ£åžžã«åäœããŠããããšã確å®ã«ãªã£ãããå€ãããŒãžã§ã³ã忢ããŸããããŒã¿ããŒã¹ã®ç§»è¡ã¯ãã¢ããªã±ãŒã·ã§ã³ã®äž¡æ¹ã®ããŒãžã§ã³ã§åäœã§ããããã«ããå¿ èŠããããŸãã
ãã®ãããååããã®ä»ã®ããŒã¿ãåçŽã«å€æŽããããšã¯ã§ããŸãããããããæ°ããåãäœæããå€ãåã®ããŒã¿ããã®åã«ã³ããŒããå¥ã®åãæŽæ°ãããšåæã«å¥ã®åã®ããŒã¿ãã³ããŒããŠæŽæ°ããããªã¬ãŒãèšè¿°ããããšã¯å¯èœã§ãããããŠãæ°ããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«ãããã€ããããªãªãŒã¹åŸã®ãµããŒãæéãçµäºããããäžèŠã«ãªã£ãå€ãåãšããªã¬ãŒãåé€ã§ããŸãã
æ°ããããŒãžã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ãæ£åžžã«åäœããªãå Žåã¯ãããŒã¿ããŒã¹ã®ä»¥åã®ããŒãžã§ã³ãå«ãã以åã®ããŒãžã§ã³ã«ããŒã«ããã¯ã§ããŸããã€ãŸããä»åã®å€æŽã«ãããã¢ããªã±ãŒã·ã§ã³ã®è€æ°ã®ããŒãžã§ã³ãåæã«äœ¿çšã§ããããã«ãªããŸãã
K8Sãžã§ãã«ããããŒã¿ããŒã¹ç§»è¡ãèªååããCDããã»ã¹ã«çµ±åããäºå®ã§ãããã®çµéšã¯Habrã§ãå¿
ãå
±æããŸãã
åºæïŒ habr.com
