Skip to content

Conversation

Dan-Heath
Copy link
Contributor

@Dan-Heath Dan-Heath commented Aug 25, 2025

Description

Per SPE-1197, a customer had some questions about what happens when the Boundary Enterprise license expires. These included:

  • What happens when the license expires? Is there a grace period?
  • Are there any notifications prior to expiration?
  • How do you update a license key and is there downtime?
  • What is the recommended upgrade path?

These scenarios were documented in the Vault docs, and the customer expected to find the information in the Boundary docs too.

This PR updates the Boundary Enterprise licensing documentation with more information about what happens in the scenarios listed above.

View the preview deployment

PCI review checklist

  • I have documented a clear reason for, and description of, the change I am making.
  • If applicable, I've documented a plan to revert these changes if they require more than reverting the pull request.
  • If applicable, I've documented the impact of any changes to security controls.
    Examples of changes to security controls include using new access control methods, adding or removing logging pipelines, etc.

@Dan-Heath Dan-Heath added this to the deferred milestone Aug 25, 2025
@Dan-Heath Dan-Heath self-assigned this Aug 25, 2025
@Dan-Heath Dan-Heath marked this pull request as ready for review August 25, 2025 16:32
@Dan-Heath Dan-Heath requested review from a team as code owners August 25, 2025 16:32
stellarsquall
stellarsquall previously approved these changes Aug 25, 2025
Copy link
Collaborator

@stellarsquall stellarsquall left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this looks great!

When the Boundary license expires, the controller performs a graceful shutdown.
Ongoing sessions continue to run, but you will not be able to create any new sessions.

Prior to the expiration date, Boundary logs 5 warnings to the event stream at the following intervals:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Are you able to provide an example of what that log looks like? That would be helpful for users to configure alerting on this, just in case.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the suggestion! I added an example from the log and some additional verbiage to help with alerts.

## License expiration

When the Boundary license expires, the controller performs a graceful shutdown.
Ongoing sessions continue to run, but you cannot create any new sessions.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this true? I haven't tested this part, but I think graceful shutdown means that it will wait for ongoing HTTP requests to return, not existing Boundary sessions. It will also probably only wait 5 seconds or so before actually shutting down. I also expect that after the controller has been down for 15 seconds, the workers will start terminating sessions. I think we'll want to verify this behavior.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for reviewing this, Johan! I got this info from Aman, but I may have misunderstood our conversation and assumed it was sessions vs HTTP requests. I don't think he tested it either tho.

Comment on lines +67 to +73
| Warning | Interval |
|---------| ---------------------------------- |
| First | 30 days before license expiration |
| Second | 7 days before license expiration |
| Third | 24 hours before license expiration |
| Fourth | 1 hour before license expiration |
| Fifth | 1 minute before license expiration |
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that this depends on the length of the license issued, I think this is probably based on a yearly license?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can add some text to explain that.

Comment on lines +92 to +109
"time_left_seconds": 83
}
},
"datacontentype": "text/plain",
"time": "2025-09-08T11:13:10.216888454-07:00"
}
{
"id": "ymFHcb1H1Z",
"source": "https://hashicorp.com/boundary/nixos/controller+worker",
"specversion": "1.0",
"type": "system",
"data": {
"version": "v0.1",
"op": "licensing.StartWatching",
"data": {
"expiration_time": "2025-09-08T11:14:33-07:00",
"msg": "licensing warning",
"time_left_seconds": 30
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could massage these numbers a bit to make it look a bit more realistic (e.g., adjust the timestamp, set the time_left_second to something much bigger, set it to 60 in the last warning message).


</CodeBlockConfig>

When there is 1 minute left before license expiration, Boundary provides the following message as an error:
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the message above is the 1 minute message (it says 30 seconds in my example). The message below is printed immediately upon license expiration.

Comment on lines +139 to +141
==> Boundary dev environment self-terminating
==> Health is enabled, waiting 0s before shutdown
==> Boundary dev environment graceful shutdown triggered, interrupt again to enter shutdown
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These logs mention boundary dev, I don't know what it looks like when using boundary server (for controllers or workers). Let me know if you want a log from a more realistic environment, or if you just want to remove these logs (I think either is fine).

Copy link
Contributor Author

@Dan-Heath Dan-Heath Sep 12, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ahh... good catch, thank you. If you are able to get a log from a more realistic environment, I think it would be a helpful addition. I can work on cleaning up the parts you mentioned in the comments above.

</CodeBlockConfig>

To update your license key, refer to the steps in [Enable Boundary Enterprise](#enable-boundary-enterprise).
There is no downtime associated with updating an expired license key.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this true? I would think the controller would need to be restarted if an environment variable is used, or the config would need to be SIGHUPed if a new license is added to the config file.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That makes sense. This also came from the conversation with Aman, and I may have misunderstood. Robin might have an environment where I can test this (something he's working on for HashiConf). I will check with him to see if we can verify this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants