SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
Zero downtime Java deployments
with Docker & Kubernetes
@pbakker @arjanschaaf
Why care about containers
Don’t worry about environment setup
Easy to replicate to dev/test/prod
More compact than VMs
Why care about Kubernetes
Docker is about containers on a single host
How to deploy on a cluster?
What about failover of nodes?
How to network between nodes?
Automated, production
ready Kubernetes cluster
in
steps8
Step
Understanding Kubernetes
0
Terminology, and concepts to build upon
Nodes, Pods, Controllers
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
Docker
container
Docker
container
Docker
container
Replication
Controller
Master
schedules
schedules
Deployment 101
Push your Docker image
Create a new replication controller JSON ïŹle
kubectl	create	-f	mycontroller.json	
Replication Controller creates Pods
mycontroller.json	"spec":{	
						"replicas":3,	
						"selector":{	
									"name":"frontend"	
						},	
						"template":{	
									"metadata":{	
												"labels":{	
															"name":"frontend"	
												}	
									},	
									"spec":{	
												"containers":[	
															{	
																		"name":"php-redis",	
																		"image":"kubernetes/example-guestbook-php-redis:v2",	
																		"ports":[	
																					{	
																								"containerPort":80	
																					}	
																		]	
															}	
												]	
									}	
						}
Scaling
kubectl	scale																																	
—replicas=10	myreplication-controller
Updating my app
Create a new Replication Controller JSON ïŹle
kubectl create -f my-new-rc.json
Scale down and delete old RC
Step
Automated deployment
(simplistic)
1
This kubectl stuff doesn’t really feel like automation

The simplest Automated
deployment
Don’t use kubectl, use the API!
Build server creates Replication Controller using REST
Build server destroys old cluster using REST
Docker
container
Docker
container
Docker
container
Docker
container
Node
Docker
registry
Build
Server
Docker
container
Docker
container
Docker
container
Docker
container
Node
push
Create
RCDocker
container
Docker
container
Docker
container
Replication
Controller
Master
schedules
schedules
API
Curl example
curl	-X	POST			
http://k8-master:8080/api/v1/namespaces/default/replicationcontrollers	-d	'{	
#Pod	definition	
}’
What about downtime?
Not quite there yet
Step
Load balancing
2
Our containers are running, but how do we access them!?
Pods come and go
Pods have dynamic IP addresses
First try - Kubernetes Services
A service is a proxy to your Pods
Fixed IP
P
O
D
S
E‹
R‹
V‹
I‹
C
E
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
MyService
HTTP
Virtual IP
Virtual IP
Fixed IP
What about SSL ofïŹ‚oading?

 better load balancing?

 redirects, rewrites, etc?

 and that â€œïŹxed” IP can’t be reached!?
Services - Not quite right
Services are for communication within the k8 network
(inter Pod communication)
Services - A Hammer and
screws

Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
HAProxy
HTTPS
Virtual IP
Virtual IP
Fixed IP
Custom load balancer
confd
etcd
HTTP
HTTP
Proxy Registrator
Kubernetes API
confd etcd
Proxy
Registrator
Watch
update backend
conïŹgurations
watch changes
HAProxy
update conïŹg ïŹle
Choosing a load balancer
Vulcand uses etcd for all its conïŹg
Can use Nginx / HAProxy with templating confd
So you’re telling me

—link doesn’t work!?
And now you’re telling me

—I can’t see my Pods!?
Step
Software DeïŹned Network
3
Each Pod gets its own IP
Access Pods from outside k8 on the ïŹ‚annel network
Docker
container
Docker
container
Docker
container
Docker
container
Node
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
HAProxy
HTTPS
Virtual IP
Virtual IP
Fixed IP
Pods
HTTP
HTTP
Kubernetes networkpublic addressable
network segment
Docker
container
Docker
container
Docker
container
Docker
container
Node
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
HAProxy
HTTPS
Virtual IP
Virtual IP
Fixed IP
Pods
HTTP
HTTP
Flannel networkpublic
addressable
network
segment
Flannel: easy to setup & fast (on CoreOS)
Weave: userspace implementation is slow, loads of features
Project Calico: promising integration with Kubernetes
Docker libnetwork: batteries included but swappable
SDN - loads of options
Step
Blue / Green deployment
4
Auto deploy is great, but downtime not so much
Step 4 - Blue / Green
Scale up new cluster
Wait until healthy
Switch backend in Load Balancer
Dispose old cluster
How do we know a Pod is
healthy?
Its RUNNING status is not sufïŹcient

