Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
19/07/25 Kubernetes Meetup Tokyo #21 - Cloud Native CI/CD @ponde_m Argo CD ࣮ફΨΠυ
Slide 2
Slide 2 text
ࠓճͷΠϕϯτϖʔδ
Slide 3
Slide 3 text
͜Εʹωλ͔ͿΓ͠ͳ͍Α͏ͳ ر "SHP$%ͷࡉ͔͍Λ͍͖ͯ͠·͢ ࠓճͷΠϕϯτϖʔδ
Slide 4
Slide 4 text
@ponde_m Dai Kurosawa SRE
Slide 5
Slide 5 text
͓͞Β͍: Argo CD ͱ • Pull ܕͷ CD • GitOps ʹ͏ • ͍͍ײ͡ͷ UI
Slide 6
Slide 6 text
ࠓ͢͜ͱ • Argo CD ͷ CRD ʹ͍ͭͯ • Argo CD ͷ RBAC ʹ͍ͭͯ • Argo CD ͷ Sync ઓུʹ͍ͭͯ
Slide 7
Slide 7 text
ࠓ͢͜ͱ • Argo CD ͷ CRD ʹ͍ͭͯ • Argo CD ͷ RBAC ʹ͍ͭͯ • Argo CD ͷ Sync ઓུʹ͍ͭͯ ͕࣌ؒΓͳ͔ͬͨͷͰ εΩοϓ͠·͢ (ࢿྉͦͷ··Ξοϓ͠·͢)
Slide 8
Slide 8 text
Argo CDͷ CRD
Slide 9
Slide 9 text
Argo CD ͷ CRD • 2ͭͷ CRD ͕͋Δ • Application • AppProject
Slide 10
Slide 10 text
Argo CD ͷ CRD Application Application Application AppProject
Slide 11
Slide 11 text
Application • Argo CD ʹ͓͚Δ σϓϩΠͷઃఆ • ݱ࣮ੈքͷ ΞϓϦέʔγϣϯͱಉ͡୯Ґ (ෳͷ Object ͷू߹)
Slide 12
Slide 12 text
Application Git Repository Revision Path Λࢦఆͯͦ͜͠ʹ͋Δ manifest ΛσϓϩΠ͢Δ
Slide 13
Slide 13 text
Application λʔήοτͱͳΔ Ϋϥελͱ namespace
Slide 14
Slide 14 text
Automated Sync • syncPolicy Λ ໌ࣔతʹࢦఆ͠ͳ͍ͱ ࣗಈͰಉظͯ͘͠Εͳ͍ͷͰҙ • prune: true Λࢦఆ͠ͳ͍߹ Ϧιʔεͷ Pruning ߦΘΕͳ͍
Slide 15
Slide 15 text
Tools • αϙʔτ͍ͯ͠Δ apply ํ๏ • kustomize • Helm charts • Ksonnet • YAML/JSON/Jsonnet manifest ͷσΟϨΫτϦ • ϓϥάΠϯ (ࣗ࡞όΠφϦ͑Δ)
Slide 16
Slide 16 text
Application of Applications • Application Ͱ Application Λཧ͢Δ
Slide 17
Slide 17 text
Application of Applications • kustomize ͷྫ: root.yaml
Slide 18
Slide 18 text
Application of Applications • kustomize ͷྫ: root.yaml ͜͜ͷ path ࢦఆͰ
Slide 19
Slide 19 text
Application of Applications • kustomize ͷྫ: root.yaml ͜͜ͷ path ࢦఆͰ application-of-applications σΟϨΫτϦͷ kustomization.yaml ͕ࢀর͞ΕΔ
Slide 20
Slide 20 text
Application of Applications • kustomize ͷྫ: kustomization.yaml
Slide 21
Slide 21 text
Application of Applications • kustomize ͷྫ: kustomization.yaml kustomize ͷ resources Ͱ root ʹඥͮ͘ Application Λࢦఆ͢Δ
Slide 22
Slide 22 text
Application of Applications • kustomize ͷྫ: root ʹͳΔ Application Λ apply ͢Δ
Slide 23
Slide 23 text
Application of Applications • kustomize ͷྫ:
Slide 24
Slide 24 text
Application of Applications • kustomize ͷྫ: root ʹͳΔ Application Λ apply ͚ͨͩ͠Ͱ root ʹඥͮ͘ Application উखʹద༻͞ΕΔ
Slide 25
Slide 25 text
Application of Applications UI ͔Β͜ͷΑ͏ͳײ͡Ͱ දࣔ͞ΕΔ
Slide 26
Slide 26 text
Application of Applications • kustomize ͷྫ: ͜ΕΒͷ Application GitOps Ͱࣗಈతʹ Sync ͞ΕΔ (feature ϒϥϯνͷ manifest Λ ద༻͍ͨ͠Έ͍ͨͳঢ়گͷ࣌ʹָ)
Slide 27
Slide 27 text
Application of Applications revision Λॻ͖͑ͨ Pull Request Λ merge ͢Δͱ feature ϒϥϯνͷ manifest ΛࢀরͰ͖Δ
Slide 28
Slide 28 text
AppProject • Application ͷ ཧతͳάϧʔϓΛද͢ • Role ͱ͔ఆٛͰ͖Δ (ৄ͘͠ޙड़)
Slide 29
Slide 29 text
Argo CDͷ RBAC
Slide 30
Slide 30 text
Argo CD ͷೝূ • ϩάΠϯը໘:
Slide 31
Slide 31 text
Argo CD ͷೝূ • ϩάΠϯը໘: User ͱ Password Λ ೖྗ͢Δεϖʔε͕͋Δ͕ Argo CD ͰΈࠐΈͷ admin Ҏ֎ͷϢʔβଘࡏ͠ͳ͍
Slide 32
Slide 32 text
Argo CD ͷೝূ • ϩάΠϯը໘: admin Ҏ֎ͷશͯͷϢʔβ SSO Λհͯ͠ϩάΠϯ͢Δ ඞཁ͕͋Δ (͜ͷ߹ GitHub Λ༻)
Slide 33
Slide 33 text
Argo CD ͷೝূ • Argo CD Ͱ SSO Λߦ͏ํ๏ 2 छྨ • όϯυϧ͞ΕͯΔ Dex Λ༻͢Δ • طଘͷ OIDC provider Λ༻͢Δ
Slide 34
Slide 34 text
Argo CD ͷೝূ • Argo CD Ͱ SSO Λߦ͏ํ๏ 2 छྨ • όϯυϧ͞ΕͯΔ Dex Λ༻͢Δ • طଘͷ OIDC provider Λ༻͢Δ ࠓճ Dex Λͬͯ GitHub Ͱೝূ͢ΔΛ͠·͢
Slide 35
Slide 35 text
Dex Λ༻͍ͯ GitHub Ͱೝূ͢Δ • Argo CD Ͱ Dex ͱ͍͏ OIDC provider ͕όϯυϧ͞Ε͍ͯΔ • https://github.com/dexidp/dex
Slide 36
Slide 36 text
Dex Λ༻͍ͯ GitHub Ͱೝূ͢Δ • GitHub Ͱ OAuth application Λ࡞ͬͯ `argocd-cm` ͱ͍͏ ConfigMap ʹ ઃఆΛهࡌ͢Δ
Slide 37
Slide 37 text
Dex Λ༻͍ͯ GitHub Ͱೝূ͢Δ • ConfigMap ͷྫ:
Slide 38
Slide 38 text
Dex Λ༻͍ͯ GitHub Ͱೝূ͢Δ • ConfigMap ͷྫ: ൃߦͨ͠ clientID ͱ clientSecret $dex.github.clientSecret Έ͍ͨʹॻ͘͜ͱͰ Kubernetes ͷ Secret ͔Β ΛಡΈࠐΜͰ͘ΕΔ
Slide 39
Slide 39 text
Dex Λ༻͍ͯ GitHub Ͱೝূ͢Δ • ConfigMap ͷྫ: ϩάΠϯͰ͖Δ GitHub org ͱ Team ͷઃఆ ͜ͷ߹ `classmethod` ͱ͍͏ GitHub org ͷ `sre-team` ͔͠ ϩάΠϯͰ͖ͳ͍
Slide 40
Slide 40 text
Role • GitHub-org:team ʹରͯ͠ AppProject ʹ ඥͮ͘Role ΛఆٛͰ͖Δ
Slide 41
Slide 41 text
Role • Argo CD ͷ Web UI ͔Β Delete, Edit ͱ͔͕Ͱ͖ͨΓ͢Δ Role Λ੍ͬͯޚ͢Δ͜ͱ͕Ͱ͖Δ
Slide 42
Slide 42 text
Argo CDͷ Sync
Slide 43
Slide 43 text
Sync Phases • Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync Sync PostSync
Slide 44
Slide 44 text
Sync Phases • Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync Sync PostSync manifest ͷద༻લʹ࣮ߦ͞ΕΔ
Slide 45
Slide 45 text
Sync Phases • Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync Sync PostSync manifest ͷద༻ʹ ؔ࿈࣮ͯ͠ߦ͞ΕΔ
Slide 46
Slide 46 text
Sync Phases • Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync Sync PostSync manifest ͷద༻ޙʹ࣮ߦ͞ΕΔ
Slide 47
Slide 47 text
• Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync Sync ΞϓϦέʔγϣϯ ͷσϓϩΠ DB ͷ ϚΠάϨʔγϣϯ PostSync Sync Phases ΞϓϦέʔγϣϯͷσϓϩΠલʹ Kubernetes ͷ Job Ͱ DB ͷϚΠάϨʔγϣϯΛ࣮ߦ
Slide 48
Slide 48 text
Sync Phases and Waves • Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync ΞϓϦέʔγϣϯͷσϓϩΠલʹ Kubernetes ͷ Job Ͱ DB ͷϚΠάϨʔγϣϯΛ࣮ߦ DB ͷ ϚΠάϨʔγϣϯ
Slide 49
Slide 49 text
Sync Phases • Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync DB ͷ ϚΠάϨʔγϣϯ annotation ʹهࡌΛ͢Δͱ Argo CD ͕هࡌͨ͠ϑΣʔζͰ ࣮ߦͯ͘͠ΕΔ
Slide 50
Slide 50 text
• Argo CD ͷ Sync ʹେ͖͚ͯ͘ 3 ͭͷϑΣʔζ͕͋Δɹ PreSync DB ͷ ϚΠάϨʔγϣϯ PreSync ͷϑΣʔζ͕ ऴΘͬͨΒ Job Λআ Sync Phases
Slide 51
Slide 51 text
Sync Waves • ֤ϑΣʔζͰͷ manifest ͷద༻ॱΛ੍ޚͰ͖Δ PreSync Sync PostSync Job Job Pod Job 1 2 3 v1.1.0 ͔Βͷ৽ػೳ
Slide 52
Slide 52 text
Sync Waves Sync Job Pod Job 1 2 3 • ֤ϑΣʔζͰͷ manifest ͷద༻ॱΛ੍ޚͰ͖Δ
Slide 53
Slide 53 text
Sync Waves Sync Job Pod Job 1 2 3 • ֤ϑΣʔζͰͷ manifest ͷద༻ॱΛ੍ޚͰ͖Δ `argocd.argoproj.io/sync-wave` ͱ͍͏ annotaion ʹ Λࢦఆ͢Δ
Slide 54
Slide 54 text
·ͱΊ
Slide 55
Slide 55 text
·ͱΊ • Argo CD Ϧονͳ Web UI Ͱ GitOps Ͱ͖Δπʔϧ • ৭ʑͱࡉ͔͍ػೳͱ͔ॆ࣮ͯ͠Δ • ެࣜͷυΩϡϝϯτॆ࣮ͯ͠ΔͷͰΈΑ͏! • https://argoproj.github.io/argo-cd/
Slide 56
Slide 56 text
Thank You! @ponde_m