Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Creating a fast Kubernetes Development Workflow
Search
Bastian Hofmann
November 13, 2019
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Creating a fast Kubernetes Development Workflow
Bastian Hofmann
November 13, 2019
More Decks by Bastian Hofmann
See All by Bastian Hofmann
Monitoring in Kubernetes with Prometheus and Grafana
bastianhofmann
0
370
Highly available cross-region deployments with Kubernetes
bastianhofmann
1
180
From source to Kubernetes in 30 minutes
bastianhofmann
0
200
Introduction to Kubernetes
bastianhofmann
1
140
CI/CD with Kubernetes
bastianhofmann
0
250
Creating a fast Kubernetes Development Workflow
bastianhofmann
1
290
Deploying your first Micro-Service application to Kubernetes
bastianhofmann
2
220
Creating a fast Kubernetes Development Workflow
bastianhofmann
0
280
Dive-In-Workshop: Kubernetes
bastianhofmann
0
460
Other Decks in Programming
See All in Programming
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
240
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
680
App Intentsのビルドプロセスを支える技術
kntkymt
0
370
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
3
550
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
400
そのリトライ、死んだコネクションを使い回していませんか ── GoのHTTPクライアントとHTTP/2を実プロダクト障害から学び直す
myus4a
0
140
スマート反転とウェブアクセシビリティ
camiha
0
210
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
240
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
1.8k
FreeBSDでZabbixを動かす.pdf
kenkino
0
280
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
4
2.5k
新人はどこまで自力でやり、どこからAIに頼るべきか/エンジニア育成に向き合う_先輩たちの悩みと知見共有会
toppan_digital_dev
1
620
Featured
See All Featured
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
My Coaching Mixtape
mlcsv
0
310
Rails Girls Zürich Keynote
gr2m
96
14k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
240
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
250
For a Future-Friendly Web
brad_frost
183
10k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Navigating Weather and Climate Data
rabernat
0
520
Paper Plane (Part 1)
katiecoart
PRO
2
11k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
490
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
Transcript
@BastianHofmann Creating a fast Kubernetes Development Workflow Bastian Hofmann
None
Container orchestration platform
Deploy, run and scale your services in isolated containers
No vendor lock in
Runs on
Your laptop
Bare metal
Cloud Providers
And if you don't want to install and maintain Kubernetes
yourself
Managed Kubernetes
None
Standardized APIs
It works the same everywhere*
It works the same everywhere* *mostly
This talk is about how to use Kubernetes
Not only for production workloads
But in your development workflows
Goal: Development environment as close to production as possible
Kubernetes' standardized API makes this easier
Agenda
Deployment of a micro-service application
Some tools to help with local development of this application
on Kubernetes
Let's have a look at the sample application
None
OpenStack Cloud LoadBalancer NGINX Ingress Controller NGINX Ingress Controller NGINX
Ingress Controller web-application web-application MySQL Primary MySQL Secondary quote-svc quote-svc hello-svc hello-svc
external-dns to create DNS entries automatically
cert-manager to retrieve Let's Encrypt certificates automatically
Database is managed by an Operator
MySQL Operator MySQLCluster MySQL pods MySQL statefulset Kubernetes controller manager
Discovers Creates Creates Discovers Monitors and manages
If you are interested in the code and how to
set it up: https:/ /github.com/syseleven/ golem-workshop
Demo
Writing this YAML files is tedious
YAML files are tied to a specific version and a
specific environment
Production
Staging
Development
Per Development team
Per branch
Per developer
We need to maintain multiple, very similar YAML files with
slightly different versions and configuration
"Templating"
Great tools because of standardized Kubernetes API
Helm
None
Allows to install applications
So called "charts"
$ helm install stable/wordpress \ --name my-blog \ --namespace blog
Charts can depend on other charts
Multiple deployments of one chart possible
Different release names
Different namespaces
Configuration with values
None
$ helm install stable/wordpress \ --name my-blog \ --namespace blog
\ -f my-config-values.yaml
Demo
Writing your own charts is fairly easy
Scaffolding to get started
$ helm create quote-svc
Helm lint
Helm kubeval
Helm test
Demo
Alternatives: Kustomize
This works now great for production or staging or CI
Still, for development:
Make a code change
Build docker image
Push docker image
Run helm install/upgrade with new image version
Can this be quicker?
Run everything locally
docker-compose
Duplication of the definition of how to run a container
Inconsistencies
If you have a lot of services, you have to
run a lot locally
Some services locally, some remote
Service Discovery
Not every service is exposed to the Internet
Shared resources with other developers?
Other options?
Tilt
$ tilt up
Watches for code changes
Rebuilds docker image
Deploys to Kubernetes
Sets up port-forwarding
Can sync changed files directly into a running container
Demo
Alternatives: Skaffold Garden
Debugging containers
Most containers do not have all the debugging tools included
Kubectl debug
Debugging network traffic between containers
Kubectl sniff
Demo
Another approach
None
Creates a two-way proxy between the Kubernetes cluster and you
$ telepresence T: Starting proxy with method 'vpn-tcp'... @fhgbvx65xg|bash-3.2$ curl
http://quote-svc/quote | jq '.' [ { "ID": 503, "title": "stefan sagmeister", "content": "<p>...</p>\n", "link": "https://quotesondesign.com/stefan- sagmeister-2/" } ]
Swap a running deployment in the cluster with a local
process
... or a locally running docker container
$ telepresence --swap-deployment quote-svc --namespace dev-flow-demo --expose 3000 --run npm
run debug T: Starting proxy with method 'vpn-tcp',... T: Forwarding remote port 3000 to local port 3000.... >
[email protected]
debug /Users/bhofmann/forge_test/quote- svc > nodemon --inspect quote-svc.js [nodemon] watching: *.* [nodemon] starting `node --inspect quote-svc.js` Debugger listening on ws://127.0.0.1:9229/83aa27ac- d879-4b50-a228-440354cca791 quote svc listening on port 3000!
Demo
Summary
Powerful
Great tooling because of common APIs
Especially great if you have multiple services and don't want
to run everything locally
Test it 30 days For free Visit us at our
booth
[email protected]
https:/ /twitter.com/BastianHofmann http:/ /speakerdeck.com/u/bastianhofmann https:/ /github.com/syseleven/golem-workshop