v2alpha1

package
v2.0.0-alpha.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 10, 2025 License: MIT Imports: 9 Imported by: 0

Documentation

Overview

Package v2alpha1 contains API Schema definitions for the gateway-operator.konghq.com v2alpha1 API group. +kubebuilder:object:generate=true +groupName=gateway-operator.konghq.com +groupGoName=GatewayOperator

Package v2alpha1 contains API Schema definitions for the gateway-operator.konghq.com v2alpha1 API group +kubebuilder:object:generate=true +groupName=gateway-operator.konghq.com

Index

Constants

This section is empty.

Variables

View Source
var (
	// SchemeGroupVersion is group version used to register these objects
	SchemeGroupVersion = schema.GroupVersion{Group: "gateway-operator.konghq.com", Version: "v2alpha1"}

	// SchemeBuilder is used to add go types to the GroupVersionKind scheme
	SchemeBuilder = &scheme.Builder{GroupVersion: SchemeGroupVersion}

	// AddToScheme adds the types in this group-version to the given scheme.
	AddToScheme = SchemeBuilder.AddToScheme
)

Functions

func ControlPlaneGVR

func ControlPlaneGVR() schema.GroupVersionResource

ControlPlaneGVR returns current package ControlPlane GVR.

Types

type ControlPlane

type ControlPlane struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the specification of the ControlPlane resource.
	Spec ControlPlaneSpec `json:"spec,omitempty"`

	// Status is the status of the ControlPlane resource.
	//
	// +optional
	Status ControlPlaneStatus `json:"status,omitempty"`
}

ControlPlane is the Schema for the controlplanes API

+genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:storageversion +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:shortName=kocp,categories=kong;all +kubebuilder:printcolumn:name="Ready",description="The Resource is ready",type=string,JSONPath=`.status.conditions[?(@.type=='Ready')].status` +apireference:kgo:include +kong:channels=gateway-operator

func (*ControlPlane) DeepCopy

func (in *ControlPlane) DeepCopy() *ControlPlane

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlane.

func (*ControlPlane) DeepCopyInto

func (in *ControlPlane) DeepCopyInto(out *ControlPlane)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ControlPlane) DeepCopyObject

func (in *ControlPlane) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*ControlPlane) GetConditions

func (c *ControlPlane) GetConditions() []metav1.Condition

GetConditions returns the ControlPlane Status Conditions

func (*ControlPlane) GetExtensions

func (c *ControlPlane) GetExtensions() []commonv1alpha1.ExtensionRef

GetExtensions retrieves the ControlPlane Extensions

func (*ControlPlane) SetConditions

func (c *ControlPlane) SetConditions(conditions []metav1.Condition)

SetConditions sets the ControlPlane Status Conditions

type ControlPlaneController

type ControlPlaneController struct {
	// Name is the name of the controller.
	//
	// +required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// State indicates whether the feature gate is enabled or disabled.
	//
	// +required
	// +kubebuilder:validation:Enum=enabled;disabled
	State ControllerState `json:"state"`
}

ControlPlaneController defines a controller state for the ControlPlane. It overrides the default behavior as defined in the deployed operator version.

+apireference:kgo:include

func (*ControlPlaneController) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneController.

func (*ControlPlaneController) DeepCopyInto

func (in *ControlPlaneController) DeepCopyInto(out *ControlPlaneController)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlPlaneDataPlaneTarget

type ControlPlaneDataPlaneTarget struct {
	// Type indicates the type of the DataPlane target.
	//
	// +required
	// +kubebuilder:validation:Enum=ref;managedByOwner
	Type ControlPlaneDataPlaneTargetType `json:"type"`

	// Ref is the name of the DataPlane to configure.
	//
	// +optional
	Ref *ControlPlaneDataPlaneTargetRef `json:"ref,omitempty"`
}

ControlPlaneDataPlaneTarget defines the target for the DataPlane that the ControlPlane is responsible for configuring.

+kubebuilder:validation:XValidation:message="Ref has to be provided when type is set to ref",rule="self.type != 'ref' || has(self.ref)" +kubebuilder:validation:XValidation:message="Ref cannot be provided when type is set to managedByOwner",rule="self.type != 'managedByOwner' || !has(self.ref)"

