content/influxdb3/clustered/admin/licensing.md
Install and manage your InfluxDB Clustered license to authorize the use of the InfluxDB Clustered software.
[!Note] If setting up an InfluxDB Clustered deployment for the first time, first set up the prerequisites and configure your cluster. After your InfluxDB namespace is created and prepared, you can install your license.
If you haven't already, request an InfluxDB Clustered license.
InfluxData provides you with a license.yml file that encapsulates your
license token as a custom Kubernetes resource.
Use kubectl to apply and create the License resource in your InfluxDB
namespace:
kubectl apply --filename license.yml --namespace influxdb
InfluxDB Clustered detects the License resource and extracts the credentials
into a secret required by InfluxDB Clustered Kubernetes pods.
Pods validate the license secret both at startup and periodically (roughly once
per hour) while running.
After you have activated your license, use the following signals to verify the license is active and functioning.
In your commands, replace the following:
NAMESPACE{{% /code-placeholder-key %}}:
your InfluxDB namespacePOD_NAME{{% /code-placeholder-key %}}:
your InfluxDB Kubernetes podAfter you install your license,
run the following command to check that database pods start up and are in the
Running state:
kubectl get pods -l app=iox --namespace influxdb
If a Pod fails to start, run the following command to view pod information:
{{% code-placeholders "POD_NAME" %}}
kubectl describe pod POD_NAME --namespace influxdb
{{% /code-placeholders %}}
Secret existsRun the following command to verify that the licensing activation created a
iox-license secret:
kubectl get secret iox-license --namespace influxdb
If the secret doesn't exist,
view license-controller logs for more
information or errors.
license controller logsThe license controller component creates a Secret named iox-license from
your License. To view license controller logs for troubleshooting, run the
following command:
kubectl logs deployment/license-controller --namespace influxdb
If you deploy a licensed release of {{% product-name %}} with an invalid or
expired license, many of the pods in your cluster will crash on startup and will
likely enter a CrashLoopBackoff state without ever running or becoming healthy.
Because InfluxDB stores the license in a volume-mounted Kubernetes secret, invalid
licenses affect old and new pods.
After you apply a valid License resource, new pods will begin to start up normally.
InfluxDB validates a license when you apply it.
If the license is invalid when you try to apply it, the license controller
won't add or update the required secret.
Before your license expires, your InfluxData sales representative will contact you about license renewal. You may also contact your sales representative at any time.
When you receive your renewed license file from InfluxData:
Use kubectl to apply the updated license:
kubectl apply --filename license.yml --namespace influxdb
[!Note] You may see a warning about missing
kubectl.kubernetes.io/last-applied-configurationannotation. This warning is expected and can be safely ignored—the license will be applied successfully.
Verify the license update by checking that:
iox-license secret is updatedRunning stateInfluxDB Clustered validates licenses:
After applying a renewed license, the system should automatically detect and use the new license during the next validation cycle.
If you experience query failures with "no license found" errors after applying a renewed license:
Check the license secret:
<!--pytest.mark.skip-->kubectl get secret iox-license --namespace influxdb -o yaml
Verify the secret was updated with the new license data.
Check license controller logs:
<!--pytest.mark.skip-->kubectl logs deployment/license-controller --namespace influxdb
Look for successful license processing messages or any errors.
Verify pod status:
<!--pytest.mark.skip-->kubectl get pods -l app=iox --namespace influxdb
Ensure all pods are in Running state and not crash-looping.
If issues persist, you may need to restart affected services:
<!--pytest.mark.skip--># Scale down the querier service
kubectl scale deployment iox-shared-querier --replicas=0 --namespace influxdb
# Wait for pods to terminate, then scale back up
kubectl scale deployment iox-shared-querier --replicas=1 --namespace influxdb
[!Important] Service restart should not be routinely necessary. If you consistently need to restart services after license renewal, contact InfluxData support.
InfluxDB Clustered authorizes use of InfluxDB software through licenses issued by InfluxData. The following sections provide information about InfluxDB Clustered license enforcement.
Kubernetes pods running in your InfluxDB cluster must have a valid License
resource to run. Licenses are issued by InfluxData. If there is no License
resource installed in your cluster, one of two things may happen:
ContainerCreating state if the cluster has
never had a valid License resource installed.CrashLoopBackoff state.
Pod containers will attempt to start, detect the invalid license condition,
print an error message, and then exit with a non-zero exit code.During normal operation, pods in your InfluxDB cluster check for a valid license once per hour. You may see messages in your pod logs related to this behavior.
When InfluxData issues a license, it is configured with two expiry dates. The first is the expiry date of the contractual license. The second is a hard expiry of the license credentials, after which pods in your cluster will begin crash-looping until a new, valid license is installed in the cluster.
The period of time between the contractual license expiry and the hard license expiry is considered the grace period. The standard grace period is 90 days, but this may be negotiated as needed with your InfluxData sales representative.
The following table outlines license expiry logging behavior to show when the log
messages begin, the level (Warn or Error), and the periodicity at which they
repeat.
| Starts at | Log level | Log periodicity |
|---|---|---|
| 1 month before expiry | Warn | 1 msg per hour |
| 1 week before expiry | Warn | 1 msg per 5 min |
| At expiry | Error | 1 msg per 5 min |
Starting one month after your contractual license expiry, the InfluxDB
Querier
begins "browning out" requests. Brownouts return
FailedPrecondition response codes to queries for a portion of every hour.
| Starts at | Brownout coverage |
|---|---|
| 7 days after expiry | 5 minutes per hour |
| 1 month after expiry | 100% of queries |
Brownouts only occur after the license has contractually expired. Also, they only impact query operations--no other operations (writes, compaction, garbage collection, etc) are affected.