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
Kubernetes & Helm Tech Talk
Search
vincentdesmet
March 09, 2017
Programming
1
550
Kubernetes & Helm Tech Talk
Tech Talk about Kubernetes and Helm
vincentdesmet
March 09, 2017
Tweet
Share
More Decks by vincentdesmet
See All by vincentdesmet
KubeDay Singapore 2023 - recap
so0k
0
110
CDK and Kubernetes: A Match Made in the Cloud
so0k
0
170
Integrate This!
so0k
0
160
Kubernetes clusters with Terraform / Terragrunt and Kops
so0k
1
310
Why we use Kubernetes at my company
so0k
0
69
Ingress at Swatmobile
so0k
0
140
Kubernetes Security Challenges
so0k
0
150
How Honestbee does CI/CD on Kubernetes - Voxxed Days Singapore 2018
so0k
0
220
Terraform at Honestbee
so0k
0
320
Other Decks in Programming
See All in Programming
Is Xcode slowly dying out in 2025?
uetyo
1
180
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
170
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
190
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
450
なぜ「共通化」を考え、失敗を繰り返すのか
rinchoku
1
390
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
1
360
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
610
GraphRAGの仕組みまるわかり
tosuri13
7
450
エンジニア向け採用ピッチ資料
inusan
0
140
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
550
Create a website using Spatial Web
akkeylab
0
290
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
320
Featured
See All Featured
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.8k
Automating Front-end Workflow
addyosmani
1370
200k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Making Projects Easy
brettharned
116
6.3k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.8k
Being A Developer After 40
akosma
90
590k
Transcript
Managing Kubernetes Deployments with Helm Vincent De Smet
Overview - Kubernetes - Concepts - Challenges - Helm -
Introduction - Templating
Kubernetes Concepts & Challenges
Linux Host CONTAINERS Container foo rails server -b 0.0.0.0 usr/src/app/
├── Gemfile ├── Gemfile.lock ├── Rakefile ├── app │ ├── api │ └── ... └── bins / libs ...
BUILD, SHIP, RUN
PODS & VOLUMES Container Foo Container Bar Namespaces: - Net
- IPC - … volumes
PODS & VOLUMES volumes
LABELS app : my-app role : master track: stable
LABELS app : my-app role : master track: stable app
: my-app role : worker track: stable app : my-app role : worker track: canary app : my-app role : master track: canary
SELECTORS app : my-app app : my-app role : master
track: stable app : my-app role : worker track: stable app : my-app role : worker track: canary app : my-app role : master track: canary
SELECTORS app : my-app role : worker app : my-app
role : master track: stable app : my-app role : worker track: stable app : my-app role : worker track: canary app : my-app role : master track: canary
SELECTORS app : my-app track: canary app : my-app role
: master track: stable app : my-app role : worker track: stable app : my-app role : worker track: canary app : my-app role : master track: canary
CONTROL LOOPS Desired state Actual state pods: - foo -
bar pods: - foo
CONTROL LOOPS Desired state Actual state pods: - foo -
bar pods: - foo create “bar” Create
CONTROL LOOPS Desired state Actual state pods: - foo -
bar pods: - foo - bar
REPLICA SETS + Replica Set: - replicas: 1 - selector:
- app: my-app - version: 1.0 - Desired State: - Pod Specification - Replica Count - Label Selector
REPLICA SETS + Replica Set: - replicas: 2 - selector:
- app: my-app - version: 1.0
REPLICA SETS + Replica Set: - replicas: 4 - selector:
- app: my-app - version: 1.0
SERVICES Service: - nodePort: 30128 - selector: - app: my-app
- version: 1.0 - de-couple discovery from application - Define how to access pods - Act as a proxy (Virtual IP - stable for DNS) Think of: - Dynamic Routing Table
CANARIES + Replica Set: - replicas: 2 - selector: -
app: my-app - version: 1.0 Service: - nodePort: 30128 - selector: - app: my-app + Replica Set: - replicas: 1 - selector: - app: my-app - version: canary Think of: - Partially live the new version
DEPLOYMENTS Service: - nodePort: 30128 - selector: - app: my-app
+ Replica Set: - replicas: 2 - selector: - app: my-app - version: 1.0 + - Manage updates with Deployment resources
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ Replica Set: - replicas: 4 - selector: - app: my-app - version: 1.0 + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ + Replica Set: - replicas: 1 - selector: - app: my-app - version: 2.0 Replica Set: - replicas: 4 - selector: - app: my-app - version: 1.0 + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ + Replica Set: - replicas: 1 - selector: - app: my-app - version: 2.0 Replica Set: - replicas: 3 - selector: - app: my-app - version: 1.0 + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ + Replica Set: - replicas: 2 - selector: - app: my-app - version: 2.0 Replica Set: - replicas: 3 - selector: - app: my-app - version: 1.0 + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ + Replica Set: - replicas: 2 - selector: - app: my-app - version: 2.0 Replica Set: - replicas: 2 - selector: - app: my-app - version: 1.0 + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ + Replica Set: - replicas: 3 - selector: - app: my-app - version: 2.0 Replica Set: - replicas: 2 - selector: - app: my-app - version: 1.0 + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ + Replica Set: - replicas: 3 - selector: - app: my-app - version: 2.0 Replica Set: - replicas: 1 - selector: - app: my-app - version: 1.0 + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ Replica Set: - replicas: 4 - selector: - app: my-app - version: 2.0 Replica Set: - replicas: 1 - selector: - app: my-app - version: 1.0 + + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ Replica Set: - replicas: 4 - selector: - app: my-app - Version: 2.0 Replica Set: - replicas: 0 - selector: - app: my-app - version: 1.0 + + Deployment: - strategy: - rollingUpdate
UPDATES Service: - nodePort: 30128 - selector: - app: my-app
+ Replica Set: - replicas: 4 - selector: - app: my-app - Version: 2.0 + Deployment: - strategy: - rollingUpdate
CONFIGMAPS Service: - nodePort: 30128 - selector: - app: my-app
+ + Deployment: - strategy: - rollingUpdate ConfigMap: - sample.yaml: | env: production cache: true max_threads: 8
SECRETS Service: - nodePort: 30128 - selector: - app: my-app
+ + Deployment: - strategy: - rollingUpdate Secret: - sample.yaml: | key: *** db_user: *** db_pw: ***
Recap - Multiple resource types - Deployments - Services -
ConfigMaps - Secrets - … - Serializable Manifests (store as yaml) Managing these bundles is a challenge in the long run!
Challenges 1. Collaboration a. Sharing Manifest files, trust? b. Iterating
c. Best Practices 2. Managing Releases a. Define package b. Tweaking ~ Multiple copies & variations c. Migrating
Helm Introduction & Templating
Helm: Package Manager - Collaboration with Google, Bitnami, Deis and
others - Deis/Helm -> Kubernetes/Helm - Architecture: - Client: Helm - Server: Tiller - This talk: - Focused on writing charts
Helm core values - Aim for the Apt/Yum/Homebrew UX -
Ensure collaboration - Reproducible releases - Shareable Packages
Chart, Repositories, Releases - Chart: “Package”, “Bundle” - Repository: Package
Repository Evolving towards a registry (CoreOS) - Release: Installed Chart (same chart can be installed multiple times)
Basic Architecture Client - Server
Usage
Writing Charts - Templating and Release Management - More templating
and User notes - Debugging and Troubleshooting features
Templating & Release Management workshop available
Review using helm - Install charts (creates a release) -
helm install - List releases - helm ls - - Bootstrap charts - helm create
More features - Upgrade Releases - helm upgrade <release> -
Search Charts - helm search - KubeApps.com (Monocular - https://github.com/helm/monocular) - Manage Chart dependencies - requirements.yaml - helm dep up - Helm Plugins - Keybase: helm keybase sign/verify - GitHub: helm github push
More info Kubecon talk
Thank you!
Future? - Advanced orchestration (AppController)
Shipping, Deploying & Service Discovery