Slide 1

Slide 1 text

GitLabͱKubernetesͰ࡞Δ ࣗಈͰىಈɾఀࢭͰ͖Δϒϥϯνผ؀ڥ SRE ฏ੉ୡ໵

Slide 2

Slide 2 text

Who am I? ฏ੉ ୡ໵(Tatsuya Hirase ) ○ @TatchNicola s ○ SR E ○ Ϊλʔ/ࣗసं/֎ࠃޠ(ӳޠͱதࠃޠ͕ͪΐͬͱͰ͖Δ)

Slide 3

Slide 3 text

0, ͸͡Ίʹ ● GitLab/KubernetesΛ૊Έ߹ΘͤͨσϓϩΠઓུͷ͸ͳ͠ ● ߏ੒ਤΛݩʹղઆ͠·͢ ○ ࣌ؒͷ౎߹্σϞ͸͋Γ·ͤΜ ○ αϯϓϧίʔυ͸ޙ೔ϒϩάͰʂ ● AWSɺKubernetesͷ༻ޠɾΤίγεςϜͷ஌͕ࣝલఏ

Slide 4

Slide 4 text

Agenda ࠔ͍ͬͯͨ͜ͱ Ͳ͏΍ͬͯղܾ͔ͨ͠ ·ͱΊ 1, 2, 3,

Slide 5

Slide 5 text

1,ࠔ͍ͬͯͨ͜ͱ ෳ਺ͷϓϩμΫτͱͨ͘͞ΜͷECSαʔϏε ● : SNSͳͲ͔Βࡂ֐౳ͷ৘ใΛऩू/෼ੳ/഑৴ ● : ѹ౗తͳ଎ใੑ͕ಛ௃ͷχϡʔεΞϓϦ ● ϓϩμΫτؒͰσʔλ΍APIΛ༥௨͋͠͏ ● ALB + ECS + (ΞϓϦʹ߹ͬͨӬଓԽ૚)͕ఆ൪ͷߏ੒

Slide 6

Slide 6 text

1,ࠔ͍ͬͯͨ͜ͱ ʮ։ൃ؀ڥ͍·࢖ͬͯ΋ྑ͍Ͱ͔͢ʁʯ

Slide 7

Slide 7 text

1,ࠔ͍ͬͯͨ͜ͱ ͋Δ͋Δʁ։ൃ؀ڥͷॱ൪଴ͪ ● ϩʔΧϧͰ֬ೝ͠ʹ͍͘΋ͷ ○ Ϋϥ΢υݻ༗ͷػೳ(e.g. Amazon SQS, Firestore ) ○ ݖݶͷ֬ೝ(ඞཁͳIAM࣋ͬͯΔ͔ʁ ) ○ ґଘ͢Δɾ͞ΕͯΔϚΠΫϩαʔϏε(docker-composeͰ...? ) ● ʮͪΐͬͱݟͯ΄͍͠ʯʮͪΐͬͱAPIୟ͍ͯཉ͍͠ʯ ○ ։ൃऀ <-> σβΠφʔɺPd M ○ ϑϩϯτ <-> όοΫΤϯυ ○ GraphQL BFF <-> REST API

Slide 8

Slide 8 text

1,ࠔ͍ͬͯͨ͜ͱ • Merge Request(GitHubͰ͍͏Pull Request)͝ͱʹ
 ࣗಈͰ؀ڥͱURL͕෷͍ग़͞ΕΔ
 • Merge Request͕ด͡ΒΕͨΒɺͦͷ؀ڥ΋ด͡ΒΕΔ
 Ͳ͏͢Ε͹଴ͪΛͳͤ͘Δʁ

Slide 9

Slide 9 text

1,ࠔ͍ͬͯͨ͜ͱ • Merge Request(GitHubͰ͍͏Pull Request)͝ͱʹ
 ࣗಈͰ؀ڥͱURL͕෷͍ग़͞ΕΔ
 -> Istio • Merge Request͕ด͡ΒΕͨΒɺͦͷ؀ڥ΋ด͡ΒΕΔ
 -> Helm & GitLab CI Ͳ͏͢Ε͹଴ͪΛͳͤ͘Δʁ

Slide 10

Slide 10 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠

Slide 11

