Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
GitOpsで実現するPull Request毎のプレビュー環境/Preview enviro...
Search
Takuma Kume
September 28, 2021
Technology
2.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
GitOpsで実現するPull Request毎のプレビュー環境/Preview environment for each Pull Request by GitOps
Takuma Kume
September 28, 2021
More Decks by Takuma Kume
See All by Takuma Kume
SRE/インフラエンジニアの市場価値とキャリアパス/Market value and career path for SRE-infrastructure engineers
takumakume
2
1.6k
【新卒研修】共通言語としてのSRE/SRE as a common language
takumakume
0
320
DDoSとの終わりなき戦い2025/endless_battle_with_ddos_attack_2025
takumakume
3
200
事業部CTOの現在地(パネルディスカッション)/Current-location-of-Division-CTO
takumakume
0
250
ロリポップ! for Gamersを支えるインフラ/lolipop for gamers infrastructure
takumakume
0
1.9k
ロリポップ! for Gamersの立ち上げ/lolipop for gamers launch
takumakume
0
3.1k
ホモグラフドメインを検出してみた/detect homograph domain
takumakume
0
840
ソフトウェアの継続的アップデートをコンテナ化によって加速させる/Accelerate continuous software updates with containerization
takumakume
0
5.7k
KubernetesにおけるSBOMを利用した脆弱性管理/Vulnerability_Management_with_SBOM_in_Kubernetes
takumakume
2
3.2k
Other Decks in Technology
See All in Technology
越境するなら専門用語を使うな高校校歌 / If you wanna cross border, you shouldn't use jargon
vtryo
0
140
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
210
Issue 駆動でスペシャリストの意図を届ける、AI 実装のアクセシビリティ向上
thkt
0
110
Deployment の 先にある AI Agent 基盤 - kagent vNext、Agent Substrate、Hermes から読み解く Agent Runtime の現在地 / k8s-matsuri-2-ai-agent-platform-amsy810
masayaaoyama
3
550
【技術的負債conf】事業成長に伴う技術的負債の説明責任とAIによるモニタリング、認知的負債について
i35_267
2
1.6k
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
The Agent Builder Loop from Daily Work to OSS
minorun365
PRO
3
200
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
470
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
すぐできる衛星通信対応 あとは山奥に行くだけ
tatetate55
0
130
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
データ界隈LT祭 第1回LT登壇
taromatsui_cccmkhd
1
1.3k
Featured
See All Featured
How to Ace a Technical Interview
jacobian
281
24k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
670
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
830
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Amusing Abliteration
ianozsvald
1
300
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.6k
Git: the NoSQL Database
bkeepers
PRO
432
67k
Mobile First: as difficult as doing things right
swwweet
225
10k
Unsuck your backbone
ammeep
672
58k
Transcript
1FQBCP5FDI$POGFSFODF (JU0QTͰ࣮ݱ͢Δ1VMM3FRVFTUຖͷ ϓϨϏϡʔڥ
(.0ϖύϘגࣜձࣾ ϗεςΟϯάࣄۀ෦ 43&νʔϜ ࠷͍ۙͬͯΔ͜ͱ ΞϓϦͷίϯςφԽLTͷಋೖ $%։ൃମݧͷ্ ٱถഅ!UBLVNBLVNF
ࠓճհ͢Δͷ ΞϓϦέʔγϣϯ ϦϙδτϦ LVCFSOFUFT Ϋϥελ Branch-A Branch-B Branch-A Branch-B 13࡞
13࡞ branch-a.example.com branch-b.example.com (JU0QTͰ࣮ݱ͢Δ1VMM3FRVFTUຖͷϓϨϏϡʔڥ
࣍ w։ൃܦҢ wϓϨϏϡʔڥͷղઆ wࠓޙͷ՝ w·ͱΊ
։ൃܦҢ
։ൃܦҢ wϦϦʔεલʹڞ༻ͷTUBHJOHڥʹΞϓϦέʔγϣϯΛσϓϩΠ ͯ͠ಈ࡞֬ೝΛߦ͏։ൃϑϩʔʹ͓͚Δ՝ wσϓϩΠߦҝ͕ඞཁͰखؒͰ͋Δ wڥʹݶΓ͕͋Γɺར༻͕ͪൃੜ͢Δ͜ͱ͕͋Δ wڞ༻Ώ͑ʹɺڥΛҰ࣌తʹઐ༗͢Δ͜ͱʹਫ਼ਆతϋʔυϧ͕ ͋Δ
1VMM3FRVFTUຖʹڥΛ ੜ͢Δ͜ͱͰ՝ղܾΛ͢Δ
ΞϓϦέʔγϣϯ ϦϙδτϦ LVCFSOFUFT Ϋϥελ Branch-A Branch-B Branch-A Branch-B 13࡞ 13࡞
branch-a.example.com branch-b.example.com ϓϨϏϡʔڥͷղઆ
ϓϨϏϡʔڥͷղઆɿલఏ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP $POUBJOFS3FHJTUSZ ,VCFSOFUFT$MVTUFS ιʔείʔυ LVCFSOFUFTNBOJGFTUT LVCFSOFUFTNBOJGFTUT "SHP$% ֤"QQ3FQPͷ"SHP$%$POpH
*OHSFTT$POUSPMMFSʜ ArgoCD ΞϓϦͷίϯςφΠϝʔδ ArgoCD Image Updater "SHP$%ͰNBOJGFTUTͷ$%Λ͍ͯ͠Δ "SHP$%*NBHF6QEBUFSͰΠϝʔδͷ $%Λ͍ͯ͠Δ ϓϨϏϡʔڥͷղઆͷલʹɺϦϙδτϦͷߏͱ$%ʹ͍ͭͯ
ϓϨϏϡʔڥͷղઆɿશମ૾ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP $POUBJOFS3FHJTUSZ ,VCFSOFUFT$MVTUFS Github Actions branch-a Github Actions
13࡞ App Image ίϯςφΠϝʔδͷ#VJME1VTI SFQPTJUPSZ@EJTQBUDI 13τϦΨʔͰΠϝʔδͷϏϧυͱ"SHP$%ͷઃఆΛੜ͢Δ CSBODIB༻ͷ"SHP$%ͷઃఆΛੜ HJUDPNNJUQVTI
ϓϨϏϡʔڥͷղઆɿશମ૾ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP $POUBJOFS3FHJTUSZ ,VCFSOFUFT$MVTUFS Github Actions branch-a Github Actions
13࡞ App Image ίϯςφΠϝʔδͷ#VJME1VTI SFQPTJUPSZ@EJTQBUDI CSBODIB༻ͷ"SHP$%ͷઃఆΛੜ "SHP$%͕ݕ͠ϒϥϯνͷڥΛσϓϩΠ͢Δ ArgoCD CSBODIBͷڥΛੜ BQQCSBODIB CSBODIB༻ͷ"SHP$%ͷઃఆΛ"QQMZ CSBODIBͷNBOJGFTUTͷಉظΛ։࢝ %FQMPZNFOU 4FSWJDFʜ มߋΛݕ HJUDPNNJUQVTI
ϓϨϏϡʔڥͷղઆɿશମ૾ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP $POUBJOFS3FHJTUSZ ,VCFSOFUFT$MVTUFS Github Actions branch-a Github Actions
13࡞ App Image ίϯςφΠϝʔδͷ#VJME1VTI SFQPTJUPSZ@EJTQBUDI CSBODIB༻ͷ"SHP$%ͷઃఆΛੜ "SHP$%*NBHF6QEBUFSͰ࠷৽ͷΠϝʔδΛద༻͢Δ ArgoCD มߋΛݕ CSBODIBͷڥΛੜ BQQCSBODIB CSBODIB༻ͷ"SHP$%ͷઃఆΛ"QQMZ CSBODIBͷNBOJGFTUTͷಉظΛ։࢝ %FQMPZNFOU 4FSWJDFʜ ArgoCD Image Updater ࠷৽ͷΠϝʔδΛద༻͢Δ มߋΛݕ ίϯςφΠϝʔδͷ#VJME1VTI ϒϥϯν1VTI͢Δʹ࣮ߦ HJUDPNNJUQVTI
ϓϨϏϡʔڥͷղઆɿશମ૾ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP $POUBJOFS3FHJTUSZ ,VCFSOFUFT$MVTUFS Github Actions branch-a Github Actions
13࡞ App Image ίϯςφΠϝʔδͷ#VJME1VTI SFQPTJUPSZ@EJTQBUDI CSBODIB༻ͷ"SHP$%ͷઃఆΛੜ ArgoCD มߋΛݕ CSBODIBͷڥΛੜ BQQCSBODIB CSBODIB༻ͷ"SHP$%ͷઃఆΛ"QQMZ CSBODIBͷNBOJGFTUTͷಉظΛ։࢝ %FQMPZNFOU 4FSWJDFʜ ArgoCD Image Updater ࠷৽ͷΠϝʔδΛద༻͢Δ มߋΛݕ ίϯςφΠϝʔδͷ#VJME1VTI HJUDPNNJUQVTI
ϓϨϏϡʔڥͷղઆɿશମ૾ wҰݟෳࡶʹݟ͑Δ͕ʜ w13τϦΨʔͰ(JUIVC"DUJPOTΛͬͯɺ"SHP$%ͷઃఆΛࣗಈ ੜͯ͠ϦϙδτϦʹ1VTI͍ͯ͠Δ wͦΕҎ֎ɺ"SHP$%*NBHF6QEBUFS͕ͬͯ͘ΕΔ
"SHP$%ͷઃఆͷੜ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP $POUBJOFS3FHJTUSZ ,VCFSOFUFT$MVTUFS Github Actions branch-a Github Actions
13࡞ App Image ίϯςφΠϝʔδͷ#VJME1VTI SFQPTJUPSZ@EJTQBUDI CSBODIB༻ͷ"SHP$%ͷઃఆΛੜ ArgoCD มߋΛݕ CSBODIBͷڥΛੜ BQQCSBODIB CSBODIB༻ͷ"SHP$%ͷઃఆΛ"QQMZ CSBODIBͷNBOJGFTUTͷಉظΛ։࢝ %FQMPZNFOU 4FSWJDFʜ ArgoCD Image Updater ࠷৽ͷΠϝʔδΛద༻͢Δ มߋΛݕ ίϯςφΠϝʔδͷ#VJME1VTI HJUDPNNJUQVTI
"SHP$%ͷઃఆͷੜ wBSHPDEBENJOBQQHFOFSBUFTQFDίϚϯυͰઃఆΛੜͯ͠Ϧ ϙδτϦʹ1VTI͍ͯ͠Δ $ argocd admin app generate-spec sample-app-pr-1 \
--dest-server https://kubernetes.default.svc \ --dest-namespace sample-app-pr-1 \ --path manifests/preview \ --repo https://github.com/takumakume/sample-app \ --revision branch-1 \ --sync-policy auto \ --sync-option Prune=true \ --sync-option CreateNamespace=true apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: sample-app-pr-1 spec: destination: namespace: sample-app-pr-1 server: https://kubernetes.default.svc source: path: manifests/preview repoURL: https://github.com/takumakume/sample-app targetRevision: branch-1 syncPolicy: … wੜʹඞཁͳύϥϝʔλΛ(JUIVC"DUJPOͰ͍ͯ͠Δ sample-app-pr-1.yaml
"SHP$%ͷઃఆͷੜ apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: sample-app-pr-1 spec: source:
path: manifests/preview repoURL: https://github.com/takumakume/sample-app targetRevision: branch-1 destination: namespace: sample-app-pr-1 server: https://kubernetes.default.svc syncPolicy: - CreateNamespace=true … ϓϨϏϡʔڥͷNBOJGFTUTͷσ ΟϨΫτϦΛ 13ຖͷ/BNFTQBDFʹల։ /BNFTQBDFࣗಈੜ w୯ҰͷNBOJGFTUTΛ֤ͬͯ13ͷڥΛએݴతʹੜͰ͖Δ sample-app-pr-1.yaml
"QQ*NBHFͷߋ৽ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP $POUBJOFS3FHJTUSZ ,VCFSOFUFT$MVTUFS Github Actions branch-a Github Actions
13࡞ App Image ίϯςφΠϝʔδͷ#VJME1VTI SFQPTJUPSZ@EJTQBUDI CSBODIB༻ͷ"SHP$%ͷઃఆΛੜ ArgoCD มߋΛݕ CSBODIBͷڥΛੜ BQQCSBODIB CSBODIB༻ͷ"SHP$%ͷઃఆΛ"QQMZ CSBODIBͷNBOJGFTUTͷಉظΛ։࢝ %FQMPZNFOU 4FSWJDFʜ ArgoCD Image Updater ࠷৽ͷΠϝʔδΛద༻͢Δ มߋΛݕ ίϯςφΠϝʔδͷ#VJME1VTI HJUDPNNJUQVTI
"QQ*NBHFͷߋ৽ wϒϥϯνʹHJUQVTI͢Δʹɺ13൪߸ͱίϛοτϋογϡͰߏ ͞ΕΔλάΛ༩ͯ͠ΠϝʔδΛQVTI͍ͯ͠Δ wTBNQMFBQQQSFDFE w"SHP$%ͷઃఆΛੜ͢Δஈ֊Ͱ*NBHF6QEBUFSͷઃఆΛ༩ apiVersion: argoproj.io/v1alpha1 kind: Application metadata:
name: sample-app-pr-1 annotations: argocd-image-updater.argoproj.io/image-list: sample-app=takumakume/sample-app:^pr-1 argocd-image-updater.argoproj.io/sample-app.update-strategy: latest argocd-image-updater.argoproj.io/sample-app.ignore-tags: latest argocd-image-updater.argoproj.io/sample-app.allow-tags: regexp:^pr-1-[0-9a-f]{5,40}$ ... ࠷৽ͷlQSίϛοτϋογϡzͳΠϝʔδΛద༻͢Δ
ϓϨϏϡʔڥͷղઆɿڥͷআ "QQ3FQP 4ZTUFN.BOJGFTUT3FQP ,VCFSOFUFT$MVTUFS Github Actions Pull Request Github Actions
$MPTFPS.FSHF SFQPTJUPSZ@EJTQBUDI CSBODIB༻ͷ"SHP$%ͷઃఆΛআ ArgoCD আΛݕ CSBODIBͷڥΛআ BQQCSBODIB CSBODIB༻ͷ"SHP$%ͷઃఆΛআ %FQMPZNFOU 4FSWJDFʜ HJUDPNNJUQVTI apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: sample-app-pr-1 finalizers: - resources-finalizer.argocd.argoproj.io … "QQMJDBUJPOϦιʔεআ࣌ʹͦͷڥΛআ͢Δ
ϓϨϏϡʔڥͷղઆɿڥͷΞΫηε ΞϓϦέʔγϣϯ ϦϙδτϦ LVCFSOFUFT Ϋϥελ Branch-A Branch-B Branch-A Branch-B 13࡞
13࡞ branch-a.example.com branch-b.example.com *OHSFTTΛͬͯެ։͍ͯ͠Δ
ϓϨϏϡʔڥͷղઆɿڥͷΞΫηε apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: app-ingress namespace: app
spec: rules: - host: staging-app.example.com http: paths: - backend: service: name: app-svc port: number: 8080 path: / pathType: Prefix tls: - hosts: - staging-app.example.com secretName: app-tls staging-app.example.com staging-app.example.com ίί ίί w*OHSFTTΛ͏߹ͷ՝ w୯ҰͷNBOJGFTUTΛෳͷϓϨϏϡʔ ڥʹར༻͢ΔͨΊɺ*OHSFTTIPTUͷ ॻ͖͕͑ඞཁ wNBOJGFTUTੜ࣌ʹεΫϦϓτͰॻ ͖͑ΔࣄͰ͖Δ͕ɺཧ͕ࡶͱ ͳΔ
ϓϨϏϡʔڥͷղઆɿڥͷΞΫηε wUBLVNBLVNFTFSWJDFFYQPTFPQFSBUPS wࢦఆͨ͠4FSWJDFΛެ։͢Δ*OHSFTTΛࣗಈੜ͢Δ0QFSBUPS w4&37*$&@/".&/".&41"$&FYBNQMFDPN wࣗಈͰ*OHSFTTIPTUΛׂΓͯΔ͜ͱ͕Ͱ͖Δ wLVCFSOFUFT4FSWJDF%JTDPWFSZͷ*OHSFTT൛ͷΑ͏ͳػೳ wએݴతʹಈతͳϗετ໊Ͱ*OHSFTTΛੜͰ͖Δ
apiVersion: service-expose.../v1alpha1 kind: ServiceExpose metadata: name: example namespace: ns1 spec:
backend: service: name: example-svc port: number: 8080 domain: example.com path: / pathType: Prefix tlsEnable: true tlsSecretName: example-tls annotations: cert-manager.io/cluster-issuer: letsencrypt apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: example namespace: ns1 annotations: cert-manager.io/cluster-issuer: letsencrypt spec: rules: - host: example-svc.ns1.example.com http: paths: - backend: service: name: example-svc port: number: 8080 path: / pathType: Prefix tls: - hosts: - example-svc.ns1.example.com secretName: example-tls backend: service: name: example-svc port: number: 8080 example-svc ns1 example.com example-svc ns1 example.com example-svc ns1 example.com ެ։͢Δ4FSWJDF αʔϏεσΟεΧόϦతͳ ϗετ໊ΛࣗಈͰ༩ αʔϏε໊ namespace υϝΠϯ UBLVNBLVNFTFSWJDFFYQPTFPQFSBUPS
IUUQTTQFBLFSEFDLDPNUBLVNBLVNFHPLVCFSOFUFTPQFSBUPS LVCFSOFUFTPQFSBUPSͷৄ͍࣮͠༰ʹ͍ͭͯҎԼ
ϓϨϏϡʔڥͷղઆɿڥͷΞΫηε w4FSWJDF&YQPTFʹΑͬͯੜ͞Εͨ*OHSFTTͷϗετ໊ʹରͯ͠ wFYUFSOBMEOT"Ϩίʔυͷࣗಈઃఆ wDFSUNBOBHFS5-4ূ໌ॻͷࣗಈઃఆ
ࠓޙͷ՝
ࠓޙͷ՝ wίʔυ1VTI͔Βڥͷөྃͷ௨͕͔Γʹ͍͘ w"SHP$%/PUJpDBUJPOTͰεςʔλεΛ4MBDL௨͍ͯ͠Δ
ࠓޙͷ՝ wίʔυ1VTI͔Βڥͷөྃͷ௨͕͔Γʹ͍͘ ɹʢଓ͖ʣ wͲͷίϛοτ·ͰϓϨϏϡʔڥͷίϯςφʹө͍ͯ͠Δ͔ ͕͔Γʹ͍͘ wݫີʹ࣮ߦதͷίϯςφͷΠϝʔδλάΛݟΔ͔͠ͳ͍ wར༻ऀॻ͍ͨίʔυ͕ѱ͍ͷ͔ɺڥʹөͯ͠ͳ͍ͷ͔ அʹ໎͏Մೳੑ͕͋Δ
ࠓޙͷ՝ wίʔυ1VTI͔Βڥͷө·ͰͷλΠϜϥά͕ͦͦ͋͜͜Δ wΞϓϦͷ$*Λ1BTT wίϯςφΠϝʔδͷ#VJMEˍ1VTI w"SHP$%*NBHF6QEBUFS͕ݕ࣮͠ߦதͷίϯςφͷΠϝʔδ Λߋ৽ wίϯςφΠϝʔδͷ1VMM wίϯςφͷϩʔϧΞτ
·ͱΊ w13ͷ࡞ΛτϦΨʔʹಈ࡞֬ೝ༻ͷϓϨϏϡʔڥΛ LVCFSOFUFT্ʹࣗಈੜ͍ͯ͠Δ w"SHP$%ͷઃఆϑΝΠϧΛੜˍϦϙδτϦʹ1VTI͢Δ͚ͩͰ ͍݁ͯ͠Δ wϒϥϯνʹΞϓϦͷίʔυΛ1VTI͢ΔʹΠϝʔδΛ #VJME1VTIͯ͠"SHP$%*NBHF6QEBUFSͰڥΛߋ৽͍ͯ͠Δ wϗετ໊Λ4FSWJDF%JTDPWFSZతʹੜ͠ɺ*OHSFTTͰެ։͢Δ 0QFSBUPSΛ։ൃ͍ͯͬͯ͠Δ
ΫϥυωΠςΟϒͳٕज़ʹڵຯ͕ ͋ΔํੋඇҰॹʹಇ͖·͠ΐ͏ʂ