v1beta1

package
v2.9.0 Latest Latest
Warning

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

Go to latest
Published: May 10, 2024 License: MPL-2.0 Imports: 11 Imported by: 5

Documentation

Overview

Package v1beta1 contains API Schema definitions for the rabbitmq v1beta1 API group +kubebuilder:object:generate=true +groupName=rabbitmq.com

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "rabbitmq.com", Version: "v1beta1"}

	// 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 EmbeddedLabelsAnnotations

type EmbeddedLabelsAnnotations struct {
	// Map of string keys and values that can be used to organize and categorize
	// (scope and select) objects. May match selectors of replication controllers
	// and services.
	// More info: http://kubernetes.io/docs/user-guide/labels
	// +optional
	Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,11,rep,name=labels"`

	// 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"`
}

EmbeddedLabelsAnnotations is an embedded subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta. Only labels and annotations are included.

func (*EmbeddedLabelsAnnotations) DeepCopy

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

func (*EmbeddedLabelsAnnotations) DeepCopyInto

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

type EmbeddedObjectMeta

type EmbeddedObjectMeta struct {
	// Name must be unique within a namespace. Is required when creating resources, although
	// some resources may allow a client to request the generation of an appropriate name
	// automatically. Name is primarily intended for creation idempotence and configuration
	// definition.
	// Cannot be updated.
	// More info: http://kubernetes.io/docs/user-guide/identifiers#names
	// +optional
	Name string `json:"name,omitempty" protobuf:"bytes,1,opt,name=name"`

	// Namespace defines the space within each name must be unique. An empty namespace is
	// equivalent to the "default" namespace, but "default" is the canonical representation.
	// Not all objects are required to be scoped to a namespace - the value of this field for
	// those objects will be empty.
	//
	// Must be a DNS_LABEL.
	// Cannot be updated.
	// More info: http://kubernetes.io/docs/user-guide/namespaces
	// +optional
	Namespace string `json:"namespace,omitempty" protobuf:"bytes,3,opt,name=namespace"`

	// Map of string keys and values that can be used to organize and categorize
	// (scope and select) objects. May match selectors of replication controllers
	// and services.
	// More info: http://kubernetes.io/docs/user-guide/labels
	// +optional
	Labels map[string]string `json:"labels,omitempty" protobuf:"bytes,11,rep,name=labels"`

	// 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"`
}

EmbeddedObjectMeta is an embedded subset of the fields included in k8s.io/apimachinery/pkg/apis/meta/v1.ObjectMeta. Only fields which are relevant to embedded resources are included.

func (*EmbeddedObjectMeta) DeepCopy

func (in *EmbeddedObjectMeta) DeepCopy() *EmbeddedObjectMeta

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

func (*EmbeddedObjectMeta) DeepCopyInto

func (in *EmbeddedObjectMeta) DeepCopyInto(out *EmbeddedObjectMeta)

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

type PersistentVolumeClaim

type PersistentVolumeClaim struct {
	// Embedded metadata identifying a Kind and API Version of an object.
	// For more info, see: https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#TypeMeta
	metav1.TypeMeta `json:",inline"`
	// +optional
	EmbeddedObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

	// Spec defines the desired characteristics of a volume requested by a pod author.
	// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims
	// +optional
	Spec corev1.PersistentVolumeClaimSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
}

PersistentVolumeClaim is an embedded version of k8s.io/api/core/v1.PersistentVolumeClaim. It contains TypeMeta and a reduced ObjectMeta. Field status is omitted.

func (*PersistentVolumeClaim) DeepCopy

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

func (*PersistentVolumeClaim) DeepCopyInto

func (in *PersistentVolumeClaim) DeepCopyInto(out *PersistentVolumeClaim)

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

type Plugin

type Plugin string

A Plugin to enable on the RabbitmqCluster. +kubebuilder:validation:Pattern:="^\\w+$" +kubebuilder:validation:MaxLength=100

type PodTemplateSpec