Slide 11 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠ ϦϙδτϦઓུ ● ΞϓϦέʔγϣϯϦϙδτϦ : ○ CIͰ͸lintɺςετɺίϯςφΠϝʔδͷ࡞੒·ͰΛ୲౰͢Δ ● ϚχϑΣετϦϙδτϦ : ○ k8sϚχϑΣετ(=HelmςϯϓϨʔτ)Λ؅ཧ ○ ։ൃ൛ΫϥελͷτϐοΫϒϥϯνผ؀ڥ΁ͷσϓϩΠ ○ ArgoCD͕͜ͷϦϙδτϦͷmainϒϥϯνΛΫϥελʹಉظ͢Δ CIఆ͕ٛγϯϓϧʹͳΓɺςϯϓϨʔτͱͯ͠ڞ௨ԽͰ͖ͨ

Slide 12

Slide 12 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠ ● Isti o ○ τϥϑΟοΫ੍ޚΛݸผͷϦϙδτϦ΁ҕৡ͠΍͍͢ ○ ʮALB+ECSʯorʮEKS+IngressʯͩͱதԝूݖʹͳΓ͕ͪ ● Hel m ○ ຊ൪؀ڥɾ։ൃ؀ڥɾτϐοΫϒϥϯνผ؀ڥͷࠩ෼Λٵऩ ○ 2छྨͷσϓϩΠઓུͷ઀ணࡎ(ޙड़ ) ● GitLab C I ○ “Environments” ʹ؀ڥΛରԠͤͯ͞ಠཱσϓϩΠΛ࣮ݱ ○ ؀ڥͷ࡞੒ɾഁغͷͨΊͷτϦΨʔఆ͕͍͍ٛײ͡ʹͰ͖Δ

Slide 13

Slide 13 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠

Slide 14

Slide 14 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠

Slide 15

Slide 15 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠

Slide 16

Slide 16 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠

Slide 17

Slide 17 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠

Slide 18

Slide 18 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠ CIOps͔GitOps͔ʁ྆ํͩʂ

Slide 19

Slide 19 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠ CIOps͔GitOps͔ʁ྆ํͩʂ

Slide 20

Slide 20 text

2,Ͳ͏΍ͬͯղܾ͔ͨ͠ CIOps͔GitOps͔ʁ྆ํͩʂ ● ݕূ޲͚؀ڥʹ͸ɺΨγΨγॻ͍ͯσϓϩΠɾಈ࡞֬ೝ͍ͨ͠ ○ ֤τϐοΫϒϥϯνʹରԠ͢Δ؀ڥʹ GitLab CIͰσϓϩΠ(=CIOps) ● ຊ൪؀ڥ͸όʔδϣϯ؅ཧ΋ηΩϡϦςΟ΋͔ͬ͠Γ͍ͨ͠ ○ ։ൃ؀ڥΫϥελ͓Αͼຊ൪Ϋϥελͷmainϒϥϯν؀ڥ͸ɺ ArgoCDͰσϓϩΠ(=GitOps) ໨త͕ҧ͏؀ڥʹ͸ɺҧ͏ख๏ΛͱΔ΂͠ʂ

Slide 21

Slide 21 text

3, ·ͱΊ ● ෳ਺ͷ؀ڥΛಈతʹੜ੒ɾഁغͰ͖Δ࢓૊ΈΛͭͬͨ͘ ○ ؀ڥͷॱ൪଴͕ͪͳ͘ͳͬͯ։ൃ଎౓U P ○ ϦϞʔτϫʔΫͰ΋ʮͪΐͬͱίϨݟͯ/ୟ͍ͯʯ͕༰қʹ ● ϦϙδτϦΛࡉ͔͘෼͚ɺCIͱCDΛ෼཭͢Δ͜ͱͰؔ৺͝ͱΛখ͘͞อͭ ● GitOpsͱCIOps͸ೋऀ୒Ұ͡Όͳ͍ ○ ໨తʹ͋Θͤͯ྆ํ࢖͏͜ͱ΋Ͱ͖Δ ○ ઀ணࡎͱͯ͠ͷHelm

Slide 22

Slide 22 text

3, Appendix IstioΛ࢖ͬͯʮFast, Dependency-Agnostic, Isolatedʯͳ։ൃମݧΛ࣮ݱͨ͠࿩ https://en-jp.wantedly.com/companies/wantedly/post_articles/241506 KubernetesΛ࠷େݶʹ׆͔ͨ͢ΊͷGitOpsೖ໳ https://speakerdeck.com/amaya382/kuberneteswozui-da-xian-nihuo-kasutamefalsegitopsru-men Guide to GitOp s https://www.weave.works/technologies/gitops/ GitLab ެࣜDo c https://docs.gitlab.com/ee/ci/environments/ https://docs.gitlab.com/ee/user/project/clusters/add_remove_clusters.html

Slide 23

Slide 23 text

ThankYou!