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
470
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
41
CDK and Kubernetes: A Match Made in the Cloud
so0k
0
37
Integrate This!
so0k
0
76
Kubernetes clusters with Terraform / Terragrunt and Kops
so0k
1
260
Why we use Kubernetes at my company
so0k
0
44
Ingress at Swatmobile
so0k
0
110
Kubernetes Security Challenges
so0k
0
100
How Honestbee does CI/CD on Kubernetes - Voxxed Days Singapore 2018
so0k
0
200
Terraform at Honestbee
so0k
0
260
Other Decks in Programming
See All in Programming
Hanami and htmx
bkuhlmann
0
190
ゆるい個人開発のススメ
kuroppe1819
10
930
ログラスを支える設計標準について / loglass-design-standards
urmot
10
2.1k
元気予報
suu_mire0726
0
850
FigmaとPHPで作る1ミリたりとも表示崩れしない最強の帳票印刷ソリューション
ttskch
39
17k
try! Swift Tokyo 初参加報告LT
hinakko2
0
190
1BRC--Nerd Sniping the Java Community
gunnarmorling
0
300
try!Swift Tokyo 2024 参加報告 LT
akidon0000
1
190
Introduction for Open Source Swift Workshop
giginet
PRO
0
1.1k
本格ローグライク制作にEbitengineを選んでみた
nagainaganawa
0
290
脱・初心者!脱・マネコン!AWS CDKを使ってみませんか!?
har1101
0
300
Semantic search with Django and pgvector
pauloxnet
0
230
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
92
4.8k
The Power of CSS Pseudo Elements
geoffreycrofte
58
5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
13
1.5k
The Art of Programming - Codeland 2020
erikaheidi
41
12k
Atom: Resistance is Futile
akmur
258
25k
Producing Creativity
orderedlist
PRO
336
39k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
5
1.5k
How to train your dragon (web standard)
notwaldorf
71
5.1k
How to Ace a Technical Interview
jacobian
272
22k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
No one is an island. Learnings from fostering a developers community.
thoeni
14
2.1k
Mobile First: as difficult as doing things right
swwweet
216
8.6k
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