Closed jasonmimick closed 4 years ago
Sprint 1 Review & Demonstration
Atlas Service Broker - Dynamic Plan Templates
What's working
Loading multiple project/org apikeys per broker
Loading templates for plans
/catalog
for dynamic plans
basic /provision
- creating new project and new cluster
Demonstration For this demonstration, we're just running the broker locally as an HTTP Service with it's usual digest authentication as per OSB.
#!/usr/bin/env bash
export BROKER_LOG_LEVEL=DEBUG
export BROKER_HOST=0.0.0.0
export BROKER_APIKEYS=$(cat ./my-creds.json)
export ATLAS_BROKER_TEMPLATEDIR=$(pwd)/samples/active.plans
echo ${BROKER_APIKEYS}
#go run *.go
./dev/scripts/build-production-binary.sh .
./mongodb-atlas-service-broker
For testing purposes, we're utilizing the K8's SIG go-open-service-broker-client and built a simple test cli. This allows us to build more advanced test case scenarios which directly exercise the broker in exact same fashion as it will be used when deployed into Kubernetes or Cloud Foundry.
We're showing 2 operations - /catalog
and /provision
.
./broker-tester -op catalog | jq '.'
This command will create an instance of the "minimal-plan" called whatever we wish. Here is our sample plan template:
name: minimal-plan
description: This is a minimal plan for a cluster
free: true
apiKey: {{ json (index .Credentials.Orgs "5ea0477597999053a5f9cbec") }}
project:
name: {{ .InstanceID }}
desc: "{{ .InstanceID }} description"
cluster:
name: {{ .InstanceID }}
providerSettings:
regionName: "US_EAST_1"
providerName: "AWS"
instanceSizeName: M20
Command to test:
create-service minimal-plan <your_instance_name>
Remaining investigations
Sprint 2 Goals
/provision
adding DBUser & IP Address security allocation/deprovision
and update (we will limit which plan properties can be updated)Ensure /bind
functions for plan-instances
Make sure default database is include in the connection string from bind(), the default database for that user, verify with customer Is the name of the database actually default
?
uri includes user & password -
include all connection string formats, mongodb:// mongodb+srv:// example
{
"binding_name": null,
"credentials": {
"password": "***********",
"uri": "mongodb+srv://5f0552ee-ccd1-4745-8c58-bef0f9161905:********@72c6f109-5f08-4df7-ba2a.cfh3t.azure.mongodb.net/default",
"username": "5f0552ee-ccd1-4745-8c58-bef0f9161905"
}
note - add a doc with for Bind() and add the spec for the bind json, add database, etc...
verify create-service-key
-- just calls bind, need to be able to assign any role.
Note: For these sprints, we concentrate all our testing efforts around main user-case of the "basic main plan" which is "1 project, 1 cluster, 1 user, 1 whitelist"
Current Timelines
Sprint 2 - Alpha Release - Review & Demo - Wednesday July 15th, 2020 Expecting drop of software to start user acceptance testing
Alpha Release "Review" Milestone end July/1st aug~~ Make conditional acceptance approval -
Vacations - 2nd half July
Sprint 3 - Fit & Finish - Target Aug 15, 2020
Sprint 4 - Beta Release - Target Aug 31, 2020
Sprint 1 Complete :candy: See Sprint 2
This issue will track getting LGMT from the stakeholders for https://github.com/jasonmimick/atlas-osb/wiki/Atlas-Service-Broker-Custom-Plans-with-Resource-Templates
DOCS ARE HERE NOW https://github.com/jasonmimick/atlas-osb/blob/ymlplans/docs/custom-plans.md
Required LGTM