jasonmimick / atlas-osb

DEPRECATED: See https://github.com/mongodb/atlas-osb

Home Page:https://github.com/mongodb/atlas-osb

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Review Multi-Key and Plan Template Spec - Sprint 1 Review

jasonmimick opened this issue · comments

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

  • Jason
  • Pavel
  • Svetlana
  • Andrey
  • Sani
  • Jaagar

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

  • Plan instance state management across different broker deployment environments.
  • Go reconciliation-loop library for plan management

Sprint 2 Goals

  • Complete /provision adding DBUser & IP Address security allocation
  • Implement /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 🍬
See Sprint 2