type PodTemplateSpec struct {
	// +optional
	*EmbeddedObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`

	// Specification of the desired behavior of the pod.
	// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
	// +optional
	Spec *corev1.PodSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
}

PodTemplateSpec is an embedded version of k8s.io/api/core/v1.PodTemplateSpec. It contains a reduced ObjectMeta.

func (*PodTemplateSpec) DeepCopy

func (in *PodTemplateSpec) DeepCopy() *PodTemplateSpec

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

func (*PodTemplateSpec) DeepCopyInto

func (in *PodTemplateSpec) DeepCopyInto(out *PodTemplateSpec)

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

type RabbitmqCluster

type RabbitmqCluster struct {
	// Embedded metadata identifying a Kind and API Version of an object.
	// For more info, see: https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#TypeMeta
	metav1.TypeMeta   `json:",inline"`
	metav1.ObjectMeta `json:"metadata,omitempty"`

	// Spec is the desired state of the RabbitmqCluster Custom Resource.
	Spec RabbitmqClusterSpec `json:"spec,omitempty"`
	// Status presents the observed state of RabbitmqCluster
	Status RabbitmqClusterStatus `json:"status,omitempty"`
}

+kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:printcolumn:name="AllReplicasReady",type="string",JSONPath=".status.conditions[?(@.type == 'AllReplicasReady')].status" +kubebuilder:printcolumn:name="ReconcileSuccess",type="string",JSONPath=".status.conditions[?(@.type == 'ReconcileSuccess')].status" +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp" +kubebuilder:resource:shortName={"rmq"},categories=all;rabbitmq RabbitmqCluster is the Schema for the RabbitmqCluster API. Each instance of this object corresponds to a single RabbitMQ cluster.

func (*RabbitmqCluster) AdditionalPluginEnabled

func (cluster *RabbitmqCluster) AdditionalPluginEnabled(plugin Plugin) bool

func (RabbitmqCluster) ChildResourceName

func (cluster RabbitmqCluster) ChildResourceName(name string) string

func (*RabbitmqCluster) DeepCopy

func (in *RabbitmqCluster) DeepCopy() *RabbitmqCluster

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

func (*RabbitmqCluster) DeepCopyInto

func (in *RabbitmqCluster) DeepCopyInto(out *RabbitmqCluster)

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

func (*RabbitmqCluster) DeepCopyObject

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

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

func (*RabbitmqCluster) DisableNonTLSListeners

func (cluster *RabbitmqCluster) DisableNonTLSListeners() bool

func (*RabbitmqCluster) ExternalSecretEnabled

func (cluster *RabbitmqCluster) ExternalSecretEnabled() bool

func (*RabbitmqCluster) MemoryLimited

func (cluster *RabbitmqCluster) MemoryLimited() bool

func (*RabbitmqCluster) MutualTLSEnabled

func (cluster *RabbitmqCluster) MutualTLSEnabled() bool

func (RabbitmqCluster) PVCName

func (cluster RabbitmqCluster) PVCName(i int) string

func (*RabbitmqCluster) SecretTLSEnabled

func (cluster *RabbitmqCluster) SecretTLSEnabled() bool

func (*RabbitmqCluster) ServiceSubDomain

func (cluster *RabbitmqCluster) ServiceSubDomain() string

func (*RabbitmqCluster) SingleTLSSecret

func (cluster *RabbitmqCluster) SingleTLSSecret() bool

func (*RabbitmqCluster) StreamNeeded

func (cluster *RabbitmqCluster) StreamNeeded() bool

StreamNeeded returns true when stream or plugins that auto enable stream are turned on

func (*RabbitmqCluster) TLSEnabled

func (cluster *RabbitmqCluster) TLSEnabled() bool

func (*RabbitmqCluster) UsesDefaultUserUpdaterImage

func (cluster *RabbitmqCluster) UsesDefaultUserUpdaterImage(controlRabbitmqImage bool) bool

func (*RabbitmqCluster) VaultDefaultUserSecretEnabled

func (cluster *RabbitmqCluster) VaultDefaultUserSecretEnabled() bool

func (*RabbitmqCluster) VaultEnabled

func (cluster *RabbitmqCluster) VaultEnabled() bool

func (*RabbitmqCluster) VaultTLSEnabled

func (cluster *RabbitmqCluster) VaultTLSEnabled() bool

type RabbitmqClusterConfigurationSpec

type RabbitmqClusterConfigurationSpec struct {
	// List of plugins to enable in addition to essential plugins: rabbitmq_management, rabbitmq_prometheus, and rabbitmq_peer_discovery_k8s.
	// +kubebuilder:validation:MaxItems:=100
	AdditionalPlugins []Plugin `json:"additionalPlugins,omitempty"`
	// Modify to add to the rabbitmq.conf file in addition to default configurations set by the operator.
	// Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime.
	// For more information on this config, see https://www.rabbitmq.com/configure.html#config-file
	// +kubebuilder:validation:MaxLength:=2000
	AdditionalConfig string `json:"additionalConfig,omitempty"`
	// Specify any rabbitmq advanced.config configurations to apply to the cluster.
	// For more information on advanced config, see https://www.rabbitmq.com/configure.html#advanced-config-file
	// +kubebuilder:validation:MaxLength:=100000
	AdvancedConfig string `json:"advancedConfig,omitempty"`
	// Modify to add to the rabbitmq-env.conf file. Modifying this property on an existing RabbitmqCluster will trigger a StatefulSet rolling restart and will cause rabbitmq downtime.
	// For more information on env config, see https://www.rabbitmq.com/man/rabbitmq-env.conf.5.html
	// +kubebuilder:validation:MaxLength:=100000
	EnvConfig string `json:"envConfig,omitempty"`
	// Erlang Inet configuration to apply to the Erlang VM running rabbit.
	// See also: https://www.erlang.org/doc/apps/erts/inet_cfg.html
	// +kubebuilder:validation:MaxLength:=2000
	ErlangInetConfig string `json:"erlangInetConfig,omitempty"`
}

RabbitMQ-related configuration.

func (*RabbitmqClusterConfigurationSpec) DeepCopy

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

func (*RabbitmqClusterConfigurationSpec) DeepCopyInto

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

type RabbitmqClusterDefaultUser

type RabbitmqClusterDefaultUser struct {
	// Reference to the Kubernetes Secret containing the credentials of the default
	// user.
	SecretReference *RabbitmqClusterSecretReference `json:"secretReference,omitempty"`
	// Reference to the Kubernetes Service serving the cluster.
	ServiceReference *RabbitmqClusterServiceReference `json:"serviceReference,omitempty"`
}

Contains references to resources created with the RabbitmqCluster resource.

func (*RabbitmqClusterDefaultUser) DeepCopy

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

func (*RabbitmqClusterDefaultUser) DeepCopyInto

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

type RabbitmqClusterList

type RabbitmqClusterList struct {
	// Embedded metadata identifying a Kind and API Version of an object.
	// For more info, see: https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#TypeMeta
	metav1.TypeMeta `json:",inline"`
	metav1.ListMeta `json:"metadata,omitempty"`
	// Array of RabbitmqCluster resources.
	Items []RabbitmqCluster `json:"items"`
}

RabbitmqClusterList contains a list of RabbitmqClusters.

func (*RabbitmqClusterList) DeepCopy

func (in *RabbitmqClusterList) DeepCopy() *RabbitmqClusterList

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

func (*RabbitmqClusterList) DeepCopyInto

func (in *RabbitmqClusterList) DeepCopyInto(out *RabbitmqClusterList)

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

func (*RabbitmqClusterList) DeepCopyObject

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

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

type RabbitmqClusterOverrideSpec

type RabbitmqClusterOverrideSpec struct {
	// Override configuration for the RabbitMQ StatefulSet.
	StatefulSet *StatefulSet `json:"statefulSet,omitempty"`
	// Override configuration for the Service created to serve traffic to the cluster.
	Service *Service `json:"service,omitempty"`
}

Provides the ability to override the generated manifest of several child resources.

func (*RabbitmqClusterOverrideSpec) DeepCopy

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

func (*RabbitmqClusterOverrideSpec) DeepCopyInto

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

type RabbitmqClusterPersistenceSpec

type RabbitmqClusterPersistenceSpec struct {
	// The name of the StorageClass to claim a PersistentVolume from.
	StorageClassName *string `json:"storageClassName,omitempty"`
	// The requested size of the persistent volume attached to each Pod in the RabbitmqCluster.
	// The format of this field matches that defined by kubernetes/apimachinery.
	// See https://pkg.go.dev/k8s.io/apimachinery/pkg/api/resource#Quantity for more info on the format of this field.
	// +kubebuilder:default:="10Gi"
	Storage *k8sresource.Quantity `json:"storage,omitempty"`
}

The settings for the persistent storage desired for each Pod in the RabbitmqCluster.

func (*RabbitmqClusterPersistenceSpec) DeepCopy

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

func (*RabbitmqClusterPersistenceSpec) DeepCopyInto

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

type RabbitmqClusterSecretReference

type RabbitmqClusterSecretReference struct {
	// Name of the Secret containing the default user credentials
	Name string `json:"name"`
	// Namespace of the Secret containing the default user credentials
	Namespace string `json:"namespace"`
	// Key-value pairs in the Secret corresponding to `username`, `password`, `host`, and `port`
	Keys map[string]string `json:"keys"`
}

Reference to the Kubernetes Secret containing the credentials of the default user.

func (*RabbitmqClusterSecretReference) DeepCopy

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

func (*RabbitmqClusterSecretReference) DeepCopyInto

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

type RabbitmqClusterServiceReference

type RabbitmqClusterServiceReference struct {
	// Name of the Service serving the cluster
	Name string `json:"name"`
	// Namespace of the Service serving the cluster
	Namespace string `json:"namespace"`
}

Reference to the Kubernetes Service serving the cluster.

func (*RabbitmqClusterServiceReference) DeepCopy

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

func (*RabbitmqClusterServiceReference) DeepCopyInto

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

type RabbitmqClusterServiceSpec

type RabbitmqClusterServiceSpec struct {
	// Type of Service to create for the cluster. Must be one of: ClusterIP, LoadBalancer, NodePort.
	// For more info see https://pkg.go.dev/k8s.io/api/core/v1#ServiceType
	// +kubebuilder:validation:Enum=ClusterIP;LoadBalancer;NodePort
	// +kubebuilder:default:="ClusterIP"
	Type corev1.ServiceType `json:"type,omitempty"`
	// Annotations to add to the Service.
	Annotations map[string]string `json:"annotations,omitempty"`
	// IPFamilyPolicy represents the dual-stack-ness requested or required by a Service
	// See also: https://pkg.go.dev/k8s.io/api/core/v1#IPFamilyPolicy
	// +kubebuilder:validation:Enum=SingleStack;PreferDualStack;RequireDualStack
	IPFamilyPolicy *corev1.IPFamilyPolicy `json:"ipFamilyPolicy,omitempty"`
}

Settable attributes for the Service resource.

func (*RabbitmqClusterServiceSpec) DeepCopy

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

func (*RabbitmqClusterServiceSpec) DeepCopyInto

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

type RabbitmqClusterSpec

type RabbitmqClusterSpec struct {
	// Replicas is the number of nodes in the RabbitMQ cluster. Each node is deployed as a Replica in a StatefulSet. Only 1, 3, 5 replicas clusters are tested.
	// This value should be an odd number to ensure the resultant cluster can establish exactly one quorum of nodes
	// in the event of a fragmenting network partition.
	// +optional
	// +kubebuilder:validation:Minimum:=0
	// +kubebuilder:default:=1
	Replicas *int32 `json:"replicas,omitempty"`
	// Image is the name of the RabbitMQ docker image to use for RabbitMQ nodes in the RabbitmqCluster.
	// Must be provided together with ImagePullSecrets in order to use an image in a private registry.
	Image string `json:"image,omitempty"`
	// List of Secret resource containing access credentials to the registry for the RabbitMQ image. Required if the docker registry is private.
	ImagePullSecrets []corev1.LocalObjectReference `json:"imagePullSecrets,omitempty"`
	// The desired state of the Kubernetes Service to create for the cluster.
	// +kubebuilder:default:={type: "ClusterIP"}
	Service RabbitmqClusterServiceSpec `json:"service,omitempty"`
	// The desired persistent storage configuration for each Pod in the cluster.
	// +kubebuilder:default:={storage: "10Gi"}
	Persistence RabbitmqClusterPersistenceSpec `json:"persistence,omitempty"`
	// The desired compute resource requirements of Pods in the cluster.
	// +kubebuilder:default:={limits: {cpu: "2000m", memory: "2Gi"}, requests: {cpu: "1000m", memory: "2Gi"}}
	Resources *corev1.ResourceRequirements `json:"resources,omitempty"`
	// Affinity scheduling rules to be applied on created Pods.
	Affinity *corev1.Affinity `json:"affinity,omitempty"`
	// Tolerations is the list of Toleration resources attached to each Pod in the RabbitmqCluster.
	Tolerations []corev1.Toleration `json:"tolerations,omitempty"`
	// Configuration options for RabbitMQ Pods created in the cluster.
	Rabbitmq RabbitmqClusterConfigurationSpec `json:"rabbitmq,omitempty"`
	// TLS-related configuration for the RabbitMQ cluster.
	TLS TLSSpec `json:"tls,omitempty"`
	// Provides the ability to override the generated manifest of several child resources.
	Override RabbitmqClusterOverrideSpec `json:"override,omitempty"`
	// If unset, or set to false, the cluster will run `rabbitmq-queues rebalance all` whenever the cluster is updated.
	// Set to true to prevent the operator rebalancing queue leaders after a cluster update.
	// Has no effect if the cluster only consists of one node.
	// For more information, see https://www.rabbitmq.com/rabbitmq-queues.8.html#rebalance
	SkipPostDeploySteps bool `json:"skipPostDeploySteps,omitempty"`
	// TerminationGracePeriodSeconds is the timeout that each rabbitmqcluster pod will have to terminate gracefully.
	// It defaults to 604800 seconds ( a week long) to ensure that the container preStop lifecycle hook can finish running.
	// For more information, see: https://github.com/rabbitmq/cluster-operator/blob/main/docs/design/20200520-graceful-pod-termination.md
	// +kubebuilder:validation:Minimum:=0
	// +kubebuilder:default:=604800
	TerminationGracePeriodSeconds *int64 `json:"terminationGracePeriodSeconds,omitempty"`
	// DelayStartSeconds is the time the init container (`setup-container`) will sleep before terminating.
	// This effectively delays the time between starting the Pod and starting the `rabbitmq` container.
	// RabbitMQ relies on up-to-date DNS entries early during peer discovery.
	// The purpose of this artificial delay is to ensure that DNS entries are up-to-date when booting RabbitMQ.
	// For more information, see https://github.com/kubernetes/kubernetes/issues/92559
	// If your Kubernetes DNS backend is configured with a low DNS cache value or publishes not ready addresses
	// promptly, you can decrase this value or set it to 0.
	// +kubebuilder:validation:Minimum:=0
	// +kubebuilder:default:=30
	DelayStartSeconds *int32 `json:"delayStartSeconds,omitempty"`
	// Secret backend configuration for the RabbitmqCluster.
	// Enables to fetch default user credentials and certificates from K8s external secret stores.
	SecretBackend SecretBackend `json:"secretBackend,omitempty"`
}

Spec is the desired state of the RabbitmqCluster Custom Resource.

func (*RabbitmqClusterSpec) DeepCopy

func (in *RabbitmqClusterSpec) DeepCopy() *RabbitmqClusterSpec

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

func (*RabbitmqClusterSpec) DeepCopyInto

func (in *RabbitmqClusterSpec) DeepCopyInto(out *RabbitmqClusterSpec)

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

type RabbitmqClusterStatus

type RabbitmqClusterStatus struct {
	// Set of Conditions describing the current state of the RabbitmqCluster
	Conditions []status.RabbitmqClusterCondition `json:"conditions"`

	// Identifying information on internal resources
	DefaultUser *RabbitmqClusterDefaultUser `json:"defaultUser,omitempty"`

	// Binding exposes a secret containing the binding information for this
	// RabbitmqCluster. It implements the service binding Provisioned Service
	// duck type. See: https://github.com/servicebinding/spec#provisioned-service
	Binding *corev1.LocalObjectReference `json:"binding,omitempty"`

	// observedGeneration is the most recent successful generation observed for this RabbitmqCluster. It corresponds to the
	// RabbitmqCluster's generation, which is updated on mutation by the API Server.
	ObservedGeneration int64 `json:"observedGeneration,omitempty"`
}

Status presents the observed state of RabbitmqCluster

func (*RabbitmqClusterStatus) DeepCopy

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

func (*RabbitmqClusterStatus) DeepCopyInto

func (in *RabbitmqClusterStatus) DeepCopyInto(out *RabbitmqClusterStatus)

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

func (*RabbitmqClusterStatus) SetCondition

func (clusterStatus *RabbitmqClusterStatus) SetCondition(condType status.RabbitmqClusterConditionType,
	condStatus corev1.ConditionStatus, reason string, messages ...string)

func (*RabbitmqClusterStatus) SetConditions

func (clusterStatus *RabbitmqClusterStatus) SetConditions(resources []runtime.Object)

type SecretBackend

type SecretBackend struct {
	Vault          *VaultSpec              `json:"vault,omitempty"`
	ExternalSecret v1.LocalObjectReference `json:"externalSecret,omitempty"`
}

SecretBackend configures a single secret backend. Today, only Vault exists as supported secret backend. Future secret backends could be Secrets Store CSI Driver. If not configured, K8s Secrets will be used.

func (*SecretBackend) DeepCopy

func (in *SecretBackend) DeepCopy() *SecretBackend

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

func (*SecretBackend) DeepCopyInto

func (in *SecretBackend) DeepCopyInto(out *SecretBackend)

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

type Service

type Service struct {
	// +optional
	*EmbeddedLabelsAnnotations `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
	// Spec defines the behavior of a Service.
	// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
	// +optional
	Spec *corev1.ServiceSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
}

