clearml-docs/docs/deploying_clearml/enterprise_deploy/delete_tenant.md

3.1 KiB

title
Deleting Tenants from ClearML

The following is a step-by-step guide for deleting tenants (i.e. companies, workspaces) from ClearML.

:::caution Deleting a tenant is a destructive operation that cannot be undone.

  • Make sure you have the data prior to deleting the tenant.
  • Backing up the system before deleting is recommended. :::

The tenant deletion is done from MongoDB, ElasticsSearch, and the Fileserver.

The first two are done from within the apiserver container, and last from within the fileserver container.

Any external artifacts (ex: AWS S3, GCS, minio) can be removed manually.

Deleting Tenants from MongoDB and ElasticSearch

  1. Enter the apiserver in one of the following ways

    • In docker-compose:

      sudo docker exec -it allegro-apiserver /bin/bash
      
    • In Kubernetes:

      kubectl -n <namespace> exec -it <apiserver pod name> -c clearml-apiserver -- /bin/bash
      
  2. Set the ID and the name of the company (tenant) you wish to delete

    tenant_to_delete=<tenant-id>
    company_name_to_delete="<company-name>"
    
  3. Delete the company's data from MongoDB:

    PYTHONPATH=../trains-server-repo python3 \
      -m jobs.management.delete_company_data_from_mongo \
      --id $tenant_to_delete \
      --name <company-name> \
      --delete-user
    

    :::note This also deletes the admin users. Remove --delete-user to avoid this. :::

  4. Delete the company's data from ElasticSearch:

    PYTHONPATH=../trains-server-repo python3 \
    -m jobs.management.cleanup_deleted_companies \
    --ids $tenant_to_delete --delete-company
    
  5. Exit pod/container

Deleting Tenants from the Fileserver

To remove a tenant's data from the fileserver, you can choose one of the following methods depending on your deployment setup:

  • Option 1: Delete the tenant's data from within the fileserver container or pod.
  • Option 2: Delete the tenant's data externally from the host system.

Option 1 - From Within the Fileserver

  1. Enter the fileserver in one of the following ways

    • In docker-compose:

      sudo docker exec -it allegro-fileserver /bin/bash
      
    • In Kubernetes:

      kubectl -n <namespace> exec -it <fileserver pod name> -c clearml-fileserver -- /bin/bash
      
  2. Run the following:

    rm -rf /mnt/fileserver/<tenant-id>
    
  3. Exit pod/container

Option 2 - External Deletion

Docker compose

Run the following:

rm -rf /opt/allegro/data/fileserver/<tenant-id>

Kubernetes

Run the following:

kubectl -n <namespace> exec -it <apiserver-pod-name> -c clearml-apiserver -- /bin/bash -c "PYTHONPATH=../trains-server-repo python3 -m jobs.management.delete_company_data_from_mongo --id <tenant-id> --delete-user"

kubectl -n <namespace> exec -it <apiserver-pod-name> -c clearml-apiserver -- /bin/bash -c "PYTHONPATH=../trains-server-repo python3 -m jobs.management.cleanup_deleted_companies --ids <tenant-id> --delete-company"

kubectl -n <namespace> exec -it <fileserver-pod-name> -c clearml-fileserver -- /bin/bash -c "rm -rf /mnt/fileserver/<tenant-id>"