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
530
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
120
Integrate This!
so0k
0
140
Kubernetes clusters with Terraform / Terragrunt and Kops
so0k
1
300
Why we use Kubernetes at my company
so0k
0
57
Ingress at Swatmobile
so0k
0
120
Kubernetes Security Challenges
so0k
0
130
How Honestbee does CI/CD on Kubernetes - Voxxed Days Singapore 2018
so0k
0
210
Terraform at Honestbee
so0k
0
310
Other Decks in Programming
See All in Programming
『品質』という言葉が嫌いな理由
korimu
0
160
JavaScriptツール群「UnJS」を5分で一気に駆け巡る!
k1tikurisu
9
1.8k
“あなた” の開発を支援する AI エージェント Bedrock Engineer / introducing-bedrock-engineer
gawa
11
1.9k
Compose でデザインと実装の差異を減らすための取り組み
oidy
1
300
[JAWS-UG横浜 #79] re:Invent 2024 の DB アップデートは Multi-Region!
maroon1st
1
140
TokyoR116_BeginnersSession1_環境構築
kotatyamtema
0
110
sappoRo.R #12 初心者セッション
kosugitti
0
250
密集、ドキュメントのコロケーション with AWS Lambda
satoshi256kbyte
0
190
負債になりにくいCSSをデザイナとつくるには?
fsubal
9
2.4k
[Fin-JAWS 第38回 ~re:Invent 2024 金融re:Cap~]FaultInjectionServiceアップデート@pre:Invent2024
shintaro_fukatsu
0
410
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
190
もう僕は OpenAPI を書きたくない
sgash708
4
1.4k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
193
16k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Into the Great Unknown - MozCon
thekraken
35
1.6k
KATA
mclloyd
29
14k
Become a Pro
speakerdeck
PRO
26
5.1k
RailsConf 2023
tenderlove
29
1k
Being A Developer After 40
akosma
89
590k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2.1k
Code Reviewing Like a Champion
maltzj
521
39k
Large-scale JavaScript Application Architecture
addyosmani
511
110k
For a Future-Friendly Web
brad_frost
176
9.5k
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