func (*ControlPlaneDataPlaneTarget) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneDataPlaneTarget.

func (*ControlPlaneDataPlaneTarget) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlPlaneDataPlaneTargetRef

type ControlPlaneDataPlaneTargetRef struct {
	// Ref is the name of the DataPlane to configure.
	//
	// +required
	Name string `json:"name"`
}

ControlPlaneDataPlaneTargetRef defines the reference to a DataPlane resource that the ControlPlane is responsible for configuring.

func (*ControlPlaneDataPlaneTargetRef) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneDataPlaneTargetRef.

func (*ControlPlaneDataPlaneTargetRef) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlPlaneDataPlaneTargetType

type ControlPlaneDataPlaneTargetType string

ControlPlaneDataPlaneTargetType defines the type of the DataPlane target that the ControlPlane is responsible for configuring.

const (
	// ControlPlaneDataPlaneTargetRefType indicates that the DataPlane target is a ref
	// of a DataPlane resource managed by the operator.
	// This is used for configuring DataPlanes that are managed by the operator.
	ControlPlaneDataPlaneTargetRefType ControlPlaneDataPlaneTargetType = "ref"

	// ControlPlaneDataPlaneTargetManagedByType indicates that the DataPlane target
	// is managed by the owner of the ControlPlane.
	// This is the case when using a Gateway resource to manage the DataPlane
	// and the ControlPlane is responsible for configuring it.
	ControlPlaneDataPlaneTargetManagedByType ControlPlaneDataPlaneTargetType = "managedByOwner"
)

type ControlPlaneFeatureGate

type ControlPlaneFeatureGate struct {
	// Name is the name of the feature gate.
	//
	// +required
	// +kubebuilder:validation:MinLength=1
	Name string `json:"name"`

	// State indicates whether the feature gate is enabled or disabled.
	//
	// +required
	// +kubebuilder:validation:Enum=enabled;disabled
	State FeatureGateState `json:"state"`
}

ControlPlaneFeatureGate defines a feature gate state for the ControlPlane. It overrides the default behavior as defined in the deployed operator version.

+apireference:kgo:include

func (*ControlPlaneFeatureGate) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneFeatureGate.

func (*ControlPlaneFeatureGate) DeepCopyInto

func (in *ControlPlaneFeatureGate) DeepCopyInto(out *ControlPlaneFeatureGate)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlPlaneGatewayDiscovery

type ControlPlaneGatewayDiscovery struct {
	// ReadinessCheckInterval defines the interval at which the ControlPlane
	// checks the readiness of the DataPlanes it is responsible for.
	// If not specified, the default interval as defined by the operator will be used.
	//
	// +optional
	ReadinessCheckInterval *metav1.Duration `json:"readinessCheckInterval,omitempty"`

	// ReadinessCheckTimeout defines the timeout for the DataPlane readiness check.
	// If not specified, the default interval as defined by the operator will be used.
	//
	// +optional
	ReadinessCheckTimeout *metav1.Duration `json:"readinessCheckTimeout,omitempty"`
}

ControlPlaneGatewayDiscovery defines the configuration for the Gateway Discovery feature of the ControlPlane.

func (*ControlPlaneGatewayDiscovery) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneGatewayDiscovery.

func (*ControlPlaneGatewayDiscovery) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlPlaneList

type ControlPlaneList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []ControlPlane `json:"items"`
}

ControlPlaneList contains a list of ControlPlane

+kubebuilder:object:root=true +apireference:kgo:include

func (*ControlPlaneList) DeepCopy

func (in *ControlPlaneList) DeepCopy() *ControlPlaneList

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneList.

func (*ControlPlaneList) DeepCopyInto

func (in *ControlPlaneList) DeepCopyInto(out *ControlPlaneList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*ControlPlaneList) DeepCopyObject

