v1alpha1

package
v0.0.0-...-d7ad274 Latest Latest
Warning

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

Go to latest
Published: Dec 28, 2021 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Overview

Package v1alpha1 contains API Schema definitions for the operator v1alpha1 API group +kubebuilder:object:generate=true +groupName=operator.projectsesame.io

Index

Constants

View Source
const (
	// GatewayClassControllerRef identifies sesame operator as the managing controller
	// of a GatewayClass.
	// DEPRECATED: The sesame operator no longer reconciles GatewayClasses.
	GatewayClassControllerRef = "projectsesame.io/sesame-operator"

	// GatewayClassParamsRefGroup identifies sesame operator as the group name of a
	// GatewayClass.
	// DEPRECATED: The sesame operator no longer reconciles GatewayClasses.
	GatewayClassParamsRefGroup = "operator.projectsesame.io"

	// GatewayClassParamsRefKind identifies Sesame as the kind name of a GatewayClass.
	// DEPRECATED: The sesame operator no longer reconciles GatewayClasses.
	GatewayClassParamsRefKind = "Sesame"

	// GatewayFinalizer is the name of the finalizer used for a Gateway.
	// DEPRECATED: The sesame operator no longer reconciles Gateways.
	GatewayFinalizer = "gateway.networking.x-k8s.io/finalizer"

	// OwningGatewayNameLabel is the owner reference label used for a Gateway
	// managed by the operator. The value should be the name of the Gateway.
	// DEPRECATED: The sesame operator no longer reconciles Gateways.
	OwningGatewayNameLabel = "sesame.operator.projectsesame.io/owning-gateway-name"

	// OwningGatewayNsLabel is the owner reference label used for a Gateway
	// managed by the operator. The value should be the namespace of the Gateway.
	// DEPRECATED: The sesame operator no longer reconciles Gateways.
	OwningGatewayNsLabel = "sesame.operator.projectsesame.io/owning-gateway-namespace"
)
View Source
const (
	// OwningSesameNameLabel is the owner reference label used for a Sesame
	// created by the operator. The value should be the name of the sesame.
	OwningSesameNameLabel = "sesame.operator.projectsesame.io/owning-sesame-name"

	// OwningSesameNsLabel is the owner reference label used for a Sesame
	// created by the operator. The value should be the namespace of the sesame.
	OwningSesameNsLabel = "sesame.operator.projectsesame.io/owning-sesame-namespace"

	// SesameFinalizer is the name of the finalizer used for a Sesame.
	SesameFinalizer = "sesame.operator.projectsesame.io/finalizer"
)
View Source
const (
	// SesameAvailableConditionType indicates that the sesame is running
	// and available.
	SesameAvailableConditionType = "Available"
)

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "operator.projectsesame.io", Version: "v1alpha1"}

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

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

Functions

This section is empty.

Types

type AWSLoadBalancerParameters

type AWSLoadBalancerParameters struct {
	// Type is the type of AWS load balancer to manage.
	//
	// Valid values are:
	//
	// * "Classic": A Classic load balancer makes routing decisions at either the
	//   transport layer (TCP/SSL) or the application layer (HTTP/HTTPS). See
	//   the following for additional details:
	//
	//     https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb
	//
	// * "NLB": A Network load balancer makes routing decisions at the transport
	//   layer (TCP/SSL). See the following for additional details:
	//
	//     https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb
	//
	// If unset, defaults to "Classic".
	//
	// +kubebuilder:default=Classic
	Type AWSLoadBalancerType `json:"type,omitempty"`

	// AllocationIDs is a list of Allocation IDs of Elastic IP addresses that are
	// to be assigned to the Network Load Balancer. Works only with type NLB.
	// If you are using Amazon EKS 1.16 or later, you can assign Elastic IP addresses
	// to Network Load Balancer with AllocationIDs. The number of Allocation IDs
	// must match the number of subnets used for the load balancer.
	//
	// Example: "eipalloc-<xxxxxxxxxxxxxxxxx>"
	//
	// See: https://docs.aws.amazon.com/eks/latest/userguide/load-balancing.html
	//
	// +optional
	AllocationIDs []string `json:"allocationIds,omitempty"`
}

