Getting started with Trilio on OpenStack-Helm

1. Prepare for deployment

1.1] Install Helm CLI Client

Ensure the Helm CLI client is installed on the node from which you are installing Trilio for OpenStack.

curl -O https://get.helm.sh/helm-v3.17.2-linux-amd64.tar.gz
tar -zxvf helm*.tar.gz
mv linux-amd64/helm /usr/local/bin/helm
rm -rf linux-amd64 helm*.tar.gz

1.2] (Optional) Install NFS Client Package

If you plan to use NFS as a backup target, install nfs-common on each Kubernetes node where TrilioVault is running. Skip this step for S3 backup targets.

SSH into each Kubernetes nodes which have the following labels

kubectl get nodes --show-labels | grep openstack-control-plane
kubectl get nodes --show-labels | grep openstack-compute

Run this command on the respective nodes:

sudo apt-get install nfs-common -y

1.3] Install Necessary Dependencies

Run the following command on the installation node:

2] Clone Helm Chart Repository

Refer to the link Resources to get release specific values of the placeholder, viz trilio_branch.

3] Configure Container Image Tags

Select the appropriate image values file based on your OpenStack-Helm setup. Update the Trilio-Openstack image tags accordingly.

If your OS Helm cloud version is 2023.1 then images yaml file name is 2023.1.yaml

4] Create the trilio-openstack Namespace

To isolate trilio-openstack services, create a dedicated Kubernetes namespace:

5] Label Kubernetes Nodes for TrilioVault Control Plane

Trilio for OpenStack control plane services should run on Kubernetes nodes labeled with triliovault-control-plane=enabled. Only nodes labeled with openstack-control-plane should be selected. For high availability, it is recommended to use three Kubernetes nodes.

Steps:

1] Retrieve the OpenStack control plane node names:

2] Assign the triliovault-control-plane label to the selected nodes:

3] Verify the nodes with the assigned label:

6] Configure the Backup Target for Trilio-OpenStack

Backup target storage is used to store backup images taken by Trilio and details needed for configuration:

The following backup target types are supported by Trilio

a) NFS

b) S3

Steps:

  1. If using NFS as the backup target, define its details in below file:

  1. If using S3, configure its details in below file:

  1. If using S3 with TLS enabled and self-signed certificates, store the CA certificate in below file:

The deployment scripts will automatically place this certificate in the required location.

We will be using this yaml file in trilio-openstack 'install' command at later step in this document.

7] Provide Cloud Admin Credentials in keystone.yaml

The cloud admin user in Keystone must have the admin role on the cloud domain. Update the required credentials in below file:

8] Retrieve and Configure Keystone, Database and RabbitMQ Credentials

For Openstack Helm; Please ensure that the correct ca.crt is present inside the secret “trilio-ca-cert” in the openstack namespace. If the secret is created with a different name, make sure to update the reference in the ./get_admin_creds.sh script before executing it.

  1. Separate RabbitMQ Installation:

  2. Fetch Internal and Public Domain Names of the Kubernetes Cluster

  3. Fetch Keystone, RabbitMQ, and Database Admin Credentials a. These credentials are required for Trilio deployment. b. Navigate to the utils directory:

    c. Generate the admin credentials file using the previously retrieved domain names

  4. Verify that the credentials file is created:

9] Configure Ceph Storage (if used as Nova/Cinder Backend)

If your setup uses Ceph as the storage backend for Nova/Cinder, configure Ceph settings for Trilio.

Manual Approach

1] Edit the Ceph configuration file:

a) Set rbd_user and keyring (the user should have read/write access to the Nova/Cinder pools). b) By default, the cinder/nova user usually has these permissions, but it’s recommended to verify.

2] Copy the contents of /etc/ceph/ceph.conf into the appropriate Trilio template file:

Automated Approach

1] Run the Ceph configuration script:

2] Verify that the output is correctly written to:

10] Create Docker Registry Credentials Secret

Trilio images are hosted in a private registry. You must create an ImagePullSecret in the trilio-openstack namespace.

1] Navigate to the utilities directory:

2] Run the script with Trilio’s Docker registry credentials kubernetes secret:

3] Verify that the secret has been created successfully:

11. Install Trilio for OpenStack Helm Chart

11.1] Review the Installation Script

11.1.1] Open the install.sh Script

The install.sh script installs the Trilio Helm chart in the trilio-openstack namespace.

11.1.2] Configure Backup Target

Modify the script to select the appropriate backup target:

a) NFS Backup Target: Default configuration includes nfs.yaml.

b) S3 Backup Target: Replace nfs.yaml with s3.yaml.

Example Configuration for S3:

11.1.3] Select the Appropriate OpenStack Helm Version

Use the correct YAML file based on your OpenStack Helm Version:

  • Antelope → 2023.1.yaml

  • Bobcat (Default)→ 2023.2.yaml

11.1.4] Validate values_overrides Configuration

Ensure the correct configurations are used:

  • Disable Ceph in ceph.yaml if not applicable.

  • Remove tls_public_endpoint.yaml if TLS is unnecessary.

11.2] Run the Installation Script

Execute the installation:

11.3] Configure DNS for Public Endpoints

11.3.1] Retrieve Ingress External IP

Example Output:

11.3.2] Fetch TrilioVault FQDNs

Example Output:

If the ingress service doesn’t have an IP assigned, follow these steps:

1] Check the Ingress Controller Deployment

Look for the ingress-nginx-controller deployment, typically in the ingress-nginx or kube-system namespace:

2] Verify the --watch-namespace Arg

If the controller has a --watch-namespace argument, it means it’s watching only specific namespaces for ingress resources.

3] Update watch-namespace to include trilio-openstack

Edit the deployment to include trilio-openstack in the comma-separated list of namespaces:

Example --watch-namespace arg:

4] Restart the Controller

This will happen automatically when you edit the deployment, but you can manually trigger it if needed:

11.4] Verify Installation

11.4.1] Check Helm Release Status

11.4.2] Validate Deployed Containers

Ensure correct image versions are used by checking container tags or SHA digests.

11.4.3] Verify Pod Status

Example Output:

11.4.4] Check Job Completion

Example Output:

11.4.5] Verify NFS Backup Target (if applicable)

Example Output:

11.4.6] Validate S3 Backup Target (if applicable)

Ensure S3 is correctly mounted on all WLM pods.

Trilio-OpenStack Helm Chart Installation is Done!

Logs:

1] triliovault-datamover-api service logs.

Logs available on kuberentes nodes

2] trliovault-datamover service logs

Logs available on kuberentes nodes

3] triliovault-wlm-api, triliovault-wlm-cron, triliovault-wlm-scheduler, triliovault-wlm-workloads services logs

Logs available on kuberentes nodes

12] Install Trilio for OpenStack Horizon Plugin

Below are the steps to patch the Horizon deployment in an OpenStack Helm setup to install the Trilio Horizon Plugin.

12.1] Pre-requisites

  • Horizon is deployed via OpenStack Helm and is running in the openstack namespace.

  • Docker registry secret triliovault-image-registry must already exist in the openstack namespace from the steps performed during Trilio Installation.

  • If not already created, follow this command:

12.2] Patch Horizon Deployment

Use the command below to patch the Horizon deployment with the Trilio Horizon Plugin image. Update the image tag as needed for your release.

12.3] Verification

After patching:

  1. Ensure the Horizon pods are restarted and running with the new image:

  1. Access the Horizon dashboard and verify the TrilioVault section appears in the UI.

Last updated

Was this helpful?