Domain Custom Resource
apiVersion: ingress.k8s.ngrok.com/v1alpha1
kind: Domain
Domains define the hostnames that should be reserved for your ngrok endpoints.
They are automatically created by the controller based on the Ingress, Gateway, CloudEndpoint and AgentEndpoint custom resources you create.
Standard ngrok subdomains will automatically be created and reserved for you.
Custom domains will also be created and reserved, but will be up to you to configure the DNS records for them.
See the custom domain guide for more details.
If you delete all the Ingress/Gateway/CloudEndpoint/AgentEndpoint objects for a particular host, as a safety precaution, the Operator does NOT delete the domains and thus does not unregister them.
This ensures you don’t lose domains while modifying or recreating ingress objects.
You can still manually delete a domain CRD via kubectl delete domain <name> if you want to unregister it.
Domain Structure and Types
The following outlines the high level structure and typings of aDomain
Domain Fields
The following sections outline each field of theDomain custom resource, whether they are required, what their default values are (if applicable), and a description of their purpose/constraints.
spec
spec defines the desired state of the Domain
Type: Object
Required: yes
Default: none
Fields:
| Field Name | Type | Required | Default | Description |
|---|---|---|---|---|
spec.description | string | no | "Created by the ngrok-operator" | Human-readable description for this Domain to help identify/describe it |
spec.metadata | string | no | "{"owned-by":"ngrok-operator"}" | String of arbitrary data associated with the object in the ngrok API/Dashboard |
spec.domain | string | yes | none | The domain name to reserve |
spec.region | string (enum) | no | none | (Deprecated) The region in which to reserve the domain |
spec.description
Human-readable description of this domain that can be used to help identify/describe it.
Type: string
Required: no
Default: "Created by the ngrok-operator"
spec.metadata
String of arbitrary data associated with the object in the ngrok API/Dashboard.
Type: string
Required: no
Default: "{"owned-by":"ngrok-operator"}"
spec.domain
The domain name to reserve. example: example-domain.ngrok.io
Type: string
Required: no
Default: none
spec.region
The region in which to reserve domains
With the launch of the ngrok Global Network domains traffic is now handled globally.
Note that agents may still connect to specific regions.
Warning: spec.region is deprecated
Type: string (enum)
Required: no
Default: "global"
Allowed Values: "au", "eu", "ap", "us", "jp", "in", "sa", "global"
Status Fields
TheDomain resource includes status information that reflects the current state of the domain in the ngrok system.
status.id
The ngrok API ID for this domain.
Type: string
Example: rd_347Xxo1moBQ5AgBmI3a9CFgcCrk
status.domain
The actual domain string that was reserved.
Type: string
Example: example-domain.ngrok.app
status.region
The ngrok region where the domain is available.
Type: string
Example: global
status.cnameTarget
The CNAME target for custom domains. This field is only populated for custom (non-ngrok) domains and indicates where you should point your DNS records.
Type: string
Example: example.cname.ngrok.io
status.conditions
Standard Kubernetes conditions that indicate the state of the domain.
Type: []Condition
Each condition includes:
type- The condition typestatus-True,False, orUnknownreason- A programmatic identifier for the condition statemessage- A human-readable descriptionlastTransitionTime- When the condition last changedobservedGeneration- The resource generation this condition applies to
Condition Types
Ready
Indicates whether the domain is fully operational and ready to use for endpoints.
Status Values:
True- Domain is active and readyFalse- Domain is not ready (see reason for details)
| Reason | Status | Meaning |
|---|---|---|
DomainActive | True | Domain is successfully reserved and ready to use |
DomainInvalid | False | Domain format or configuration is invalid |
DomainCreationFailed | False | Failed to reserve the domain in ngrok |
ProvisioningError | False | Error provisioning custom domain (DNS/certificate issues) |
DomainCreated
Indicates whether the domain was successfully reserved in the ngrok API.
Status Values:
True- Domain was successfully reservedFalse- Failed to reserve domain
| Reason | Status | Meaning |
|---|---|---|
DomainCreated | True | Domain successfully reserved |
DomainCreationFailed | False | API call to reserve domain failed |
DomainInvalid | False | Domain name or format is invalid |
CertificateReady
Indicates whether the TLS certificate for the domain is ready.
Status Values:
True- Certificate is ready or managed by ngrokFalse- Certificate is not ready
| Reason | Status | Meaning |
|---|---|---|
NgrokManaged | True | Certificate is automatically managed by ngrok |
CertificateReady | True | Custom certificate is provisioned and ready |
ProvisioningError | False | Error provisioning custom domain certificate |
DomainCreationFailed | False | Cannot provision certificate because domain creation failed |
DomainInvalid | False | Cannot provision certificate because domain is invalid |
DNSConfigured
Indicates whether DNS is properly configured for the domain.
Status Values:
True- DNS is configured correctlyFalse- DNS configuration is incomplete or incorrect
| Reason | Status | Meaning |
|---|---|---|
NgrokManaged | True | DNS is automatically managed by ngrok (ngrok subdomain) |
DomainCreated | True | DNS records have been configured for custom domain |
ProvisioningError | False | DNS records are not pointing to ngrok infrastructure |
DomainCreationFailed | False | Cannot configure DNS because domain creation failed |
DomainInvalid | False | Cannot configure DNS because domain is invalid |
Progressing
Indicates whether the domain is actively being provisioned (typically for custom domains).
Status Values:
True- Domain is currently being provisionedFalse- Domain is not in a provisioning state
| Reason | Status | Meaning |
|---|---|---|
Provisioning | True | Domain provisioning is in progress |