AWSLoadBalancerParameters provides configuration settings that are specific to AWS load balancers.

func (*AWSLoadBalancerParameters) DeepCopy

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

func (*AWSLoadBalancerParameters) DeepCopyInto

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

type AWSLoadBalancerType

type AWSLoadBalancerType string

AWSLoadBalancerType is the type of AWS load balancer to manage. +kubebuilder:validation:Enum=Classic;NLB

const (
	AWSClassicLoadBalancer AWSLoadBalancerType = "Classic"
	AWSNetworkLoadBalancer AWSLoadBalancerType = "NLB"
)

type AzureLoadBalancerParameters

type AzureLoadBalancerParameters struct {
	// Address is the desired load balancer IP address. If scope is "Internal", address
	// must reside in same virtual network as AKS and must not already be assigned
	// to a resource. If address does not reside in same subnet as AKS, the subnet
	// parameter is also required.
	//
	// Address must already exist (e.g. `az network public-ip create`).
	//
	// See:
	// 	 https://docs.microsoft.com/en-us/azure/aks/static-ip#create-a-service-using-the-static-ip-address
	// 	 https://docs.microsoft.com/en-us/azure/aks/internal-lb#specify-an-ip-address
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +optional
	Address *string `json:"address,omitempty"`

	// ResourceGroup is the resource group name where the "address" resides. Relevant
	// only if scope is "External".
	//
	// Omit if desired IP is created in same resource group as AKS cluster.
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=90
	// +optional
	ResourceGroup *string `json:"resourceGroup,omitempty"`

	// Subnet is the subnet name where the "address" resides. Relevant only
	// if scope is "Internal" and desired IP does not reside in same subnet as AKS.
	//
	// Omit if desired IP is in same subnet as AKS cluster.
	//
	// See: https://docs.microsoft.com/en-us/azure/aks/internal-lb#specify-an-ip-address
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=80
	// +optional
	Subnet *string `json:"subnet,omitempty"`
}

func (*AzureLoadBalancerParameters) DeepCopy

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

func (*AzureLoadBalancerParameters) DeepCopyInto

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

type ContainerPort

type ContainerPort struct {
	// Name is an IANA_SVC_NAME within the pod.
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name"`

	// PortNumber is the network port number to expose on the envoy pod.
	// The number must be greater than 0 and less than 65536.
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	PortNumber int32 `json:"portNumber"`
}

ContainerPort is the schema to specify a network port for a container. A container port gives the system additional information about network connections a container uses, but is primarily informational.

func (*ContainerPort) DeepCopy

func (in *ContainerPort) DeepCopy() *ContainerPort

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

func (*ContainerPort) DeepCopyInto

func (in *ContainerPort) DeepCopyInto(out *ContainerPort)

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

type EnvoyNetworkPublishing

