「JX Press Tech Talk #backend 速報サービスを支えるバックエンドの技術」で発表した『GitLabとKubernetesで作る自動で起動・停止できるブランチ別環境』の資料です
https://jxpress.connpass.com/event/210867/
GitLabͱKubernetesͰ࡞ΔࣗಈͰىಈɾఀࢭͰ͖ΔϒϥϯνผڥSRE ฏୡ
View Slide
Who am I?ฏ ୡ(Tatsuya Hirase)○ @TatchNicolas○ SRE○ Ϊλʔ/ࣗసं/֎ࠃޠ(ӳޠͱதࠃޠ͕ͪΐͬͱͰ͖Δ)
0, ͡Ίʹ● GitLab/KubernetesΛΈ߹ΘͤͨσϓϩΠઓུͷͳ͠● ߏਤΛݩʹղઆ͠·͢○ ࣌ؒͷ߹্σϞ͋Γ·ͤΜ○ αϯϓϧίʔυޙϒϩάͰʂ● AWSɺKubernetesͷ༻ޠɾΤίγεςϜͷ͕ࣝલఏ
Agendaࠔ͍ͬͯͨ͜ͱͲ͏ͬͯղܾ͔ͨ͠·ͱΊ1,2,3,
1,ࠔ͍ͬͯͨ͜ͱෳͷϓϩμΫτͱͨ͘͞ΜͷECSαʔϏε● : SNSͳͲ͔ΒࡂͷใΛऩू/ੳ/৴● : ѹతͳใੑ͕ಛͷχϡʔεΞϓϦ● ϓϩμΫτؒͰσʔλAPIΛ༥௨͋͠͏● ALB + ECS + (ΞϓϦʹ߹ͬͨӬଓԽ)͕ఆ൪ͷߏ
1,ࠔ͍ͬͯͨ͜ͱʮ։ൃڥ͍·ͬͯྑ͍Ͱ͔͢ʁʯ
1,ࠔ͍ͬͯͨ͜ͱ͋Δ͋Δʁ։ൃڥͷॱ൪ͪ● ϩʔΧϧͰ֬ೝ͠ʹ͍͘ͷ○ Ϋϥυݻ༗ͷػೳ(e.g. Amazon SQS, Firestore)○ ݖݶͷ֬ೝ(ඞཁͳIAM࣋ͬͯΔ͔ʁ)○ ґଘ͢Δɾ͞ΕͯΔϚΠΫϩαʔϏε(docker-composeͰ...?)● ʮͪΐͬͱݟͯ΄͍͠ʯʮͪΐͬͱAPIୟ͍ͯཉ͍͠ʯ○ ։ൃऀ σβΠφʔɺPdM○ ϑϩϯτ όοΫΤϯυ○ GraphQL BFF REST API
1,ࠔ͍ͬͯͨ͜ͱ• Merge Request(GitHubͰ͍͏Pull Request)͝ͱʹ ࣗಈͰڥͱURL͕͍ग़͞ΕΔ • Merge Request͕ด͡ΒΕͨΒɺͦͷڥด͡ΒΕΔ Ͳ͏͢ΕͪΛͳͤ͘Δʁ
1,ࠔ͍ͬͯͨ͜ͱ• Merge Request(GitHubͰ͍͏Pull Request)͝ͱʹ ࣗಈͰڥͱURL͕͍ग़͞ΕΔ -> Istio• Merge Request͕ด͡ΒΕͨΒɺͦͷڥด͡ΒΕΔ -> Helm & GitLab CIͲ͏͢ΕͪΛͳͤ͘Δʁ
2,Ͳ͏ͬͯղܾ͔ͨ͠
2,Ͳ͏ͬͯղܾ͔ͨ͠ϦϙδτϦઓུ● ΞϓϦέʔγϣϯϦϙδτϦ:○ CIͰlintɺςετɺίϯςφΠϝʔδͷ࡞·ͰΛ୲͢Δ● ϚχϑΣετϦϙδτϦ:○ k8sϚχϑΣετ(=HelmςϯϓϨʔτ)Λཧ○ ։ൃ൛ΫϥελͷτϐοΫϒϥϯνผڥͷσϓϩΠ○ ArgoCD͕͜ͷϦϙδτϦͷmainϒϥϯνΛΫϥελʹಉظ͢ΔCIఆ͕ٛγϯϓϧʹͳΓɺςϯϓϨʔτͱͯ͠ڞ௨ԽͰ͖ͨ
2,Ͳ͏ͬͯղܾ͔ͨ͠● Istio○ τϥϑΟοΫ੍ޚΛݸผͷϦϙδτϦҕৡ͍͢͠○ ʮALB+ECSʯorʮEKS+IngressʯͩͱதԝूݖʹͳΓ͕ͪ● Helm○ ຊ൪ڥɾ։ൃڥɾτϐοΫϒϥϯνผڥͷࠩΛٵऩ○ 2छྨͷσϓϩΠઓུͷணࡎ(ޙड़)● GitLab CI○ “Environments” ʹڥΛରԠͤͯ͞ಠཱσϓϩΠΛ࣮ݱ○ ڥͷ࡞ɾഁغͷͨΊͷτϦΨʔఆ͕͍͍ٛײ͡ʹͰ͖Δ
2,Ͳ͏ͬͯղܾ͔ͨ͠CIOps͔GitOps͔ʁ྆ํͩʂ
2,Ͳ͏ͬͯղܾ͔ͨ͠CIOps͔GitOps͔ʁ྆ํͩʂ● ݕূ͚ڥʹɺΨγΨγॻ͍ͯσϓϩΠɾಈ࡞֬ೝ͍ͨ͠○ ֤τϐοΫϒϥϯνʹରԠ͢ΔڥʹGitLab CIͰσϓϩΠ(=CIOps)● ຊ൪ڥόʔδϣϯཧηΩϡϦςΟ͔ͬ͠Γ͍ͨ͠○ ։ൃڥΫϥελ͓Αͼຊ൪ΫϥελͷmainϒϥϯνڥɺArgoCDͰσϓϩΠ(=GitOps)త͕ҧ͏ڥʹɺҧ͏ख๏ΛͱΔ͠ʂ
3, ·ͱΊ● ෳͷڥΛಈతʹੜɾഁغͰ͖ΔΈΛͭͬͨ͘○ ڥͷॱ൪͕ͪͳ͘ͳͬͯ։ൃUP○ ϦϞʔτϫʔΫͰʮͪΐͬͱίϨݟͯ/ୟ͍ͯʯ͕༰қʹ● ϦϙδτϦΛࡉ͔͚͘ɺCIͱCDΛ͢Δ͜ͱͰؔ৺͝ͱΛখ͘͞อͭ● GitOpsͱCIOpsೋऀҰ͡Όͳ͍○ తʹ͋Θͤͯ྆ํ͏͜ͱͰ͖Δ○ ணࡎͱͯ͠ͷHelm
3, AppendixIstioΛͬͯʮFast, Dependency-Agnostic, Isolatedʯͳ։ൃମݧΛ࣮ݱͨ͠https://en-jp.wantedly.com/companies/wantedly/post_articles/241506KubernetesΛ࠷େݶʹ׆͔ͨ͢ΊͷGitOpsೖhttps://speakerdeck.com/amaya382/kuberneteswozui-da-xian-nihuo-kasutamefalsegitopsru-menGuide to GitOpshttps://www.weave.works/technologies/gitops/GitLab ެࣜDochttps://docs.gitlab.com/ee/ci/environments/https://docs.gitlab.com/ee/user/project/clusters/add_remove_clusters.html
ThankYou!