Skip to main content

Internal CRDs

Kubernetes has the concept of Custom Resource Definitions (CRDs) which allow you to define your own custom resources. This document covers the CRDs created and managed by the controller internally to manage the state of the system across various controller components. It's generally unsafe to modify these directly and would likely result in strange effects as the controller fights you. They are useful however to inspect the state of the system and to debug issues.

HTTPS Edges

HTTPS Edges are the primary representation of all the ingress objects and various configuration's states that will be reflected to the ngrok API. While you could create https edge CRDs directly, it's not recommended because:

  • the api is internal and will likely change in the future
  • if your edge conflicts with any edge managed by the controller, it may be overwritten

This may stabilize to a first class CRD in the future, but for now, it's not recommended to use directly but may be useful to inspect the state of the system.

FieldTypeRequiredDescription
apiVersionstringYesThe API version for this custom resource.
kindstringYesThe kind of the custom resource.
metadatametav1.ObjectMetaNoStandard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
specHTTPSEdgeSpecYesSpecification of the HTTPS edge.
statusHTTPSEdgeStatusNoObserved status of the HTTPS edge.

HTTPSEdgeSpec

FieldTypeRequiredDescription
ngrokAPICommonngrokAPICommonNoCommon fields shared by all ngrok resources.
hostports[]stringYesA list of hostports served by this edge.
routes[]HTTPSEdgeRouteSpecNoA list of routes served by this edge.
tlsTerminationEndpointTLSTerminationAtEdgeNoThe TLS termination configuration for this edge.

HTTPSEdgeRouteSpec

FieldTypeRequiredDescription
ngrokAPICommonngrokAPICommonNoCommon fields shared by all ngrok resources.
matchTypestringYesThe type of match to use for this route. Valid values are: exact_path and path_prefix.
matchstringYesThe value to match against the request path.
backendTunnelGroupBackendYesThe definition for the tunnel group backend that serves traffic for this edge.
compressionEndpointCompressionNoWhether or not to enable compression for this route.
ipRestrictionEndpointIPPolicyNoAn IPRestriction to apply to this route.
headersEndpointHeadersNoRequest/response headers to apply to this route.
webhookVerificationEndpointWebhookVerificationNoWebhook verification configuration to apply to this route.

HTTPSEdgeRouteStatus

FieldTypeRequiredDescription
idstringNoThe unique identifier for this route.
uristringNoThe URI for this route.
matchstringNoThe value to match against the request path.
matchTypestringNoThe type of match to use for this route. Valid values are: exact_path and path_prefix.
backendTunnelGroupBackendStatusNoStores the status of the tunnel group backend, mainly the ID of the backend.

HTTPSEdgeStatus

FieldTypeRequiredDescription
idstringNoThe unique identifier for this edge.
uristringNoThe URI for this edge.
routes[]HTTPSEdgeRouteStatusNoA list of routes served by this edge.