type EnvoyNetworkPublishing struct {
	// Type is the type of publishing strategy to use. Valid values are:
	//
	// * LoadBalancerService
	//
	// In this configuration, network endpoints for Envoy use container networking.
	// A Kubernetes LoadBalancer Service is created to publish Envoy network
	// endpoints. The Service uses port 80 to publish Envoy's HTTP network endpoint
	// and port 443 to publish Envoy's HTTPS network endpoint.
	//
	// See: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
	//
	// * NodePortService
	//
	// Publishes Envoy network endpoints using a Kubernetes NodePort Service.
	//
	// In this configuration, Envoy network endpoints use container networking. A Kubernetes
	// NodePort Service is created to publish the network endpoints.
	//
	// See: https://kubernetes.io/docs/concepts/services-networking/service/#nodeport
	//
	// * ClusterIPService
	//
	// Publishes Envoy network endpoints using a Kubernetes ClusterIP Service.
	//
	// In this configuration, Envoy network endpoints use container networking. A Kubernetes
	// ClusterIP Service is created to publish the network endpoints.
	//
	// See: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
	//
	// +unionDiscriminator
	// +kubebuilder:default=LoadBalancerService
	Type NetworkPublishingType `json:"type,omitempty"`

	// LoadBalancer holds parameters for the load balancer. Present only if type is
	// LoadBalancerService.
	//
	// If unspecified, defaults to an external Classic AWS ELB.
	//
	// +kubebuilder:default={scope: External, providerParameters: {type: AWS}}
	LoadBalancer LoadBalancerStrategy `json:"loadBalancer,omitempty"`

	// NodePorts is a list of network ports to expose on each node's IP at a static
	// port number using a NodePort Service. Present only if type is NodePortService.
	// A ClusterIP Service, which the NodePort Service routes to, is automatically
	// created. You'll be able to contact the NodePort Service, from outside the
	// cluster, by requesting <NodeIP>:<NodePort>.
	//
	// If type is NodePortService and nodePorts is unspecified, two nodeports will be
	// created, one named "http" and the other named "https", with port numbers auto
	// assigned by Kubernetes API server. For additional information on the NodePort
	// Service, see:
	//
	//  https://kubernetes.io/docs/concepts/services-networking/service/#nodeport
	//
	// Names and port numbers must be unique in the list. Two ports must be specified,
	// one named "http" for Envoy's insecure service and one named "https" for Envoy's
	// secure service.
	//
	// +kubebuilder:validation:MinItems=2
	// +kubebuilder:validation:MaxItems=2
	// +optional
	NodePorts []NodePort `json:"nodePorts,omitempty"`

	// ContainerPorts is a list of container ports to expose from the Envoy container(s).
	// Exposing a port here gives the system additional information about the network
	// connections the Envoy container uses, but is primarily informational. Not specifying
	// a port here DOES NOT prevent that port from being exposed by Envoy. Any port which is
	// listening on the default "0.0.0.0" address inside the Envoy container will be accessible
	// from the network. Names and port numbers must be unique in the list container ports. Two
	// ports must be specified, one named "http" for Envoy's insecure service and one named
	// "https" for Envoy's secure service.
	//
	// TODO [danehans]: Update minItems to 1, requiring only https when the following issue
	// is fixed: https://github.com/projectsesame/Sesame/issues/2577.
	//
	// TODO [danehans]: Increase maxItems when https://github.com/projectsesame/Sesame/pull/3263
	// is implemented.
	//
	// +kubebuilder:validation:MinItems=2
	// +kubebuilder:validation:MaxItems=2
	// +kubebuilder:default={{name: http, portNumber: 8080}, {name: https, portNumber: 8443}}
	ContainerPorts []ContainerPort `json:"containerPorts,omitempty"`
}

EnvoyNetworkPublishing defines the schema to publish Envoy to a network. +union

func (*EnvoyNetworkPublishing) DeepCopy

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

func (*EnvoyNetworkPublishing) DeepCopyInto

func (in *EnvoyNetworkPublishing) DeepCopyInto(out *EnvoyNetworkPublishing)

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

type EnvoyNodePlacement

type EnvoyNodePlacement struct {
	// NodeSelector is the simplest recommended form of node selection constraint
	// and specifies a map of key-value pairs. For the Envoy pod to be eligible to
	// run on a node, the node must have each of the indicated key-value pairs as
	// labels (it can have additional labels as well).
	//
	// If unset, the Envoy pod(s) will be scheduled to any available node.
	//
	// +optional
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Tolerations work with taints to ensure that Envoy pods are not scheduled
	// onto inappropriate nodes. One or more taints are applied to a node; this
	// marks that the node should not accept any pods that do not tolerate the taints.
	//
	// The default is an empty list.
	//
	// See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
	// for additional details.
	//
	// +optional
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
}

EnvoyNodePlacement describes node scheduling configuration for Envoy pods. If nodeSelector and tolerations are specified, the scheduler will use both to determine where to place the Envoy pod(s).

func (*EnvoyNodePlacement) DeepCopy

func (in *EnvoyNodePlacement) DeepCopy() *EnvoyNodePlacement

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

func (*EnvoyNodePlacement) DeepCopyInto

func (in *EnvoyNodePlacement) DeepCopyInto(out *EnvoyNodePlacement)

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

type GCPLoadBalancerParameters

