OpenMCF logoOpenMCF

Loading...

Kubernetes Gateway Class

Creates a cluster-scoped Kubernetes Gateway API GatewayClass that identifies the controller (Istio, Envoy Gateway, NGINX Gateway Fabric, and others) responsible for managing Gateways of that class. GatewayClass is the infrastructure-provider layer of the Gateway API role model -- the root resource that a KubernetesGateway references by name. This component mirrors the upstream Gateway API v1 GatewayClass spec with full fidelity while adding proto validation, typed SDKs, and InfraChart composability.

What Gets Created

When you deploy a KubernetesGatewayClass resource, OpenMCF provisions:

  • A cluster-scoped GatewayClass custom resource named after metadata.name, with the specified controllerName and optional parametersRef and description.

No namespaced workloads are created. The matching Gateway API controller observes the GatewayClass and sets its Accepted status condition.

Prerequisites

  • Gateway API CRDs installed on the target cluster -- deploy the KubernetesGatewayApiCrds component first (it is registered as a prerequisite of this kind).
  • A running Gateway API controller (Istio, Envoy Gateway, NGINX Gateway Fabric, etc.) whose identity matches controllerName.
  • Kubernetes credentials configured via the OpenMCF provider config.

Quick Start

Create a file gateway-class.yaml:

apiVersion: kubernetes.openmcf.org/v1
kind: KubernetesGatewayClass
metadata:
  name: istio
spec:
  controllerName: istio.io/gateway-controller
  description: "Istio gateway controller for production ingress"

Deploy:

openmcf apply -f gateway-class.yaml

Configuration Reference

Required Fields

FieldTypeDescription
controllerNamestringDomain-prefixed path identifying the controller (e.g. istio.io/gateway-controller). Immutable once created. 1-253 characters.

Optional Fields

FieldTypeDefaultDescription
targetCluster.clusterKindenum—Kubernetes cluster kind (e.g. GcpGkeCluster, AwsEksCluster).
targetCluster.clusterNamestring—Name of the target Kubernetes cluster in the same environment.
parametersRef.groupstring""API group of the controller-specific parameters resource.
parametersRef.kindstring""Kind of the parameters resource (e.g. ConfigMap, EnvoyProxy).
parametersRef.namestring—Name of the parameters resource (required when parametersRef is set).
parametersRef.namespacestring—Namespace of the parameters resource; set only for namespace-scoped resources.
descriptionstring—Human-friendly description (max 64 characters).

Examples

Istio GatewayClass

apiVersion: kubernetes.openmcf.org/v1
kind: KubernetesGatewayClass
metadata:
  name: istio
spec:
  controllerName: istio.io/gateway-controller
  description: "Istio gateway controller"

Envoy Gateway with a parameters reference

apiVersion: kubernetes.openmcf.org/v1
kind: KubernetesGatewayClass
metadata:
  name: envoy-gateway
spec:
  controllerName: gateway.envoyproxy.io/gatewayclass-controller
  parametersRef:
    group: gateway.envoyproxy.io
    kind: EnvoyProxy
    name: custom-proxy-config
    namespace: envoy-gateway-system
  description: "Envoy Gateway with custom proxy config"

Stack Outputs

After deployment, the following outputs are available in status.outputs:

OutputTypeDescription
gatewayClassNamestringName of the created GatewayClass (equals metadata.name). Reference this from KubernetesGateway.spec.gatewayClassName.
controllerNamestringThe controller managing this GatewayClass.

Related Components

  • KubernetesGatewayApiCrds — installs the Gateway API CRDs (prerequisite)
  • KubernetesGateway — references this class via gatewayClassName to define listeners and entry points
  • KubernetesHttpRoute — routes HTTP traffic through a Gateway of this class

Next article

Kubernetes GHA Runner Scale Set

Kubernetes GHA Runner Scale Set Deploys a GitHub Actions Runner Scale Set on a Kubernetes cluster, providing self-hosted runners that automatically scale based on workflow demand. The module installs an AutoScalingRunnerSet custom resource via the official Helm chart. When GitHub Actions workflows request runners with matching labels, the controller creates ephemeral runner pods to execute the jobs, scaling down to a configurable minimum when idle. What Gets Created When you deploy a...
Read next article
Presets
2 ready-to-deploy configurationsView presets →