Skip to main content

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 a Domain

Domain fields

The following sections outline each field of the Domain 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:

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

The Domain 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 type
  • status - True, False, or Unknown
  • reason - A programmatic identifier for the condition state
  • message - A human-readable description
  • lastTransitionTime - When the condition last changed
  • observedGeneration - 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 ready
  • False - Domain is not ready (see reason for details)
Reasons: Example:
DomainCreated
Indicates whether the domain was successfully reserved in the ngrok API. Status Values:
  • True - Domain was successfully reserved
  • False - Failed to reserve domain
Reasons: Example:
CertificateReady
Indicates whether the TLS certificate for the domain is ready. Status Values:
  • True - Certificate is ready or managed by ngrok
  • False - Certificate is not ready
Reasons: Example:
DNSConfigured
Indicates whether DNS is properly configured for the domain. Status Values:
  • True - DNS is configured correctly
  • False - DNS configuration is incomplete or incorrect
Reasons: Example:
Example (Custom Domain DNS Error):
Progressing
Indicates whether the domain is actively being provisioned (typically for custom domains). Status Values:
  • True - Domain is currently being provisioned
  • False - Domain is not in a provisioning state
Reasons: Example:

Status examples

Successfully reserved ngrok subdomain

Custom domain with DNS error

Checking domain status

You can check the status of a domain using kubectl:

Example domain