func (in *ControlPlaneList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type ControlPlaneOptions

type ControlPlaneOptions struct {
	// IngressClass enables support for the Ingress resources and indicates
	// which Ingress resources this ControlPlane should be responsible for.
	//
	// If omitted, Ingress resources will not be supported by the ControlPlane.
	//
	// +optional
	IngressClass *string `json:"ingressClass,omitempty"`

	// WatchNamespaces indicates the namespaces to watch for resources.
	//
	// +optional
	// +kubebuilder:default={type: all}
	WatchNamespaces *operatorv1beta1.WatchNamespaces `json:"watchNamespaces,omitempty"`

	// FeatureGates is a list of feature gates that are enabled for this ControlPlane.
	//
	// +optional
	// +listType=map
	// +listMapKey=name
	// +kubebuilder:validation:MaxItems=32
	FeatureGates []ControlPlaneFeatureGate `json:"featureGates,omitempty"`

	// Controllers defines the controllers that are enabled for this ControlPlane.
	//
	// +optional
	// +listType=map
	// +listMapKey=name
	// +kubebuilder:validation:MaxItems=32
	Controllers []ControlPlaneController `json:"controllers,omitempty"`

	// GatewayDiscovery defines the configuration for the Gateway Discovery feature.
	//
	// +optional
	GatewayDiscovery *ControlPlaneGatewayDiscovery `json:"gatewayDiscovery,omitempty"`
}

ControlPlaneOptions indicates the specific information needed to deploy and connect a ControlPlane to a DataPlane object.

+apireference:kgo:include

func (*ControlPlaneOptions) DeepCopy

func (in *ControlPlaneOptions) DeepCopy() *ControlPlaneOptions

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneOptions.

func (*ControlPlaneOptions) DeepCopyInto

func (in *ControlPlaneOptions) DeepCopyInto(out *ControlPlaneOptions)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlPlaneSpec

type ControlPlaneSpec struct {
	// DataPlane designates the target data plane to configure.
	//
	// It can be:
	// - a name of a DataPlane resource that is managed by the operator,
	// - a DataPlane that is managed by the owner of the ControlPlane (e.g. a Gateway resource)
	//
	// +required
	DataPlane ControlPlaneDataPlaneTarget `json:"dataplane"`

	ControlPlaneOptions `json:",inline"`

	// Extensions provide additional or replacement features for the ControlPlane
	// resources to influence or enhance functionality.
	//
	// +optional
	// +kubebuilder:validation:MaxItems=2
	// +kubebuilder:validation:XValidation:message="Extension not allowed for ControlPlane",rule="self.all(e, (e.group == 'konnect.konghq.com' && e.kind == 'KonnectExtension') || (e.group == 'gateway-operator.konghq.com' && e.kind == 'DataPlaneMetricsExtension'))"
	Extensions []commonv1alpha1.ExtensionRef `json:"extensions,omitempty"`
}

ControlPlaneSpec defines the desired state of ControlPlane

+apireference:kgo:include

func (*ControlPlaneSpec) DeepCopy

func (in *ControlPlaneSpec) DeepCopy() *ControlPlaneSpec

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneSpec.

func (*ControlPlaneSpec) DeepCopyInto

func (in *ControlPlaneSpec) DeepCopyInto(out *ControlPlaneSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControlPlaneStatus

type ControlPlaneStatus struct {
	// Conditions describe the current conditions of the Gateway.
	//
	// +optional
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MaxItems=8
	// +kubebuilder:default={{type: "Scheduled", status: "Unknown", reason:"NotReconciled", message:"Waiting for controller", lastTransitionTime: "1970-01-01T00:00:00Z"}}
	Conditions []metav1.Condition `json:"conditions,omitempty"`

	// FeatureGates is a list of effective feature gates for this ControlPlane.
	//
	// +optional
	// +listType=map
	// +listMapKey=name
	// +kubebuilder:validation:MaxItems=32
	FeatureGates []ControlPlaneFeatureGate `json:"featureGates,omitempty"`

	// Controllers is a list of enabled and disabled controllers for this ControlPlane.
	//
	// +optional
	// +listType=map
	// +listMapKey=name
	// +kubebuilder:validation:MaxItems=32
	Controllers []ControlPlaneController `json:"controllers,omitempty"`
}

ControlPlaneStatus defines the observed state of ControlPlane

+apireference:kgo:include

func (*ControlPlaneStatus) DeepCopy

func (in *ControlPlaneStatus) DeepCopy() *ControlPlaneStatus

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneStatus.

func (*ControlPlaneStatus) DeepCopyInto

func (in *ControlPlaneStatus) DeepCopyInto(out *ControlPlaneStatus)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ControllerState

type ControllerState string

ControllerState defines the state of a feature gate.

const (
	// ControllerStateEnabled indicates that the feature gate is enabled.
	ControllerStateEnabled ControllerState = "enabled"
	// ControllerStateDisabled indicates that the feature gate is disabled.
	ControllerStateDisabled ControllerState = "disabled"
)

type FeatureGateState

type FeatureGateState string

FeatureGateState defines the state of a feature gate.

const (
	// FeatureGateStateEnabled indicates that the feature gate is enabled.
	FeatureGateStateEnabled FeatureGateState = "enabled"
	// FeatureGateStateDisabled indicates that the feature gate is disabled.
	FeatureGateStateDisabled FeatureGateState = "disabled"
)

type GatewayConfigControlPlaneOptions

type GatewayConfigControlPlaneOptions struct {
	ControlPlaneOptions `json:",inline"`
}

GatewayConfigControlPlaneOptions contains the options for configuring ControlPlane resources that will be managed as part of the Gateway.

func (*GatewayConfigControlPlaneOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigControlPlaneOptions.

func (*GatewayConfigControlPlaneOptions) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayConfigDataPlaneNetworkOptions

type GatewayConfigDataPlaneNetworkOptions struct {
	// Services indicates the configuration of Kubernetes Services needed for
	// the topology of various forms of traffic (including ingress, etc.) to
	// and from the DataPlane.
	//
	// +optional
	Services *GatewayConfigDataPlaneServices `json:"services,omitempty"`
}

GatewayConfigDataPlaneNetworkOptions defines network related options for a DataPlane.

+apireference:kgo:include

func (*GatewayConfigDataPlaneNetworkOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigDataPlaneNetworkOptions.

func (*GatewayConfigDataPlaneNetworkOptions) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayConfigDataPlaneOptions

type GatewayConfigDataPlaneOptions struct {
	// +optional
	Deployment operatorv1beta1.DataPlaneDeploymentOptions `json:"deployment"`

	// +optional
	Network GatewayConfigDataPlaneNetworkOptions `json:"network"`

	// +optional
	Resources *GatewayConfigDataPlaneResources `json:"resources,omitempty"`

	// PluginsToInstall is a list of KongPluginInstallation resources that
	// will be installed and available in the Gateways (DataPlanes) that
	// use this GatewayConfig.
	//
	// +optional
	PluginsToInstall []NamespacedName `json:"pluginsToInstall,omitempty"`
}

GatewayConfigDataPlaneOptions indicates the specific information needed to configure and deploy a DataPlane object.

+apireference:kgo:include

func (*GatewayConfigDataPlaneOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigDataPlaneOptions.

func (*GatewayConfigDataPlaneOptions) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayConfigDataPlaneResources

type GatewayConfigDataPlaneResources struct {
	// PodDisruptionBudget is the configuration for the PodDisruptionBudget
	// that will be created for the DataPlane.
	//
	// +optional
	PodDisruptionBudget *PodDisruptionBudget `json:"podDisruptionBudget,omitempty"`
}

GatewayConfigDataPlaneResources defines the resources that will be created and managed for Gateway's DataPlane.

+apireference:kgo:include

func (*GatewayConfigDataPlaneResources) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigDataPlaneResources.

func (*GatewayConfigDataPlaneResources) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayConfigDataPlaneServices

type GatewayConfigDataPlaneServices struct {
	// Ingress is the Kubernetes Service that will be used to expose ingress
	// traffic for the DataPlane. Here you can determine whether the DataPlane
	// will be exposed outside the cluster (e.g. using a LoadBalancer type
	// Services) or only internally (e.g. ClusterIP), and inject any additional
	// annotations you need on the service (for instance, if you need to
	// influence a cloud provider LoadBalancer configuration).
	//
	// +optional
	Ingress *GatewayConfigServiceOptions `json:"ingress,omitempty"`
}

GatewayConfigDataPlaneServices contains Services related DataPlane configuration.

+apireference:kgo:include

func (*GatewayConfigDataPlaneServices) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigDataPlaneServices.

func (*GatewayConfigDataPlaneServices) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayConfigServiceOptions

type GatewayConfigServiceOptions struct {
	ServiceOptions `json:",inline"`
}

GatewayConfigServiceOptions is used to includes options to customize the ingress service, such as the annotations.

+apireference:kgo:include

func (*GatewayConfigServiceOptions) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigServiceOptions.

func (*GatewayConfigServiceOptions) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayConfiguration

type GatewayConfiguration struct {
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec defines the desired state of GatewayConfiguration.
	Spec GatewayConfigurationSpec `json:"spec,omitempty"`

	// Status defines the observed state of GatewayConfiguration.
	//
	// +optional
	Status GatewayConfigurationStatus `json:"status,omitempty"`
}

GatewayConfiguration is the Schema for the gatewayconfigurations API.

+genclient +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object +kubebuilder:storageversion +apireference:kgo:include +kong:channels=gateway-operator +kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:resource:shortName=kogc,categories=kong;all

func (*GatewayConfiguration) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfiguration.

func (*GatewayConfiguration) DeepCopyInto

func (in *GatewayConfiguration) DeepCopyInto(out *GatewayConfiguration)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*GatewayConfiguration) DeepCopyObject

func (in *GatewayConfiguration) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

func (*GatewayConfiguration) GetConditions

func (g *GatewayConfiguration) GetConditions() []metav1.Condition

GetConditions retrieves the GatewayConfiguration Status Condition

func (*GatewayConfiguration) GetExtensions

func (g *GatewayConfiguration) GetExtensions() []commonv1alpha1.ExtensionRef

GetExtensions retrieves the GatewayConfiguration Extensions

func (*GatewayConfiguration) SetConditions

func (g *GatewayConfiguration) SetConditions(conditions []metav1.Condition)

SetConditions sets the GatewayConfiguration Status Condition

type GatewayConfigurationList

type GatewayConfigurationList struct {
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	Items           []GatewayConfiguration `json:"items"`
}

GatewayConfigurationList contains a list of GatewayConfiguration

+apireference:kgo:include +kubebuilder:object:root=true

func (*GatewayConfigurationList) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigurationList.

func (*GatewayConfigurationList) DeepCopyInto

func (in *GatewayConfigurationList) DeepCopyInto(out *GatewayConfigurationList)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

func (*GatewayConfigurationList) DeepCopyObject

func (in *GatewayConfigurationList) DeepCopyObject() runtime.Object

DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.

type GatewayConfigurationSpec

type GatewayConfigurationSpec struct {
	// DataPlaneOptions is the specification for configuration
	// overrides for DataPlane resources that will be created for the Gateway.
	//
	// +optional
	DataPlaneOptions *GatewayConfigDataPlaneOptions `json:"dataPlaneOptions,omitempty"`

	// ControlPlaneOptions is the specification for configuration
	// overrides for ControlPlane resources that will be managed as part of the Gateway.
	//
	// +optional
	ControlPlaneOptions *GatewayConfigControlPlaneOptions `json:"controlPlaneOptions,omitempty"`

	// Extensions provide additional or replacement features for the Gateway
	// resource to influence or enhance functionality.
	// NOTE: currently, there are only 2 extensions that can be attached
	// at the Gateway level (KonnectExtension, DataPlaneMetricsExtension),
	// so the amount of extensions is limited to 2.
	//
	// +optional
	// +kubebuilder:validation:MinItems=0
	// +kubebuilder:validation:MaxItems=2
	// +kubebuilder:validation:XValidation:message="Extension not allowed for GatewayConfiguration",rule="self.all(e, (e.group == 'konnect.konghq.com' && e.kind == 'KonnectExtension') || (e.group == 'gateway-operator.konghq.com' && e.kind == 'DataPlaneMetricsExtension'))"
	Extensions []commonv1alpha1.ExtensionRef `json:"extensions,omitempty"`
}

GatewayConfigurationSpec defines the desired state of GatewayConfiguration

+apireference:kgo:include

func (*GatewayConfigurationSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigurationSpec.

func (*GatewayConfigurationSpec) DeepCopyInto

func (in *GatewayConfigurationSpec) DeepCopyInto(out *GatewayConfigurationSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type GatewayConfigurationStatus

type GatewayConfigurationStatus struct {
	// Conditions describe the current conditions of the GatewayConfigurationStatus.
	//
	// +optional
	// +listType=map
	// +listMapKey=type
	// +kubebuilder:validation:MaxItems=8
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

GatewayConfigurationStatus defines the observed state of GatewayConfiguration

+apireference:kgo:include

func (*GatewayConfigurationStatus) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GatewayConfigurationStatus.

func (*GatewayConfigurationStatus) DeepCopyInto

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type NamespacedName

type NamespacedName struct {
	// Name is the name of the resource.
	//
	// +required
	Name string `json:"name"`

	// Namespace is the namespace of the resource.
	//
	// +optional
	Namespace string `json:"namespace"`
}

NamespacedName is a resource identified by name and optional namespace.

+apireference:kgo:include

func (*NamespacedName) DeepCopy

func (in *NamespacedName) DeepCopy() *NamespacedName

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NamespacedName.

func (*NamespacedName) DeepCopyInto

func (in *NamespacedName) DeepCopyInto(out *NamespacedName)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PodDisruptionBudget

type PodDisruptionBudget struct {
	// Spec defines the specification of the PodDisruptionBudget.
	// Selector is managed by the controller and cannot be set by the user.
	Spec PodDisruptionBudgetSpec `json:"spec,omitempty"`
}

PodDisruptionBudget defines the configuration for the PodDisruptionBudget.

+apireference:kgo:include

func (*PodDisruptionBudget) DeepCopy

func (in *PodDisruptionBudget) DeepCopy() *PodDisruptionBudget

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDisruptionBudget.

func (*PodDisruptionBudget) DeepCopyInto

func (in *PodDisruptionBudget) DeepCopyInto(out *PodDisruptionBudget)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type PodDisruptionBudgetSpec

type PodDisruptionBudgetSpec struct {
	// An eviction is allowed if at least "minAvailable" pods selected by
	// "selector" will still be available after the eviction, i.e. even in the
	// absence of the evicted pod.  So for example you can prevent all voluntary
	// evictions by specifying "100%".
	//
	// +optional
	MinAvailable *intstr.IntOrString `json:"minAvailable,omitempty" protobuf:"bytes,1,opt,name=minAvailable"`

	// An eviction is allowed if at most "maxUnavailable" pods selected by
	// "selector" are unavailable after the eviction, i.e. even in absence of
	// the evicted pod. For example, one can prevent all voluntary evictions
	// by specifying 0. This is a mutually exclusive setting with "minAvailable".
	//
	// +optional
	MaxUnavailable *intstr.IntOrString `json:"maxUnavailable,omitempty" protobuf:"bytes,3,opt,name=maxUnavailable"`

	// UnhealthyPodEvictionPolicy defines the criteria for when unhealthy pods
	// should be considered for eviction. Current implementation considers healthy pods,
	// as pods that have status.conditions item with type="Ready",status="True".
	//
	// Valid policies are IfHealthyBudget and AlwaysAllow.
	// If no policy is specified, the default behavior will be used,
	// which corresponds to the IfHealthyBudget policy.
	//
	// IfHealthyBudget policy means that running pods (status.phase="Running"),
	// but not yet healthy can be evicted only if the guarded application is not
	// disrupted (status.currentHealthy is at least equal to status.desiredHealthy).
	// Healthy pods will be subject to the PDB for eviction.
	//
	// AlwaysAllow policy means that all running pods (status.phase="Running"),
	// but not yet healthy are considered disrupted and can be evicted regardless
	// of whether the criteria in a PDB is met. This means perspective running
	// pods of a disrupted application might not get a chance to become healthy.
	// Healthy pods will be subject to the PDB for eviction.
	//
	// Additional policies may be added in the future.
	// Clients making eviction decisions should disallow eviction of unhealthy pods
	// if they encounter an unrecognized policy in this field.
	//
	// This field is beta-level. The eviction API uses this field when
	// the feature gate PDBUnhealthyPodEvictionPolicy is enabled (enabled by default).
	//
	// +optional
	UnhealthyPodEvictionPolicy *policyv1.UnhealthyPodEvictionPolicyType `json:"unhealthyPodEvictionPolicy,omitempty" protobuf:"bytes,4,opt,name=unhealthyPodEvictionPolicy"`
}

PodDisruptionBudgetSpec defines the specification of a PodDisruptionBudget.

+kubebuilder:validation:XValidation:message="You can specify only one of maxUnavailable and minAvailable in a single PodDisruptionBudgetSpec.",rule="(has(self.minAvailable) && !has(self.maxUnavailable)) || (!has(self.minAvailable) && has(self.maxUnavailable))" +apireference:kgo:include

func (*PodDisruptionBudgetSpec) DeepCopy

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PodDisruptionBudgetSpec.

func (*PodDisruptionBudgetSpec) DeepCopyInto

func (in *PodDisruptionBudgetSpec) DeepCopyInto(out *PodDisruptionBudgetSpec)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

type ServiceOptions

type ServiceOptions struct {
	// Type determines how the Service is exposed.
	// Defaults to `LoadBalancer`.
	//
	// `ClusterIP` allocates a cluster-internal IP address for load-balancing
	// to endpoints.
	//
	// `NodePort` exposes the Service on each Node's IP at a static port (the NodePort).
	// To make the node port available, Kubernetes sets up a cluster IP address,
	// the same as if you had requested a Service of type: ClusterIP.
	//
	// `LoadBalancer` builds on NodePort and creates an external load-balancer
	// (if supported in the current cloud) which routes to the same endpoints
	// as the clusterIP.
	//
	// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
	//
	// +optional
	// +kubebuilder:default=LoadBalancer
	// +kubebuilder:validation:Enum=LoadBalancer;NodePort;ClusterIP
	Type corev1.ServiceType `json:"type,omitempty" protobuf:"bytes,4,opt,name=type,casttype=ServiceType"`

	// Name defines the name of the service.
	// If Name is empty, the controller will generate a service name from the owning object.
	//
	// +optional
	Name *string `json:"name,omitempty"`

	// Annotations is an unstructured key value map stored with a resource that may be
	// set by external tools to store and retrieve arbitrary metadata. They are not
	// queryable and should be preserved when modifying objects.
	//
	// More info: http://kubernetes.io/docs/user-guide/annotations
	//
	// +optional
	Annotations map[string]string `json:"annotations,omitempty" protobuf:"bytes,12,rep,name=annotations"`

	// ExternalTrafficPolicy describes how nodes distribute service traffic they
	// receive on one of the Service's "externally-facing" addresses (NodePorts,
	// ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure
	// the service in a way that assumes that external load balancers will take care
	// of balancing the service traffic between nodes, and so each node will deliver
	// traffic only to the node-local endpoints of the service, without masquerading
	// the client source IP. (Traffic mistakenly sent to a node with no endpoints will
	// be dropped.) The default value, "Cluster", uses the standard behavior of
	// routing to all endpoints evenly (possibly modified by topology and other
	// features). Note that traffic sent to an External IP or LoadBalancer IP from
	// within the cluster will always get "Cluster" semantics, but clients sending to
	// a NodePort from within the cluster may need to take traffic policy into account
	// when picking a node.
	//
	// More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
	//
	// +optional
	// +kubebuilder:validation:Enum=Cluster;Local
	ExternalTrafficPolicy corev1.ServiceExternalTrafficPolicy `json:"externalTrafficPolicy,omitempty"`
}

ServiceOptions is used to includes options to customize the ingress service, such as the annotations. +apireference:kgo:include +kubebuilder:validation:XValidation:message="Cannot set ExternalTrafficPolicy for ClusterIP service.", rule="has(self.type) && self.type == 'ClusterIP' ? !has(self.externalTrafficPolicy) : true"

func (*ServiceOptions) DeepCopy

func (in *ServiceOptions) DeepCopy() *ServiceOptions

DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ServiceOptions.

func (*ServiceOptions) DeepCopyInto

func (in *ServiceOptions) DeepCopyInto(out *ServiceOptions)

DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL