23. Service Broker in Cloud Foundry
10
ServiceBroker
CloudController
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
cf create-service
cf bind-service
25. Service Broker in Cloud Foundry
12
ServiceBroker
CloudController
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
cf create-service
cf bind-service
26. Service Broker in Cloud Foundry
12
ServiceBroker
CloudController
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
cf create-service
cf bind-service
27. Service Broker in Cloud Foundry
12
ServiceBroker
CloudController
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
cf create-service
cf bind-service
Open Service Broker API
28. Open Service Broker API
13
https://www.openservicebrokerapi.org/
Cloud Foundry Service Broker
Kubernetes OpenShift
32. Service Broker in Kubernetes
16
ServiceBroker
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
APIServer
33. Service Broker in Kubernetes
16
ServiceBroker
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
APIServer
🤔
34. Service Broker in Kubernetes
16
ServiceBroker
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
APIServer
🤔ServiceCatalog
36. New Resources in Service Catalog
18
• ClusterServiceBroker
• ClusterServiceClass
• ClusterServicePlan
• ServiceInstance
• ServiceBinding
37. New Resources in Service Catalog
18
• ClusterServiceBroker
• ClusterServiceClass
• ClusterServicePlan
• ServiceInstance
• ServiceBinding
k8s Admin
Service Catalog
Developer
38. Service Catalog Workflow
19
ServiceBroker
ServiceCatalog
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
kubectl apply
-f service-instance.yml
kubectl apply
-f service-binding.yml
Service Instance
Service Binding
k8s Resource
🔑 Secret
39. Service Catalog Workflow
19
ServiceBroker
ServiceCatalog
Create a VM
or
Create a Database
Create a user
Provision
a service instance
Bind
a service binding
kubectl apply
-f service-instance.yml
kubectl apply
-f service-binding.yml
Service Instance
Service Binding
k8s Resource
🔑 Secret
Service Binding
Credentials Secret
40. How to install service catalog
20
helm repo add svc-cat
https://svc-catalog-charts.storage.googleapis.com
helm install svc-cat/catalog
--name catalog
--namespace catalog
--set insecure=true
41. How to install service broker
21
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
name: demo
spec:
url: https://my-service-broker.example.com
authInfo:
basic:
secretRef:
name: demo-broker-secret
namespace: osb
44. List cluster service classes
22
$ kubectl get clusterserviceclasses -o=custom-
columns=CLASS:.spec.externalName,DESCRIPTION:.spec.
description
CLASS DESCRIPTION
shared-mysql Shared MySQL
45. List cluster service plans
23
$ kubectl get clusterserviceplans -o=custom-
columns=CLASS:.spec.clusterServiceBrokerName,PLAN:.
spec.externalName,DESCRIPTION:.spec.description
CLASS PLAN DESCRIPTION
shared-mysql shared Shared
46. How to create service instance
24
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
name: hello
spec:
clusterServiceClassExternalName: shared-mysql
clusterServicePlanExternalName: shared
47. How to create service instance
24
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
name: hello
spec:
clusterServiceClassExternalName: shared-mysql
clusterServicePlanExternalName: shared
Service
Plan
48. How to create service binding
25
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
name: hello-key
spec:
instanceRef:
name: hello
secretName: hello-key-secret
49. How to create service binding
25
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
name: hello-key
spec:
instanceRef:
name: hello
secretName: hello-key-secret
Credentials
Secret
Service
Instance
50. ServiceCatalog
DEMO1: MySQL Service Broker
26
ServiceBroker
CREATE DATABASE
CREATE USER
Provision
a service instance
Bind
a service binding
https://github.com/making/shared-mysql-service-broker
51. ServiceCatalog
DEMO2: Kafka Service Broker
27
https://github.com/making/cloud-karafka-service-broker
ServiceBroker
Create a topic
Provision
a service instance
Bind
a service binding
Share credentials
53. Open Service Brokers
29
• GCP Service Broker
• AWS Service Broker
• Azure Service Broker
• Helm Service Broker
• On-demand BOSH Service Broker
• Ansible Service Broker
• MySQL Service Broker
• Kafka Service Broker
• Pivotal Container Service (PKS)
https://pivotal.io/platform/services-marketplace
54. Open Service Brokers
29
• GCP Service Broker
• AWS Service Broker
• Azure Service Broker
• Helm Service Broker
• On-demand BOSH Service Broker
• Ansible Service Broker
• MySQL Service Broker
• Kafka Service Broker
• Pivotal Container Service (PKS)
k8s cluster
provsion
Service Broker
https://pivotal.io/platform/services-marketplace
55. Open Service Broker
30
• (Go) borkerapi
https://github.com/pivotal-cf/brokerapi
• (Java) Spring Cloud Open Service Broker
https://github.com/spring-cloud/spring-cloud-open-service-broker
56. Tools
31
• eden ... Open Service Broker API CLI
https://github.com/starkandwayne/eden
• svcat ... Service Catalog CLI
https://github.com/kubernetes-incubator/service-catalog/tree/master/cmd/svcat