Vendor-provided vanity domain
Tensor9 will automatically assign and delegate a vanity domain to your customer’s appliances once you perform the following steps:1
Specify a vanity domain during app creation
During creation of your Tensor9 app, provide a vanity domain that will serve
as the root for appliances:Specifying a vanity domain during app creation will cause the Tensor9
Vendor Controller to create a hosted zone for the specified domain in your
Tensor9 account.Example output:
2
One-time manual delegation
You must do a one-time manual delegation to this newly created hosted
zone in order for Tensor9 to be able to delegate subdomains from it.
In the example above, we can delegate the
ai-chat.playground.tensor9.app
root domain by adding a new NS record with the nameservers shown in
the output in the DNS management for our tensor9.app domain.3
Annotate your Terraform resources
Use Tensor9 annotations to configure DNS delegation for your appliances.
See the Vanity Domain Annotations section
below for detailed documentation.
ai-chat.playground.tensor9.app,
assuming a main entrypoint to the app via a record called www,
vanity domains assigned to customer appliances might look something like this:
Vanity Domain Annotations
Tensor9 enables you to provide every customer appliance a valid SSL certificate and a custom subdomain (e.g.abc123.ai-chat.playground.tensor9.app) automatically.
This provides the following benefits:
- Zero-Touch Experience: Customers don’t need to manually configure DNS records.
- Automatic SSL: Since the domain is properly delegated, you can use DNS validation for free, automatic SSL certificates (e.g. via AWS ACM).
- Consistency: Every appliance gets a predictable, compliant hostname. Any records you add to your hosted zone in your origin stack will automatically be created in the customer’s appliance vanity domain.
@vanity_domain_root()
Tell Tensor9 which variable should receive the appliance’s unique domain name. Annotate a string variable with@vanity_domain_root(). During deployment, Tensor9 will automatically set this variable’s default value to the appliance’s assigned subdomain.
@vanity_domain_zone()
Annotateaws_route53_zone resources with @vanity_domain_zone(auto_delegate = true/false). When auto_delegate is set to true, Tensor9 will automatically delegate the customer’s vanity domain to the customer’s appliance.
@vanity_domain_zone(auto_delegate = true) or create a delegation record to the zone and annotate it with @vanity_domain_delegation() .
@vanity_domain_delegation()
If you need granular control over how the delegation record is created (e.g. custom TTLs), you can setauto_delegate to false and manage the record yourself using @vanity_domain_delegation(). Tensor9 will overwrite the zone_id with your root vanity domain zone ID.
@vanity_domain_zone(auto_delegate = true) or create a delegation record to the zone and annotate it with @vanity_domain_delegation() .
Complete Configuration Example
Here is an example configuration that gives every appliance a working, SSL-protected domain.Best Practices
Please note the following best practices when defining a root vanity domain for your customers:Purchase a separate root domain
Purchase a separate root domain
If your app is present at
saas.com pick an alternative like
saas-customers.com or saas.app. This ensures that the cookie space for your
hosted offering is entirely separate from your customer’s installs. Your
customers will have control over the appliance vanity domain hosted zone since
they are created inside their environment.Keep the root domain as brief as possible
Keep the root domain as brief as possible
The maximum length of the Common Name in a certificate is 64 characters. Vanity
domains assigned to customers will include the appliance ID as well as any
endpoints you have defined in your origin stack. The total length of the
subdomain for which a certificate is requested cannot exceed the limit.