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
520
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
91
CDK and Kubernetes: A Match Made in the Cloud
so0k
0
92
Integrate This!
so0k
0
130
Kubernetes clusters with Terraform / Terragrunt and Kops
so0k
1
290
Why we use Kubernetes at my company
so0k
0
54
Ingress at Swatmobile
so0k
0
120
Kubernetes Security Challenges
so0k
0
120
How Honestbee does CI/CD on Kubernetes - Voxxed Days Singapore 2018
so0k
0
210
Terraform at Honestbee
so0k
0
290
Other Decks in Programming
See All in Programming
Jakarta EE meets AI
ivargrimstad
0
240
Zoneless Testing
rainerhahnekamp
0
120
採用事例の少ないSvelteを選んだ理由と それを正解にするためにやっていること
oekazuma
2
1k
暇に任せてProxmoxコンソール 作ってみました
karugamo
1
720
複雑な仕様に立ち向かうアーキテクチャ
myohei
0
170
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
270
42 best practices for Symfony, a decade later
tucksaun
1
180
HTTP compression in PHP and Symfony apps
dunglas
2
1.7k
Итераторы в Go 1.23: зачем они нужны, как использовать, и насколько они быстрые?
lamodatech
0
740
創造的活動から切り拓く新たなキャリア 好きから始めてみる夜勤オペレーターからSREへの転身
yjszk
1
130
モバイルアプリにおける自動テストの導入戦略
ostk0069
0
110
LLM Supervised Fine-tuningの理論と実践
datanalyticslabo
4
1.1k
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
95
17k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
4 Signs Your Business is Dying
shpigford
181
21k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Agile that works and the tools we love
rasmusluckow
328
21k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
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