The module lifecycle stage: Preview
The module has requirements for installation
The Deckhouse Platform installs CRDs but does not remove them when a module is disabled. If you no longer need the created CRDs, delete them.
ALBInstance
Short names: albi
Scope: Namespaced
Version: v1alpha1
Warning. Available in: EE, BE, SE, SE+, CSE
Configuration for an ALB instance (in a user namespace).
A namespaced resource for application or project gateways.
Use it when:
- a team should manage its own Gateway in its own namespace
- the Gateway is dedicated to one project
LoadBalancerinlet mode is enough.
Example:
apiVersion: network.deckhouse.io/v1alpha1
kind: ALBInstance
metadata:
name: app-gw
namespace: app
spec:
gatewayName: app-gw
inlet:
type: LoadBalancer
loadBalancer: {}-
objectspecALBInstance specification defining the gateway, inlet, network restrictions, and data plane placement settings.
-
array of stringsspec.acceptRequestsFromWhitelist of sources allowed to send requests.
-
stringspec.acceptRequestsFrom.Element of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
-
-
objectspec.additionalHeadersAdditional headers to include in upstream requests.
Examples:
my_static_header: my_valuex-real-ip: '%REQ(CF-CONNECTING-IP)%' -
objectspec.backendTLSTLS client settings propagated to the managed Gateway. A BackendTLSPolicy selects the backends that use this client certificate.
-
objectspec.backendTLS.clientCertificateRefReference to a Kubernetes TLS Secret containing the client certificate and private key. The CA is configured by BackendTLSPolicy.
-
stringspec.backendTLS.clientCertificateRef.name
Required value
Name of the Secret.Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.backendTLS.clientCertificateRef.namespaceNamespace of the Secret. If omitted, the Gateway namespace is used.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
-
objectspec.basicAuthSpecifies if basic authentication has to be enabled globally.
-
booleanspec.basicAuth.enabledSpecifies whether basic authentication is enabled.
-
objectspec.basicAuth.secret
Specifies the secret name and namespace to use with basic authentication.
A secret in the same namespace as the ALBInstance always works. A secret in another namespace requires a Gateway API ReferenceGrant object in the secret’s namespace authorizing access
froma Gateway in the ALBInstance’s namespace; without it, basic authentication stays enabled but with no credentials that can ever match, so all requests are rejected until the reference is authorized or corrected.-
stringspec.basicAuth.secret.name
Required value
Secret name.Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.basicAuth.secret.namespace
Required value
Namespace name. A namespace other than the ALBInstance’s own requires an explicit ReferenceGrant object; see thesecretfield description above.Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
-
objectspec.controllerPodsAdditionalAnnotationsAdditional annotations for controller/data plane pods.
-
booleanspec.enableHTTP3
Enable HTTP/3 support.
Warning. HTTP/3 can’t be enabled if Proxy Protocol is in use.
-
stringspec.envoyLogLevelDefines log level of Envoy proxies.
Default:
WarningAllowed values:
Off,Critical,Error,Warning,Info,Debug,Trace -
objectspec.frontendTLSFrontend TLS client certificate validation propagated to the managed Gateway.
-
objectspec.frontendTLS.default
Required value
Default validation settings for all HTTPS listeners.-
objectspec.frontendTLS.default.validationClient certificate validation settings.
-
array of objectsspec.frontendTLS.default.validation.caCertificateRefsReferences to ConfigMaps containing trusted client CAs in ca.crt. All referenced CAs are validated and combined inline.
-
stringspec.frontendTLS.default.validation.caCertificateRefs.nameName of the ConfigMap containing the CA in ca.crt.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.frontendTLS.default.validation.caCertificateRefs.namespaceNamespace of the ConfigMap. If omitted, the Gateway namespace is used.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
stringspec.frontendTLS.default.validation.mode
Client certificate validation mode.
AllowValidOnly — this is strict mTLS. AllowInsecureFallback — this is effectively optional, non-enforcing client-certificate validation.
Default:
AllowValidOnlyAllowed values:
AllowValidOnly,AllowInsecureFallback
-
-
-
array of objectsspec.frontendTLS.perPortValidation settings for individual HTTPS listener ports. The port is matched exactly and overrides default settings for that port.
-
integerspec.frontendTLS.perPort.portHTTPS listener port.
Allowed values:
1 <= X <= 65535 -
objectspec.frontendTLS.perPort.tlsValidation settings for this port.
-
objectspec.frontendTLS.perPort.tls.validationClient certificate validation settings.
-
array of objectsspec.frontendTLS.perPort.tls.validation.caCertificateRefsReferences to ConfigMaps containing trusted client CAs in ca.crt. All referenced CAs are validated and combined inline.
-
stringspec.frontendTLS.perPort.tls.validation.caCertificateRefs.nameName of the ConfigMap containing the CA in ca.crt.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.frontendTLS.perPort.tls.validation.caCertificateRefs.namespaceNamespace of the ConfigMap. If omitted, the Gateway namespace is used.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
stringspec.frontendTLS.perPort.tls.validation.mode
Client certificate validation mode.
AllowValidOnly — this is strict mTLS. AllowInsecureFallback — this is effectively optional, non-enforcing client-certificate validation.
Default:
AllowValidOnlyAllowed values:
AllowValidOnly,AllowInsecureFallback
-
-
-
-
-
stringspec.gatewayName
Required value
Name of the Gateway resource this instance belongs to.Length:
1..45 -
objectspec.geoIPGeoIP database downloader configuration for proxy pods.
-
objectspec.geoIP.headersHTTP headers with GeoIP data to attach to requests.
-
stringspec.geoIP.headers.anonThe header for anonymous IP information, such as VPN, proxy, Tor, or hosting-provider detection.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.asnThe ASN header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.cityThe city header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.countryThe country code header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.ispThe ISP header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.regionThe region or subdivision header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$
-
-
objectspec.geoIP.licenseKeySecretRef
Secret reference with the MaxMind license key.
For
ALBInstance, the referenced secret must be located in the same namespace as the resource.-
stringspec.geoIP.licenseKeySecretRef.name
Required value
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
-
-
array of stringsspec.geoIP.maxmindEditionIDs
A list of database editions to use.
Warning. Current implementation supports using up to 4 editions.
Default:
[ "GeoLite2-City" ]-
stringspec.geoIP.maxmindEditionIDs.Element of the array
Allowed values:
GeoIP2-Anonymous-IP,GeoIP2-City,GeoIP2-ISP,GeoIP2-ASN,GeoLite2-ASN,GeoLite2-City
-
-
objectspec.geoIP.maxmindMirrorMirror configuration for downloading GeoIP databases. If the parameter is not set, the databases are downloaded directly from
https://download.maxmind.com.-
stringspec.geoIP.maxmindMirror.caCustom CA certificate in PEM format for verifying TLS connections to the mirror.
Maximum length:
65536Example:
ca: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -
booleanspec.geoIP.maxmindMirror.insecureSkipVerifySkip TLS certificate verification for the mirror.
-
stringspec.geoIP.maxmindMirror.url
Required value
The URL for downloading GeoIP databases.Maximum length:
2048Pattern:
^https?://[^\r\n]+$Examples:
url: https://mirror.localurl: https://mirror.local/GeoLite2-City.tar.gz
-
-
-
objectspec.inlet
Required value
Inlet defines how traffic enters the data plane.-
array of objectsspec.inlet.additionalPortsAdditional Service ports published besides default 80/443.
-
integerspec.inlet.additionalPorts.portAdditional Service port number.
Allowed values:
1 <= X <= 65535 -
stringspec.inlet.additionalPorts.protocolNetwork protocol for the additional Service port. Supported values:
TCP,UDP.Allowed values:
TCP,UDP
-
-
objectspec.inlet.clusterIPSettings for the ClusterIP inlet.
Default:
{}-
integerspec.inlet.clusterIP.httpPortPort for insecure HTTP connections. Set to
0to disable it.Default:
80Allowed values:
0 <= X <= 65535 -
integerspec.inlet.clusterIP.httpsPortPort for secure HTTPS connections. Set to
0to disable it.Default:
443Allowed values:
0 <= X <= 65535 -
stringspec.inlet.clusterIP.ipAddressOptional fixed IP address for the ClusterIP Service. If omitted, Kubernetes allocates an address. This field is immutable.
Length:
1..45 -
objectspec.inlet.clusterIP.serviceAnnotationsAdditional annotations for the ClusterIP Service.
-
-
objectspec.inlet.loadBalancerSettings for the LoadBalancer inlet.
Default:
{}-
integerspec.inlet.loadBalancer.httpPort
Port for insecure HTTP connections. If it is not set,
80port is assumed.Can be set to
0to disable accepting HTTP connections.Allowed values:
0 <= X <= 65535 -
integerspec.inlet.loadBalancer.httpsPort
Port for secure HTTPS connections. If it is not set,
443port is assumed.Can be set to
0to disable accepting HTTPS connections.Allowed values:
0 <= X <= 65535 -
stringspec.inlet.loadBalancer.loadBalancerClass
Class of the load balancer that is passed to the spec.loadBalancerClass parameter of the provisioned service with the LoadBalancer type.
Warning. This field is immutable.
Maximum length:
317Pattern:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?[A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?$ -
array of stringsspec.inlet.loadBalancer.loadBalancerSourceRanges
List of IP addresses in the CIDR format that are allowed accessing the load balancer.
Caution. A cloud provider may not support this option or ignore it.
Providers supporting this option: AWS, Azure, GCP. Providers ignoring this option: Yandex Cloud.
For other cloud providers, behavior may vary depending on the cloud implementation specifics. Test this option before using it in a production environment.
-
stringspec.inlet.loadBalancer.loadBalancerSourceRanges.Element of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
-
-
objectspec.inlet.loadBalancer.serviceAnnotationsAdditional annotations for the LoadBalancer Service.
-
-
stringspec.inlet.type
Required value
Supported inlet type.Allowed values:
LoadBalancer,ClusterIP
-
-
objectspec.istioSidecarSettings for Istio sidecar injection into proxy pods.
-
booleanspec.istioSidecar.enabled
Attaches annotations to the proxy pods to automatically inject Istio sidecar containers.
To use this feature with an HTTPRoute, configure both of the following:
alb.network.deckhouse.io/service-upstream: "true": sends requests to the backend Service ClusterIP instead of directly to application Pods, so the Istio sidecar can intercept the traffic;- a
URLRewritefilter with the backend Service FQDN ashostname: sets the upstream Host so the Istio sidecar can identify the backend Service and establish mTLS.
Example:
metadata: annotations: alb.network.deckhouse.io/service-upstream: "true" spec: rules: - filters: - type: URLRewrite urlRewrite: hostname: httpbin.test-backend.svc.cluster.local -
objectspec.istioSidecar.resourcesResource requests and limits for the injected Istio sidecar container.
-
objectspec.istioSidecar.resources.limitsResource limits.
-
stringspec.istioSidecar.resources.limits.cpuCPU limits.
Maximum length:
64Pattern:
^[^\r\n]*$ -
stringspec.istioSidecar.resources.limits.memoryMemory limits.
Maximum length:
64Pattern:
^[^\r\n]*$
-
-
objectspec.istioSidecar.resources.requestsResource requests.
-
stringspec.istioSidecar.resources.requests.cpuCPU requests.
Maximum length:
64Pattern:
^[^\r\n]*$ -
stringspec.istioSidecar.resources.requests.memoryMemory requests.
Maximum length:
64Pattern:
^[^\r\n]*$
-
-
-
-
integerspec.minReplicasMinimum number of Envoy Proxy replicas. If a value greater than 1 is set, a PodDisruptionBudget object is provided.
Default:
1Allowed values:
1 <= X -
objectspec.nodeSelectorNode selector for pods.
-
objectspec.openTelemetryOpenTelemetry configuration for Envoy proxies.
-
objectspec.openTelemetry.tracingOpenTelemetry tracing configuration.
-
numberspec.openTelemetry.tracing.randomSamplingPercentagePercentage of requests that Envoy randomly selects for trace generation.
Default:
25Allowed values:
1 <= X <= 100 -
objectspec.openTelemetry.tracing.tlsTLS settings used by Envoy when connecting to the OpenTelemetry collector.
-
stringspec.openTelemetry.tracing.tls.caSecretNameName of the Kubernetes Secret containing the CA certificate used to verify the OpenTelemetry collector certificate. The Secret must be in the same namespace as the ALBInstance object.
Maximum length:
63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Example:
caSecretName: otel-tracing-ca -
booleanspec.openTelemetry.tracing.tls.insecureSkipVerifyAllows Envoy to connect to the OpenTelemetry collector even if certificate verification fails.
-
stringspec.openTelemetry.tracing.tls.sni
Server Name Indication (SNI) value sent by Envoy during the TLS handshake.
Warning. This setting is required if the OpenTelemetry collector is behind a TLS proxy or load balancer that routes connections based on SNI.
Maximum length:
253Pattern:
^[^\r\n]*$ -
array of stringsspec.openTelemetry.tracing.tls.subjectAltNamesList of Subject Alternative Names (SANs) used to verify the OpenTelemetry collector certificate.
-
stringspec.openTelemetry.tracing.tls.subjectAltNames.Element of the array
Maximum length:
253Pattern:
^[^\r\n]*$
-
-
-
stringspec.openTelemetry.tracing.urlOpenTelemetry collector endpoint URL used for exporting traces.
Pattern:
^(https?|grpc)://([A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?)(?:\.([A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?))+(?::(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?(?:/[A-Za-z0-9._~!$&'()*+,;=:@%/-]*)?$Examples:
url: http://opentelemetry.collector.localurl: grpc://opentelemetry.collector.localurl: https://opentelemetry.collector.localurl: https://opentelemetry.collector.local:4018url: https://opentelemetry.collector.local:4018/v1/traces
-
-
-
objectspec.originalIPDetectionDefines if the Envoy Proxy has to detect original IP using headers.
-
stringspec.originalIPDetection.realIPHeaderDefines a header to use for original client IP detection.
Default:
X-Forwarded-ForMaximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$Example:
realIPHeader: X-Real-IP -
array of stringsspec.originalIPDetection.setRealIPFrom
Required value
Specifies CIDR ranges allowed to provide headers for origin IP detection.-
stringspec.originalIPDetection.setRealIPFrom.Element of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
-
-
-
objectspec.resourcesManagementCPU and memory request and limit settings for the controller Pods.
-
stringspec.resourcesManagement.mode
Required value
Resource management mode.Default:
VPAAllowed values:
VPA,Static -
objectspec.resourcesManagement.staticStatic mode settings.
-
objectspec.resourcesManagement.static.limitsResource limits.
Default:
{}-
stringspec.resourcesManagement.static.limits.cpuCPU limits.
-
stringspec.resourcesManagement.static.limits.memoryMemory limits.
-
-
objectspec.resourcesManagement.static.requestsResource requests.
Default:
{}-
stringspec.resourcesManagement.static.requests.cpuCPU requests.
Default:
350m -
stringspec.resourcesManagement.static.requests.memoryMemory requests.
Default:
500Mi
-
-
-
objectspec.resourcesManagement.vpaResource management settings for the VPA mode.
-
objectspec.resourcesManagement.vpa.cpuCPU-related VPA settings.
Default:
{}-
numberspec.resourcesManagement.vpa.cpu.limitRatio
The CPU limits/requests ratio.
If set, the limits are calculated based on the requests and the specified ratio.
-
stringspec.resourcesManagement.vpa.cpu.maxMaximum value of allowed CPU requests to be submitted by the VPA.
Default:
1500m -
stringspec.resourcesManagement.vpa.cpu.minMinimum value of allowed CPU requests to be submitted by the VPA.
Default:
100m
-
-
objectspec.resourcesManagement.vpa.memoryMemory-related VPA settings.
Default:
{}-
numberspec.resourcesManagement.vpa.memory.limitRatio
The memory limits/requests ratio.
If set, the limits are calculated based on the requests and the specified ratio.
-
stringspec.resourcesManagement.vpa.memory.maxMaximum value of allowed memory requests to be submitted by the VPA.
Default:
2000Mi -
stringspec.resourcesManagement.vpa.memory.minMinimum value of allowed memory requests to be submitted by the VPA.
Default:
500Mi
-
-
stringspec.resourcesManagement.vpa.modeVPA operating mode.
Default:
InitialAllowed values:
Initial,InPlaceOrRecreate
-
-
-
booleanspec.suppressEnvoyHeaders
Suppresses Envoy debug response headers such as
x-envoy-upstream-service-timeon gateway listeners.Defaults to
true. -
array of objectsspec.tolerationsPod tolerations.
-
stringspec.tolerations.effect
Maximum length:
64Pattern:
^(NoSchedule|PreferNoSchedule|NoExecute)?$ -
stringspec.tolerations.key
Maximum length:
317Pattern:
^$|^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]/)?([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$ -
stringspec.tolerations.operator
Default:
EqualMaximum length:
64Pattern:
^(Equal|Exists)?$ -
integerspec.tolerations.tolerationSeconds
Allowed values:
0 <= X -
stringspec.tolerations.value
Maximum length:
63Pattern:
^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$
-
-
booleanspec.useProxyProtocol
Enable Proxy Protocol support.
Warning. Proxy Protocol can’t be enabled if HTTP/3 is in use.
-
-
objectstatusALBInstance status reflecting the actual state of the associated Gateway and data plane.
-
booleanstatus.conflictBackendTLSTrue when this instance backendTLS conflicts with another instance for the same Gateway.
-
stringstatus.conflictBackendTLSOwnerReference to an instance with a different backendTLS client certificate for this Gateway.
-
booleanstatus.conflictFrontendTLSTrue when this instance frontendTLS conflicts with another instance for the same Gateway.
-
stringstatus.conflictFrontendTLSOwnerReference to an instance with a different frontendTLS configuration for this Gateway.
-
booleanstatus.conflictPortsTrue when this instance additionalPorts are ignored because another older instance with the same gatewayName is authoritative.
-
stringstatus.conflictPortsOwnerReference to the older instance that defines effective additionalPorts for this gatewayName.
-
stringstatus.gatewayEffective Gateway name served by this instance.
-
integerstatus.observedGenerationGeneration of the resource last processed by the controller.
Allowed values:
0 <= X -
booleanstatus.readyTrue when this instance is ready to serve traffic.
-
booleanstatus.syncedTrue when desired and actual resources are in sync.
-
ClusterALBInstance
Short names: calbi
Scope: Cluster
Version: v1alpha1
Configuration for an ALB instance.
A cluster-scoped resource for shared or platform-level gateways in the system namespace.
Use it when:
- the Gateway should be located in the controller namespace
- the gateway is shared between applications or teams
- you need
HostPortinlet mode - you need cluster-level features such as the default Deckhouse Gateway.
Example:
apiVersion: network.deckhouse.io/v1alpha1
kind: ClusterALBInstance
metadata:
name: public-gw
spec:
gatewayName: public-gw
inlet:
type: LoadBalancer
loadBalancer: {}-
objectspecClusterALBInstance specification defining the gateway, inlet, network restrictions, and data plane placement settings.
-
array of stringsspec.acceptRequestsFromWhitelist of sources allowed to send requests.
-
stringspec.acceptRequestsFrom.Element of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
-
-
objectspec.additionalHeadersAdditional HTTP headers to add.
Examples:
my_static_header: my_valuex-real-ip: '%REQ(CF-CONNECTING-IP)%' -
objectspec.backendTLSTLS client settings propagated to the managed Gateway. A BackendTLSPolicy selects the backends that use this client certificate.
-
objectspec.backendTLS.clientCertificateRefReference to a Kubernetes TLS Secret containing the client certificate and private key. The CA is configured by BackendTLSPolicy.
-
stringspec.backendTLS.clientCertificateRef.name
Required value
Name of the Secret.Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.backendTLS.clientCertificateRef.namespaceNamespace of the Secret. If omitted, the Gateway namespace is used.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
-
objectspec.basicAuthSpecifies if basic authentication has to be enabled globally.
-
booleanspec.basicAuth.enabledSpecifies whether basic authentication is enabled.
-
objectspec.basicAuth.secret
Specifies the secret name and namespace to use with basic authentication.
A secret in the controller namespace (
d8-alb) always works. A secret in another namespace requires a Gateway API ReferenceGrant object in the secret’s namespace authorizing accessfroma Gateway ind8-alb; without it, basic authentication stays enabled but with no credentials that can ever match, so all requests are rejected until the reference is authorized or corrected.-
stringspec.basicAuth.secret.name
Required value
Secret name.Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.basicAuth.secret.namespace
Required value
Namespace name. A namespace other thand8-albrequires an explicit ReferenceGrant object; see thesecretfield description above.Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
-
objectspec.controllerPodsAdditionalAnnotationsAdditional annotations for controller/data plane pods.
-
booleanspec.defaultDeckhouseGateway
Marks the gateway as the default Deckhouse Gateway in the cluster. This gateway is used to serve Deckhouse HTTP/HTTPS endpoints.
Warning. If more than one gateway is marked as the default, the oldest gateway is selected as the default gateway.
Warning. Currently, the default gateway must have both HTTP and HTTPS ports configured.
-
booleanspec.enableHTTP3
Enable HTTP/3 support.
Warning. HTTP/3 can’t be enabled if Proxy Protocol is in use.
-
stringspec.envoyLogLevelDefines log level of Envoy proxies.
Default:
WarningAllowed values:
Off,Critical,Error,Warning,Info,Debug,Trace -
objectspec.frontendTLSFrontend TLS client certificate validation propagated to the managed Gateway.
-
objectspec.frontendTLS.default
Required value
Default validation settings for all HTTPS listeners.-
objectspec.frontendTLS.default.validationClient certificate validation settings.
-
array of objectsspec.frontendTLS.default.validation.caCertificateRefsReferences to ConfigMaps containing trusted client CAs in ca.crt. All referenced CAs are validated and combined inline.
-
stringspec.frontendTLS.default.validation.caCertificateRefs.nameName of the ConfigMap containing the CA in ca.crt.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.frontendTLS.default.validation.caCertificateRefs.namespaceNamespace of the ConfigMap. If omitted, the Gateway namespace is used.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
stringspec.frontendTLS.default.validation.mode
Client certificate validation mode.
AllowValidOnly — this is strict mTLS. AllowInsecureFallback — this is effectively optional, non-enforcing client-certificate validation.
Default:
AllowValidOnlyAllowed values:
AllowValidOnly,AllowInsecureFallback
-
-
-
array of objectsspec.frontendTLS.perPortValidation settings for individual HTTPS listener ports. The port is matched exactly and overrides default settings for that port.
-
integerspec.frontendTLS.perPort.portHTTPS listener port.
Allowed values:
1 <= X <= 65535 -
objectspec.frontendTLS.perPort.tlsValidation settings for this port.
-
objectspec.frontendTLS.perPort.tls.validationClient certificate validation settings.
-
array of objectsspec.frontendTLS.perPort.tls.validation.caCertificateRefsReferences to ConfigMaps containing trusted client CAs in ca.crt. All referenced CAs are validated and combined inline.
-
stringspec.frontendTLS.perPort.tls.validation.caCertificateRefs.nameName of the ConfigMap containing the CA in ca.crt.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.frontendTLS.perPort.tls.validation.caCertificateRefs.namespaceNamespace of the ConfigMap. If omitted, the Gateway namespace is used.
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
stringspec.frontendTLS.perPort.tls.validation.mode
Client certificate validation mode.
AllowValidOnly — this is strict mTLS. AllowInsecureFallback — this is effectively optional, non-enforcing client-certificate validation.
Default:
AllowValidOnlyAllowed values:
AllowValidOnly,AllowInsecureFallback
-
-
-
-
-
stringspec.gatewayName
Required value
Name of the Gateway resource this instance belongs to.Length:
1..45 -
objectspec.geoIPGeoIP database downloader configuration for proxy pods.
-
objectspec.geoIP.headersHTTP headers with GeoIP data to attach to requests.
-
stringspec.geoIP.headers.anonThe header for anonymous IP information, such as VPN, proxy, Tor, or hosting-provider detection.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.asnThe ASN header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.cityThe city header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.countryThe country code header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.ispThe ISP header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$ -
stringspec.geoIP.headers.regionThe region or subdivision header.
Maximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$
-
-
objectspec.geoIP.licenseKeySecretRef
Secret reference with the MaxMind license key.
A secret in the controller namespace (
d8-alb) always works. A secret in another namespace requires a Gateway API ReferenceGrant object in the secret’s namespace authorizing accessfromaGatewayind8-alb; without it, the secret is not read and GeoIP configuration fails until the reference is authorized or corrected.-
stringspec.geoIP.licenseKeySecretRef.name
Required value
Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$ -
stringspec.geoIP.licenseKeySecretRef.namespace
Required value
Namespace name. A namespace other thand8-albrequires an explicit ReferenceGrant object; see the field description above.Length:
1..63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
-
-
array of stringsspec.geoIP.maxmindEditionIDs
A list of database editions to use.
Warning. Current implementation supports using up to 4 editions.
Default:
[ "GeoLite2-City" ]-
stringspec.geoIP.maxmindEditionIDs.Element of the array
Allowed values:
GeoIP2-Anonymous-IP,GeoIP2-City,GeoIP2-ISP,GeoIP2-ASN,GeoLite2-ASN,GeoLite2-City
-
-
objectspec.geoIP.maxmindMirrorMirror configuration for downloading GeoIP databases. If the parameter is not set, the databases are downloaded directly from
https://download.maxmind.com.-
stringspec.geoIP.maxmindMirror.caCustom CA certificate in PEM format for verifying TLS connections to the mirror.
Maximum length:
65536Example:
ca: | -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- -
booleanspec.geoIP.maxmindMirror.insecureSkipVerifySkip TLS certificate verification for the mirror.
-
stringspec.geoIP.maxmindMirror.url
Required value
The URL for downloading GeoIP databases.Maximum length:
2048Pattern:
^https?://[^\r\n]+$Examples:
url: https://mirror.localurl: https://mirror.local/GeoLite2-City.tar.gz
-
-
-
objectspec.inlet
Required value
Inlet defines how traffic enters the data plane.-
array of objectsspec.inlet.additionalPortsAdditional Service ports published besides default 80/443. For HostPort inlets these ports are also bound as Pod hostPorts on the managed DaemonSet.
-
integerspec.inlet.additionalPorts.portAdditional Service port number.
Allowed values:
1 <= X <= 65535 -
stringspec.inlet.additionalPorts.protocolNetwork protocol for the additional Service port. Supported values:
TCP,UDP.Allowed values:
TCP,UDP
-
-
objectspec.inlet.hostPort
HostPortinlet settings.-
integerspec.inlet.hostPort.httpPort
Port for insecure HTTP connections.
If the parameter is not set, the connection over HTTP cannot be established.
This parameter is mandatory if
httpsPortis not set.Allowed values:
1 <= X <= 65535 -
integerspec.inlet.hostPort.httpsPort
Port for secure HTTPS connections.
If the parameter is not set, the connection over HTTPS cannot be established.
This parameter is mandatory if
httpPortis not set.Allowed values:
1 <= X <= 65535
-
-
objectspec.inlet.loadBalancerSettings for the LoadBalancer inlet.
-
integerspec.inlet.loadBalancer.httpPort
Port for insecure HTTP connections. If it is not set,
80port is assumed.Can be set to
0to disable accepting HTTP connections.Allowed values:
0 <= X <= 65535 -
integerspec.inlet.loadBalancer.httpsPort
Port for secure HTTPS connections. If it is not set,
443port is assumed.Can be set to
0to disable accepting HTTPS connections.Allowed values:
0 <= X <= 65535 -
stringspec.inlet.loadBalancer.loadBalancerClass
Class of the load balancer that is passed to the spec.loadBalancerClass parameter of the provisioned service with the LoadBalancer type.
Warning. This field is immutable.
Maximum length:
317Pattern:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?[A-Za-z0-9]([-A-Za-z0-9_.]*[A-Za-z0-9])?$ -
array of stringsspec.inlet.loadBalancer.loadBalancerSourceRanges
List of IP addresses in the CIDR format that are allowed accessing the load balancer.
Caution. A cloud provider may not support this option or ignore it.
Providers supporting this option: AWS, Azure, GCP. Providers ignoring this option: Yandex Cloud.
For other cloud providers, behavior may vary depending on the cloud implementation specifics. Test this option before using it in a production environment.
-
stringspec.inlet.loadBalancer.loadBalancerSourceRanges.Element of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
-
-
objectspec.inlet.loadBalancer.serviceAnnotationsAdditional annotations for the LoadBalancer Service.
-
-
stringspec.inlet.type
Required value
Supported inlet type.Allowed values:
LoadBalancer,HostPort
-
-
objectspec.istioSidecarSettings for Istio sidecar injection into proxy pods.
-
booleanspec.istioSidecar.enabled
Attaches annotations to the proxy pods to automatically inject Istio sidecar containers.
To use this feature with an HTTPRoute, configure both of the following:
alb.network.deckhouse.io/service-upstream: "true": sends requests to the backend Service ClusterIP instead of directly to application Pods, so the Istio sidecar can intercept the traffic;- a
URLRewritefilter with the backend Service FQDN ashostname: sets the upstream Host so the Istio sidecar can identify the backend Service and establish mTLS.
Example:
metadata: annotations: alb.network.deckhouse.io/service-upstream: "true" spec: rules: - filters: - type: URLRewrite urlRewrite: hostname: httpbin.test-backend.svc.cluster.local -
objectspec.istioSidecar.resourcesResource requests and limits for the injected Istio sidecar container.
-
objectspec.istioSidecar.resources.limitsResource limits.
-
stringspec.istioSidecar.resources.limits.cpuCPU limits.
Maximum length:
64Pattern:
^[^\r\n]*$ -
stringspec.istioSidecar.resources.limits.memoryMemory limits.
Maximum length:
64Pattern:
^[^\r\n]*$
-
-
objectspec.istioSidecar.resources.requestsResource requests.
-
stringspec.istioSidecar.resources.requests.cpuCPU requests.
Maximum length:
64Pattern:
^[^\r\n]*$ -
stringspec.istioSidecar.resources.requests.memoryMemory requests.
Maximum length:
64Pattern:
^[^\r\n]*$
-
-
-
-
objectspec.nodeSelectorNode selector for pods.
-
objectspec.openTelemetryOpenTelemetry configuration for Envoy proxies.
-
objectspec.openTelemetry.tracingOpenTelemetry tracing configuration.
-
numberspec.openTelemetry.tracing.randomSamplingPercentagePercentage of requests that Envoy randomly selects for trace generation.
Default:
25Allowed values:
1 <= X <= 100 -
objectspec.openTelemetry.tracing.tlsTLS settings used by Envoy when connecting to the OpenTelemetry collector.
-
stringspec.openTelemetry.tracing.tls.caSecretNameName of the Kubernetes Secret containing the CA certificate used to verify the OpenTelemetry collector certificate. The Secret must be in the
d8-albnamespace.Maximum length:
63Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$Example:
caSecretName: otel-tracing-ca -
booleanspec.openTelemetry.tracing.tls.insecureSkipVerifyAllows Envoy to connect to the OpenTelemetry collector even if certificate verification fails.
-
stringspec.openTelemetry.tracing.tls.sni
Server Name Indication (SNI) value sent by Envoy during the TLS handshake.
Warning. This setting is required if the OpenTelemetry collector is behind a TLS proxy or load balancer that routes connections based on SNI.
Maximum length:
253Pattern:
^[^\r\n]*$ -
array of stringsspec.openTelemetry.tracing.tls.subjectAltNamesList of Subject Alternative Names (SANs) used to verify the OpenTelemetry collector certificate.
-
stringspec.openTelemetry.tracing.tls.subjectAltNames.Element of the array
Maximum length:
253Pattern:
^[^\r\n]*$
-
-
-
stringspec.openTelemetry.tracing.urlOpenTelemetry collector endpoint URL used for exporting traces.
Pattern:
^(https?|grpc)://([A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?)(?:\.([A-Za-z0-9](?:[-A-Za-z0-9]*[A-Za-z0-9])?))+(?::(6553[0-5]|655[0-2][0-9]|65[0-4][0-9]{2}|6[0-4][0-9]{3}|[1-5][0-9]{4}|[1-9][0-9]{0,3}))?(?:/[A-Za-z0-9._~!$&'()*+,;=:@%/-]*)?$Examples:
url: http://opentelemetry.collector.localurl: grpc://opentelemetry.collector.localurl: https://opentelemetry.collector.localurl: https://opentelemetry.collector.local:4018url: https://opentelemetry.collector.local:4018/v1/traces
-
-
-
objectspec.originalIPDetectionDefines if the Envoy Proxy has to detect original IP using headers.
-
stringspec.originalIPDetection.realIPHeaderDefines a header to use for original client IP detection.
Default:
X-Forwarded-ForMaximum length:
256Pattern:
^[!#$%&'*+.^_`|~0-9A-Za-z-]+$Example:
realIPHeader: X-Real-IP -
array of stringsspec.originalIPDetection.setRealIPFrom
Required value
Specifies CIDR ranges allowed to provide headers for origin IP detection.-
stringspec.originalIPDetection.setRealIPFrom.Element of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
-
-
-
objectspec.resourcesManagementCPU and memory request and limit settings for the controller Pods.
-
stringspec.resourcesManagement.mode
Required value
Resource management mode.Default:
VPAAllowed values:
VPA,Static -
objectspec.resourcesManagement.staticStatic mode settings.
-
objectspec.resourcesManagement.static.limitsResource limits.
Default:
{}-
stringspec.resourcesManagement.static.limits.cpuCPU limits.
-
stringspec.resourcesManagement.static.limits.memoryMemory limits.
-
-
objectspec.resourcesManagement.static.requestsResource requests.
Default:
{}-
stringspec.resourcesManagement.static.requests.cpuCPU requests.
Default:
350m -
stringspec.resourcesManagement.static.requests.memoryMemory requests.
Default:
500Mi
-
-
-
objectspec.resourcesManagement.vpaResource management settings for the VPA mode.
-
objectspec.resourcesManagement.vpa.cpuCPU-related VPA settings.
Default:
{}-
numberspec.resourcesManagement.vpa.cpu.limitRatio
The CPU limits/requests ratio.
If set, the limits are calculated based on the requests and the specified ratio.
-
stringspec.resourcesManagement.vpa.cpu.maxMaximum value of allowed CPU requests to be submitted by the VPA.
Default:
1500m -
stringspec.resourcesManagement.vpa.cpu.minMinimum value of allowed CPU requests to be submitted by the VPA.
Default:
100m
-
-
objectspec.resourcesManagement.vpa.memoryMemory-related VPA settings.
Default:
{}-
numberspec.resourcesManagement.vpa.memory.limitRatio
The memory limits/requests ratio.
If set, the limits are calculated based on the requests and the specified ratio.
-
stringspec.resourcesManagement.vpa.memory.maxMaximum value of allowed memory requests to be submitted by the VPA.
Default:
2000Mi -
stringspec.resourcesManagement.vpa.memory.minMinimum value of allowed memory requests to be submitted by the VPA.
Default:
500Mi
-
-
stringspec.resourcesManagement.vpa.modeVPA operating mode.
Default:
InitialAllowed values:
Initial,InPlaceOrRecreate
-
-
-
booleanspec.suppressEnvoyHeaders
Suppresses Envoy debug response headers such as
x-envoy-upstream-service-timeon gateway listeners.Defaults to
true. -
array of objectsspec.tolerationsPod tolerations.
-
stringspec.tolerations.effect
Maximum length:
64Pattern:
^(NoSchedule|PreferNoSchedule|NoExecute)?$ -
stringspec.tolerations.key
Maximum length:
317Pattern:
^$|^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]/)?([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]$ -
stringspec.tolerations.operator
Default:
EqualMaximum length:
64Pattern:
^(Equal|Exists)?$ -
integerspec.tolerations.tolerationSeconds
Allowed values:
0 <= X -
stringspec.tolerations.value
Maximum length:
63Pattern:
^(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])?$
-
-
booleanspec.useProxyProtocol
Enable Proxy Protocol support.
Warning. Proxy Protocol can’t be enabled if HTTP/3 is in use.
-
-
objectstatusClusterALBInstance status reflecting the actual state of the associated Gateway and data plane.
-
booleanstatus.conflictBackendTLSTrue when this instance backendTLS conflicts with another instance for the same Gateway.
-
stringstatus.conflictBackendTLSOwnerReference to an instance with a different backendTLS client certificate for this Gateway.
-
booleanstatus.conflictFrontendTLSTrue when this instance frontendTLS conflicts with another instance for the same Gateway.
-
stringstatus.conflictFrontendTLSOwnerReference to an instance with a different frontendTLS configuration for this Gateway.
-
booleanstatus.conflictPortsTrue when this instance additionalPorts are ignored because another older instance with the same gatewayName is authoritative.
-
stringstatus.conflictPortsOwnerReference to the older instance that defines effective additionalPorts for this gatewayName.
-
booleanstatus.defaultDeckhouseGatewayTrue when this cluster ClusterALBInstance is selected as default gateway source.
-
stringstatus.gatewayEffective Gateway name served by this instance.
-
integerstatus.observedGenerationGeneration of the resource last processed by the controller.
Allowed values:
0 <= X -
booleanstatus.readyTrue when this instance is ready to serve traffic.
-
booleanstatus.syncedTrue when desired and actual resources are in sync.
-