Over the last couple months we’ve been working on something special for the Cloud Foundry community. Modern applications, like those that developers are creating in Cloud Foundry, are big consumers for object storage, like Amazon S3. Today, I’m proud to announce our latest project: The EMC Elastic Cloud Storage (ECS) Service Broker for Cloud Foundry — wow, that’s a mouthful 😉
SERVICE BROKE- WAT?
As anyone who’s following or using Cloud Foundry (or Heroku, or other “structured” PaaS solutions), we want to keep these applications mostly stateless and free of persistence. That way we can open up a lot of the platform capabilities for self-healing & scaling. Of course, applications still need to maintain state, and persist data! One Cloud Foundry solution to this is to provide platform services, available in a marketplace, customized for each cloud operator or enterprise.
This is where the Service Broker comes in. It sits outside the Cloud Foundry application space, and accepts user-driven requests to create new external or persistent service instances, and bind them to one or more applications that you’ve deployed with Cloud Foundry.
SO, WHAT EXACTLY HAVE WE BUILT
Since I’m so excited about the Cloud Foundry ecosystem, and similarly excited about what we at EMC are doing with our object storage and Hadoop platform, ECS, I decided to get started on a service broker to join these things together. We’re in our first release, and there’s more work to do, but the broker opens up some critical functionality:
- Create and Delete Object Storage Buckets
- Bind one or more Cloud Foundry applications to a bucket, with unique credentials for each application
- Support quota enforced plans for buckets to limit the amount of capacity
- Support per-application permissions (read, write, ACL change, etc.) for buckets
- Upgrade or downgrade plans of an existing bucket
- Browse Cloud Foundry instance and binding metadata through an internal bucket
- Specify an ECS namespace and replication group for provisioning
- Provide a string prefix for bucket and user names
- Support a self-signed SSL certificate for the ECS management API
- Configure offered services & plans through a YAML based configuration
It stores the metadata for any provisioning activities in a bucket that gets automatically created on startup, and as a developer, you can dynamically create buckets through a CF manifest, or CF CLI.
The broker runs as a Spring Boot application based on the Spring Cloud Cloud Foundry Service Broker. It can be deployed any way that you’d like to run a JVM app, including as Cloud Foundry application itself. You can use buckets with a single app, or share between multiple apps without ever looking at the ECS management GUI or API.
If you’re interested in running the broker yourself, head on over to the repo, check out the README and have fun!