Service Catalog docs (#5867)

* Service Catalog docs (+16 squashed commits)
Squashed commits:
[765e81d] rework install-service-catalog.md
[d81f799] tweak diagrams
[b7a3da7] Add tooltips
[3b256c5] more rework
[828000e] architecture diagram redux
[0b809d5] rework
[7829301] Outline provision-bind-external-service.md w/ filler text
[144fbb3] install service catalog v1
[47b5be4] Reorder images and bullet points
[fb577ae] Update What's Next links
[8ac984c] Include snippet for install and provision docs
[c2eeece] Add Install Service Catalog doc
[a84df64] Add hard line break
[7fb12c6] Add task
[75c46d3] Add List, Provision, and Bind diagrams
[6386feb] Service Catalog concept doc

* Add install-service-catalog-using-helm

* switch mysql examples to message queuing instead

* Incorporate feedback

* incorporate additional feedback

* Incorporate tech review feedback
pull/6401/merge
Andrew Chen 2017-11-21 14:52:25 -08:00 committed by GitHub
parent e7e7aa017e
commit bb0d2771c4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 1055 additions and 1 deletions

View File

@ -33,6 +33,7 @@ toc:
- docs/concepts/cluster-administration/network-plugins.md
- docs/concepts/cluster-administration/device-plugins.md
- docs/concepts/cluster-administration/sysctl-cluster.md
- docs/concepts/service-catalog/index.md
- title: Containers
section:

View File

@ -0,0 +1,9 @@
id: managed-service
name: Managed Service
tags:
- extension
short-description: >
A software offering maintained by a third-party provider.
long-description: >
Some examples of Managed Services are AWS EC2, Azure SQL Database, and GCP Pub/Sub, but they can be any software offering that can be used by an application.
[Service Catalog](/docs/concepts/service-catalog/) provides a way to list, provision, and bind with Managed Services offered by {% glossary_tooltip text="Service Brokers" term_id="service-broker" %}.

View File

@ -0,0 +1,9 @@
id: service-broker
name: Service Broker
tags:
- extension
short-description: >
An endpoint for a set of {% glossary_tooltip text="Managed Services" term_id="managed-service" %} offered and maintained by a third-party.
long-description: >
{% glossary_tooltip text="Service Brokers" term_id="service-broker" %} implement the [Open Service Broker API spec](https://github.com/openservicebrokerapi/servicebroker/blob/v2.13/spec.md) and provide a standard interface for applications to use their Managed Services.
[Service Catalog](/docs/concepts/service-catalog/) provides a way to list, provision, and bind with Managed Services offered by Service Brokers.

View File

@ -0,0 +1,8 @@
id: service-catalog
name: Service Catalog
tags:
- extension
short-description: >
An extension API that enables applications running in Kubernetes clusters to easily use external managed software offerings, such as a datastore service offered by a cloud provider.
long-description: >
Service Catalog provides a way to list, provision, and bind with external {% glossary_tooltip text="Managed Services" term_id="managed-service" %} from {% glossary_tooltip text="Service Brokers" term_id="service-broker" %} without needing detailed knowledge about how those services are created or managed.

View File

@ -100,7 +100,7 @@ toc:
- title: Use Explorer to Examine the Runtime Environment
path: https://github.com/kubernetes/kubernetes/tree/release-1.5/examples/explorer
- title: Access and Extend the Kubernetes API
- title: Extend Kubernetes
section:
- docs/tasks/access-kubernetes-api/http-proxy-access-api.md
- docs/tasks/access-kubernetes-api/extend-api-custom-resource-definitions.md
@ -108,6 +108,8 @@ toc:
- docs/tasks/access-kubernetes-api/migrate-third-party-resource.md
- docs/tasks/access-kubernetes-api/configure-aggregation-layer.md
- docs/tasks/access-kubernetes-api/setup-extension-api-server.md
- docs/tasks/service-catalog/install-service-catalog-using-helm.md
- docs/tasks/service-catalog/install-service-catalog-using-sc.md
- title: TLS
section:

View File

@ -0,0 +1,234 @@
---
title: Service Catalog
approvers:
- chenopis
---
{% capture overview %}
{% glossary_definition term_id="service-catalog" length="all" prepend="Service Catalog is " %}
A *Service Broker*, as defined by the [Open Service Broker API spec](https://github.com/openClusterServiceBrokerapi/ClusterServiceBroker/blob/v2.13/spec.md), is an endpoint for a set of Managed Services offered and maintained by a third-party, which could be a cloud provider such as AWS, GCP, or Azure.
Some examples of *Managed Services* are Microsoft Azure Cloud Queue, Amazon Simple Queue Service, and Google Cloud Pub/Sub, but they can be any software offering that can be used by an application.
Using Service Catalog, a {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} can browse the list of {% glossary_tooltip text="Managed Services" term_id="managed-service" %} offered by a {% glossary_tooltip text="Service Brokers" term_id="service-broker" %}, provision an instance of a Managed Service, and bind with it to make it available to an application within the Kubernetes cluster.
{% endcapture %}
{% capture body %}
## Example use case
An {% glossary_tooltip text="Application Developer" term_id="application-developer" %} wants to use message queuing as part of their application running in a Kubernetes cluster.
However, they do not want to deal with the overhead of setting such a service up and administering it themselves.
Fortunately, there is a cloud provider that offers message queuing as a *Managed Service* through their *Service Broker*.
A {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} can setup Service Catalog and use it to communicate with the cloud provider's {% glossary_tooltip text="Service Broker" term_id="service-broker" %} to provision an instance of the message queuing service and make it available to the application within the Kubernetes cluster.
The {% glossary_tooltip text="Application Developer" term_id="application-developer" %} therefore does not need to concern themselves with the implementation details or management of the message queue.
Their application can simply use it as a service.
## Architecture
Service Catalog uses the [Open Service Broker API](https://github.com/openClusterServiceBrokerapi/ClusterServiceBroker) to communicate with Service Brokers, acting as an intermediary for the Kubernetes API Server in order to negotiate the initial provisioning and retrieve the credentials necessary for the application to use a Managed Service.
It is implemented as an extension API server and a controller manager, using Etcd for storage. It also uses the [aggregation layer](/docs/concepts/api-extension/apiserver-aggregation/) available in Kubernetes 1.7+ to present its API.
<br>
![Service Catalog Architecture](/images/docs/service-catalog-architecture.svg)
### API Resources
Service Catalog installs the `servicecatalog.k8s.io` API and provides the following Kubernetes resources:
* `ClusterServiceBroker`: An in-cluster representation of a Service Broker, encapsulating its server connection details.
These are created and managed by Cluster Operators who wish to use that broker server to make new types of Managed Services available within their cluster.
* `ClusterServiceClass`: A Managed Service offered by a particular Service Broker.
When a new `ClusterServiceBroker` resource is added to the cluster, the Service Catalog controller connects to the Service Broker to obtain a list of available Managed Services. It then creates a new `ClusterServiceClass` resource corresponding to each Managed Service.
* `ClusterServicePlan`: A specific offering of a Managed Service. For example, a Managed Service may have different plans available, such as a free tier or paid tier, or it may have different configuration options, such as using SSD storage or having more resources. Similar to `ClusterServiceClass`, when a new `ClusterServiceBroker` is added to the cluster, the Service Catalog creates a new `ClusterServicePlan` resource corresponding to each Service Plan available for each Managed Service.
* `ServiceInstance`: A provisioned instance of a `ClusterServiceClass`.
These are created by Cluster Operators to make a specific instance of a Managed Service available for use by one or more in-cluster applications.
When a new `ServiceInstance` resource is created, the Service Catalog controller will connect to the appropriate Service Broker and instruct it to provision the service instance.
* `ServiceBinding`: Access credentials to a `ServiceInstance`.
These are created by Cluster Operators who want their applications to make use of a Service `ServiceInstance`.
Upon creation, the Service Catalog controller will create a Kubernetes `Secret` containing connection details and credentials for the Service Instance, which can be mounted into Pods.
### Authentication
Service Catalog supports these methods of authentication:
* Basic (username/password)
* [OAuth 2.0 Bearer Token](https://tools.ietf.org/html/rfc6750)
## Usage
A {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} can use the Service Catalog API Resources to provision Managed Services and make them available within a Kubernetes cluster. The steps involved are:
1. Listing the Managed Services and Service Plans available from a Service Broker.
1. Provisioning a new instance of the Managed Service.
1. Binding to the Managed Service, which returns the connection credentials.
1. Mapping the connection credentials into the application.
### Listing Managed Services and Service Plans
First, a {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} must create a `ClusterServiceBroker` resource within the `servicecatalog.k8s.io` group. This resource contains the URL and connection details necessary to access a Service Broker endpoint.
This is an example of a `ClusterServiceBroker` resource:
```yaml
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
name: cloud-broker
spec:
# Points to the endpoint of a Service Broker. (This example is not a working URL.)
url: https://servicebroker.somecloudprovider.com/v1alpha1/projects/service-catalog/brokers/default
#####
# Additional values can be added here, which may be used to communicate
# with the Service Broker, such as bearer token info or a caBundle for TLS.
#####
```
The following is a sequence diagram illustrating the steps involved in listing Managed Services and Plans available from a Service Broker:
![List Services](/images/docs/service-catalog-list.svg){:height="80%" width="80%"}
1. Once the `ClusterServiceBroker` resource is added to Service Catalog, it triggers a *List Services* call to the external Service Broker.
1. The Service Broker returns a list of available Managed Services and Service Plans, which are cached locally in `ClusterServiceClass` and `ClusterServicePlan` resources.
1. A {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} can then get the list of available Managed Services using the following command:
kubectl get clusterserviceclasses -o=custom-columns=SERVICE\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName
It should output a list of service names with a format similar to:
SERVICE NAME EXTERNAL NAME
4f6e6cf6-ffdd-425f-a2c7-3c9258ad2468 cloud-provider-service
... ...
They can also view the Service Plans available using the following command:
kubectl get clusterserviceplans -o=custom-columns=PLAN\ NAME:.metadata.name,EXTERNAL\ NAME:.spec.externalName
It should output a list of plan names with a format similar to:
PLAN NAME EXTERNAL NAME
86064792-7ea2-467b-af93-ac9694d96d52 service-plan-name
... ...
### Provisioning a new instance
A {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} can initiate the provisioning of a new instance by creating a `ServiceInstance` resource.
This is an example of a `ServiceInstance` resource:
```yaml
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
name: cloud-queue-instance
namespace: cloud-apps
spec:
# References one of the previously returned services
clusterServiceClassExternalName: cloud-provider-service
clusterServicePlanExternalName: service-plan-name
#####
# Additional parameters can be added here,
# which may be used by the Service Broker.
#####
```
The following sequence diagram illustrates the steps involved in provisioning a new instance of a Managed Service:
![Provision a Service](/images/docs/service-catalog-provision.svg){:height="80%" width="80%"}
1. When the `ServiceInstance` resource is created, Service Catalog initiates a *Provision Instance* call to the external Service Broker.
1. The Service Broker creates a new instance of the Managed Service and returns an HTTP response.
1. A {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} can then check the status of the instance to see if it is ready.
### Binding to a Managed Service
After a new instance has been provisioned, a {% glossary_tooltip text="Cluster Operator" term_id="cluster-operator" %} must bind to the Managed Service to get the connection credentials and service account details necessary for the application to use the service. This is done by creating a `ServiceBinding` resource.
The following is an example of a `ServiceBinding` resource:
```yaml
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
name: cloud-queue-binding
namespace: cloud-apps
spec:
instanceRef:
name: cloud-queue-instance
#####
# Additional information can be added here, such as a secretName or
# service account parameters, which may be used by the Service Broker.
#####
```
The following sequence diagram illustrates the steps involved in binding to a Managed Service instance:
![Bind to a Managed Service](/images/docs/service-catalog-bind.svg){:height="80%" width="80%"}
1. After the `ServiceBinding` is created, Service Catalog makes a *Bind Instance* call to the external Service Broker.
1. The Service Broker enables the application permissions/roles for the appropriate service account.
1. The Service Broker returns the information necessary to connect and access the Managed Service instance. This is provider and service-specific so the information returned may differ between Service Providers and their Managed Services.
### Mapping the connection credentials
After binding, the final step involves mapping the connection credentials and service-specific information into the application.
These pieces of information are stored in secrets that the application in the cluster can access and use to connect directly with the Managed Service.
<br>
![Map connection credentials](/images/docs/service-catalog-map.svg)
#### Pod Configuration File
One method to perform this mapping is to use a declarative Pod configuration.
The following example describes how to map service account credentials into the application. A key called `sa-key` is stored in a volume named `provider-cloud-key`, and the application mounts this volume at `/var/secrets/provider/key.json`. The environment variable `GOOGLE_APPLICATION_CREDENTIALS` is mapped from the value of the mounted file.
```yaml
...
spec:
volumes:
- name: provider-cloud-key
secret:
secretName: sa-key
containers:
...
volumeMounts:
- name: provider-cloud-key
mountPath: /var/secrets/provider
env:
- name: PROVIDER_APPLICATION_CREDENTIALS
value: "/var/secrets/provider/key.json"
```
The following example describes how to map secret values into application environment variables. In this example, the messaging queue topic name is mapped from a secret named `provider-queue-credentials` with a key named `topic` to the environment variable `TOPIC`.
```yaml
...
env:
- name: "TOPIC"
valueFrom:
secretKeyRef:
name: provider-queue-credentials
key: topic
```
{% endcapture %}
{% capture whatsnext %}
* If you are familiar with {% glossary_tooltip text="Helm Charts" term_id="helm-chart" %}, [install Service Catalog using Helm](/docs/tasks/service-catalog/install-service-catalog-using-helm/) into your Kubernetes cluster. Alternatively, you can [install Service Catalog using the SC tool](/docs/tasks/service-catalog/install-service-catalog-using-sc/).
* View [sample service brokers](https://github.com/openClusterServiceBrokerapi/ClusterServiceBroker/blob/master/gettingStarted.md#sample-service-brokers).
* Explore the [kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog) project.
{% endcapture %}
{% include templates/concept.md %}

View File

@ -0,0 +1,100 @@
---
title: Install Service Catalog using Helm
approvers:
- chenopis
---
{% capture overview %}
{% glossary_definition term_id="service-catalog" length="long" %}
Use [Helm](https://helm.sh/) to install Service Catalog on your Kubernetes cluster. Up to date information on this process can be found at the [kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog/blob/master/docs/install.md) repo.
{% endcapture %}
{% capture prerequisites %}
* Understand the key concepts of [Service Catalog](/docs/concepts/service-catalog/).
* Service Catalog requires a Kubernetes cluster running version 1.7 or higher.
* You must have a Kubernetes cluster with cluster DNS enabled.
* If you are using a cloud-based Kubernetes cluster or {% glossary_tooltip text="Minikube" term_id="minikube" %}, you may already have cluster DNS enabled.
* If you are using `hack/local-up-cluster.sh`, ensure that the `KUBE_ENABLE_CLUSTER_DNS` environment variable is set, then run the install script.
* [Install and setup kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) v1.7 or higher. Make sure it is configured to connect to the Kubernetes cluster.
* Install [Helm](http://helm.sh/) v2.7.0 or newer.
* Follow the [Helm install instructions](https://github.com/kubernetes/helm/blob/master/docs/install.md).
* If you already have an appropriate version of Helm installed, execute `helm init` to install Tiller, the server-side component of Helm.
{% endcapture %}
{% capture steps %}
## Add the service-catalog Helm repository
Once Helm is installed, add the *service-catalog* Helm repository to your local machine by executing the following command:
```shell
helm repo add svc-cat https://svc-catalog-charts.storage.googleapis.com
```
Check to make sure that it installed successfully by executing the following command:
```shell
helm search service-catalog
```
If the installation was successful, the command should output the following:
```
NAME VERSION DESCRIPTION
svc-cat/catalog 0.0.1 service-catalog API server and controller-manag...
```
## Enable RBAC
Your Kubernetes cluster must have RBAC enabled, which requires your Tiller Pod(s) to have `cluster-admin` access.
If you are using {% glossary_tooltip text="Minikube" term_id="minikube" %}, run the `minikube start` command with the following flag:
```shell
minikube start --extra-config=apiserver.Authorization.Mode=RBAC
```
If you are using `hack/local-up-cluster.sh`, set the `AUTHORIZATION_MODE` environment variable with the following values:
```
AUTHORIZATION_MODE=Node,RBAC hack/local-up-cluster.sh -O
```
By default, `helm init` installs the Tiller Pod into the `kube-system` namespace, with Tiller configured to use the `default` service account.
**NOTE:** If you used the `--tiller-namespace` or `--service-account` flags when running `helm init`, the `--serviceaccount` flag in the following command needs to be adjusted to reference the appropriate namespace and ServiceAccount name.
{: .note}
Configure Tiller to have `cluster-admin` access:
```shell
kubectl create clusterrolebinding tiller-cluster-admin \
--clusterrole=cluster-admin \
--serviceaccount=kube-system:default
```
## Install Service Catalog in your Kubernetes cluster
Install Service Catalog from the root of the Helm repository using the following command:
```shell
helm install svc-cat/catalog \
--name catalog --namespace catalog
```
{% endcapture %}
{% capture whatsnext %}
* View [sample service brokers](https://github.com/openservicebrokerapi/servicebroker/blob/master/gettingStarted.md#sample-service-brokers).
* Explore the [kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog) project.
{% endcapture %}
{% include templates/task.md %}

View File

@ -0,0 +1,77 @@
---
title: Install Service Catalog using SC
approvers:
- chenopis
---
{% capture overview %}
{% glossary_definition term_id="service-catalog" length="long" %}
Use the [Service Catalog Installer](https://github.com/GoogleCloudPlatform/k8s-service-catalog#installation) tool to easily install or uninstall Service Catalog on your Kubernetes cluster. This CLI tool is installed as `sc` in your local environment.
{% endcapture %}
{% capture prerequisites %}
* Understand the key concepts of [Service Catalog](/docs/concepts/service-catalog/).
* Install [Go 1.6+](https://golang.org/dl/) and set the `GOPATH`.
* Install the [cfssl](https://github.com/cloudflare/cfssl) tool needed for generating SSL artifacts.
* Service Catalog requires Kubernetes version 1.7+.
* [Install and setup kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/) so that it is configured to connect to a Kubernetes v1.7+ cluster.
* The kubectl user must be bound to the *cluster-admin* role for it to install Service Catalog. To ensure that this is true, run the following command:
kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=<user-name>
{% endcapture %}
{% capture steps %}
## Install `sc` in your local environment
Install the `sc` CLI tool using the `go get` command:
```Go
go get github.com/GoogleCloudPlatform/k8s-service-catalog/installer/cmd/sc
```
After running the above command, `sc` should be installed in your `GOPATH/bin` directory.
## Install Service Catalog in your Kubernetes cluster
First, verify that all dependencies have been installed. Run:
```shell
sc check
```
If the check is successful, it should return:
```
Dependency check passed. You are good to go.
```
Next, run the install command and specify the `storageclass` that you want to use for the backup:
```shell
sc install --etcd-backup-storageclass "standard"
```
## Uninstall Service Catalog
If you would like to uninstall Service Catalog from your Kubernetes cluster using the `sc` tool, run:
```shell
sc uninstall
```
{% endcapture %}
{% capture whatsnext %}
* View [sample service brokers](https://github.com/openservicebrokerapi/servicebroker/blob/master/gettingStarted.md#sample-service-brokers).
* Explore the [kubernetes-incubator/service-catalog](https://github.com/kubernetes-incubator/service-catalog) project.
{% endcapture %}
{% include templates/task.md %}

View File

@ -0,0 +1,138 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="-1 -1 841 457" width="841pt" height="457pt" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> Produced by OmniGraffle 7.5
<dc:date>2017-11-17 22:47:47 +0000</dc:date>
</metadata>
<defs>
<font-face font-family="Arial" font-size="16" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="16" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="14" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="14" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="12" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="gray">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-6 -3 7 6" markerWidth="7" markerHeight="6" color="gray">
<g>
<path d="M -4.8 0 L 0 1.8 L 0 -1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="gray">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_4" viewBox="-6 -3 7 6" markerWidth="7" markerHeight="6" color="gray">
<g>
<path d="M -4.8 0 L 0 1.8 L 0 -1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<font-face font-family="Arial" font-size="12" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
</defs>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<title>architecture</title>
<g>
<title>Layer 1</title>
<path d="M 0 0 L 600 0 L 600 420 L 0 420 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/>
<rect x="640" y="0" width="200" height="280" fill="#d9d9d9"/>
<text transform="translate(650 30)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" fill="black" x="30.421875" y="14" textLength="109.36719">Service Broker </tspan>
<tspan font-family="Arial" font-size="16" font-weight="500" fill="black" x="138.90625" y="14" textLength="10.671875">A</tspan>
</text>
<rect x="10" y="10" width="170" height="400" fill="#4285f5"/>
<text transform="translate(20 30)" fill="white">
<tspan font-family="Arial" font-size="16" font-weight="bold" fill="white" x="34.53125" y="14" textLength="80.9375">API Server</tspan>
</text>
<rect x="215" y="10" width="170" height="190" fill="#4285f5"/>
<text transform="translate(227 30)" fill="white">
<tspan font-family="Arial" font-size="16" font-weight="bold" fill="white" x="12.972656" y="14" textLength="120.05469">Service Catalog</tspan>
<tspan font-family="Arial" font-size="14" font-weight="bold" fill="white" x=".23828125" y="62.52344" textLength="145.52344">servicecatalog.k8s.io:</tspan>
<tspan font-family="Arial" font-size="14" font-weight="500" fill="white" x="0" y="94.98145" textLength="132.26172">ClusterServiceBroker</tspan>
<tspan font-family="Arial" font-size="14" font-weight="500" fill="white" x="0" y="111.43945" textLength="126.03418">ClusterServiceClass</tspan>
<tspan font-family="Arial" font-size="14" font-weight="500" fill="white" x="0" y="127.89746" textLength="119.04785">ClusterServicePlan</tspan>
<tspan font-family="Arial" font-size="14" font-weight="500" fill="white" x="0" y="144.35547" textLength="99.60645">ServiceInstance</tspan>
<tspan font-family="Arial" font-size="14" font-weight="500" fill="white" x="0" y="160.81348" textLength="93.38574">ServiceBinding</tspan>
</text>
<rect x="420" y="220" width="170" height="190" fill="#4285f5"/>
<text transform="translate(430 240)" fill="white">
<tspan font-family="Arial" font-size="16" font-weight="bold" fill="white" x="31.445312" y="14" textLength="87.10938">Application</tspan>
</text>
<rect x="640" y="300" width="200" height="40" fill="#d9d9d9"/>
<text transform="translate(650 311.23828)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" fill="black" x="82" y="14" textLength="16"></tspan>
</text>
<rect x="640" y="360" width="200" height="60" fill="#d9d9d9"/>
<text transform="translate(650 381.2383)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x="30.429688" y="14" textLength="119.14062">Service Broker Z</tspan>
</text>
<rect x="650" y="150" width="180" height="40" fill="white"/>
<text transform="translate(660 161.23828)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x="11.070312" y="14" textLength="137.85938">Managed Service 2</tspan>
</text>
<rect x="650" y="230" width="180" height="40" fill="white"/>
<text transform="translate(660 241.23828)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x="9.742188" y="14" textLength="140.51562">Managed Service N</tspan>
</text>
<rect x="650" y="100" width="180" height="40" fill="white"/>
<text transform="translate(660 111.23828)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x="11.070312" y="14" textLength="137.85938">Managed Service 1</tspan>
</text>
<path d="M 384.9481 39.49993 L 410.0271 19.566032 L 410.00054 29.631994 L 614.9472 30.172747 L 614.9738 20.106784 L 639.9472 40.172747 L 614.86825 60.106645 L 614.8948 50.040683 L 409.9481 49.49993 L 409.92156 59.56589 Z" fill="gray"/>
<text transform="translate(421.804 32.87919) rotate(-.1511748)" fill="white">
<tspan font-family="Arial" font-size="12" font-weight="500" fill="white" x="23.927734" y="11" textLength="114.71484">Open Service Broker </tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" fill="white" x="137.98047" y="11" textLength="19.341797">API</tspan>
</text>
<text transform="translate(455 58.91113)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x="0" y="11" textLength="68.021484">List Services</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" x="0" y="25.392578" textLength="98.05078">Provision Instance</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" x="0" y="39.785156" textLength="72.71484">Bind Instance</tspan>
</text>
<line x1="602.9" y1="249.5" x2="637.1" y2="249.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<rect x="650" y="200" width="180" height="20" fill="white"/>
<text transform="translate(655 201.23828)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x="77" y="14" textLength="16"></tspan>
</text>
<line x1="192.9" y1="39.33634" x2="202.1" y2="39.33634" marker-end="url(#FilledArrow_Marker_3)" marker-start="url(#FilledArrow_Marker_4)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<path d="M 300 212.9 L 300 215.9 L 300 315.5 L 369.5 315.5 L 404.1 315 L 407.1 315" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<text transform="translate(307.63672 323.3037)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" fill="black" x=".14257812" y="11" textLength="72.71484">Bind Instance</tspan>
</text>
<rect x="430" y="285" width="150" height="60" fill="white"/>
<text transform="translate(440 293.41113)" fill="#383838">
<tspan font-family="Arial" font-size="12" font-weight="bold" fill="#383838" x="0" y="11" textLength="40.6875">Secret:</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" fill="#383838" x="0" y="25.392578" textLength="124.74023">Connection Credentials</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" fill="#383838" x="0" y="39.785156" textLength="80.02734">Service Details</tspan>
</text>
<text transform="translate(259 432.2383)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x=".08203125" y="14" textLength="81.83594">Kubernetes</tspan>
</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="71 1472 560 377" width="560pt" height="377pt" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> Produced by OmniGraffle 7.5
<dc:date>2017-11-17 22:45:14 +0000</dc:date>
</metadata>
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/>
<feOffset in="blur" result="offset" dx="0" dy="2"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in"/>
</filter>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -6 14 12" markerWidth="14" markerHeight="12" color="black">
<g>
<path d="M 11.428568 0 L 0 -4.285713 L 0 4.285713 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<font-face font-family="Arial" font-size="12" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.68359" underline-thickness="49.316406" slope="0" x-height="522.9492" cap-height="717.28516" ascent="770.0195" descent="-229.98047" font-weight="500">
<font-face-src>
<font-face-name name="Helvetica"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="12" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="16" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
</defs>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<title>V2b</title>
<g>
<title>Layer 1</title>
<g>
<xl:use xl:href="#id126_Graphic" filter="url(#Shadow)"/>
<xl:use xl:href="#id134_Graphic" filter="url(#Shadow)"/>
<xl:use xl:href="#id189_Graphic" filter="url(#Shadow)"/>
</g>
<line x1="118.75" y1="1497.456" x2="118.75" y2="1847.456" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="324.25" y1="1497.456" x2="324.25" y2="1847.456" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="529.75" y1="1497.456" x2="529.75" y2="1847.456" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="341.25" y1="1575.8496" x2="502.3641" y2="1618.443" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="386.2558" y="1586.219" width="83" height="25" fill="white"/>
<text transform="translate(391.2558 1591.5227)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".14257812" y="11" textLength="72.71484">Bind Instance</tspan>
</text>
<line x1="515.25" y1="1657.9107" x2="350.17202" y2="1699.6439" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="384.2893" y="1662.544" width="71" height="39" fill="white"/>
<text transform="translate(389.2893 1667.6514)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".14550781" y="11" textLength="60.708984">Connection</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" x=".48535156" y="25.392578" textLength="60.0293">Information</tspan>
</text>
<rect x="279.25" y="1710.5152" width="91" height="38" fill="white"/>
<text transform="translate(284.25 1715.5152)" fill="black">
<tspan font-family="Helvetica" font-size="12" font-weight="500" x=".47753906" y="11" textLength="80.04492">ServiceBinding</tspan>
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="14.821289" y="25" textLength="51.35742">Resource</tspan>
</text>
<rect x="279.25" y="1538.0866" width="91" height="38" fill="white"/>
<text transform="translate(284.25 1543.0866)" fill="black">
<tspan font-family="Helvetica" font-size="12" font-weight="500" x=".47753906" y="11" textLength="80.04492">ServiceBinding</tspan>
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="14.821289" y="25" textLength="51.35742">Resource</tspan>
</text>
<line x1="130" y1="1556.5866" x2="260.87955" y2="1557.4745" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="279" y="1472.5" width="101" height="39" fill="white"/>
<text transform="translate(284 1477.6074)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".4794922" y="11" textLength="90.04102">Service Catalog</tspan>
<tspan font-family="Arial" font-size="12" font-weight="bold" x="15.148438" y="25.392578" textLength="60.703125">API Server</tspan>
</text>
<rect x="488" y="1472.5" width="95" height="25" fill="white"/>
<text transform="translate(493 1477.8037)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".13964844" y="11" textLength="84.7207">Service Broker</tspan>
</text>
<rect x="71.5" y="1472.5" width="106" height="25" fill="white"/>
<text transform="translate(76.5 1477.8037)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".32226562" y="11" textLength="95.35547">Cluster Operator</tspan>
</text>
<g id="id126_Graphic">
<rect x="408.7893" y="1556.5866" width="22" height="25" fill="white"/>
<rect x="408.7893" y="1556.5866" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(413.7893 1561.8904)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">1.</tspan>
</text>
</g>
<g id="id134_Graphic">
<rect x="408.7893" y="1702.9107" width="22" height="25" fill="white"/>
<rect x="408.7893" y="1702.9107" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(413.7893 1708.2144)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">3.</tspan>
</text>
</g>
<path d="M 558 1619.956 L 617.5 1619.956 C 624.538 1619.956 630.25 1629.476 630.25 1641.206 C 630.25 1652.936 624.538 1662.456 617.5 1662.456 L 558 1662.456 C 550.962 1662.456 545.25 1652.936 545.25 1641.206 C 545.25 1629.476 550.962 1619.956 558 1619.956" fill="white"/>
<path d="M 558 1619.956 L 617.5 1619.956 C 624.538 1619.956 630.25 1629.476 630.25 1641.206 C 630.25 1652.936 624.538 1662.456 617.5 1662.456 L 558 1662.456 C 550.962 1662.456 545.25 1652.936 545.25 1641.206 C 545.25 1629.476 550.962 1619.956 558 1619.956" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(558.75 1632.4443)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="bold" x=".53125" y="14" textLength="56.9375">Service</tspan>
</text>
<g id="id189_Graphic">
<rect x="576.75" y="1586.3496" width="22" height="25" fill="white"/>
<rect x="576.75" y="1586.3496" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(581.75 1591.6533)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">2.</tspan>
</text>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@ -0,0 +1,136 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="66 512 566 375" width="566pt" height="375pt" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> Produced by OmniGraffle 7.5
<dc:date>2017-11-17 22:45:14 +0000</dc:date>
</metadata>
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/>
<feOffset in="blur" result="offset" dx="0" dy="2"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in"/>
</filter>
<font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.68359" underline-thickness="49.316406" slope="0" x-height="522.9492" cap-height="717.28516" ascent="770.0195" descent="-229.98047" font-weight="500">
<font-face-src>
<font-face-name name="Helvetica"/>
</font-face-src>
</font-face>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -6 14 12" markerWidth="14" markerHeight="12" color="black">
<g>
<path d="M 11.428568 0 L 0 -4.285713 L 0 4.285713 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<font-face font-family="Arial" font-size="12" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="12" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="13" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="11" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
</defs>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<title>V2b</title>
<g>
<title>Layer 1</title>
<g>
<xl:use xl:href="#id114_Graphic" filter="url(#Shadow)"/>
<xl:use xl:href="#id115_Graphic" filter="url(#Shadow)"/>
<xl:use xl:href="#id66_Graphic" filter="url(#Shadow)"/>
</g>
<line x1="118.75" y1="535.5" x2="118.75" y2="885.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="324.25" y1="535.5" x2="324.25" y2="885.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<rect x="263.75" y="704.522" width="122" height="38" fill="white"/>
<text transform="translate(268.75 709.522)" fill="black">
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="1.9853516" y="11" textLength="111.36328">ClusterServiceClass </tspan>
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="30.32129" y="25" textLength="51.35742">Resource</tspan>
</text>
<line x1="529.75" y1="535.5" x2="529.75" y2="885.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="336.2558" y1="619.1546" x2="506.0406" y2="674.8217" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<line x1="515.25" y1="710.9325" x2="350.17202" y2="752.6657" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="273.75" y="512.5" width="101" height="39" fill="white"/>
<text transform="translate(278.75 517.6074)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".4794922" y="11" textLength="90.04102">Service Catalog</tspan>
<tspan font-family="Arial" font-size="12" font-weight="bold" x="15.148438" y="25.392578" textLength="60.703125">API Server</tspan>
</text>
<rect x="482.75" y="512.5" width="95" height="25" fill="white"/>
<text transform="translate(487.75 517.8037)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".13964844" y="11" textLength="84.7207">Service Broker</tspan>
</text>
<rect x="391.18543" y="637.6151" width="79" height="25" fill="white"/>
<text transform="translate(396.18543 642.9188)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".4892578" y="11" textLength="68.021484">List Services</tspan>
</text>
<rect x="261.0526" y="580.1922" width="124" height="39" fill="white"/>
<text transform="translate(266.0526 585.2996)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".31640625" y="11" textLength="113.36719">ClusterServiceBroker</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" x="31.32129" y="25.392578" textLength="51.35742">Resource</tspan>
</text>
<line x1="132.88842" y1="754.9325" x2="248.85003" y2="755.8099" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<line x1="311" y1="791.5658" x2="145.92202" y2="833.299" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="66.25" y="512.5" width="106" height="25" fill="white"/>
<text transform="translate(71.25 517.8037)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".32226562" y="11" textLength="95.35547">Cluster Operator</tspan>
</text>
<g id="id114_Graphic">
<rect x="422.1116" y="748.5" width="22" height="25" fill="white"/>
<rect x="422.1116" y="748.5" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(427.1116 753.8037)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">2.</tspan>
</text>
</g>
<g id="id115_Graphic">
<rect x="211" y="830.5" width="22" height="25" fill="white"/>
<rect x="211" y="830.5" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(216 835.8037)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">3.</tspan>
</text>
</g>
<g id="id66_Graphic">
<rect x="422.1116" y="606.6151" width="22" height="25" fill="white"/>
<rect x="422.1116" y="606.6151" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(427.1116 611.9188)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">1.</tspan>
</text>
</g>
<rect x="545.25" y="670" width="85" height="55" fill="white"/>
<rect x="545.25" y="670" width="85" height="55" stroke="#a5a5a5" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<text transform="translate(550.25 674.3621)" fill="black">
<tspan font-family="Arial" font-size="13" font-weight="500" fill="black" x="20.158203" y="12" textLength="38.29541">List of </tspan>
<tspan font-family="Arial" font-size="13" font-weight="500" fill="black" x="10.77002" y="27.425293" textLength="57.07178">Services, </tspan>
<tspan font-family="Arial" font-size="13" font-weight="500" fill="black" x="21.240479" y="42.850586" textLength="32.519043">Plans</tspan>
</text>
<line x1="133" y1="599.1922" x2="248.9616" y2="600.0696" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="265.0526" y="763.5658" width="116" height="38" fill="white"/>
<text transform="translate(270.0526 768.5658)" fill="black">
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="1.9794922" y="11" textLength="105.375">ClusterServicePlan </tspan>
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="27.32129" y="25" textLength="51.35742">Resource</tspan>
</text>
<rect x="386.6116" y="719.1978" width="93" height="25" fill="white"/>
<text transform="translate(391.6116 724.5015)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".15039062" y="11" textLength="82.69922">Services, Plans</tspan>
</text>
<rect x="129.88842" y="764.2202" width="133" height="23" fill="white"/>
<text transform="translate(134.88842 769.5402)" fill="black">
<tspan font-family="Arial" font-size="11" font-weight="500" x="0" y="10" textLength="111.88525">get clusterserviceplans</tspan>
</text>
<rect x="129.88842" y="718.5518" width="133" height="23" fill="white"/>
<text transform="translate(134.88842 723.8719)" fill="black">
<tspan font-family="Arial" font-size="11" font-weight="500" x="0" y="10" textLength="122.26758">get clusterserviceclasses</tspan>
</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="-1 -1 841 457" width="841pt" height="457pt" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> Produced by OmniGraffle 7.5
<dc:date>2017-11-07 08:04:59 +0000</dc:date>
</metadata>
<defs>
<font-face font-family="Arial" font-size="16" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="16" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="14" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="14" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="12" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -3 7 6" markerWidth="7" markerHeight="6" color="gray">
<g>
<path d="M 4.8 0 L 0 -1.8 L 0 1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" viewBox="-6 -3 7 6" markerWidth="7" markerHeight="6" color="gray">
<g>
<path d="M -4.8 0 L 0 1.8 L 0 -1.8 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<font-face font-family="Arial" font-size="12" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
</defs>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<title>map creds</title>
<g>
<title>Layer 1</title>
<path d="M 0 0 L 600 0 L 600 420 L 0 420 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/>
<rect x="640" y="0" width="200" height="420" fill="#d9d9d9"/>
<text transform="translate(650 30)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" fill="black" x="37.539062" y="14" textLength="104.92188">Service Broker</tspan>
</text>
<rect x="10" y="10" width="170" height="400" fill="#4285f5"/>
<text transform="translate(20 30)" fill="white">
<tspan font-family="Arial" font-size="16" font-weight="bold" fill="white" x="34.53125" y="14" textLength="80.9375">API Server</tspan>
</text>
<rect x="215" y="10" width="170" height="190" fill="#4285f5"/>
<text transform="translate(227 30)" fill="white">
<tspan font-family="Arial" font-size="16" font-weight="bold" fill="white" x="12.972656" y="14" textLength="120.05469">Service Catalog</tspan>
<tspan font-family="Arial" font-size="14" font-weight="bold" fill="white" x=".23828125" y="120.52344" textLength="145.52344">servicecatalog.k8s.io:</tspan>
<tspan font-family="Arial" font-size="14" font-weight="500" fill="white" x="0" y="152.98145" textLength="93.38574">ServiceBinding</tspan>
</text>
<rect x="420" y="220" width="170" height="190" fill="#4285f5"/>
<text transform="translate(430 240)" fill="white">
<tspan font-family="Arial" font-size="16" font-weight="bold" fill="white" x="31.445312" y="14" textLength="87.10938">Application</tspan>
</text>
<rect x="650" y="220" width="180" height="60" fill="white"/>
<text transform="translate(660 232.47656)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x="17.742188" y="14" textLength="128.96094">Managed Service </tspan>
<tspan font-family="Arial" font-size="16" font-weight="500" x="49.75781" y="31.523438" textLength="60.484375">Instance</tspan>
</text>
<path d="M 384.9481 39.49993 L 410.0271 19.566032 L 410.00054 29.631994 L 614.9472 30.172747 L 614.9738 20.106784 L 639.9472 40.172747 L 614.86825 60.106645 L 614.8948 50.040683 L 409.9481 49.49993 L 409.92156 59.56589 Z" fill="gray"/>
<text transform="translate(421.804 32.87919) rotate(-.1511748)" fill="white">
<tspan font-family="Arial" font-size="12" font-weight="500" fill="white" x="54.26758" y="11" textLength="72.71484">Bind Instance</tspan>
</text>
<text transform="translate(462.4477 59.30371)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x="6.646484" y="11" textLength="86.70703">Service Account</tspan>
</text>
<line x1="602.9" y1="249.5" x2="637.1" y2="249.5" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<line x1="192.9" y1="39.33634" x2="202.1" y2="39.33634" marker-end="url(#FilledArrow_Marker)" marker-start="url(#FilledArrow_Marker_2)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<path d="M 300 200 L 300 215.9 L 300 315.5 L 369.5 315.5 L 404.1 315 L 407.1 315" marker-end="url(#FilledArrow_Marker)" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/>
<rect x="430" y="285" width="150" height="80" fill="white"/>
<text transform="translate(440 296.21484)" fill="#383838">
<tspan font-family="Arial" font-size="12" font-weight="bold" fill="#383838" x="0" y="11" textLength="40.6875">Secret:</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" fill="#383838" x="0" y="25.392578" textLength="124.74023">Connection Credentials</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" fill="#383838" x="0" y="39.785156" textLength="43.347656">Service </tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" fill="#383838" x="42.685547" y="39.785156" textLength="83.37305">Account Details</tspan>
<tspan font-family="Arial" font-size="12" font-weight="500" fill="#383838" x="0" y="54.177734" textLength="12"></tspan>
</text>
<text transform="translate(259 432.2383)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="500" x=".08203125" y="14" textLength="81.83594">Kubernetes</tspan>
</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.8 KiB

View File

@ -0,0 +1,125 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" version="1.1" viewBox="71 1022 560 377" width="560pt" height="377pt" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata> Produced by OmniGraffle 7.5
<dc:date>2017-11-17 23:02:50 +0000</dc:date>
</metadata>
<defs>
<filter id="Shadow" filterUnits="userSpaceOnUse">
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="1.308"/>
<feOffset in="blur" result="offset" dx="0" dy="2"/>
<feFlood flood-color="black" flood-opacity=".5" result="flood"/>
<feComposite in="flood" in2="offset" operator="in"/>
</filter>
<marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" viewBox="-1 -6 14 12" markerWidth="14" markerHeight="12" color="black">
<g>
<path d="M 11.428568 0 L 0 -4.285713 L 0 4.285713 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
</g>
</marker>
<font-face font-family="Arial" font-size="12" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Helvetica" font-size="12" units-per-em="1000" underline-position="-75.68359" underline-thickness="49.316406" slope="0" x-height="522.9492" cap-height="717.28516" ascent="770.0195" descent="-229.98047" font-weight="500">
<font-face-src>
<font-face-name name="Helvetica"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="11" panose-1="2 11 6 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="73.24219" slope="0" x-height="518.5547" cap-height="716.3086" ascent="905.2734" descent="-211.91406" font-weight="500">
<font-face-src>
<font-face-name name="ArialMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="12" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
<font-face font-family="Arial" font-size="16" panose-1="2 11 7 4 2 2 2 2 2 4" units-per-em="1000" underline-position="-105.95703" underline-thickness="104.98047" slope="0" x-height="518.5547" cap-height="715.8203" ascent="905.2734" descent="-211.91406" font-weight="bold">
<font-face-src>
<font-face-name name="Arial-BoldMT"/>
</font-face-src>
</font-face>
</defs>
<g stroke="none" stroke-opacity="1" stroke-dasharray="none" fill="none" fill-opacity="1">
<title>V2b</title>
<g>
<title>Layer 1</title>
<g>
<xl:use xl:href="#id118_Graphic" filter="url(#Shadow)"/>
<xl:use xl:href="#id119_Graphic" filter="url(#Shadow)"/>
<xl:use xl:href="#id121_Graphic" filter="url(#Shadow)"/>
</g>
<line x1="118.75" y1="1047.5" x2="118.75" y2="1397.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="324.25" y1="1047.5" x2="324.25" y2="1397.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="529.75" y1="1047.5" x2="529.75" y2="1397.5" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="3"/>
<line x1="341.25" y1="1125.8936" x2="502.3641" y2="1168.487" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="373.2558" y="1136.263" width="109" height="25" fill="white"/>
<text transform="translate(378.2558 1141.5667)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".4746094" y="11" textLength="98.05078">Provision Instance</tspan>
</text>
<line x1="515.25" y1="1207.9547" x2="350.17202" y2="1249.6879" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="276.75" y="1260.5592" width="96" height="38" fill="white"/>
<text transform="translate(281.75 1265.5592)" fill="black">
<tspan font-family="Helvetica" font-size="12" font-weight="500" x=".31152344" y="11" textLength="85.37695">ServiceInstance</tspan>
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="17.32129" y="25" textLength="51.35742">Resource</tspan>
</text>
<rect x="276.75" y="1088.1307" width="96" height="38" fill="white"/>
<text transform="translate(281.75 1093.1307)" fill="black">
<tspan font-family="Helvetica" font-size="12" font-weight="500" x=".31152344" y="11" textLength="85.37695">ServiceInstance</tspan>
<tspan font-family="Helvetica" font-size="12" font-weight="500" x="17.32129" y="25" textLength="51.35742">Resource</tspan>
</text>
<line x1="133.5" y1="1106.6307" x2="264.37955" y2="1107.5185" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<line x1="133.5" y1="1279.0592" x2="264.37955" y2="1279.947" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="147.41178" y="1268.0097" width="105" height="23" fill="white"/>
<text transform="translate(152.41178 1273.3298)" fill="black">
<tspan font-family="Arial" font-size="11" font-weight="500" x=".41967773" y="10" textLength="94.16064">get serviceinstance</tspan>
</text>
<line x1="311" y1="1310.1637" x2="145.92202" y2="1351.8969" marker-end="url(#FilledArrow_Marker)" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<rect x="189.53932" y="1321.797" width="52" height="25" fill="white"/>
<text transform="translate(194.53932 1327.1007)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".328125" y="11" textLength="41.34375">READY</tspan>
</text>
<rect x="279" y="1022.544" width="101" height="39" fill="white"/>
<text transform="translate(284 1027.6514)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".4794922" y="11" textLength="90.04102">Service Catalog</tspan>
<tspan font-family="Arial" font-size="12" font-weight="bold" x="15.148438" y="25.392578" textLength="60.703125">API Server</tspan>
</text>
<rect x="488" y="1022.544" width="95" height="25" fill="white"/>
<text transform="translate(493 1027.8477)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".13964844" y="11" textLength="84.7207">Service Broker</tspan>
</text>
<rect x="71.5" y="1022.544" width="106" height="25" fill="white"/>
<text transform="translate(76.5 1027.8477)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="bold" x=".32226562" y="11" textLength="95.35547">Cluster Operator</tspan>
</text>
<g id="id118_Graphic">
<rect x="198.8721" y="1294.3963" width="22" height="25" fill="white"/>
<rect x="198.8721" y="1294.3963" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(203.8721 1299.7)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">3.</tspan>
</text>
</g>
<g id="id119_Graphic">
<rect x="415.25" y="1106.263" width="22" height="25" fill="white"/>
<rect x="415.25" y="1106.263" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(420.25 1111.5667)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">1.</tspan>
</text>
</g>
<g id="id121_Graphic">
<rect x="576.75" y="1132.263" width="22" height="25" fill="white"/>
<rect x="576.75" y="1132.263" width="22" height="25" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
<text transform="translate(581.75 1137.5667)" fill="black">
<tspan font-family="Arial" font-size="12" font-weight="500" x=".9960938" y="11" textLength="10.007812">2.</tspan>
</text>
</g>
<path d="M 558 1166 L 617.5 1166 C 624.538 1166 630.25 1175.52 630.25 1187.25 C 630.25 1198.98 624.538 1208.5 617.5 1208.5 L 558 1208.5 C 550.962 1208.5 545.25 1198.98 545.25 1187.25 C 545.25 1175.52 550.962 1166 558 1166" fill="white"/>
<path d="M 558 1166 L 617.5 1166 C 624.538 1166 630.25 1175.52 630.25 1187.25 C 630.25 1198.98 624.538 1208.5 617.5 1208.5 L 558 1208.5 C 550.962 1208.5 545.25 1198.98 545.25 1187.25 C 545.25 1175.52 550.962 1166 558 1166" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1" stroke-dasharray="4,4"/>
<text transform="translate(558.75 1178.4883)" fill="black">
<tspan font-family="Arial" font-size="16" font-weight="bold" x=".53125" y="14" textLength="56.9375">Service</tspan>
</text>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.4 KiB