1
1
## ` service-catalog `
2
2
3
- The service-catalog presents APIs for:
4
-
5
- 1 . Determining which services and recipes for running instances of services
6
- are available in a cluster
7
- 2 . Making those services usable in namespaces and more granular subjects
8
- (deployments, pods) within a Kubernetes cluster
3
+ ### Terminology
4
+
5
+ Application: code that will access a Service. While in Kubernetes the code that
6
+ is deployed is often called a "Service", to avoid confusion, this document will
7
+ refer to the code that accesses a service as an "application".
8
+
9
+ Recipe: the definition of an application or service in a form that can then be
10
+ deployed into a cloud provider. For example, in Kubernetes terms, a recipe
11
+ might be a [ Deployment] ( http://kubernetes.io/docs/user-guide/deployments/ )
12
+ yaml file.
13
+
14
+ Service: running code that is made available for use by an application.
15
+ Traditionally, services are available via HTTP REST endpoints, but this is not
16
+ a requirement.
17
+
18
+ Service Broker: An endpoint that manages a set of services.
19
+
20
+ Service Catalog: An endpoint that manages 1) a set of registered Service
21
+ Brokers and 2) the list of services that are available for instantiation from
22
+ those Service Brokers.
23
+
24
+ Service Instance: Each request for a unique use of a Service will result in the
25
+ Service Catalog requesting a new Service Instance from the owning Service
26
+ Broker.
27
+
28
+ ### Purpose and Scope
29
+
30
+ The service-catalog SIG will focus on a few key tasks:
31
+
32
+ #### Service Catalog:
33
+ 1 . Support a Service Catalog similar to what Cloud Foundry supports via
34
+ their Cloud Controller APIs. This Service Catalog will support the
35
+ notion of managing registered Service Brokers, which in turn dictates the
36
+ list of available services that can be used by applications running within
37
+ Kubernetes. The Service Catalog may be cluster-wide or scoped to something smaller, such
38
+ as a Namespace.
39
+ 2 . Provide a mechanism by which applications deployed into Kubernetes can
40
+ signal their desire to connect to an instance of a Service Catalog managed
41
+ service. And, to have the information necessary for the application to
42
+ use the service instance provided to the application.
43
+
44
+ #### Service Brokers
45
+ 1 . Provide a framework to aide in the development of a Kubernetes-hosted
46
+ Service Broker that can then be registered into a Service Catalog -
47
+ either a Kubernetes Service Catalog or a Cloud Foundry one.
48
+ 2 . Provide a mechanism by which a Kubernetes managed Service Broker can be
49
+ told which Namespace into which a new service instance should be created.
50
+ This is optional because not all services necessarily deploy new running
51
+ code for each service instance. For example, a DB service may simply
52
+ create a new set of DB tables per instance.
53
+
54
+ #### Service Recipes
55
+ 1 . Provide a Deployment Catalog that includes a list of pre-built deployable
56
+ resources that can then be instantiated into a Kubernetes environment.
57
+ Note that these may or may not be "Services" as defined above.
58
+ 2 . These deployments, if they support the Service Broker APIs, can then be
59
+ registered into the Service Broker for use by applications on the
60
+ platform.
9
61
10
62
This is the Kubernetes implementation of the service broker concept, which is
11
63
joint effort amongst the different member organizations of the
@@ -17,18 +69,13 @@ Interested in contributing? Check out the [documentation](./CONTRIBUTING.md)
17
69
18
70
A very basic set of use cases to describe the problem space is:
19
71
20
- 1 . Advertising and discovering services and recipes:
21
- 1 . As a service operator, I want to be able to publish service offerings
22
- and recipes, so that users can search for my services and recipes they
23
- can use
24
- 2 . Recipes for running software systems in Kubernetes:
25
- 1 . As someone who created a recipe for running a software system in
26
- Kubernetes, I want to share this recipe with others so that they can
27
- easily stand up their own copy
72
+ 1 . Advertising and discovering of recipes:
73
+ 1 . As a recipte provider, I want to be able to publish recipes
74
+ so that users can search and deploy them into their own environments.
28
75
2 . As someone who wants to run a particular software system in Kubernetes,
29
76
I want to be able to search for and use recipes that others may have
30
- already created, so I can avoid spending time getting it to run myself
31
- 3 . Sharing resources for a service:
77
+ already created, so I can avoid spending time getting it to run myself.
78
+ 2 . Sharing resources for a service:
32
79
1 . As an operator of a software system, I want to share the resources that
33
80
are required to use the system so that my users can easily consume
34
81
them in their own namespaces
@@ -81,7 +128,7 @@ it lives off-cluster). All developers share the same credentials to access the
81
128
database, but these credentials are managed by IT. Rather than having each
82
129
developer create his or her own ` Service ` and ` Secret ` to connect to the
83
130
database, IT creates a "db-app-xyz" ` Service ` and a "db-app-xyz" ` Secret ` in the
84
- "info-tech" namespace.
131
+ "info-tech" namespace.
85
132
86
133
#### Consuming a set of shared resources for a service
87
134
0 commit comments