type GCPLoadBalancerParameters struct {
	// Address is the desired load balancer IP address. If scope is "Internal", the address
	// must reside in same subnet as the GKE cluster or "subnet" has to be provided.
	//
	// See:
	// 	 https://cloud.google.com/kubernetes-engine/docs/tutorials/configuring-domain-name-static-ip#use_a_service
	// 	 https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing#lb_subnet
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +optional
	Address *string `json:"address,omitempty"`

	// Subnet is the subnet name where the "address" resides. Relevant only
	// if scope is "Internal" and desired IP does not reside in same subnet as GKE
	// cluster.
	//
	// Omit if desired IP is in same subnet as GKE cluster.
	//
	// See: https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing#lb_subnet
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=63
	// +optional
	Subnet *string `json:"subnet,omitempty"`
}

func (*GCPLoadBalancerParameters) DeepCopy

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

func (*GCPLoadBalancerParameters) DeepCopyInto

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

type LoadBalancerProviderType

type LoadBalancerProviderType string

LoadBalancerProviderType is the underlying infrastructure provider for the load balancer. Allowed values are "AWS", "Azure", and "GCP".

+kubebuilder:validation:Enum=AWS;Azure;GCP

const (
	AWSLoadBalancerProvider   LoadBalancerProviderType = "AWS"
	AzureLoadBalancerProvider LoadBalancerProviderType = "Azure"
	GCPLoadBalancerProvider   LoadBalancerProviderType = "GCP"
)

type LoadBalancerScope

type LoadBalancerScope string

LoadBalancerScope is the scope at which a load balancer is exposed. +kubebuilder:validation:Enum=Internal;External

var (
	// InternalLoadBalancer is a load balancer that is exposed only on the
	// cluster's private network.
	InternalLoadBalancer LoadBalancerScope = "Internal"

	// ExternalLoadBalancer is a load balancer that is exposed on the
	// cluster's public network (which is typically on the Internet).
	ExternalLoadBalancer LoadBalancerScope = "External"
)

type LoadBalancerStrategy

type LoadBalancerStrategy struct {
	// Scope indicates the scope at which the load balancer is exposed.
	// Possible values are "External" and "Internal".
	//
	// +kubebuilder:default=External
	Scope LoadBalancerScope `json:"scope,omitempty"`

	// ProviderParameters contains load balancer information specific to
	// the underlying infrastructure provider.
	//
	// +kubebuilder:default={type: "AWS"}
	ProviderParameters ProviderLoadBalancerParameters `json:"providerParameters,omitempty"`
}

LoadBalancerStrategy holds parameters for a load balancer.

func (*LoadBalancerStrategy) DeepCopy

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

func (*LoadBalancerStrategy) DeepCopyInto

func (in *LoadBalancerStrategy) DeepCopyInto(out *LoadBalancerStrategy)

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

type NamespaceSpec

type NamespaceSpec struct {
	// Name is the name of the namespace to run Sesame and dependent
	// resources. If unset, defaults to "projectsesame".
	//
	// +kubebuilder:default=projectsesame
	Name string `json:"name,omitempty"`

	// RemoveOnDeletion will remove the namespace when the Sesame is
	// deleted. If set to True, deletion will not occur if any of the
	// following conditions exist:
	//
	// 1. The Sesame namespace is "default", "kube-system" or the
	//    sesame-operator's namespace.
	//
	// 2. Another Sesame exists in the namespace.
	//
	// 3. The namespace does not contain the Sesame owning label.
	//
	// +kubebuilder:default=false
	RemoveOnDeletion bool `json:"removeOnDeletion,omitempty"`
}

NamespaceSpec defines the schema of a Sesame namespace.

func (*NamespaceSpec) DeepCopy

func (in *NamespaceSpec) DeepCopy() *NamespaceSpec

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

func (*NamespaceSpec) DeepCopyInto

func (in *NamespaceSpec) DeepCopyInto(out *NamespaceSpec)

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

type NetworkPublishing

type NetworkPublishing struct {
	// Envoy provides the schema for publishing the network endpoints of Envoy.
	//
	// If unset, defaults to:
	//   type: LoadBalancerService
	//   containerPorts:
	//   - name: http
	//     portNumber: 8080
	//   - name: https
	//     portNumber: 8443
	//
	// +kubebuilder:default={type: LoadBalancerService, loadBalancer: {scope: External, providerParameters: {type: AWS}}, containerPorts: {{name: http, portNumber: 8080}, {name: https, portNumber: 8443}}}
	Envoy EnvoyNetworkPublishing `json:"envoy,omitempty"`
}