Is the app fully started?
Introduce App level health
checks
Docker
container
Docker
container
Docker
container
Docker
container
Node
Docker
container
Docker
container
Docker
container
Docker
container
Pods
Node
Deployer
GET /health
GET /health
Pods
Deploy Server
Running a Deployer
Blue/Green deployment requires lots of coordination
Our build server can’t access the Pods

 how do we health check?
Kubernets
API etcd
Deployer
Build
Server
Start
deployment
Kubernets
API
Kubernets
API
Kubernets
APIPods
GET /health Create RC
Switch Load Balancer Backend
Kubernets
API
HAProxy
etcd
Deployer
Build
Server
Start
deployment
Kubernets
API
Kubernets
API
Kubernets
APIPods
GET /health Create RC
Proxy
Registrator
Watch
Create
backends
Read conïŹg
confd
Watch
Switch Load Balancer Backend
Deployment descriptor
{
"useHealthCheck": true,
"newVersion": "${bamboo.deploy.version}",
"appName": "todo",
"replicas": 2,
"frontend": "rti-todo.amdatu.com",
“podspec": {

.
}
}
"podspec": {
"containers": [{
"image": “amdatu/mycontainer",
"name": "todo",
"ports": [{
"containerPort": 8080
}],
"env": [
{
"name": "version",
"value": "${bamboo.deploy.version}"
}
]}]
}
Deployment demo
Demo
Step
Canary deployment
5
Canary deployments
Different strategy for the Deployer
Add Replication Controller
But don’t change the running cluster
K8 NodeK8 NodeK8 NodeK8 NodeProd pod
Canary
Main
Replication
Controller
K8 NodeK8 NodeK8 NodeK8 NodeCanary pod
Canary
Replication
Controller
HAProxy
Step
Persistent data
6
How to deploy Mongo/MySQL/ElasticSearch in Kubernetes?
You don’t
Kubernetes is great for

Stateless containers
Running lots of containers together
Moving containers around
Datastores scaling
mechanics
Reactive scaling makes less sense
Cluster should be tuned
Scaling is expensive
Infra server(s)
K8 Master K8 NodeK8 NodeK8 NodeK8 NodeK8 NodeHAProxy
Deployer
Mongo
Cluster
ElasticSearch
Cluster


