Open Service Broker API Implementation using helm
# start minikube
minikube start
# init helm and install tiller (needed once)
helm init
# build helmi
go get -d github.com/monostream/helmi
cd ${GOPATH:-~/go}/src/github.com/monostream/helmi
go build
# run helmi
./helmi
# create serviceaccount, clusterrolebinding, deployment, service and an optional secret for basic authorization
kubectl create -f docs/kubernetes/kube-helmi-rbac.yaml
kubectl create -f docs/kubernetes/kube-helmi-secret.yaml
kubectl create -f docs/kubernetes/kube-helmi.yaml
# curl to catalog with basic auth
curl --user {username}:{password} http://$(kubernetes ip):30000/v2/catalog
or
./docs/kubernetes/deploy.sh
# curl to catalog with basic auth
curl --user {username}:{password} http://$(kubernetes ip):30000/v2/catalog
Register Helmi Service Broker
cf create-service-broker helmi {username} {password} http://{IP}:5000
List and allow service access
cf service-access
cf enable-service-access {service}
List marketplace and create service instance
cf marketplace
cf create-service {service} {plan} {name}
Bind service to application
cf bind-service {app} {name}
run tests
go test ./pkg/* -v
Helmi can use environment variables to define an external dns name for connection strings and a username/password for basic authentication. The service catalog and referenced Helm charts are also configured using env variables.
Name | Example Value | Description |
---|---|---|
USERNAME |
admin |
Basic auth username |
PASSWORD |
secret |
Basic auth password |
CATALOG_URL |
http://example.com/catalog.zip |
URL to a zipped catalog folder (can also be a local file path to a mounted volume). |
REPOSITORY_URLS |
{"monostream":"http://helm-charts.monocloud.io", "foo":"https:/user:pass@example.com/path"} |
JSON map of name-url pairs |
DOMAIN |
cluster.example.com |
External DNS domain used to construct connection strings |
INGRESS_DOMAIN |
cluster.example.com |
Domain used to construct ingress host strings |
TILLER_NAMESPACE |
tiller |
K8s namespace of tiller server |
HELM_NAMESPACE |
default |
K8s namespace in which Helm charts are deployed |
In the k8s deployment, username and password are read from a secret, see kube-helmi-secret.yaml