NetworkPublishing defines the schema for publishing Sesame to a network.

func (*NetworkPublishing) DeepCopy

func (in *NetworkPublishing) DeepCopy() *NetworkPublishing

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

func (*NetworkPublishing) DeepCopyInto

func (in *NetworkPublishing) DeepCopyInto(out *NetworkPublishing)

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

type NetworkPublishingType

type NetworkPublishingType string

NetworkPublishingType is a way to publish network endpoints. +kubebuilder:validation:Enum=LoadBalancerService;NodePortService;ClusterIPService

const (
	// LoadBalancerServicePublishingType publishes a network endpoint using a Kubernetes
	// LoadBalancer Service.
	LoadBalancerServicePublishingType NetworkPublishingType = "LoadBalancerService"

	// NodePortServicePublishingType publishes a network endpoint using a Kubernetes
	// NodePort Service.
	NodePortServicePublishingType NetworkPublishingType = "NodePortService"

	// ClusterIPServicePublishingType publishes a network endpoint using a Kubernetes
	// ClusterIP Service.
	ClusterIPServicePublishingType NetworkPublishingType = "ClusterIPService"
)

type NodePlacement

type NodePlacement struct {
	// Sesame describes node scheduling configuration of Sesame pods.
	//
	// +optional
	Sesame *SesameNodePlacement `json:"sesame,omitempty"`

	// Envoy describes node scheduling configuration of Envoy pods.
	//
	// +optional
	Envoy *EnvoyNodePlacement `json:"envoy,omitempty"`
}

NodePlacement describes node scheduling configuration of Sesame and Envoy pods.

func (*NodePlacement) DeepCopy

func (in *NodePlacement) DeepCopy() *NodePlacement

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

func (*NodePlacement) DeepCopyInto

func (in *NodePlacement) DeepCopyInto(out *NodePlacement)

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

type NodePort

type NodePort struct {
	// Name is an IANA_SVC_NAME within the NodePort Service.
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	Name string `json:"name"`

	// PortNumber is the network port number to expose for the NodePort Service.
	// If unspecified, a port number will be assigned from the the cluster's
	// nodeport service range, i.e. --service-node-port-range flag
	// (default: 30000-32767).
	//
	// If specified, the number must:
	//
	// 1. Not be used by another NodePort Service.
	// 2. Be within the cluster's nodeport service range, i.e. --service-node-port-range
	//    flag (default: 30000-32767).
	// 3. Be a valid network port number, i.e. greater than 0 and less than 65536.
	//
	// +optional
	// +kubebuilder:validation:Minimum=1
	// +kubebuilder:validation:Maximum=65535
	PortNumber *int32 `json:"portNumber,omitempty"`
}

NodePort is the schema to specify a network port for a NodePort Service.

func (*NodePort) DeepCopy

func (in *NodePort) DeepCopy() *NodePort

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

func (*NodePort) DeepCopyInto

func (in *NodePort) DeepCopyInto(out *NodePort)

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

type ProviderLoadBalancerParameters

type ProviderLoadBalancerParameters struct {
	// Type is the underlying infrastructure provider for the load balancer.
	// Allowed values are "AWS", "Azure", and "GCP".
	//
	// +unionDiscriminator
	// +kubebuilder:default=AWS
	Type LoadBalancerProviderType `json:"type,omitempty"`

	// AWS provides configuration settings that are specific to AWS
	// load balancers.
	//
	// If empty, defaults will be applied. See specific aws fields for
	// details about their defaults.
	//
	// +optional
	AWS *AWSLoadBalancerParameters `json:"aws,omitempty"`

	// Azure provides configuration settings that are specific to Azure
	// load balancers.
	//
	// If empty, defaults will be applied. See specific azure fields for
	// details about their defaults.
	//
	// +optional
	Azure *AzureLoadBalancerParameters `json:"azure,omitempty"`

	// GCP provides configuration settings that are specific to GCP
	// load balancers.
	//
	// If empty, defaults will be applied. See specific gcp fields for
	// details about their defaults.
	//
	// +optional
	GCP *GCPLoadBalancerParameters `json:"gcp,omitempty"`
}

