Design doc for Multi Enviroment.

This doc is to cover:

  • The current flows (v1) and OSIO service interactions with tenant clusters.

  • What needed to be done (flows v2) to support OSD clusters in OSIO. Supporting OSD clusters will also require supporting multiple clusters/environments per user.

It doesn’t cover all our plans to improve the existing Getting Started, Build and ather services. It includes only bare minimum changes relevant to multi env support.

1. Models

1.1. Cluster (Cluster Service)

apiURL
appDNS
capacityExhausted
consoleURL
loggingURL
metricsURL
name
devtools-sre token

1.2. User

[ ] Space (id) - WIT
[ ] Cluster (apiURL) - Cluster Service
...

1.3. Space

User - WIT
[ ] environment
[ ] pipeline-environment-map
...

1.4. App (codebase?) - Build Service

pipeline-environment-map

1.5. PipelineEnvironmentMap - Build Service

ID
name
[stage_name] environment (where stage_name = “test|stage|run|...”. Stage names are used in Jenkins file in the app)

1.6. EnvironmentType - Environment Service

Name
version
template

1.7. Environment - Environment Service

name
Environment-type
namespaceName
Cluster (apiURL)
Profile (that will be used for the account of the space owner)
ProfileContributor (that will be used for the contributor accounts)

Environment-type: Possible values: build(jenkins), dev(che), test, stage, run(prod?), custom. Only one build and dev env allowed per space. Multiple deployment (test,stg,prod,custom) envs allowed per space.

namespaceName: Optional. If not specified then auto-created by Tenant Service. Namespace can be set for build and deploy (test,stage,run,custom) environments. It’s not set for dev (it’s always auto-generated because it’s user specific. Each user will have his own ns in dev env cluster for che ws)

ProfileContributor: if not set, then contributor is not allowed to create an instance of the namespace within the space/cluster. In this case the contributor will get access to the only namespace instance of that environment that is set for the space.

2. Flows

2.1. Create Environment Flow V2

Create Environment Flow V2

2.2. Create Pipeline Environment Map Flow V2

Create Pipeline Environment Map Flow V2

2.3. Create App Flow V1

Create App Flow V1

2.4. Create App Flow V2

Create App Flow V2

2.5. Pipeline View Flow V2

Pipeline View Flow V2

2.6. Open Che Workspace Flow V1

Open Che Workspace Flow V1

2.7. Open Che Workspace Scenarios Flow V2

Open Che Workspace Scenarios Flow V2

2.8. Tenant Flow for Che V2

Tenant Flow for Che V2

2.9. Tenant Flow App Environment V2

Tenant Flow App Environment V2