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
クラウドネイティブな開発環境への移行/Move to the cloud native d...
Search
Takuma Kume
December 04, 2019
Technology
710
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラウドネイティブな開発環境への移行/Move to the cloud native development environment
KIXS #10
Takuma Kume
December 04, 2019
More Decks by Takuma Kume
See All by Takuma Kume
SRE/インフラエンジニアの市場価値とキャリアパス/Market value and career path for SRE-infrastructure engineers
takumakume
2
1.7k
【新卒研修】共通言語としてのSRE/SRE as a common language
takumakume
0
340
DDoSとの終わりなき戦い2025/endless_battle_with_ddos_attack_2025
takumakume
3
210
事業部CTOの現在地(パネルディスカッション)/Current-location-of-Division-CTO
takumakume
0
260
ロリポップ! for Gamersを支えるインフラ/lolipop for gamers infrastructure
takumakume
0
2k
ロリポップ! for Gamersの立ち上げ/lolipop for gamers launch
takumakume
0
3.2k
ホモグラフドメインを検出してみた/detect homograph domain
takumakume
0
900
ソフトウェアの継続的アップデートをコンテナ化によって加速させる/Accelerate continuous software updates with containerization
takumakume
0
5.8k
KubernetesにおけるSBOMを利用した脆弱性管理/Vulnerability_Management_with_SBOM_in_Kubernetes
takumakume
2
3.4k
Other Decks in Technology
See All in Technology
バックオフィスに染み出すTypeScript ── clasp で安全に仕組みを作る
nealle
1
160
Vue で書く 空間コンピューティング、TresJS と WebXR を使ったXR デバイスのフロントエンド開発
hiranuma
0
150
[FECONF-2026] 신대륙을 향한 카카오페이증권 프론트엔드 항해기 (이주승)
l1ghthouse
0
360
Consistency for mere mortals - A gentle guide to consistency
ufried
0
120
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
750
re:Invent2026 事前勉強会 歴史と愉しみ方10分LT編
toshi_atsumi
0
100
攻撃 3 時間 vs 復旧 10 時間。アクセスキー流出の非対称性を体感するために CTF を作った話
kazzpapa3
1
130
FinOpsを導入してマルチプロダクトのコスト最適化を実現する
kworkdev
PRO
0
110
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
160
re:Invent の去年のスケジュールを公開します!
miu_crescent
PRO
0
190
LLMの知識とAIエージェント
happysamurai294
0
150
視野はAIに、視座は人に / ai-for-breadth-humans-for-perspective
nkzn
6
2.8k
Featured
See All Featured
Color Theory Basics | Prateek | Gurzu
gurzu
1
510
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
1
490
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Un-Boring Meetings
codingconduct
0
480
Designing Experiences People Love
moore
143
24k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
59k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
The Invisible Side of Design
smashingmag
301
52k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Transcript
,*94 ։ൃڥͷมભͱ ΫϥυωΠςΟϒͷҠߦ
(.0ϖύϘגࣜձࣾ ٱถഅ!UBLVNBLVNF ιϑτΣΞΤϯδχΞ
None
αʔϏε։͔࢝Β վળ͠์Ͱ͢ʂ
ϩϦϙοϓʂͷݱࡏͷߏͱϑΣʔζ w ϩϦϙοϓʂͷ8FCαΠτίϯτϩʔϧύωϧͳͲͷ8FCΞϓϦ έʔγϣϯɺ0QFOTUBDLͰߏங͞ΕͨϓϥΠϕʔτΫϥυ্ʹ 7.ͱͯ͠ߏ͞Ε͍ͯΔɻ w ݱࡏɺΫϥυωΠςΟϒͳڥΛࢦͯ͠ɺ·ͣ։ൃڥ͔Β LVCFSOFUFTपลٕज़ͷಋೖΛߦ͍ͬͯΔɻ w ࠓޙɺϓϩμΫγϣϯڥΫϥυωΠςΟϒͳٕज़Λಋೖ͍ͯ͠
͘༧ఆͱͳ͍ͬͯΔɻ
ຊͷ͓ wϩϦϙοϓͷ։ൃڥͷมભͱͦΕͧΕͷ՝ wϩϦϙοϓͰߏஙͨ͠ΫϥυωΠςΟϒͳ ։ൃڥΛݱঢ়ͷ՝Λަ͑ͯհ ΫϥυωΠςΟϒͳ։ൃڥΛࢧ͑Δཁૉٕज़ͷৄ͍͠આ໌࣌ؒͷ߹্ɺҰ෦ׂѪ͍ͯ͠·͢ɻ ϦϑΝϨϯεΛ͚͍ͭͯΔͷͰޙ΄Ͳޚཡ͍ͩ͘͞ʂ
ͱ͜ΖͰɺ օ͞Μ͕ීஈ͏։ൃڥ ΫϥυωΠςΟϒͰ͔͢ʁ
ग़యIUUQTTQFBLFSEFDLDPNKBDPQFOGFJCJJQNPVDMPVEOBUJWFGBMTFTIJKJF
ग़యIUUQTTQFBLFSEFDLDPNKBDPQFOGFJCJJQNPVDMPVEOBUJWFGBMTFTIJKJF
։ൃڥ͜͜Ͱ ࣌ͷมભͱͱʹ ଟ͘ͷมԽ͕͋Γ·ͨ͠
ཧαʔό ,7. BQQ BQQ ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# 1$
" σϓϩΠ BQQΛ։ൃʹ͍·͢ʙ ڞ༻7.ظ
ཧαʔό ,7. BQQ BQQ ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# 1$
" σϓϩΠ BQQΛ։ൃʹ͍·͢ʙ ڞ༻7.ظ 1$ # !"͞Μ BQQΛগ͍͍ͨ͠Ͱ͢ʂ
ཧαʔό ,7. BQQ BQQ ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# 1$
" WJIUUQEDPOG ڞ༻7.ظ ͳΜ͔ಈ͔Μ IUUQEDPOGΠδΔ͔
ཧαʔό ,7. BQQ BQQ ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ ࣾ-"/ "1* %#
" σϓϩΠ ڞ༻7.ظ 1$ # BQQΛ։ൃʹ͍·͢ʙ !IFSF BQQͷαʔό͕ ಈ͔ͳ͍ΜͰ͚͢Ͳʂ ͏ͬԶͩ
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# ϩʔΧϧ7.ظ 1$ 7JSUVBM#PY BQQ BQQ
WBHSBOU ϓϩμΫγϣϯڥΛDIFGͰ ίʔυԽͨ͜͠ͱͰɺखݩͷ WBHSBOUVQ࣌ʹDIFGͰ ϓϩϏδϣχϯά͢Δߏʹ ڞ༻ͷ%#Ҡߦ͍ͯ͠ͳ͍Ұ෦ϩʔϧ -"/Ͱ௨৴͢Δ ։ൃ͕׆ൃͳϩʔϧ͔ΒҠߦ͍ͯͬͨ͠
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# ϩʔΧϧ7.ظ 1$ 7JSUVBM#PY BQQ BQQ
WBHSBOU ͏ͬىಈ͠ͳ͘ͳͬͨ DIFG͕͏·͘ಈ͍ͯͳ͍ ։ൃڥΩϨΠʹ͍ͨ͠ͷͰҰ࡞Γ͢ʙ ͏ͬϓϩϏδϣχϯά݁ߏ͔͔࣌ؒΔͳ ͳΜ͔͠ΒΜ͚Ͳಈ͔Μ͘ͳͬͨΜͰ͢
ϖύϘͰɺ ΤϯδχΞ͚ͩͰͳ͘ σβΠφʔಉ͡։ൃڥΛ ͍ͬͯ·͢ɻ
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# ϩʔΧϧίϯςφظ 1$ %PDLFS BQQ BQQ
EPDLFSDPNQPTF ΞϓϦΛίϯςφԽͯ͠ खݩͷιʔείʔυΛϚϯτͯ͠ ։ൃͰ͖ΔΑ͏ʹͳͬͨ
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# ϩʔΧϧίϯςφظ 1$ %PDLFS BQQ BQQ
EPDLFSDPNQPTF ͳΜ͔͠ΒΜ͚Ͳಈ͔Μ͘ͳͬͨΜͰ͢ ɾखݩͷΠϝʔδ͕ݹ͍ ɾผͷίϯςφͱϙʔτ͕ඃͬͯಈ͍ͯͳ͍ ɹίϯςφ͕͋Δ ɾ͍Ζ͍ΖͳαʔϏεͷ։ൃڥ͕खݩʹཚཱͯ͠ ɹύϑΥʔϚϯε͕
͕ൃੜ͢Δʹɺ ΤϯδχΞ͕ग़ಈ͢Δඞཁ͕͋Δ͠ɺ ґཔ͢Δଆਏ͍
ڥґଘͷղܾͷ߹ ͦͷਓͷ1$ΛआΓͯ ΞϨίϨ͢Δඞཁ͋ͬͯ ੜ࢈ੑ͕͍
ΫϥυωΠςΟϒͳ։ൃڥʹͯ͠ ͜ͷ՝Λղܾ͢Δʂ
։ൃڥʹٻΊͨ͜ͱ w͖ͳ࣌ʹ͙͑͢Δ wյΕͯ؆୯ʹͱʹΔ wڥґଘʹΑΔ͕ൃੜ͠ʹ͍͘ wৗʹ࠷৽ͷڥΛ͑Δ
BQQ BQQ BQQ BQQ 6TFS" 6TFS# ϓϥΠϕʔτΫϥυ 0QFOTUBDL ,VCFSOFUFT σʔληϯλʔ
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# ·ͩҠߦͰ͖ͯͳ͍ ϩʔϧ 1$ " 1$ # ݱࡏͷ։ൃڥ
BQQ BQQ BQQ BQQ 6TFS" 6TFS# ϓϥΠϕʔτΫϥυ 0QFOTUBDL ,VCFSOFUFT σʔληϯλʔ
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# 1$ " 1$ # ݱࡏͷ։ൃڥ BQQ BQQ BQQ BQQ 6TFS" 6TFS# 1$ " 1$ # ݸผͷ։ൃڥΛ༻ҙͯ͠ ͖ͳ࣌ʹ͑Δ
BQQ BQQ BQQ BQQ 6TFS" 6TFS# ϓϥΠϕʔτΫϥυ 0QFOTUBDL ,VCFSOFUFT σʔληϯλʔ
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# 1$ " 1$ # ݱࡏͷ։ൃڥ ,VCFSOFUFT LVCFSOFUFTΛ࠾༻͍ͯ͠ΔͷͰ ͕ൃੜͯ͠ݩʹ͍͢͠
BQQ BQQ BQQ BQQ 6TFS" 6TFS# ϓϥΠϕʔτΫϥυ 0QFOTUBDL ,VCFSOFUFT σʔληϯλʔ
ཧαʔό ,7. ձࣾͷย۱ͷαʔόʔࣨ "1* %# 1$ " 1$ # ݱࡏͷ։ൃڥ Ϋϥυ্ʹ։ൃڥ͕͋ΔͨΊ खݩͷڥґଘͷ͕ ൃੜ͠ʹ͍͘ BQQ BQQ BQQ BQQ 6TFS" 6TFS# ϓϥΠϕʔτΫϥυ 0QFOTUBDL ,VCFSOFUFT σʔληϯλʔ
։ൃڥʹٻΊͨ͜ͱ w͖ͳ࣌ʹ͙͑͢Δ wյΕͯ؆୯ʹͱʹΔ wڥґଘʹΑΔ͕ൃੜ͠ʹ͍͘ wৗʹ࠷৽ͷڥΛ͑Δ
ৗʹ࠷৽ͷڥΛ͑Δ ΞϓϦͷมߋΛ NBTUFSϒϥϯνʹ 1VTI ΞϓϦͷϦϙδτϦ ։ൃऀ "SHP$% NBTUFSϒϥϯνͷ มߋΛࢹ ΞϓϦͷίϯςφ
ΠϝʔδΛ #VJME1VTI 1VTI )PPL 1PMM 1VTI NBOJGFTUTͷ JNBHFUBHΛ ࠷৽ʹVQEBUF LVCFSOFUFTͷNBOJGFTUT ͷϦϙδτϦ QSJWBUF EPDLFSSFHJTUSZ 1VTI NBOJGFTUTΛ LVCFSOFUFTڥʹ LVCFDUMͰBQQMZ "QQMZ ։ൃڥͷ LVCFSOFUFTDMVTUFS (JU0QTΛ࣮ݱ͢Δ $%πʔϧ
ৗʹ࠷৽ͷڥΛ͑Δ ΞϓϦͷมߋΛ NBTUFSϒϥϯνʹ 1VTI ΞϓϦͷϦϙδτϦ ։ൃऀ "SHP$% NBTUFSϒϥϯνͷ มߋΛࢹ ΞϓϦͷίϯςφ
ΠϝʔδΛ #VJME1VTI 1VTI )PPL 1PMM 1VTI NBOJGFTUTͷ JNBHFUBHΛ ࠷৽ʹVQEBUF LVCFSOFUFTͷNBOJGFTUT ͷϦϙδτϦ QSJWBUF EPDLFSSFHJTUSZ 1VTI NBOJGFTUTΛ LVCFSOFUFTڥʹ LVCFDUMͰBQQMZ "QQMZ ։ൃڥͷ LVCFSOFUFTDMVTUFS (JU0QTΛ࣮ݱ͢Δ $%πʔϧ ΞϓϦͷίϯςφ ΠϝʔδΛ #VJME1VTI NBOJGFTUTͷ JNBHFUBHΛ ࠷৽ʹVQEBUF NBOJGFTUTΛ LVCFSOFUFTڥʹ LVCFDUMͰBQQMZ 5BTL 5BTL 5BTL 1JQFMJOF https://speakerdeck.com/pyama86/cloudnative-buildpacksdechuang-ru-cloudnativenakai-fa-ti-yan?slide=45
։ൃڥʹٻΊͨ͜ͱ w͖ͳ࣌ʹ͙͑͢Δ wյΕͯ؆୯ʹͱʹΔ wڥґଘʹΑΔ͕ൃੜ͠ʹ͍͘ wৗʹ࠷৽ͷڥΛ͑Δ
ΞϓϦͷมߋΛ NBTUFSϒϥϯνʹ 1VTI ΞϓϦͷϦϙδτϦ ։ൃऀ "SHP$% NBTUFSϒϥϯνͷ มߋΛࢹ ΞϓϦͷίϯςφ ΠϝʔδΛ
#VJME1VTI 1VTI )PPL 1PMM 1VTI NBOJGFTUTͷ JNBHFUBHΛ ࠷৽ʹVQEBUF LVCFSOFUFTͷNBOJGFTUT ͷϦϙδτϦ QSJWBUF EPDLFSSFHJTUSZ 1VTI NBOJGFTUTΛ LVCFSOFUFTڥʹ LVCFDUMͰBQQMZ "QQMZ ։ൃڥͷ LVCFSOFUFTDMVTUFS (JU0QTΛ࣮ݱ͢Δ $%πʔϧ NBOJGFTUTΛ LVCFSOFUFTڥʹ LVCFDUMͰBQQMZ "QQMZ ։ൃڥͷ LVCFSOFUFTDMVTUFS શ։ൃऀͷڥΛͲͷΑ͏ʹੜ͍ͯ͠Δ͔ʁ
LVTUPNJ[F apiVersion: apps/v1beta1 kind: Deployment metadata: name: app spec: replicas:
1 template: metadata: labels: app: app spec: containers: - name: app image: nginx:latest ports: - containerPort: 8080 deployment.yaml apiVersion: v1 kind: Service metadata: name: app spec: type: ClusterIP selector: app: app ports: - port: 8080 protocol: TCP targetPort: 8080 service.yaml resources: - deployment.yaml - service.yaml namePrefix: dev commonLabels: env: dev patchesJson6902: - target: version: v1 kind: Service name: app path: replace_selector.yaml kustomization.yaml - op: replace path: /spec/selector value: app: app env: dev > kubectl kustomize .
LVTUPNJ[F --- apiVersion: v1 kind: Service metadata: labels: env: dev
name: devapp spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: app env: dev type: ClusterIP apiVersion: apps/v1beta1 kind: Deployment metadata: labels: env: dev name: devapp spec: replicas: 1 selector: matchLabels: env: dev template: metadata: labels: app: app env: dev spec: containers: - image: nginx:latest name: app ports: - containerPort: 8080 namePrefix: dev commonLabels: env: dev - op: replace path: /spec/selector value: app: app env: dev LVTUPNJ[BUJPOZBNMʹج͍ͮͯϦιʔεΛมߋ͢Δ
։ൃऀશһͷڥΛLVTUPNJ[FΛ׆༻ͯ͠ੜ resources: - deployment.yaml - service.yaml namePrefix: dev commonLabels: env:
dev patchesJson6902: - target: version: v1 kind: Service name: app path: replace_selector.yaml kustomization.yaml - op: replace path: /spec/selector value: app: app env: dev ɾϦετΛݩʹ࠶ؼతʹੜ͢Δػೳͳ͍ ɾͰࣔ͢෦Λ։ൃऀຖʹॻ͖͑ͯ ɹ࠶ؼతʹLVCFSOFUFTڥʹBQQMZͯ͠ɺ ɹ։ൃऀຖͷڥΛੜ͍ͯ͠Δ ɾॻ͖͑ʹZRίϚϯυΛ͍ͬͯΔ ͨͩ ɾZRίϚϯυͰZBNMΛॻ͖͑Δಛੑ্ ɹཧ͕ࡶʹͳΓɺมߋʹऑ͍ ɾLVCFDUMඪ४Ͱఏڙ͞Ε͍ͯΔ ɹLVTUPNJ[FͷػೳΛ͑ͯΧελϚΠζ ɹ͍ͯ͠ΔͨΊɺ࠷ྑͷํ๏Λࡧத
BQQ BQQ BQQ BQQ 6TFS" 6TFS# ϓϥΠϕʔτΫϥυ 0QFOTUBDL ,VCFSOFUFT 1$
" 1$ # LVCFSOFUFT্ͷΞϓϦέʔγϣϯʹରͯ͠ ͲͷΑ͏ͳํ๏Ͱ։ൃ͍ͯ͠Δͷ͔ʁ
UFMFQSFTFODFATXBQEFQMPZNFOUAػೳ https://speakerdeck.com/shiro16/telepresence-deshi-meru-k8s-shi-dai-falserokarukai-fa?slide=9
deployment pod replica: 1 UFMFQSFTFODFͷ՝ᶃ app1-deployment pod replica: 1 app1-service
app1-deployment replica: 0 app1-service ΫϥΠΞϯτ container ଓલ ଓޙ UFMFQSFTFODFa TXBQEFQMPZNFOUBQQEFQMPZNFOU طଘͷEFQMPZNFOUͷ SFQMJDBΛʹ͢Δ UFMFQSFTFODFͷதܧ༻ͷ EFQMPZNFOUʹࠩ͠ସ͑Δ ։ൃର
UFMFQSFTFODFͷ՝ᶃ deployment pod replica: 1 app1-deployment replica: 0 app1-service container
UFMFQSFTFODFa TXBQEFQMPZNFOUBQQEFQMPZNFOU ɾΫϥΠΞϯτͰಈ࡞͢ΔUFMFQSFTFODF ɹϓϩηεʹରͯ͠$UM$Ͱ4*(*/5Λ ɹૹΔͱɺݩͷEFQMPZNFOUͷSFQMJDBΛ ɹͯ͠ɺUFMFQSFTFODF͕ىಈͨ͠ ɹEFQMPZNFOUΛআͯ͘͠ΕΔɻ ɾ͔͠͠ɺྫ͑UFMFQSFTFODF͕ىಈ ɹ͍ͯ͠ΔλʔϛφϧΛམͱͯ͠γΣϧ ɹ͝ͱࡴ͢ͱɺ্هͷΫϦʔϯφοϓॲཧ ɹ͕ൃੜ͠ͳ͍ɻ FSSPS
UFMFQSFTFODFͷ՝ᶄ deployment pod replica: 1 app1-deployment replica: 1 app1-service container
UFMFQSFTFODFa TXBQEFQMPZNFOUBQQEFQMPZNFOU pod ΞϓϦέʔγϣϯͷNBTUFSʹมߋ͕͋ͬͨ߹ʹ ৗʹ࠷৽ͷڥʹ͢Δػߏ͕ಇ͖ॏෳىಈঢ়ଶ ʹͳΔ
UFMFQSFTFODFͷ՝ᶅ deployment pod replica: 1 app1-deployment replica: 0 app1-service container
͜͜ͰΘΕ͍ͯͨ ΠϝʔδΛ खݩͰىಈ͢Δ ΞϓϦͷNBTUFS͕ߋ৽͞ΕΔʹΠϝʔδ͕ߋ৽͞ΕΔɻ ˠϦϦʔε͕ଟ͍΄ͲJNBHFQVMMͷස্͕͕ΔͷͰΠϝʔδαΠζʹΑͬͯɺ ɹ͜ͷ͕࣌ؒϘτϧωοΫͱͳΔɻ
·ͱΊ w։ൃڥ࣌ͷมԽͱͱʹɺ՝Λղ ܾ͢ΔͨΊʹมԽͨ͠ɻ wಉ༷ʹ՝Λղܾ͢ΔͨΊʹLVCFSOFUFTΛ ࢝Ίͱͨ͠ΫϥυωΠςΟϒΛ࣮ݱ͢Δͨ Ίʹదͨ͠पลπʔϧΛΈ߹Θͤͯཧͷ ։ൃڥͷߏஙΛਐΊ͍ͯΔɻ
͜Ε͔ΒϓϩμΫγϣϯΛؚΊͯ ΫϥυωΠςΟϒ͍͖͍ͬͯͨਓืूʂ ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU