Skip to content

New Tenants#

Background#

In order to understand how clients are provisioned, you will need to understand how Helm charts work. The platform uses a Helm chart, Landlord, to provision tenants.

The Landlord Helm chart gets provisioned by landlord-setup in cluster-bootstrap.

Provisioning Tenants#

Requests for new tenants should come in through the IT Common Platform service catalog item in ServiceNow.

Important: By convention tenant names should have the department or college abbreviation prefixed. For example, es-tenant or nis-tenant. If the requestor did not prefix the tenant name, be sure to communicate with them that the name will be updated to follow this convention.

Create the tenant repository#

  • Browse to the Gitlab tenant group and create a new project by clicking on the "New Project" button in the top right.
  • Click on Create blank project
  • Project name: the name of the new tenant
  • Project Description: the RITM number from the ServiceNow request
  • Visibility Level: Internal
  • Click on "Create project"

Make note of the URL to the Gitlab repo.

Once the project is created, select Project Information -> Members. Invite the tenant requestor (see ServiceNow ticket) as a Maintainer of the repository.

Add the tenant to the cluster#

To add a tenant to the cluster, you will need to edit the appropriate file in the it-common-platform-landlord repository.

Cluster Environment File
AWS production prod/tenant-config-0.yaml
AWS pre-production/test TBD
AWS develop This cluster is reserved for the Platform Team. Do not provision tenants here.
On-Premise production TBD; Due to limited resources, tenants in this cluster require approval.
On-Premise pre-production/test pprd/tenant-config-0.yaml
On-Premise develop This cluster is reserved for the Platform Team. Do not provision tenants here.

Note that these files are effectively Helm values files. To understand the impact of a particular setting, read the chart templates.

Create a branch (e.g. RITM0082285/es-cashiering-dvlp) and edit the correct file.

If this is the first tenant for this department, you will need to add a nodePool for the department by adding to the nodePools section of the file near the top.

Example:

  es:
    instances:
      instanceTypes: ["t3a.medium", "t3a.large"]
      emptyTtl: 300
    costCode: es

Note that there are cost implications based on the instanceType specified. If you are specifying an instanceType other than t3a.*, make sure you understand how it will impact cost. To learn more about available instance types, read the AWS documentation

Add the tenant to the tenants section of the file.

Example:

  es-cashiering-dvlp:
    nodePool: es
    operatorEdGroup: dpt.es.app.common-platform.cashiering-dvlp
    rbac:
      - group: dpt.es.app.common-platform.cashiering-dvlp
    logging:
      splunkIndex: vt_it-es
    flux:
      branch: main
Note: The branch: main directive tells FluxCD to look at the main branch rather than the master branch.

Commit, push and submit a merge request to another team member. The reviewer will review and merge your request.

Once merged, the namespace will be provisioned in the cluster. You should be able to confirm this by authenticating to the cluster and issuing command kubectl get namespaces.

Note: Confirm with customer that the rbac ed group has mw-gateway added as a viewer?

Communicate#

Update the ServiceNow request item letting the requestor know that their tenant has been provisioned and provide the URL for the tenant Git repository you created above.

Example:

IT Common Platform tenant TENANT-NAME has been created.

You may begin adding resources to your tenant by creating manifests
in this Git repository: REPO-URL

You can read more about the platform here: https://docs.platform.it.vt.edu/

You can view the status of your tenant here: https://headlamp.prod.aws.itcp.cloud.vt.edu/

To report a problem or incident, submit a ticket through the help desk: https://4help.vt.edu/sp?id=ask_4help
If you are on Slack, you may also post general questions to #it-common-platform-help.