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
570
1
Share
Kubernetes & Helm Tech Talk
Tech Talk about Kubernetes and Helm
vincentdesmet
March 09, 2017
More Decks by vincentdesmet
See All by vincentdesmet
KubeDay Singapore 2023 - recap
so0k
0
140
CDK and Kubernetes: A Match Made in the Cloud
so0k
0
250
Integrate This!
so0k
0
210
Kubernetes clusters with Terraform / Terragrunt and Kops
so0k
1
360
Why we use Kubernetes at my company
so0k
0
93
Ingress at Swatmobile
so0k
0
170
Kubernetes Security Challenges
so0k
0
200
How Honestbee does CI/CD on Kubernetes - Voxxed Days Singapore 2018
so0k
0
230
Terraform at Honestbee
so0k
0
360
Other Decks in Programming
See All in Programming
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
190
飯MCP
yusukebe
0
490
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
220
夢の無限スパゲッティ製造機 -実装篇- #phpstudy
o0h
PRO
0
200
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
240
KagglerがMixSeekを触ってみた
morim
0
370
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
460
Swift Concurrency Type System
inamiy
0
440
Go_College_最終発表資料__外部公開用_.pdf
xe_pc23
0
180
レガシーPHP転生 〜父がドメインエキスパートだったのでDDD+Claude Codeでチート開発します〜
panda_program
0
660
セグメントとターゲットを意識するプロポーザルの書き方 〜採択の鍵は、誰に刺すかを見極めるマーケティング戦略にある〜
m3m0r7
PRO
0
450
まかせられるPM・まかせられないPM / DevTech GUILD Meetup
yusukemukoyama
0
120
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
140
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
270
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
BBQ
matthewcrist
89
10k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
340
Docker and Python
trallard
47
3.8k
How Software Deployment tools have changed in the past 20 years
geshan
0
33k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
510
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
360
How to build a perfect <img>
jonoalderson
1
5.4k
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