Override configuration for the Service created to serve traffic to the cluster. Allows for the manifest of the created Service to be overwritten with custom configuration.

func (*Service) DeepCopy

func (in *Service) DeepCopy() *Service

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

func (*Service) DeepCopyInto

func (in *Service) DeepCopyInto(out *Service)

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

type StatefulSet

type StatefulSet struct {
	// +optional
	*EmbeddedLabelsAnnotations `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
	// Spec defines the desired identities of pods in this set.
	// +optional
	Spec *StatefulSetSpec `json:"spec,omitempty" protobuf:"bytes,2,opt,name=spec"`
}

Override configuration for the RabbitMQ StatefulSet. Allows for the manifest of the created StatefulSet to be overwritten with custom configuration.

func (*StatefulSet) DeepCopy

func (in *StatefulSet) DeepCopy() *StatefulSet

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

func (*StatefulSet) DeepCopyInto

func (in *StatefulSet) DeepCopyInto(out *StatefulSet)

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

type StatefulSetSpec

type StatefulSetSpec struct {
	// replicas corresponds to the desired number of Pods in the StatefulSet.
	// For more info, see https://pkg.go.dev/k8s.io/api/apps/v1#StatefulSetSpec
	// +optional
	Replicas *int32 `json:"replicas,omitempty" protobuf:"varint,1,opt,name=replicas"`

	// selector is a label query over pods that should match the replica count.
	// It must match the pod template's labels.
	// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
	// +optional
	Selector *metav1.LabelSelector `json:"selector,omitempty" protobuf:"bytes,2,opt,name=selector"`

	// template is the object that describes the pod that will be created if
	// insufficient replicas are detected. Each pod stamped out by the StatefulSet
	// will fulfill this Template, but have a unique identity from the rest
	// of the StatefulSet.
	// +optional
	Template *PodTemplateSpec `json:"template,omitempty" protobuf:"bytes,3,opt,name=template"`

	// volumeClaimTemplates is a list of claims that pods are allowed to reference.
	// The StatefulSet controller is responsible for mapping network identities to
	// claims in a way that maintains the identity of a pod. Every claim in
	// this list must have at least one matching (by name) volumeMount in one
	// container in the template. A claim in this list takes precedence over
	// any volumes in the template, with the same name.
	// +optional
	VolumeClaimTemplates []PersistentVolumeClaim `json:"volumeClaimTemplates,omitempty" protobuf:"bytes,4,rep,name=volumeClaimTemplates"`

	// serviceName is the name of the service that governs this StatefulSet.
	// This service must exist before the StatefulSet, and is responsible for
	// the network identity of the set. Pods get DNS/hostnames that follow the
	// pattern: pod-specific-string.serviceName.default.svc.cluster.local
	// where "pod-specific-string" is managed by the StatefulSet controller.
	// +optional
	ServiceName string `json:"serviceName,omitempty" protobuf:"bytes,5,opt,name=serviceName"`

	// podManagementPolicy controls how pods are created during initial scale up,
	// when replacing pods on nodes, or when scaling down. The default policy is
	// `OrderedReady`, where pods are created in increasing order (pod-0, then
	// pod-1, etc) and the controller will wait until each pod is ready before
	// continuing. When scaling down, the pods are removed in the opposite order.
	// The alternative policy is `Parallel` which will create pods in parallel
	// to match the desired scale without waiting, and on scale down will delete
	// all pods at once.
	// +optional
	PodManagementPolicy appsv1.PodManagementPolicyType `json:"podManagementPolicy,omitempty" protobuf:"bytes,6,opt,name=podManagementPolicy,casttype=PodManagementPolicyType"`

	// updateStrategy indicates the StatefulSetUpdateStrategy that will be
	// employed to update Pods in the StatefulSet when a revision is made to
	// Template.
	// +optional
	UpdateStrategy *appsv1.StatefulSetUpdateStrategy `json:"updateStrategy,omitempty" protobuf:"bytes,7,opt,name=updateStrategy"`

	// The minimum number of seconds for which a newly created StatefulSet pod should
	// be ready without any of its container crashing, for it to be considered
	// available. Defaults to 0 (pod will be considered available as soon as it
	// is ready).
	// +optional
	MinReadySeconds int32 `json:"minReadySeconds,omitempty" protobuf:"varint,4,opt,name=minReadySeconds"`

	// StatefulSetPersistentVolumeClaimRetentionPolicy describes the policy used for PVCs
	// created from the StatefulSet VolumeClaimTemplates.
	// +optional
	PersistentVolumeClaimRetentionPolicy *appsv1.StatefulSetPersistentVolumeClaimRetentionPolicy `json:"persistentVolumeClaimRetentionPolicy,omitempty" protobuf:"bytes,10,opt,name=persistentVolumeClaimRetentionPolicy"`
}

StatefulSetSpec contains a subset of the fields included in k8s.io/api/apps/v1.StatefulSetSpec. Field RevisionHistoryLimit is omitted. Every field is made optional.

func (*StatefulSetSpec) DeepCopy

func (in *StatefulSetSpec) DeepCopy() *StatefulSetSpec

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

func (*StatefulSetSpec) DeepCopyInto

func (in *StatefulSetSpec) DeepCopyInto(out *StatefulSetSpec)

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

type TLSSpec

type TLSSpec struct {
	// Name of a Secret in the same Namespace as the RabbitmqCluster, containing the server's private key & public certificate for TLS.
	// The Secret must store these as tls.key and tls.crt, respectively.
	// This Secret can be created by running `kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key`
	SecretName string `json:"secretName,omitempty"`
	// Name of a Secret in the same Namespace as the RabbitmqCluster, containing the Certificate Authority's public certificate for TLS.
	// The Secret must store this as ca.crt.
	// This Secret can be created by running `kubectl create secret generic ca-secret --from-file=ca.crt=path/to/ca.cert`
	// Used for mTLS, and TLS for rabbitmq_web_stomp and rabbitmq_web_mqtt.
	CaSecretName string `json:"caSecretName,omitempty"`
	// When set to true, the RabbitmqCluster disables non-TLS listeners for RabbitMQ, management plugin and for any enabled plugins in the following list: stomp, mqtt, web_stomp, web_mqtt.
	// Only TLS-enabled clients will be able to connect.
	DisableNonTLSListeners bool `json:"disableNonTLSListeners,omitempty"`
}

Allows for the configuration of TLS certificates to be used by RabbitMQ. Also allows for non-TLS traffic to be disabled.

func (*TLSSpec) DeepCopy

func (in *TLSSpec) DeepCopy() *TLSSpec

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

func (*TLSSpec) DeepCopyInto

func (in *TLSSpec) DeepCopyInto(out *TLSSpec)

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

type VaultSpec

type VaultSpec struct {
	// Role in Vault.
	// If vault.defaultUserPath is set, this role must have capability to read the pre-created default user credential in Vault.
	// If vault.tls is set, this role must have capability to create and update certificates in the Vault PKI engine for the domains
	// "<namespace>" and "<namespace>.svc".
	Role string `json:"role,omitempty"`
	// Vault annotations that override the Vault annotations set by the cluster-operator.
	// For a list of valid Vault annotations, see https://www.vaultproject.io/docs/platform/k8s/injector/annotations
	// +optional
	Annotations map[string]string `json:"annotations,omitempty"`
	// Path in Vault to access a KV (Key-Value) secret with the fields username and password for the default user.
	// For example "secret/data/rabbitmq/config".
	DefaultUserPath string `json:"defaultUserPath,omitempty"`
	// Sidecar container that updates the default user's password in RabbitMQ when it changes in Vault.
	// Additionally, it updates /var/lib/rabbitmq/.rabbitmqadmin.conf (used by rabbitmqadmin CLI).
	// Set to empty string to disable the sidecar container.
	DefaultUserUpdaterImage *string      `json:"defaultUserUpdaterImage,omitempty"`
	TLS                     VaultTLSSpec `json:"tls,omitempty"`
}

VaultSpec will add Vault annotations (see https://www.vaultproject.io/docs/platform/k8s/injector/annotations) to RabbitMQ Pods. It requires a Vault Agent Sidecar Injector (https://www.vaultproject.io/docs/platform/k8s/injector) to be installed in the K8s cluster. The injector is a K8s Mutation Webhook Controller that alters RabbitMQ Pod specifications (based on the added Vault annotations) to include Vault Agent containers that render Vault secrets to the volume.

func (*VaultSpec) DeepCopy

func (in *VaultSpec) DeepCopy() *VaultSpec

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

func (*VaultSpec) DeepCopyInto

func (in *VaultSpec) DeepCopyInto(out *VaultSpec)

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

func (*VaultSpec) DefaultUserSecretEnabled

func (spec *VaultSpec) DefaultUserSecretEnabled() bool

func (*VaultSpec) RootCAEnabled added in v2.8.0

func (spec *VaultSpec) RootCAEnabled() bool

func (*VaultSpec) TLSEnabled

func (spec *VaultSpec) TLSEnabled() bool

type VaultTLSSpec

type VaultTLSSpec struct {
	// Path in Vault PKI engine.
	// For example "pki/issue/hashicorp-com".
	// required
	PKIIssuerPath string `json:"pkiIssuerPath,omitempty"`
	// Specifies the requested certificate Common Name (CN).
	// Defaults to <serviceName>.<namespace>.svc if not provided.
	// +optional
	CommonName string `json:"commonName,omitempty"`
	// Specifies the requested Subject Alternative Names (SANs), in a comma-delimited list.
	// These will be appended to the SANs added by the cluster-operator.
	// The cluster-operator will add SANs:
	// "<RabbitmqCluster name>-server-<index>.<RabbitmqCluster name>-nodes.<namespace>" for each pod,
	// e.g. "myrabbit-server-0.myrabbit-nodes.default".
	// +optional
	AltNames string `json:"altNames,omitempty"`
	// Specifies the requested IP Subject Alternative Names, in a comma-delimited list.
	// +optional
	IpSans string `json:"ipSans,omitempty"`
	// Specifies an optional path to retrieve the root CA from vault.  Useful if certificates are issued by an intermediate CA
	// +optional
	PKIRootPath string `json:"pkiRootPath,omitempty"`
}

func (*VaultTLSSpec) DeepCopy

func (in *VaultTLSSpec) DeepCopy() *VaultTLSSpec

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

func (*VaultTLSSpec) DeepCopyInto

func (in *VaultTLSSpec) DeepCopyInto(out *VaultTLSSpec)

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