ProviderLoadBalancerParameters holds desired load balancer information specific to the underlying infrastructure provider.

+union

func (*ProviderLoadBalancerParameters) DeepCopy

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

func (*ProviderLoadBalancerParameters) DeepCopyInto

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

type Sesame

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

	// Spec defines the desired state of Sesame.
	Spec SesameSpec `json:"spec,omitempty"`
	// Status defines the observed state of Sesame.
	Status SesameStatus `json:"status,omitempty"`
}

Sesame is the Schema for the Sesames API. +kubebuilder:subresource:status +kubebuilder:printcolumn:name="Ready",type=string,JSONPath=`.status.conditions[?(@.type=="Available")].status` +kubebuilder:printcolumn:name="Reason",type=string,JSONPath=`.status.conditions[?(@.type=="Available")].reason`

func (*Sesame) DeepCopy

func (in *Sesame) DeepCopy() *Sesame

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

func (*Sesame) DeepCopyInto

func (in *Sesame) DeepCopyInto(out *Sesame)

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

func (*Sesame) DeepCopyObject

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

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

func (*Sesame) EnvoyNodeSelectorExists

func (c *Sesame) EnvoyNodeSelectorExists() bool

EnvoyNodeSelectorExists returns true if a nodeSelector is specified for Envoy.

func (*Sesame) EnvoyTolerationsExist

func (c *Sesame) EnvoyTolerationsExist() bool

EnvoyTolerationsExist returns true if tolerations are set for Envoy.

func (*Sesame) GatewayClassSet

func (c *Sesame) GatewayClassSet() bool

GatewayClassSet returns true if gatewayClassRef is set for Sesame. DEPRECATED: The GatewayClassRef field is deprecated.

func (*Sesame) IsFinalized

func (c *Sesame) IsFinalized() bool

IsFinalized returns true if Sesame is finalized.

func (*Sesame) SesameNodeSelectorExists

func (c *Sesame) SesameNodeSelectorExists() bool

SesameNodeSelectorExists returns true if a nodeSelector is specified for Sesame.

func (*Sesame) SesameTolerationsExist

func (c *Sesame) SesameTolerationsExist() bool

SesameTolerationsExist returns true if tolerations are set for Sesame.

type SesameList

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

SesameList contains a list of Sesame.

func (*SesameList) DeepCopy

func (in *SesameList) DeepCopy() *SesameList

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

func (*SesameList) DeepCopyInto

func (in *SesameList) DeepCopyInto(out *SesameList)

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

func (*SesameList) DeepCopyObject

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

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

type SesameNodePlacement

type SesameNodePlacement struct {
	// NodeSelector is the simplest recommended form of node selection constraint
	// and specifies a map of key-value pairs. For the Sesame pod to be eligible
	// to run on a node, the node must have each of the indicated key-value pairs
	// as labels (it can have additional labels as well).
	//
	// If unset, the Sesame pod(s) will be scheduled to any available node.
	//
	// +optional
	NodeSelector map[string]string `json:"nodeSelector,omitempty"`

	// Tolerations work with taints to ensure that Envoy pods are not scheduled
	// onto inappropriate nodes. One or more taints are applied to a node; this
	// marks that the node should not accept any pods that do not tolerate the
	// taints.
	//
	// The default is an empty list.
	//
	// See https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
	// for additional details.
	//
	// +optional
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
}

SesameNodePlacement describes node scheduling configuration for Sesame pods. If nodeSelector and tolerations are specified, the scheduler will use both to determine where to place the Sesame pod(s).

func (*SesameNodePlacement) DeepCopy

func (in *SesameNodePlacement) DeepCopy() *SesameNodePlacement

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

func (*SesameNodePlacement) DeepCopyInto

func (in *SesameNodePlacement) DeepCopyInto(out *SesameNodePlacement)

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

type SesameSpec

