{"id":13681994,"url":"https://github.com/cloudfoundry/overview-broker","last_synced_at":"2025-04-23T21:23:21.884Z","repository":{"id":39887935,"uuid":"89483669","full_name":"cloudfoundry/overview-broker","owner":"cloudfoundry","description":"A service broker that provides an overview of its service instances and bindings. Conforms to the Open Service Broker API standard.","archived":false,"fork":false,"pushed_at":"2025-04-01T11:28:25.000Z","size":857,"stargazers_count":19,"open_issues_count":19,"forks_count":17,"subscribers_count":25,"default_branch":"master","last_synced_at":"2025-04-18T05:54:19.566Z","etag":null,"topics":["cloud-foundry","kubernetes","open-service-broker","open-service-broker-api","service-broker","services"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cloudfoundry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-04-26T13:26:19.000Z","updated_at":"2025-01-21T20:19:24.000Z","dependencies_parsed_at":"2025-04-17T17:13:45.699Z","dependency_job_id":"4a0c2dc7-955e-4f2e-ac82-2c82354be8a7","html_url":"https://github.com/cloudfoundry/overview-broker","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Foverview-broker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Foverview-broker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Foverview-broker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cloudfoundry%2Foverview-broker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cloudfoundry","download_url":"https://codeload.github.com/cloudfoundry/overview-broker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250515508,"owners_count":21443428,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-foundry","kubernetes","open-service-broker","open-service-broker-api","service-broker","services"],"created_at":"2024-08-02T13:01:38.894Z","updated_at":"2025-04-23T21:23:21.866Z","avatar_url":"https://github.com/cloudfoundry.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Overview Broker\n\n| Job | Status |\n| :-: | :----: |\n| Unit | ![Unit status](https://hush-house.pivotal.io/api/v1/teams/marketplace/pipelines/best-broker/jobs/absolute-unit/badge) |\n| Conformance | ![Conformance status](https://hush-house.pivotal.io/api/v1/teams/marketplace/pipelines/best-broker/jobs/conformance/badge) |\n| [Dockerhub](https://hub.docker.com/r/ismteam/overview-broker) | ![Dockerhub status](https://hush-house.pivotal.io/api/v1/teams/marketplace/pipelines/best-broker/jobs/push-to-dockerhub/badge) |\n\nA simple service broker conforming to the [Open Service Broker API](https://github.com/openservicebrokerapi/servicebroker/)\nspecification that hosts a dashboard showing information on service instances\nand bindings created by any platform the broker is registered with.\n\nOther fun features this broker provides include:\n* Edit the broker catalog without redeploys to speed up testing\n* History of recent requests and responses\n* Ability to enable different error modes to test platform integrations\n* Change the response mode on the fly (sync only/async only/async where possible)\n* A range of configuration parameter schemas for provision service instance,\n  update service instance and create service binding\n* Asynchronous service instance provisions, updates and deletes\n* Asynchronous service binding creates and deletes\n* Fetching service instances and bindings\n* Generic extensions for fetching the [Health](extensions/health.yaml) and\n  [Info](extensions/info.yaml) for a service instance\n\n### What is the Open Service Broker API?\n\n![Open Service Broker API](images/openservicebrokerapi.png)\n\nThe [Open Service Broker API](https://www.openservicebrokerapi.org) project\nallows developers, ISVs, and SaaS vendors a single, simple, and elegant way to\ndeliver services to applications running within cloud native platforms such as\nCloud Foundry, OpenShift, and Kubernetes. The project includes individuals from\nFujitsu, Google, IBM, Pivotal, RedHat and SAP.\n\n### Quick start\n\n#### Dockerhub\n\nThe latest version of `overview-broker` can always be found on\n[Dockerhub](https://hub.docker.com/r/ismteam/overview-broker). You can\npull and run the latest image with:\n```bash\ndocker pull ismteam/overview-broker\ndocker run ismteam/overview-broker\n```\n\n#### Build it\n```bash\ngit clone git@github.com:cloudfoundry/overview-broker.git\ncd overview-broker\nnpm install\n\n# Start overview-broker\nnpm start\n\n# Or to run the tests\nnpm test\n```\n\n#### Configuration\n* To set the BasicAuth credentials, set the `BROKER_USERNAME` and\n  `BROKER_PASSWORD` environmental variables. Otherwise the defaults of `admin`\n  and `password` will be used.\n* To expose a route service, set the `ROUTE_URL`\n  environmental variable to a url. It must have https scheme.\n* To expose a syslog drain service, set the `SYSLOG_DRAIN_URL`\n  environmental variable to a url.\n* To expose a volume mount service, set the `EXPOSE_VOLUME_MOUNT_SERVICE`\n  environmental variable to `true`.\n* To generate many plans with a range of configuration parameter schemas, set\n  the `ENABLE_EXAMPLE_SCHEMAS` environmental variable to `true`.\n* By default, all asynchronous operations take 1 second to complete. To override\n  this, set the `ASYNCHRONOUS_DELAY_IN_SECONDS` environmental variable to the\n  number of seconds all operations should take.\n* To specify how long platforms should wait before timing out an asynchronous\n  operation, set the `MAXIMUM_POLLING_DURATION_IN_SECONDS` environmental\n  variable.\n* To specify how long Platforms should wait in between polling the\n  `/last_operation` endpoint for service instances or bindings, set the\n  `POLLING_INTERVAL_IN_SECONDS` environmental variable to the number of seconds\n  a platform should wait before trying again.\n* To change the name of the service(s) exposed by the service broker, set the\n  `SERVICE_NAME` environmental variable.\n* To change the description of the service(s) exposed by the service broker,\n  set the `SERVICE_DESCRIPTION` environmental variable.\n* To set the response mode of the service broker (note that this can also be\n  changed via the broker dashboard), set the `RESPONSE_MODE` environmental\n  variable to one of the [available modes](app.js#L42).\n* To set the error mode of the service broker (note that this can also be\n changed via the broker dashboard), set the `ERROR_MODE` environmental\n variable to one of the [available modes](app.js#L28).\n\n---\n\n### Platforms\n\n#### Cloud Foundry\n\n##### 1. Deploying the broker\n\n* First you will need to deploy the broker as an application:\n    ```bash\n    cf push overview-broker -i 1 -m 256M -k 256M --random-route -b https://github.com/cloudfoundry/nodejs-buildpack\n    ```\n* You can also use an application manifest to deploy the broker as an\n    application:\n    ```bash\n    wget https://raw.githubusercontent.com/cloudfoundry/overview-broker/master/examples/cloudfoundry/manifest.yaml\n    cf push\n    ```\n* The overview broker dashboard should now be accessible:\n    ```bash\n    open \"https://$(cf app the-best-broker | awk '/routes:/{ print $2 }')/dashboard\"\n    ```\n\n##### 2. Registering the broker\n\n* To register the broker to a space (does not require admin credentials), run:\n    ```bash\n    cf create-service-broker --space-scoped overview-broker admin password \u003curl-of-deployed-broker\u003e\n    ```\n    The basic auth credentials \"admin\" and \"password\" can be specified if needed\n    (see [Configuration](#configuration)).\n* The services and plans provided by this broker should now be available in the\n  marketplace:\n  ```bash\n  cf marketplace\n  ```\n\n\n##### 3. Creating a service instance\n\n* Now for the exciting part... it's time to create a new service instance:\n    ```bash\n    cf create-service overview-service small my-instance\n    ```\n    You can give your service a specific name in the dashboard by providing the\n    `name` configuration parameter:\n    ```bash\n    cf create-service overview-service small my-instance -c '{ \"name\": \"My Service Instance\" }'\n    ```\n* If you now head back to the dashboard, you should see your new service\n  instance!\n\n##### 4. Creating a service binding\n\n* To bind the service instance to your application, you will need to first push\n  an application to Cloud Foundry with `cf push`. You can then create a new\n  binding with:\n    ```bash\n    cf bind-service \u003capp-name\u003e my-instance\n    ```\n\n#### Kubernetes\n\n##### 1. Deploying the broker\n\n* Deploy the broker and a load balancer that will be used to access it:\n    ```bash\n    wget https://raw.githubusercontent.com/cloudfoundry/overview-broker/master/examples/kubernetes/overview-broker-app.yaml\n    wget https://raw.githubusercontent.com/cloudfoundry/overview-broker/master/examples/kubernetes/overview-broker-service.yaml\n    kubectl create -f overview-broker-app.yaml\n    kubectl create -f overview-broker-service.yaml\n    ```\n    You can check this has succeeded by running `kubectl get deployments` and\n    `kubectl get services`.\n* Once the load balancer is up and running, he overview broker dashboard should\n  be accessible:\n    ```bash\n    open \"http://$(kubectl get service overview-broker-service -o json | jq -r .status.loadBalancer.ingress[0].ip)/dashboard\"\n    ```\n\n##### 2. Registering the broker\n\n* To register the broker, you first need to install the Service Catalog. The\n  instructions to do this can be found\n  [here](https://github.com/kubernetes-sigs/service-catalog/blob/master/docs/install.md).\n  If service catalog fails to install due to permissions, you might want to look\n  at [this guide](https://helm.sh/docs/using_helm/#tiller-and-role-based-access-control).\n* You should now be able to register the service broker you deployed earlier\n  by creating a `clusterservicebrokers` custom resource:\n    ```bash\n    BROKER_URL=\"http://$(kubectl get service overview-broker-service -o json | jq -r .status.loadBalancer.ingress[0].ip)\"\n    cat \u003c\u003cEOF | kubectl create -f -\n    apiVersion: v1\n    kind: Secret\n    metadata:\n      name: overview-broker-secret\n      namespace: default\n    type: Opaque\n    stringData:\n      username: admin\n      password: password\n    EOF\n    cat \u003c\u003cEOF | kubectl create -f -\n    apiVersion: servicecatalog.k8s.io/v1beta1\n    kind: ClusterServiceBroker\n    metadata:\n      name: overview-broker\n      namespace: default\n    spec:\n      url: ${BROKER_URL}\n      authInfo:\n        basic:\n          secretRef:\n            name: overview-broker-secret\n            namespace: default\n    EOF\n   ```\n  Note that if you changed the default basic auth credentials (see\n  [Configuration](#configuration)), then you will need to change the Secret\n  defined above.\n* The services and plans provided by this broker should now be available:\n    ```bash\n    kubectl get clusterserviceclasses\n    kubectl get clusterserviceplans\n    ```\n\n##### 3. Creating a service instance\n\n* Now for the exciting part... it's time to create a new service instance:\n    ```bash\n    cat \u003c\u003cEOF | kubectl create -f -\n    apiVersion: servicecatalog.k8s.io/v1beta1\n    kind: ServiceInstance\n    metadata:\n      name: my-instance\n      namespace: default\n    spec:\n      clusterServiceClassExternalName: overview-service\n      clusterServicePlanExternalName: small\n    EOF\n    ```\n* If you now head back to the dashboard, you should see your new service\n  instance!\n\n##### 4. Creating a service binding\n\n* Creating a service binding with service-catalog will result in a new Secret\n  being created which represents the information returned from the service\n  broker for the binding. To create a new service binding, you can run:\n    ```bash\n    cat \u003c\u003cEOF | kubectl create -f -\n    apiVersion: servicecatalog.k8s.io/v1beta1\n    kind: ServiceBinding\n    metadata:\n      name: my-instance-binding\n      namespace: default\n    spec:\n      instanceRef:\n        name: my-instance\n      secretName: my-instance-secret\n    EOF\n    ```\n  To see the contents of the service binding, you can get the associated secret\n  with:\n    ```bash\n    kubectl get secret my-instance-secret -o yaml\n    ```\n  Note that the data shown will be base64 encoded.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudfoundry%2Foverview-broker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcloudfoundry%2Foverview-broker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcloudfoundry%2Foverview-broker/lists"}