Skip to content

Commit d618380

Browse files
authored
Add External Connectivity Docs (#47)
Give the reader some information about exposing the service broker to the wider world in order to facilitate multi-cloud architectures. While we cannot possibly document every cloud ever, at least link to the Kubernetes docs where appropriate and describe any necessary modifications that need to be made. Implements #26.
1 parent d524d9c commit d618380

File tree

4 files changed

+152
-83
lines changed

4 files changed

+152
-83
lines changed

.aspell.en.pws

Lines changed: 88 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -1,106 +1,111 @@
1-
personal_ws-1.1 en 0
2-
ifdef
3-
env
4-
github
5-
imagesdir
6-
endif
7-
relfileprefix
8-
png
9-
Kubernetes
10-
kubernetes
11-
CRD
12-
CRDs
13-
adoc
14-
api
1+
personal_ws-1.1 en 110
152
APIs
16-
URIs
17-
templated
3+
ASN
4+
Balancer
185
CA's
19-
TLS
20-
tls
21-
PKCS
22-
RSA
6+
CLI
7+
CN
8+
CPUs
9+
CRD
10+
CRDs
11+
ClusterIP
12+
ClusterRole
13+
ClusterServiceBroker
14+
ClusterServiceClass
15+
ClusterServicePlan
16+
Customizations
17+
DNS
2318
DSA
2419
ECDSA
25-
ASN
20+
GiB
21+
HTTPS
22+
JSON
23+
KiB
24+
Kubernetes
25+
LoadBalancer
26+
MiB
27+
Minikube
28+
Mutators
29+
Nginx
30+
OpenShift
2631
PEM
27-
DNS
32+
PKCS
33+
PKI
34+
RBAC
35+
RSA
2836
SAN
2937
SANs
30-
JSON
31-
json
38+
SDKs
39+
ServiceAccount
40+
ServiceBinding
41+
ServiceBroker
42+
ServiceBrokerConfig
43+
ServiceClass
44+
ServiceInstance
45+
ServicePlan
46+
TCP
47+
TLS
48+
URIs
49+
UUID
50+
VM
51+
VMs
3252
YAML
33-
yaml
3453
accessor
3554
accessors
36-
schemas
55+
adoc
56+
api
57+
apiVersion
58+
balancer
59+
bindable
3760
bool
3861
boolean
3962
booleans
40-
namespace
41-
couchbase
42-
Couchbase
43-
VM
44-
VMs
45-
CPUs
46-
RBAC
47-
CN
48-
servicebrokerconfigs
49-
ServiceBrokerConfig
63+
clusterroles
5064
clusterservicebrokers
51-
ClusterServiceBroker
52-
servicebrokers
53-
ServiceBroker
54-
clusterserviceplans
55-
ClusterServicePlan
56-
serviceplans
57-
ServicePlan
5865
clusterserviceclasses
59-
ClusterServiceClass
60-
serviceclasses
61-
ServiceClass
62-
serviceinstances
63-
ServiceInstance
64-
servicebindings
65-
ServiceBinding
66-
clusterroles
67-
ClusterRole
68-
serviceaccounts
69-
ServiceAccount
70-
SDKs
71-
CLI
72-
UUID
73-
KiB
74-
MiB
75-
GiB
76-
uuidgen
77-
kubectl
78-
sudo
66+
clusterserviceplans
67+
couchbase
7968
cryptographic
8069
cryptographically
81-
untrusted
82-
url
83-
usr
84-
discoverable
8570
deprovisioning
86-
www
87-
sprintf
88-
templating
89-
namespaces
90-
namespaced
71+
discoverable
9172
encodings
92-
Minikube
93-
PKI
94-
Mutators
95-
bindable
96-
pre
97-
Nginx
98-
untyped
99-
OpenShift
100-
apiVersion
73+
endif
74+
env
10175
generateCertificate
10276
generateKey
10377
generatePassword
104-
readinessChecks
78+
github
79+
ifdef
80+
imagesdir
10581
interoperability
106-
Customizations
82+
json
83+
kubectl
84+
kubernetes
85+
namespace
86+
namespaced
87+
namespaces
88+
png
89+
pre
90+
readinessChecks
91+
relfileprefix
92+
schemas
93+
serviceaccounts
94+
servicebindings
95+
servicebrokerconfigs
96+
servicebrokers
97+
serviceclasses
98+
serviceinstances
99+
serviceplans
100+
sprintf
101+
sudo
102+
templated
103+
templating
104+
tls
105+
untrusted
106+
untyped
107+
url
108+
usr
109+
uuidgen
110+
www
111+
yaml

documentation/modules/ROOT/pages/install/index.adoc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ Finally we will start and register the service, and create our first service ins
1919
* xref:install/container.adoc[Creating Container Images]
2020
* xref:install/kubernetes.adoc[Creating the Service Broker Service]
2121
* xref:install/serviceinstance.adoc[Creating and Binding to a Service Instance]
22+
* xref:install/ingress.adoc[Exposing Your Service Broker to the Wider World]
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
= Exposing Your Service Broker to the Wider World
2+
3+
[abstract]
4+
How to expose your Service Brokers to the wider world.
5+
6+
ifdef::env-github[]
7+
:relfileprefix: ../
8+
:imagesdir: https://github.com/couchbase/service-broker/raw/master/documentation/modules/ROOT/assets/images
9+
endif::[]
10+
11+
While the Service broker is designed for use with the Kubernetes Service Catalog, it can be used for wider applications.
12+
This guide documents why you may wish to expose your service and how it can be achieved.
13+
14+
== Why Expose Your Service Brokers?
15+
16+
By default, and as documented, when using the Service Broker with the Kubernetes Service Catalog it is only available within the same Kubernetes cluster.
17+
The Open Service Broker design is inherently flexible, meaning this is not the only deployment method you can use.
18+
19+
The key thing to remember is the Service Broker is just a Web service.
20+
It has an address and works over HTTP like any other Web server e.g. Apache or Nginx.
21+
22+
When integrating with the Kubernetes Service Catalog, in previous steps, hopefully you looked at the `ClusterServiceBroker` configuration.
23+
It contains a URL, TLS CA certificate and the bearer token for authorization.
24+
25+
There is no reason why this URL cannot be a publicly available address.
26+
Once you realize this, then it's a logical next step to realize that the Kubernetes Service Catalog acts as an aggregation of all Service Brokers it's told about.
27+
These Service Brokers can be in different Cloud regions, or even different Clouds to potentially provide Multi-Cloud deployments from a single control plane.
28+
29+
You may also integrate with control planes, other than the Kubernetes Service Catalog, such as https://docs.cloudfoundry.org/services/managing-service-brokers.html[Cloud Foundry^].
30+
31+
== Exposing Your Service with an Ingress
32+
33+
The Service Broker example installation configurations provide a Kubernetes `Service` resource in order to provide highly-available addressing.
34+
It uses the standard HTTPS port, 443.
35+
36+
For here it is trivial to connect this service to a Kubernetes https://kubernetes.io/docs/concepts/services-networking/ingress/[`Ingress`^] resource.
37+
38+
Please remember that the Service Broker takes security seriously, and the connection between the `Ingress` and the Service Broker _must_ be over TLS.
39+
Back-end TLS connectivity is not generic and is specific to the Cloud platform.
40+
For this reason, we do not provide specific instructions, consult your platform's documentation.
41+
42+
== Exposing Your Service with a Load Balancer Service
43+
44+
Where `Ingress` configuration is platform specific, load balancer services are generic.
45+
These provide TCP connection forwarding to the Service Broker.
46+
Simply modify the provided Service Broker `Service` to use `LoadBalancer` networking, rather than `ClusterIP`.
47+
This will allocate a public IP address for the Service Broker service.
48+
49+
The only additional step that needs to be taken is for either the IP address or DNS address of the public endpoint to be encoded in the Service Broker's TLS certificate as a subject alternative name.
50+
51+
== Next Steps
52+
53+
If your are reading this you should now have a publicly addressable Service Broker, accessible from anywhere on the planet.
54+
It can reside in any Kubernetes cluster on any Cloud platform.
55+
Multiple Service Brokers can be aggregated together with a control plane to provide a Multi-Cloud service provisioning experience.
56+
57+
Next steps are to take a deeper look at, and understand, the Service Broker architecture.
58+
59+
* xref:concepts/index.adoc[Concepts]

documentation/modules/ROOT/pages/install/serviceinstance.adoc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,3 +154,7 @@ Next you should read our learning resources that describe the key concepts of th
154154
From there you can begin to configure your own service instances and bindings for any service you desire.
155155

156156
* xref:concepts/index.adoc[Concepts]
157+
158+
Additionally you may wish to expose your Service Broker instance on the internet to integrate with services other than the Kubernetes Service Catalog.
159+
160+
* xref:install/ingress.adoc[Exposing Your Service Broker to the Wider World]

0 commit comments

Comments
 (0)