Cluster
Cluster topology
Step
Logging
7
kubectl logs mypod?
Logging
Centralised application logging is key in a dynamic
environment
Assume you can’t access a pod
ElasticSearch / LogStash / Kibana or Graylog are very
useful for this
Logging
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
Docker
container
LogStash
ElasticSearch
Graylog
Logging example
OSGi
app
OSGi
LogService
SLF4J
Kafka Graylog
Graylog
Dashboard
Developer
Step
ConïŹguration
8
Passing conïŹg to containers
Use environment variables
dbName=todo-app	
host=${mongo}
myconïŹg.cfg
"podspec":	{	
							"env":	[	
									{	
										"name":	"mongo",	
										"value":	"10.100.2.4"	
										},
Deployment descriptor
Approach 1
Use etcd
etcd=[etcdnode]:2379
myconïŹg.cfg
/apps/config/demo-app
etcd
Approach 2
[	
	{	
		"name":	"mongo",	
		"value":	"10.100.2.4"	
	}	
]
What to learn from all this?
Docker and Kubernetes are awesome
They are building blocks, not solutions
Use the API!
And if you don’t want to do
all this yourself
.
Fully managed Kubernetes based clusters
Logging and Monitoring
Automated deployments
Thank you!
Blog: http://paulbakker.io | https://arjanschaaf.github.io
Twitter: @pbakker | @arjanschaaf
Mail: paul.bakker@luminis.eu | arjan.schaaf@luminis.eu

Weitere Àhnliche Inhalte

Was ist angesagt?

WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
Brian Grant
 

Was ist angesagt? (20)

Social Connections 14 - Kubernetes Basics for Connections Admins
Social Connections 14 - Kubernetes Basics for Connections AdminsSocial Connections 14 - Kubernetes Basics for Connections Admins
Social Connections 14 - Kubernetes Basics for Connections Admins
 
Beyond Ingresses - Better Traffic Management in Kubernetes
Beyond Ingresses - Better Traffic Management in KubernetesBeyond Ingresses - Better Traffic Management in Kubernetes
Beyond Ingresses - Better Traffic Management in Kubernetes
 
Kubernetes architecture
Kubernetes architectureKubernetes architecture
Kubernetes architecture
 
Kubernetes extensibility
Kubernetes extensibilityKubernetes extensibility
Kubernetes extensibility
 
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
2016 - Continuously Delivering Microservices in Kubernetes using Jenkins
 
Kubernetes 101 and Fun
Kubernetes 101 and FunKubernetes 101 and Fun
Kubernetes 101 and Fun
 
Kubernetes - Starting with 1.2
Kubernetes  - Starting with 1.2Kubernetes  - Starting with 1.2
Kubernetes - Starting with 1.2
 
Kubernetes automation in production
Kubernetes automation in productionKubernetes automation in production
Kubernetes automation in production
 
Orchestrating Microservices with Kubernetes
Orchestrating Microservices with Kubernetes Orchestrating Microservices with Kubernetes
Orchestrating Microservices with Kubernetes
 
Building Clustered Applications with Kubernetes and Docker
Building Clustered Applications with Kubernetes and DockerBuilding Clustered Applications with Kubernetes and Docker
Building Clustered Applications with Kubernetes and Docker
 
Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014
Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014
Containers, Clusters and Kubernetes - Brendan Burns - Defrag 2014
 
GlueCon kubernetes & container engine
GlueCon kubernetes & container engineGlueCon kubernetes & container engine
GlueCon kubernetes & container engine
 
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
WSO2Con US 2015 Kubernetes: a platform for automating deployment, scaling, an...
 
Orchestration tool roundup kubernetes vs. docker vs. heat vs. terra form vs...
Orchestration tool roundup   kubernetes vs. docker vs. heat vs. terra form vs...Orchestration tool roundup   kubernetes vs. docker vs. heat vs. terra form vs...
Orchestration tool roundup kubernetes vs. docker vs. heat vs. terra form vs...
 
Kubernetes 101 Workshop
Kubernetes 101 WorkshopKubernetes 101 Workshop
Kubernetes 101 Workshop
 
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an EnterpriseKubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
KubeCon EU 2016: ITNW (If This Now What): Orchestrating an Enterprise
 
Kubernetes and Hybrid Deployments
Kubernetes and Hybrid DeploymentsKubernetes and Hybrid Deployments
Kubernetes and Hybrid Deployments
 
Kubernetes 101 VMworld 2019 workshop slides
Kubernetes 101 VMworld 2019 workshop slidesKubernetes 101 VMworld 2019 workshop slides
Kubernetes 101 VMworld 2019 workshop slides
 
Multi-Container Apps spanning Docker, Mesos and OpenStack
Multi-Container Apps spanning Docker, Mesos and OpenStackMulti-Container Apps spanning Docker, Mesos and OpenStack
Multi-Container Apps spanning Docker, Mesos and OpenStack
 
Deep dive in container service discovery
Deep dive in container service discoveryDeep dive in container service discovery
Deep dive in container service discovery
 

Andere mochten auch

Rabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_msRabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit MQ
 

Andere mochten auch (20)

Docker network performance in the public cloud
Docker network performance in the public cloudDocker network performance in the public cloud
Docker network performance in the public cloud
 
Achieving CI/CD with Kubernetes
Achieving CI/CD with KubernetesAchieving CI/CD with Kubernetes
Achieving CI/CD with Kubernetes
 
A brief study on Kubernetes and its components
A brief study on Kubernetes and its componentsA brief study on Kubernetes and its components
A brief study on Kubernetes and its components
 
Package your Java EE Application using Docker and Kubernetes
Package your Java EE Application using Docker and KubernetesPackage your Java EE Application using Docker and Kubernetes
Package your Java EE Application using Docker and Kubernetes
 
An Introduction to Kubernetes
An Introduction to KubernetesAn Introduction to Kubernetes
An Introduction to Kubernetes
 
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
Architecture Overview: Kubernetes with Red Hat Enterprise Linux 7.1
 
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
Container Networking: the Gotchas (Mesos London Meetup 11 May 2016)
 
Continuous Deployment with Jenkins on Kubernetes
Continuous Deployment with Jenkins on KubernetesContinuous Deployment with Jenkins on Kubernetes
Continuous Deployment with Jenkins on Kubernetes
 
Microservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and JenkinsMicroservices with Docker, Kubernetes, and Jenkins
Microservices with Docker, Kubernetes, and Jenkins
 
Kubernetes SDN performance and architecture
Kubernetes SDN performance and architectureKubernetes SDN performance and architecture
Kubernetes SDN performance and architecture
 
Container Networking Meetup March 31 2016
Container Networking Meetup March 31 2016Container Networking Meetup March 31 2016
Container Networking Meetup March 31 2016
 
Docker, From zero to hero
Docker, From zero to heroDocker, From zero to hero
Docker, From zero to hero
 
Easy applications deployment on OpenStack clouds
Easy applications deployment on OpenStack cloudsEasy applications deployment on OpenStack clouds
Easy applications deployment on OpenStack clouds
 
From zero to Docker
From zero to DockerFrom zero to Docker
From zero to Docker
 
Docker zero
Docker zeroDocker zero
Docker zero
 
Dockers zero to hero - (medium version)
Dockers zero to hero - (medium version)Dockers zero to hero - (medium version)
Dockers zero to hero - (medium version)
 
Docker: from zero to nonzero
Docker: from zero to nonzeroDocker: from zero to nonzero
Docker: from zero to nonzero
 
CloudStack Architecture
CloudStack ArchitectureCloudStack Architecture
CloudStack Architecture
 
Simple REST-APIs with Dropwizard and Swagger
Simple REST-APIs with Dropwizard and SwaggerSimple REST-APIs with Dropwizard and Swagger
Simple REST-APIs with Dropwizard and Swagger
 
Rabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_msRabbit mq messaginginthecloud_v_mworld_2010_ms
Rabbit mq messaginginthecloud_v_mworld_2010_ms
 

Ähnlich wie Zero downtime-java-deployments-with-docker-and-kubernetes

Ähnlich wie Zero downtime-java-deployments-with-docker-and-kubernetes (20)

JDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul BakkerJDD2015: Kubernetes - Beyond the basics - Paul Bakker
JDD2015: Kubernetes - Beyond the basics - Paul Bakker
 
Kubernetes for Java developers
Kubernetes for Java developersKubernetes for Java developers
Kubernetes for Java developers
 
Getting started with google kubernetes engine
Getting started with google kubernetes engineGetting started with google kubernetes engine
Getting started with google kubernetes engine
 
Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.Containerize! Between Docker and Jube.
Containerize! Between Docker and Jube.
 
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
Salvatore Incandela, Fabio Marinelli - Using Spinnaker to Create a Developmen...
 
Fabric8: Better Software Faster with Docker, Kubernetes, Jenkins
Fabric8: Better Software Faster with Docker, Kubernetes, JenkinsFabric8: Better Software Faster with Docker, Kubernetes, Jenkins
Fabric8: Better Software Faster with Docker, Kubernetes, Jenkins
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Docker Dublin Meetup | 22 Feb 2018 | Docker + Kubernetes
Docker Dublin Meetup | 22 Feb 2018 | Docker + KubernetesDocker Dublin Meetup | 22 Feb 2018 | Docker + Kubernetes
Docker Dublin Meetup | 22 Feb 2018 | Docker + Kubernetes
 
Introduction to Containers & Diving a little deeper into the benefits of Con...
 Introduction to Containers & Diving a little deeper into the benefits of Con... Introduction to Containers & Diving a little deeper into the benefits of Con...
Introduction to Containers & Diving a little deeper into the benefits of Con...
 
C219 - Docker and PureApplication Patterns: Better Together
C219 - Docker and PureApplication Patterns: Better TogetherC219 - Docker and PureApplication Patterns: Better Together
C219 - Docker and PureApplication Patterns: Better Together
 
Unleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket CloudUnleashing Docker with Pipelines in Bitbucket Cloud
Unleashing Docker with Pipelines in Bitbucket Cloud
 
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
Deploy and Scale your PHP App with AWS ElasticBeanstalk and Docker- PHPTour L...
 
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB201904_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
04_Azure Kubernetes Service: Basic Practices for Developers_GAB2019
 
Alibaba Cloud Conference 2016 - Docker Enterprise
Alibaba Cloud Conference   2016 - Docker EnterpriseAlibaba Cloud Conference   2016 - Docker Enterprise
Alibaba Cloud Conference 2016 - Docker Enterprise
 
cloudfoundrydiego-cloudopen2015nocomments-151006113553-lva1-app6892.pdf
cloudfoundrydiego-cloudopen2015nocomments-151006113553-lva1-app6892.pdfcloudfoundrydiego-cloudopen2015nocomments-151006113553-lva1-app6892.pdf
cloudfoundrydiego-cloudopen2015nocomments-151006113553-lva1-app6892.pdf
 
Docker for Developers
Docker for DevelopersDocker for Developers
Docker for Developers
 
On demand-block-storage-for-docker
On demand-block-storage-for-dockerOn demand-block-storage-for-docker
On demand-block-storage-for-docker
 
ContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small businessContainerDayVietnam2016: Dockerize a small business
ContainerDayVietnam2016: Dockerize a small business
 
Docker team training
Docker team trainingDocker team training
Docker team training
 
Excelian hyperledger walkthrough-feb17
Excelian hyperledger walkthrough-feb17Excelian hyperledger walkthrough-feb17
Excelian hyperledger walkthrough-feb17
 

KĂŒrzlich hochgeladen

Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 

KĂŒrzlich hochgeladen (20)

%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] đŸ„ Women's Abortion Clinic in T...
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
WSO2CON 2024 - API Management Usage at La Poste and Its Impact on Business an...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 

Zero downtime-java-deployments-with-docker-and-kubernetes