galak-fyyar / spring-cloud-cloudfoundry

Integration between Cloudfoundry and the Spring Cloud tools

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Integration between Cloud Foundry and Spring Cloud.

Service Broker Example

Example script to deploy and regis#ter a broker:

DOMAIN=mydomain.net
cf push app -p target/*.jar --no-start
cf env app | grep SPRING_PROFILES_ACTIVE || cf set-env app SPRING_PROFILES_ACTIVE cloud
cf env app | grep APPLICATION_DOMAIN || cf set-env app APPLICATION_DOMAIN ${DOMAIN}

cf services | grep configserver && cf bind app configserver

cf restart app
cf create-service-broker app user secure http://app.${DOMAIN}

for f in `cf curl /v2/service_plans | grep '\"guid' | sed -e 's/.*: "//' -e 's/".*//'`; do
    cf curl v2/service_plans/$f -X PUT -d '{"public":true}'
done

cf create-service app free appi

At which point you have a service called "app" and a service instance called "appi":

$ cf marketplace
OK

service        plans   description
app            free    Singleton service app
$ cf services
Getting services in org default / space development as admin...
OK

name           service        plan   bound apps
appi           app            free

Your application can define a configuration property application.domain (defaults to "cfapps.io") which will be used to construct the credentials for any app that binds to your service. Or it can define the URI directly using cloudfoundry.service.definition.metadata.uri.

You can change some other basic metadata by setting config properties:

  • cloudfoundry.service.definition.* is bound to a ServiceDefinition (defined in spring-boot-cf-service-broker) which has optional setters for plans and metadata.

  • cloudfoundry.service.broker.* is bound to an internal bean. It has optional setters for "name" (the service name), "description" (user friendly description) and "prefix" (used to create a unique id from the name).

An app which binds to your service will get credentials that contain a "uri" property linking to your service. A Spring Boot app can bind to that through the vcap.services.[service].credentials.uri environment property.

If your service also has a Eureka core dependency, and you can expose it as a Eureka service, then any service which registers with Eureka will also become a Cloud Foundry service.

About

Integration between Cloudfoundry and the Spring Cloud tools