type SesameSpec struct {
	// Replicas is the desired number of Sesame replicas. If unset,
	// defaults to 2.
	//
	// +kubebuilder:default=2
	// +kubebuilder:validation:Minimum=0
	Replicas int32 `json:"replicas,omitempty"`

	// Namespace defines the schema of a Sesame namespace. See each field for
	// additional details.
	//
	// +kubebuilder:default={name: "projectsesame", removeOnDeletion: false}
	Namespace NamespaceSpec `json:"namespace,omitempty"`

	// NetworkPublishing defines the schema for publishing Sesame to a network.
	//
	// See each field for additional details.
	//
	// +kubebuilder:default={envoy: {type: LoadBalancerService, containerPorts: {{name: http, portNumber: 8080}, {name: https, portNumber: 8443}}}}
	NetworkPublishing NetworkPublishing `json:"networkPublishing,omitempty"`

	// GatewayClassRef is a reference to a GatewayClass name used for
	// managing a Sesame.
	// DEPRECATED: The sesame operator no longer reconciles GatewayClasses.
	//
	// +kubebuilder:validation:MaxLength=253
	// +optional
	GatewayClassRef *string `json:"gatewayClassRef,omitempty"`

	// GatewayControllerName is used to determine which GatewayClass
	// Sesame reconciles. The string takes the form of
	// "projectsesame.io/<namespace>/sesame". If unset, Sesame will not
	// reconcile Gateway API resources.
	//
	// +kubebuilder:validation:MaxLength=253
	// +optional
	GatewayControllerName *string `json:"gatewayControllerName,omitempty"`

	// IngressClassName is the name of the IngressClass used by Sesame. If unset,
	// Sesame will process all ingress objects without an ingress class annotation
	// or ingress objects with an annotation matching ingress-class=sesame. When
	// specified, Sesame will only process ingress objects that match the provided
	// class.
	//
	// For additional IngressClass details, refer to:
	//   https://projectsesame.io/docs/main/config/annotations/#ingress-class
	//
	// +kubebuilder:validation:MinLength=1
	// +kubebuilder:validation:MaxLength=253
	// +optional
	IngressClassName *string `json:"ingressClassName,omitempty"`

	// NodePlacement enables scheduling of Sesame and Envoy pods onto specific nodes.
	//
	// See each field for additional details.
	//
	// +optional
	NodePlacement *NodePlacement `json:"nodePlacement,omitempty"`

	// EnableExternalNameService enables ExternalName Services.
	// ExternalName Services are disabled by default due to CVE-2021-XXXXX
	// You can re-enable them by setting this setting to "true".
	// This is not recommended without understanding the security implications.
	// Please see the advisory at https://github.com/projectsesame/Sesame/security/advisories/GHSA-5ph6-qq5x-7jwc for the details.
	//
	// +optional
	EnableExternalNameService *bool `json:"enableExternalNameService,omitempty"`
}

SesameSpec defines the desired state of Sesame.

func (*SesameSpec) DeepCopy

func (in *SesameSpec) DeepCopy() *SesameSpec

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

func (*SesameSpec) DeepCopyInto

func (in *SesameSpec) DeepCopyInto(out *SesameSpec)

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

type SesameStatus

type SesameStatus struct {
	// AvailableSesames is the number of observed available replicas
	// according to the Sesame deployment. The deployment and its pods
	// will reside in the namespace specified by spec.namespace.name of
	// the sesame.
	AvailableSesames int32 `json:"availableSesames"`

	// AvailableEnvoys is the number of observed available pods from
	// the Envoy daemonset. The daemonset and its pods will reside in the
	// namespace specified by spec.namespace.name of the sesame.
	AvailableEnvoys int32 `json:"availableEnvoys"`

	// Conditions represent the observations of a sesame's current state.
	// Known condition types are "Available". Reference the condition type
	// for additional details.
	//
	// +patchMergeKey=type
	// +patchStrategy=merge
	// +listType=map
	// +listMapKey=type
	Conditions []metav1.Condition `json:"conditions,omitempty"`
}

SesameStatus defines the observed state of Sesame.

func (*SesameStatus) DeepCopy

func (in *SesameStatus) DeepCopy() *SesameStatus

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

func (*SesameStatus) DeepCopyInto

func (in *SesameStatus) DeepCopyInto(out *SesameStatus)

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