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.