Create a tenant

This how-to guides you to register a new Project Syn tenant. A Project Syn tenant is a prerequisite for synthesizing a cluster.



  1. Ensure Lieutenant permissions on

    • The subgroup cluster-catalogs exists in the customer’s group.

    • Lieutenant (GitLab account lieutenant-prod) has owner permissions on the subgroup cluster-catalogs.

    • Lieutenant has at least maintainer permissions on the customer’s group to create the tenant repository.

    • Renovate (GitLab account vshn-renovate) has at least maintainer permissions on the customer’s group.

  2. Create tenant on To create the tenant follow the guidelines below regarding the fields to fill out.


    Choose a unique ID for the tenant. This field is limited to lower-case characters a-z, numbers 0-9 and -. The length is limited to 1-61 characters.

    This field cannot be changed after creation, it’s used as the Kubernetes object name for the tenant by Lieutenant.

    Choose the customer for which you’re creating the tenant.

    Odoo Customer for invoicing

    Choose the Odoo customer to whom the invoices for this tenant should be sent. Usually this will be the same value as field "Customer". Check with the Service Manager for the customer which Odoo customer should be billed for the customer’s Project Syn clusters.

    Repository Type

    Choose "auto".

    GitRepo URL

    Usually ssh://<customer>/syn-tenant-repo.git.

    Make sure that the GitLab user lieutenant-prod has permissions to create this repository.
    GitRepo Revision

    can usually be left blank.

    Global GitRepo URL

    can usually be left blank.

    Global GitRepo Revision

    can usually be left blank.

The automated setup assumes that the customer’s group on is at<customer>. If this isn’t the case you need to update the created tenant resource. Generally you want to execute the following command on the Lieutenant cluster.

export TENANT_ID=<tenant id> (1)
export CUSTOMER_GROUP=<group name> (2)
kubectl -n lieutenant patch --type=merge tenant ${TENANT_ID} --patch-file /dev/stdin <<EOF
  "spec": {
    "clusterTemplate": {
      "gitRepoTemplate": {
        "path": "${CUSTOMER_GROUP}/cluster-catalogs",
1 Tenant ID from step 2
2 The group namespace in (the group identifier in the URL)