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
Continuous Delivery on the Kuberrnetes Platform
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Nicolas Byl
February 16, 2017
Technology
320
0
Share
Continuous Delivery on the Kuberrnetes Platform
Nicolas Byl
February 16, 2017
More Decks by Nicolas Byl
See All by Nicolas Byl
Platform Engineering ❤️ Developer Experience
nbyl
0
50
Die Flucht aus der Prototypen-Hölle
nbyl
0
55
Lean Prototyping for Industrial-IoT Projects
nbyl
0
76
DevSecOps - Vom Unikum zur gut geölten Maschine
nbyl
0
120
Securing your software supply chain
nbyl
0
390
Keeping-Up-WithUpstream.pdf
nbyl
0
190
Dr. Kube und der Helm - Anatomie einer CD-Pipeline
nbyl
0
150
Securing the "other" supply chain
nbyl
0
310
Kubernetes - Auf die Cluster, Fertig, Los!
nbyl
0
210
Other Decks in Technology
See All in Technology
AWS運用におけるAI Agent活用術 / JAWS-UG 神戸 #11 LT大会
genda
1
300
【関西製造業祭り2026春】現場を変える技術はここまで来た〜世界最大の製造業見本市から持って帰ってきたもの〜
tanakaseiya
0
180
マンション備え付けのネットワークとLTE回線を組み合わせた ネットワークの安定化の考案
harutiro
1
140
Gaussian Splattingの実用化 - 映像制作への展開
gpuunite_official
0
200
M&Aで増え続けるプロダクトに少数QAはどう立ち向かうか─GENDAが挑む、全員で取り組む品質標準化戦略 / GENDA Tech Talk #4
genda
0
150
CARTA HOLDINGS エンジニア向け 採用ピッチ資料 / CARTA-GUIDE-for-Engineers
carta_engineering
0
47k
GCASアップデート(202603-202605)
techniczna
0
220
データモデリング通り #5オンライン勉強会: AIに『ビジネスの文脈』を教え込むデータモデリング
datayokocho
0
290
R&D 祭 2024 UE5で絵コンテ・作画の制作支援ツールをつくる話
olmdrd
PRO
0
190
Every Conversation Counts
kawaguti
PRO
0
260
パーソルキャリア IT/テクノロジー職向け 会社紹介資料|Company Introduction Deck
techtekt
PRO
0
220
2026-05-14 要件定義からソース管理まで!IBM Bob基礎ハンズオン
yutanonaka
0
170
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.2k
SEO for Brand Visibility & Recognition
aleyda
0
4.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
My Coaching Mixtape
mlcsv
0
130
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
1.4k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
300
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
290
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
360
The Mindset for Success: Future Career Progression
greggifford
PRO
0
330
Navigating Team Friction
lara
192
16k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.1k
Transcript
1 CONTINUOUS DELIVERY ON THE KUBERNETES PLATFORM microXchg 2017 Nicolas
Byl, codecentric AG
2 . 1 GETTING STARTED
2 . 2 Mission Statement You can follow the pipeline
on your device. Install prequisites
2 . 3 Prequisites https://github.com/nbyl/cd-workshop-demo
2 . 4 Organisational Stuff Ask questions anytime! Breaks?
None
2 . 5 3 . 1 CONTINUOUS DELIVERY
3 . 2 Key Concepts The software is releasable at
at any time The whole process from source to production is automated Decouple technical rollout from feature rollout
3 . 3 Continuous Delivery vs. Continuous Deployment Continuous Delivery:
Software is releasable at any time Continuous Deployment: Software is released on every change
4 . 1 DOCKER
None
4 . 2
4 . 3
4 . 4
4 . 5
4 . 6 4 . 7 Dockerfile FROM java:8 MAINTAINER
Marcel Birkner <
[email protected]
> ADD target/edmp-sample-app*.jar app.jar RUN bash -c 'touch /app.jar' ENTRYPOINT ["java","-jar","/app.jar"]}
None
4 . 8 5 . 1 KUBERNETES
"Kubernetes is an open-source platform for automating deployment, scaling, and
operations of application containers across clusters of hosts, providing container- centric infrastructure."
5 . 2 portable: public, private, hybrid, multi-cloud extensible: modular,
pluggable, hookable, composable self-healing: auto-placement, auto-restart, auto- replication, auto-scaling
5 . 3
5 . 4 5 . 5 Pods & Co.
5 . 6 Pods
5 . 7 Replication Controller P P P
5 . 8 Deployment combination of pod & replication controller
edited as a unit
apiVersion: extensions/v1beta1 kind: Deployment metadata: name: frontend spec: replicas: 3
template: metadata: labels: app: guestbook tier: frontend spec: containers: - name: php-redis image: gcr.io/google-samples/gb-frontend:v4 resources: requests:
5 . 9 5 . 10 Services
5 . 11 endpoint for a set of pods an
external endpoint can be resolved using DNS environment variables
None
5 . 12 6 . 1 SHOWCASE PROJECT
6 . 2 confy microservice to manage conference talks and
speakers technology: REST-API UI using Gradle Spring Boot (Web, JPA) ng-admin https://github.com/nbyl/confy
6 . 3 Target Platform kubernetes PostgreSQL
6 . 4 Testing Requirements automatic testing using the target
database user acceptance test before exposing new versions
6 . 5 Build Pipeline build publish docker container integration
test user acceptance test production
6 . 6 Assumptions any manual interaction will be done
in reasonable period our cluster will (for now) contain of only one host
7 . 1 LAB 1: SETUP
7 . 2 Recently on this Program... Have you installed
the prerequisites?
7 . 3 Create a cluster minikube start --memory 4096
kubectl apply -f minikube/storageclass.yml
7 . 4 Install Helm helm init
7 . 5 Install Jenkins helm install stable/jenkins --set Agent.Memory=1024Mi
--name=cd minikube service cd-jenkins
8 . 1 LAB 2: CONTINUOUS INTEGRATION
8 . 2 Objectives build an artefact of the software
run all unit tests and in-tree integration tests
8 . 3 Jenkins Kubernetes Plugin creates a new pod
for every job use the pod as a temporary build slave
8 . 4 Let's Go create a new pipeline job
use as SCM source for your Jenkinsfile https://github.com/nbyl/cd-workshop-demo.git
8 . 5 caveat build cache is gone after every
build
None
8 . 6 8 . 7 persistent volumes create manually
use storageclass with auto- provisioner
kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: name: generic provisioner: kubernetes.io/host-path
8 . 8 kind: PersistentVolumeClaim apiVersion: v1 metadata: name: gradle-cache
annotations: volume.beta.kubernetes.io/storage-class: "generic" spec: accessModes: - ReadWriteOnce resources: requests: storage: 8Gi
8 . 9 9 . 1 LAB 3: BUILDING A
DOCKER CONTAINER
9 . 2 Objectives build a docker container containing the
application make the container available for deployment
9 . 3 Build Pod Revisited using build pods is
scalable and reproducible the host docker daemon is not reachable
9 . 4 Docker-in-Docker Builds mount the docker sockets inside
the container /run/docker.sock /var/run/docker.sock image will be built in host docker Warning: possible security problem
10 . 1 LAB 4: INTEGRATION TESTING
10 . 2 Objectives create a deployment description for the
application deployment the application in a configuration analog to production run an integration test verifying the basic functionality
10 . 3 Helm Chart helm create helm/confy [edit] helm
upgrade --install dev-confy helm-confy
10 . 4 Configure the Application env: - name: SPRING_DATASOURCE_URL
value: {{ .Values.database.url }} - name: SPRING_DATASOURCE_DRIVER value: {{ .Values.database.driver }} - name: SPRING_DATASOURCE_USERNAME value: {{ .Values.database.username }} - name: SPRING_DATASOURCE_PASSWORD value: {{ .Values.database.password }}
10 . 5 Simulate roduction use the same database server
as in production treat system as blackbox
11 . 1 LAB 5: USER ACCEPTANCE TESTING
11 . 2 Objectives deploy the application accessible for users
allow manual testing continue to production after manual confirmation
11 . 3 Ingress
11 . 4 Ingress Controller Read Ingress state route accordingly
Implementations: NGINX traefik F5 ...
12 . 1 LAB 5: PRODUCTION DEPLOYMENT
12 . 2 Objectives make application available for end users
(nothing new to learn)
13 . 1 WRAP UP
13 . 2 Links https://kubernetes.io https://www.cncf.io/ https://www.openshift.com/promotions/kubernetes.html https://fabric8.io https://github.com/ramitsurana/awesome-kubernetes
13 . 3 The End @NicolasByl Copyright 2017