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
WebエンジニアのためのKubernetesサクッと入門
Search
mokichi
November 30, 2020
Programming
230
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
WebエンジニアのためのKubernetesサクッと入門
NPO法人みんなのコード様の社内勉強会にて使用した資料を、許可を得て公開させていただきます。
mokichi
November 30, 2020
More Decks by mokichi
See All by mokichi
Elixir以外の言語もよく使うエンジニアが考える、Phoenix LiveViewの使いどころ
mokichi
2
670
Rubyistから見たElixir
mokichi
1
550
Phoenix LiveViewをプロダクション利用してみた所感
mokichi
3
1k
Phoenix1.6で標準搭載されたLiveViewに入門してみよう
mokichi
0
300
Ractorが出たからRubyの並列処理をおさらいする
mokichi
0
880
未来予知できない凡人の生存戦略
mokichi
0
130
Other Decks in Programming
See All in Programming
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
190
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1.6k
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
180
LLM 101
dalinaum
0
370
そのデザイントークン、Flutterでも同じ見た目になりますか?
nakamizu
0
140
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
200
Spec-Driven Development - Why Vaadin Is the Perfect Fit
simas
PRO
0
190
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
370
contenteditable と日本語入力に向き合う
colorful12
0
230
[2026-10-09]一枚の布で作らなくてもいい。 信頼性は「パッチワーク」で紡がれる~既存の運用と新しい可能性をつなぎ合わせてきたCREの話~
tosite
0
120
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
290
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
200
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.9k
The Pragmatic Product Professional
lauravandoore
37
7.5k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
390
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
450
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
470
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
620
Site-Speed That Sticks
csswizardry
13
1.6k
Designing for Timeless Needs
cassininazir
1
540
Unsuck your backbone
ammeep
672
58k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
ラッコキーワード サービス紹介資料
rakko
5
5.6M
Transcript
Webエンジニアのための Kubernetesサクッと入門 株式会社スマートアルゴリズム 代表取締役 齋藤 和也
自己紹介 1988年生まれ、福岡県出身、九州工業大学情報工 学部卒。 フリーランスとして2年ほど、Webサービスやスマー トフォンアプリの受託開発を中心に活動。アジャイル 開発を実践し、保守性・拡張性の高い設計を得意と する。 独立前は研究用ソフトウェアの開発に従事してお り、機械学習や自然言語処理といった分野にも明る い。
2015年1月、株式会社スマートアルゴリズムを設 立、代表取締役に就任。
ゴール KubernetesでWebアプリを運用する上で 最低限必要な構成要素をおさえよう!
Dockerについて 言わずと知れたコンテナ仮想化ソフトウェア VMのようにゲストOSがない分オーバーヘッドが小さい Kubernetesとは何か? | Kubernetesより引用
Dockerだけだと何がまずいの? Dockerの役割=コンテナを動かすだけ • 複数のコンテナをまとめて扱いたい場合は? • イメージを更新した際のコンテナの入れ替えは? • 負荷分散はどうする? • サーバが複数台あったら?
オーケストレーションは別で考える必要がある
そこでKubernetes!
Kubernetes(k8s)とは コンテナオーケストレーションのデファクトスタンダード 複数台のサーバをクラスタ化し、設定内容に応じてコンテナのラ イフサイクルを管理したり自己修復したりしてくれる
k8sのアーキテクチャ Kubernetes - Wikipediaより引用 GKE等のマネージドサービスは Masterの面倒を見てくれる kubectlコマンドで クラスタを制御
CronJob (fetch-weather) Webアプリ on k8s の構成例 (プログル情報の場合) Pod (proguru-high-xxx) nginx
rails Pod (python-xxx) python Service (proguru-high) Service (python) Ingress (proguru-high) high.proguru.jp/* high.proguru.jp/************ Job (fetch-weather-xxx) Deployment (proguru-high) Deployment (python)
Deployment • ローリングアップデートやロールバックといっ たデプロイ管理の仕組みを提供 • Deployment が ReplicaSet を管理し、 ReplicaSet
が Pod を管理する • Deployment を更新 → 新しい ReplicaSet を生成 → 古い Pod と新しい Pod を入れ替え → 古い ReplicaSet を削除 • ローリングアップデートの戦略も柔軟にカス タマイズできる
Service • Podをネットワークサービスとして公開するため の仕組みを提供 • セレクタとポートでどのPodが参照されるか決ま る • クラスタ外からアクセスできるようにするために、 NodePortを指定するケースが多い
クラスタ内に閉じているなら ClusterIPも可 • クラスタ内DNSにより、サービス名をホスト名と してアクセスできる
ConfigMap / Secret • 値やファイルをクラスタに登録しておき別リ ソースから参照できる仕組みを提供 • 環境変数として使ったりファイルとしてマウン トしたりといった使い方 •
ConfigMapは単なる設定 Secretは秘匿情報を扱うという使い分け • Secretについては公式ドキュメントを参照
Ingress • L7ロードバランサを扱う仕組みを提供 • GCPのロードバランサが作成される (GKE Ingress コントローラが制御) • アノテーションによって静的
IPを付与したり SSL証明書を紐付けたりできる (ManagedCertificateが必要) • ロードバランサはクラスタ外にあるため NodePortのサービスじゃないとIngress側か らアクセスできない
CronJob • Cronと同じ仕組みを提供 • Cronが動いているPodがあるのではなく CronJobがJobを起動する (DeploymentとPodの関係に似ている) • タイムゾーンはMasterに依存するため、マ ネージドサービスを使う場合はまず
間違いなくUTCになることに留意
DaemonSet • 全ノードで常に1つだけ特定のPodを起動す る仕組みを提供 • 各ノードのメトリクスを取得したりログを収集 したりする用途が多い • GKEではクラスタ作成時にオプションをつけ れば自動的にリソースが作られる
よくある課題:環境ごとに設定を分けるには? • プログル全般ではKustomizeというツールを使っている • ベースのYAMLを用意し、環境ごとに設定を上書き • Helmというツールもあるが、頻繁に更新されバージョニングさ れないようなWebアプリだと使いにくい印象 • k8sディレクトリで
$ kustomize build overlays/staging を実行してみよう
よくある課題:デプロイはどうする? • プログル全般ではSkaffoldというツールを使っている • kubectlはk8sクラスタを制御するためのツール Dockerイメージは別途作成する必要がある • ビルド〜デプロイのパイプラインを制御してくれる プッシュ型のツール •
プル型のツールとしてFluxやArgoCDがある(GitOps)
他にもいろいろある 網羅性が高くオススメ https://amzn.to/3ppEYf5 Elasticsearchのクラスタをk8s上に簡単に構築 https://www.elastic.co/jp/elastic-cloud-kubernetes カスタムリソース定義 (CRD)という仕組みにより kind: Elasticsearch というリソースを作成するだけで色々やってくれる
Fin.