Licensing
Every CloudCasa self-hosted installation requires a license key. This section explains licensing-related details.
Overview
A CloudCasa license is created using the values of the following parameters. Note that not all the fields are mandatory.
- Expiration date
Indicates the duration of the license
- Worker node count
The number of worker nodes licensed
- kube-system UUID
UID of the
kube-systemnamespace on the cluster where CloudCasa is installed
There may be other properties as well, such as license version, but the above properties are of most interest to the user.
Calculation of worker node count
CloudCasa is licensed based on Kubernetes worker node count, the average number of worker nodes active across all configured clusters on a monthly basis. Internally, the CloudCasa license mechanism tracks worker node hours, which start from 0 at the beginning of each calendar month. The software then keeps accumulating node hours for all nodes in all registered clusters over the course of the month. Note that nodes for clusters in the PENDING state are counted as well. The count is reset at the beginning of the next month.
Since CloudCasa tracks node hours, customers have a lot of flexibility to handle varying node usage. For example, if a customer buys a 50 node license, they effectively get 36000 (50 * 720) node hours per month (taking one month to mean 720 hours for this example). This means they can have 50 worker nodes active all month or 150 nodes active for 10 days. If new nodes come up due to auto-scaling but go down in less than an hour, the software does not count them. But any node that stays up more than an hour is counted toward the quota.
Note
Only worker nodes count toward the quota. Nodes that provide only control plane functions are not counted.
License compliance
When the node hour count crosses the licensed node count + 5%, the software makes note of it but doesn’t treat it as license violation. In fact, the count can go above the limit, come down, and go above multiple times in a month, and the software does not treat it as a violation (an alert is generated). But if the node count goes over the licensed limit in a second consecutive month, it is flagged as license violation and an alert will be created.
Once the license is marked as out of compliance, the customer needs to take action by contacting Catalogic for a new license file within 30 days. If no action is taken within this period, the system will enter a restore-only mode. In this mode, all scheduled backups will be paused, new clusters and cloud accounts cannot be added, and ad hoc backups and policies cannot be created. However, logins will continue to work and restores can still be run. To make the license compliant again and return the product to full function, the customer must contact Catalogic and obtain a new license file.
In addition to the node count, a license will typically have an expiration date. If that date is reached, the license will be out of compliance, and after 30 days logins will fail and scheduled backups will be paused. Contact Catalogic to obtain a new license file.
Finally, a license file is always tied to a particular cluster. The administrator needs to provide the UID of the kube-system
namespace on the cluster where the CloudCasa server will be deployed. If CloudCasa is installed on a different cluster for
whatever reason, the product will stop working after 30 days. Customers should contact Catalogic to obtain a license file for the new cluster.
Viewing license info
License information, including current usage details, can be viewed in the CloudCasa UI by going to the Site Admin =>
License page. Note that this page is only visible to site admin users, which are configured using the Helm parameters
auth.siteadminUsers and auth.siteadminUserGroups.
Updating license
The license can be updated at anytime by running the helm upgrade command with the licenseKey parameter:
helm upgrade cloudcasa-server cloudcasa/cloudcasa-server --wait --create-namespace \
--namespace cloudcasa-server --reuse-values \
--set licenseKey=$(cat <path_to_new_license_key_file>)