Project Syn Architecture

            /-------------------------\                                         Project Syn enabled Kubernetes cluster
            +                         |                                         +-------------------------------------+
       +--->+ Lieutenant API          +<-----+                                  |                                     |
       |    + cBLU                    |      |  Cluster information             |   /--------------------\            |
       |    \-+---------------------+-/      |  SSH keys                        |   |                    |            |
       |      |                     |        +----------------------------------|---+ Steward            |            |
       |      | Lieutenant Operator +----+                                      |   | cBLU               |            |
       |      | cBLU                |    |                                      |   \---------+----------/            |
       |      \---------------------/    |          +--------+                  |             |                       |
       |                                 |          |        |                  |             |                       |
       |                                 +--------->+ Vault  +<-----------------|-----+       | Deployment            |
       |                                            | {s}    |                  |     |       | Reconciliation        |
       |    Get cluster, tenant and                 +--------+                  |     |       |                       |
       |    Git repo information                                                |     |       |                       |
       |                                                                        |     |       v                       |
       |    /------------------------\  Push compiled +-----------------+       |   +-+-------+----------+            |
       |    |                        |  catalog       |                 |       |   |                    |            |
       +----+ Commodore              +--------------->+ Cluster catalog +<------|---+ Argo CD            |            |
            | cBLU                   |                | cGRE            |       |   |                    |            |
            \-----+------+--------+--/                +-----------------+       |   +--------------------+            |
                  ^      ^        ^                                             |                                     |
                  |      |        |                                             |                                     |
          +-------+      +-----+  +--------------------+                        |                                     |
          |                    |                       |                        |                                     |
+---------------------------------------------+        |                        |                                     |
|         |                    |              |        |                        |                                     |
| +-------+-------+ +----------+----------+   |  +-----+------+                 |                                     |
| |               | |                     |   |  |            |                 |                                     |
| | Common        | | Tenant and cluster  |   |  | Commodore  |                 |                                     |
| | configuration | | configuration       |   |  | Components |                 |                                     |
| | cGRE          | | cGRE                |   |  |            |                 |                                     |
| +---------------+ +---------------------+   |  +-----+------+                 |                                     |
|                   Git repo created &        |        ^                        |                                     |
|                   configured by Lieutenant  |        | Update                 |                                     |
|                   Operator                  |        |                        +-------------------------------------+
+------------------------------------+--------+        |
Configuration Git repositories       ^                 |                        Legend
                                     | Update          |                        +------------------------+
                                     |                 |                        | Project Syn Tool cBLU  |
                           +---------+------------+    |                        +------------------------+
                           |                      |    |
                           | Renovate             +----+                        +------------------------+
                           |                      |                             | Git repository cGRE    |
                           +----------------------+                             +------------------------+

Main Tools

Tool Purpose

Commodore

Configuration generator leveraging a hierarchical configuration model. Uses Kapitan under the hood.

Lieutenant Operator

Manages the CRDs Cluster, Tenant, GitRepo. Implements the business logic for handling all aspects around Git repositories for clusters and tenants.

Lieutenant API

REST API to expose the functionality of the Lieutenant Operator and to enforce some defaults.

Steward

In-cluster agent which bootstraps, configures and starts Argo CD (GitOps operator) and takes care of keeping the Syn cluster tools up and running.

Third-party Tools

Tool Purpose

Argo CD

GitOps operator running on each cluster, taking care of enforcing the defined state.

HashiCorp Vault

Stores secrets in a secure way.

Kapitan

Configuration management engine, the heart of Commodore.

Renovate

Version checker which helps to keep tooling up-to-date.

Crossplane

Cloud native service provisioning.

GitLab

Git repository management.