Terminology
flowchart TD
U(User) -->|1..n| P(Project)
P ==>|1...n| R(Repository)
P ==>|1...n| E(Environment)
P ==>|1..n| M(Member)
M -.->|References| U
E -->|1...n| D(Deployment)
D -->|1...n| S(Service)
S -.->|References| R
Users
Anyone authorized by your OAuth provider has access to your Komander instance.
Users can create Projects.
For each Project, a user can have one of 3 roles: Admin, Dev or DevOps.
When you create a Project, you automatically are an Admin, then you can invite people and give them a role.
Projects
A Komander Project is a collection of Repositories, Environments and Users.
Create
Depending on the git provider, it may be linked to a project or group in the git provider. For example, if your provider is GitLab and you create a project, it will automatically create a group in GitLab.
Delete
Deleting a project in Komander doesn't delete it in your git provider.
Repositories
Repositories correspond to repositories in your git provider, but Komander holds additional data regarding their configuration as applications, or Services.
Create
You can either create a repository, or add one that is already present in your git provider to Komander.
Creating a repository from scratch lets you choose a Repository Template which:
- Creates teh repository in your git provider
- Clones it to your
/komander_projects
folder - Runs the
init_commands
- Copies the
template_files
- Commits
- Push
When adding an existing repository:
- Clones it to your
/komander_projects
folder - Copies the
template_files
- Commits to a
komander-init
branch - Push
- Creates a Merge Request (or Pull Request)
Configuration
Configuring Ports, Volumes and Environment variables is useful when creating Services.
Delete
Deleting a repository in Komander also deletes it in your git provider, and deletes its folder on your disk.
Environments
For each project, you can create an unlimited number of environment. What we usually call "DEV", "STAGING", "PROD".
Each environment can use either Docker Compose or Kubernetes to run Deployments.
Environments are shared between users of a project (but not necessarily deployments).
Deployments
Deployments along with environments are used by the Komander CLI to run applications.
Sharing
Each deployment is by default private (only you can see it), but you can share it with other members of the project.
When you share a deployment, the environment variables that are secret, are cleared and you should specify them again if needed.
Services
For each deployment, you can add services. A service can be thought of as a Docker Container.
Services can reference either a repository, or any docker image.
If you choose to reference a repository, it will automatically add Ports, Volumes and Variables defined in your repository.