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
Platforms Demystified: Cloud Foundry, Kubernete...
Search
Matthias Haeussler
October 10, 2019
Technology
0
36
Platforms Demystified: Cloud Foundry, Kubernetes, Eirini, and Knative
2019 - Spring One Platform, Austin, USA
Matthias Haeussler
October 10, 2019
Tweet
Share
More Decks by Matthias Haeussler
See All by Matthias Haeussler
Cloud Technologies & Services - Past, Present & Future
maeddes
0
40
Cloud and Container-based Integrated Development Environments
maeddes
0
220
Distributed Systems patterns - Spring Cloud, Service Mesh & eBPF
maeddes
3
1.1k
A guide to observability for Java apps in Kubernetes
maeddes
7
1.4k
Options Galore: From Source Code to Container Image
maeddes
1
500
Seacon 2020 - Cloud Plattformen entmystifiziert
maeddes
0
36
Cloud-Plattformen entmystifiziert: Was können Docker, Kubernetes, Cloud Foundry & Knative?
maeddes
2
160
Kubernetes and/or Cloud Foundry - How to run your Spring Boot Microservi
maeddes
0
70
Cloud Foundry Application Runtime and Kubernetes
maeddes
0
74
Other Decks in Technology
See All in Technology
Taming you application's environments
salaboy
0
180
【Startup CTO of the Year 2024 / Audience Award】アセンド取締役CTO 丹羽健
niwatakeru
0
990
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
フルカイテン株式会社 採用資料
fullkaiten
0
40k
Engineer Career Talk
lycorp_recruit_jp
0
160
なぜ今 AI Agent なのか _近藤憲児
kenjikondobai
4
1.4k
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
rootlessコンテナのすゝめ - 研究室サーバーでもできる安全なコンテナ管理
kitsuya0828
3
380
透過型SMTPプロキシによる送信メールの可観測性向上: Update Edition / Improved observability of outgoing emails with transparent smtp proxy: Update edition
linyows
2
210
OCI Network Firewall 概要
oracle4engineer
PRO
0
4.1k
Lambdaと地方とコミュニティ
miu_crescent
2
370
Lambda10周年!Lambdaは何をもたらしたか
smt7174
2
110
Featured
See All Featured
Navigating Team Friction
lara
183
14k
Docker and Python
trallard
40
3.1k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
Designing for Performance
lara
604
68k
Designing the Hi-DPI Web
ddemaree
280
34k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
The Cult of Friendly URLs
andyhume
78
6k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
109
49k
RailsConf 2023
tenderlove
29
900
Speed Design
sergeychernyshev
25
610
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Transcript
Platforms Demystified: Cloud Foundry, Kubernetes, Eirini, and Knative October 7–10,
2019 Austin Convention Center Matthias Haeussler, Novatec Consulting GmbH & Dr. Nic Williams, Stark & Wayne LLC
Hype & Reality
Hype & Reality
Apps Services Push Start/ Stop Scale Delete Routes Create/Delete Map/Unmap
Create/Delete Bind/Unbind Minimal Concepts
Deployment s Services NetworkPolici es LoadBalancer NodePort ReplicaSet StatefulSet Bind/Unbind
Ingress Pods Container IngressControllers HPA ConfigMaps Secrets apply YAML YAML YAML Minimal Concepts Docker Image
None
Speakers Dr. Nic Williams, CEO, Stark & Wayne @drnic Matthias
Haeussler, Principal Advocate, Novatec @maeddes
LXC Container/Platform history 2018 2017 2014 2013 2011 2008 1979
…. … … 2012 chroot Virtualization and isolation in subsystems. Examples: FreeBSD Jails, Linux VServer cgroups (2007) namespaces (2002) garden eirini warden diego istio knative kubernetes cf push
App Dev DB Systems Admin PivNet Platform Admin Secrets/Config Source
Code Build Artifact Buildpacks / Images Containers Git CI/CD
None
Agenda Extending with Databases Deploy Building from Source Running a
Platform How to choose? ?
Agenda Extending with Databases Deploy Building from Source Running a
Platform How to choose? ?
cf push $ cf push sample-app $ cf scale sample-app-java
-i 4 $ cf ssh sample-app-java
$ cf push sample-app $ kubectl get pods -n scf-eirini
NAME READY STATUS sample-app-dev-bb89da1431-0 1/1 Running $ cf scale sample-app-java -i 4 $ kubectl get pods -n scf-eirini NAME READY STATUS sample-app-dev-bb89da1431-0 1/1 Running sample-app-dev-bb89da1431-1 0/1 ContainerCreating sample-app-dev-bb89da1431-2 0/1 ContainerCreating sample-app-dev-bb89da1431-3 1/1 Running $ kubectl exec -ti -n scf-eirini \ sample-app-dev-bb89da1431-0 bash cf push eirini
$ cf scale sample-app-java -i 10 cf scale eirini
$ cf scale sample-app-java -i 10 cf scale eirini
$ kubectl get pods -n scf NAME READY STATUS cf-operator-894886ff9-5s4zx
1/1 Running scf-adapter-v1-0 5/5 Running scf-api-v1-0 17/17 Running scf-bits-v1-0 7/7 Running scf-cc-worker-v1-0 5/5 Running scf-database-v1-0 5/5 Running scf-diego-api-v1-0 6/6 Running scf-doppler-v1-0 11/11 Running scf-eirini-v1-0 6/6 Running scf-log-api-v1-0 8/8 Running scf-nats-v1-0 5/5 Running scf-router-v1-0 6/6 Running scf-scheduler-v1-0 10/10 Running scf-singleton-blobstore-v1-0 7/7 Running scf-uaa-v1-0 7/7 Running update-all-cf-buildpacks-8d9lb 0/1 Completed cf push quarks
kn service create $ kn service create \ sample-app-nodejs -n
test-app \ --image starkandwayne/sample-app-nodejs $ bootstrap-system-knative kwt test-app $ curl http://sample-app-nodejs.test-app.example.com Hello World! $ kubectl get pods -n test-app NAME READY STATUS kwt-net 1/1 Running sample-app-nodejs-1-deployment-nbg2j 2/2 Running … wait… $ kubectl get pods -n test-app NAME READY STATUS kwt-net 1/1 Running sample-app-nodejs-1-deployment-nbg2j 2/2 Terminating
istio knative $ kubectl get pods -n istio-system NAME READY
STATUS cluster-local-gateway-5c566fd544-86wfw 1/1 Running cluster-local-gateway-5c566fd544-tx2p7 1/1 Running istio-ingressgateway-6c6cbf558b-kh6l8 2/2 Running istio-ingressgateway-6c6cbf558b-r6vpb 2/2 Running istio-pilot-7b6d979db8-vtmj9 1/1 Running $ kubectl get pods -n knative-serving NAME READY STATUS activator-68d9f95cd-9z4nz 1/1 Running autoscaler-5655c9fcfd-6x4jp 1/1 Running autoscaler-hpa-8668fc6f68-9vsfr 1/1 Running controller-5b77c5596c-qckcm 1/1 Running networking-istio-6d7d44d879-gz6j6 1/1 Running webhook-75b4fc9999-gwrp9 1/1 Running
kubectl apply !!!!!!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! # kubectl apply -f deployment.yaml !!!-!!!$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1
# apiVersion: apps/v1 2 # kind: Deployment 3 # metadata: 4 # name: sample-app-nodejs 5 # spec: 6 # selector: 7 # matchLabels: 8 # app: sample-app-nodejs 9 # replicas: 3 10 # template: 11 # metadata: 12 # labels: 13 # app: sample-app-nodejs 14 # spec: 15 # containers: 16 # - name: sample-app-nodejs 17 # image: index.docker.io/starkandwayne/sample-app-nodejs:latest 18 # --- 19 # apiVersion: v1 20 # kind: Service 21 # metadata: 22 # name: sample-app-nodejs 23 # spec: 24 # selector: 25 # app: sample-app-nodejs 26 # type: LoadBalancer 27 # ports: 28 # - protocol: TCP 29 # port: 80 30 # targetPort: 8080 !!!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Agenda Extending with Databases Deploy Building from Source Running a
Platform How to choose? ?
pack build $ pack build starkandwayne/sample-app-java ===> DETECTING [detector] skip:
[email protected]
[detector] pass:
[email protected]
[detector] pass:
[email protected]
[detector] pass:
[email protected]
[detector] pass:
[email protected]
[detector] pass:
[email protected]
[detector] skip:
[email protected]
[detector] skip:
[email protected]
[detector] Resolving plan... (try #1) [detector] Success! (7) … [builder] Cloud Foundry OpenJDK Buildpack 1.0.0-RC02 [builder] OpenJDK JDK 11.0.4: Contributing to layer $ docker run -ti -p 8080:8080 \ starkandwayne/sample-app-java
@d kpack image kP pack build starkandwayne/sample-app-nodejs --builder cloudfoundry/cnb:cflinufs3 \
--path sample-app-nodejs/ \ --publish Similar to:
Agenda Extending with Databases Deploy Building from Source Running a
Platform How to choose? ?
@d cf bind-service $ cf create-service smtp shared outbound-email $
cf bind-service my-node-app outbound-email $ cf env my-node-app "VCAP_SERVICES": { "smtp": [ { "binding_name": null, "credentials": { "host": "mail.authsmtp.com", "password": "special-secret", "port": 2525, "username": "ac123456" }, "instance_name": "outbound-email", "label": "smtp", "name": "outbound-email", "plan": "shared",
$ kn service update \ sample-app-nodejs -n test-app \ --image
starkandwayne/sample-app-nodejs:latest $ curl http://sample-app-nodejs.test-app.example.com Hello S1P! $ kn service list -n test-app NAME GENERATION CONDITIONS READY sample-app-nodejs 2 3 OK / 3 True $ kubectl get pods -n test-app NAME READY STATUS kwt-net 1/1 Running sample-app-nodejs-1-deployment-nbg2j 2/2 Terminating sample-app-nodejs-2-deployment-c6mrm 2/2 Running kn service update
knative secrets kubectl create secret generic smtp -n test-app \
--from-literal=SMTP_USER=devuser \ --from-literal=SMTP_PASSWORD='S!B\*d$zDsb' \ --from-literal=SMTP_HOST=10.11.12.14 kn service update show-env \ --image lhitchon/show-env:latest \ --namespace test-app \ --env-from secret:smtp
Agenda Extending with Databases Deploy Building from Source Running a
Platform How to choose? ?
Not Invented Here Platform Just because you didn't buy it
doesn't mean its not a Platform If you start with Kubernetes you will build a bespoke Platform No one else will know how your K8s environment should work Enjoy someone else's standardised Platform
Try at home up --google --cf github.com/starkandwayne/ bootstrap-kubernetes-demos up --google
up --google --knative up --google --kpack
Buy for work $ Pivotal Function Service Pivotal Container Service
Pivotal Application Service for Kubernetes Pivotal Build Service
We help build and run your platforms We help build
and run your applications How to choose?