Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebエンジニアのためのKubernetesサクッと入門
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
mokichi
November 30, 2020
Programming
1
190
WebエンジニアのためのKubernetesサクッと入門
NPO法人みんなのコード様の社内勉強会にて使用した資料を、許可を得て公開させていただきます。
mokichi
November 30, 2020
Tweet
Share
More Decks by mokichi
See All by mokichi
Elixir以外の言語もよく使うエンジニアが考える、Phoenix LiveViewの使いどころ
mokichi
2
510
Rubyistから見たElixir
mokichi
1
490
動的画像変換サービス「imagepix」のご紹介
mokichi
1
290
Phoenix LiveViewをプロダクション利用してみた所感
mokichi
3
980
Phoenix1.6で標準搭載されたLiveViewに入門してみよう
mokichi
0
260
Ractorが出たからRubyの並列処理をおさらいする
mokichi
0
800
未来予知できない凡人の生存戦略
mokichi
0
93
Other Decks in Programming
See All in Programming
grapheme_strrev関数が採択されました(あと雑感)
youkidearitai
PRO
1
200
TipKitTips
ktcryomm
0
150
NOT A HOTEL - 建築や人と融合し、自由を創り出すソフトウェア
not_a_hokuts
2
540
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
350
Rails Girls Tokyo 18th GMO Pepabo Sponsor Talk
yutokyokutyo
0
190
CSC307 Lecture 15
javiergs
PRO
0
210
DSPy入門 Pythonで実現する自動プロンプト最適化 〜人手によるプロンプト調整からの卒業〜
seaturt1e
1
470
日本だけで解禁されているアプリ起動の方法
ryunakayama
0
370
Go Conference mini in Sendai 2026 : Goに新機能を提案し実装されるまでのフロー徹底解説
yamatoya
0
510
コーディングルールの鮮度を保ちたい / keep-fresh-go-internal-conventions
handlename
0
150
ご飯食べながらエージェントが開発できる。そう、Agentic Engineeringならね。
yokomachi
1
280
atmaCup #23でAIコーディングを活用した話
ml_bear
4
730
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.6k
Speed Design
sergeychernyshev
33
1.6k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Test your architecture with Archunit
thirion
1
2.2k
The browser strikes back
jonoalderson
0
750
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
My Coaching Mixtape
mlcsv
0
63
Balancing Empowerment & Direction
lara
5
930
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
130
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.