Cloud Foundry PHP Service Broker
, (*1)
Php project for creating service brokers compatible with Open Service Broker API., (*2)
This project for example can be used to quickly implement new service brokers for Kubernetes or Cloud Foundry., (*3)
Compatibility
-
Open Service Broker API: 2.14
- Asynchronous operations are not supported
- Kubernetes
- v1.10
- Kubernetes Service Catalog: v0.1.35
- Cloud Foundry
Quick start
- Clone this repo or use
composer create-project cloudfoundry-community/php-cf-service-broker
- Add your service inside /config/services.json (remove example first)
- Create a user by doing this in command line:
php bin/addUser.php [user_name] [password]
- (optional) Change configuration inside /config/config.yml
- Create the logic inside
/src/Sphring/MicroWebFramework/ServiceBroker/DefaultServiceBroker.php
(I suggest to see the doc, no need to follow rest url project handle it)
-
Register your new service broker, (*4)
-
in Kubernetes, (*5)
by following https://svc-cat.io/docs/resources/#service-brokers, (*6)
-
in Cloud Foundry, (*7)
by following http://docs.cloudfoundry.org/services/managing-service-brokers.html#register-broker, (*8)
-
Service broker is ready and follow rest url given by the doc, (*9)
Configuration
Common
See /config/config.yml., (*10)
Database
By default this project use an sqlite database,
change to another database by modifying this file: /config/doctrine-driver.yml, (*11)
Adjust logging
See app/app.php
., (*12)
By default this application logs only warnings to stdout., (*13)
To enable logging to file you can uncomment $logger->pushHandler
line., (*14)
To adjust log level you can change \Monolog\Logger::*
value.
For example, to set logging level to debug you can set the value to \Monolog\Logger::DEBUG
.
See Monolog logger source code for details., (*15)
Add more service broker
You can add an infinity of service broker to do this follow these steps:, (*16)
- Add another service inside /config/services.json
- Create a new service broker class and extend Sphring\MicroWebFramework\ServiceBroker\AbstractServiceBroker
- Register your new broker by adding entry in /sphring/service-broker.yml like this:
yaml
service.broker.[your broker name]:
class: Sphring\MicroWebFramework\ServiceBroker\[your broker class name]
extend: service.broker.abstract
- Add in this same file a new entry in
service.broker.list
, example:
yaml
service.broker.list:
class: \ArrayObject
constructor:
1:
ref:
default: service.broker.default
[service name from services.json]: service.broker.[your broker name]
- Unvalidate cache by doing in command line
touch sphring/main.yml
or set cache to false
inside /config/config.yml
- Your new service broker is available
Run as a Cloud Foundry app
- Create a database service which his name follow this regex:
/.*(postgres|pgsql|db|database|my|maria|oracle|oci).*/i
(note: add in composer.json
other pdo driver than pdo_mysql)
- Push the app (run
cf push
)
- Bind your database service on your app
- Restage your app
- Service broker app is ready try go to
http://your_url/v2/catalog
you should see your catalog
Development environment
Router for PHP embedded web server
cd app
php -S 0.0.0.0:8888 ../config/routes/router.php
Tests
Tests use PHPUnit.
Run with your command line:
vendor/bin/phpunit --bootstrap tests\bootstrap.php --no-configuration tests
, (*17)
Add a service to test
- Update services.json inside tests configuration directory.
- Update service-broker.yml inside tests configuration directory.
- Run
vendor/bin/phpunit --bootstrap tests\bootstrap.php --no-configuration tests
See also
Open Service Broker API:
- https://github.com/openservicebrokerapi/servicebroker, (*18)
K8s Service Catalog:
- Service Catalog documentation in the official K8s documentation
- Service Catalog documentation at the official site of K8s Service Catalog
- Service Catalog datastructures and interfaces in its source code
- Compatibility of Service Catalog with Open Service Broker API, (*19)