v1beta1

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Jan 17, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Overview

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

Index

Constants

This section is empty.

Variables

View Source
var (
	// GroupVersion is group version used to register these objects
	GroupVersion = schema.GroupVersion{Group: "spanner.mercari.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 ActiveSchedule added in v0.4.0

type ActiveSchedule struct {
	// Name of the `SpannerAutoscaleSchedule`
	ScheduleName string `json:"name"`

	// The time until when this schedule will remain active
	EndTime metav1.Time `json:"endTime"`

	// The extra compute capacity which will be added because of this schedule
	AdditionalPU int `json:"additionalPU"`
}

A `SpannerAutoscaleSchedule` which is currently active and will be used for calculating the autoscaling range.

func (*ActiveSchedule) DeepCopy added in v0.4.0

func (in *ActiveSchedule) DeepCopy() *ActiveSchedule

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

func (*ActiveSchedule) DeepCopyInto added in v0.4.0

func (in *ActiveSchedule) DeepCopyInto(out *ActiveSchedule)

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

type AuthType

type AuthType string

Type for specifying authentication methods +kubebuilder:validation:Enum=gcp-sa-key;impersonation;adc

const (
	AuthTypeSA            AuthType = "gcp-sa-key"
	AuthTypeImpersonation AuthType = "impersonation"
	AuthTypeADC           AuthType = "adc"
)

type Authentication

type Authentication struct {
	// Authentication method to be used for GCP authentication.
	// If `ImpersonateConfig` as well as `IAMKeySecret` is nil, this will be set to use ADC be default.
	Type AuthType `json:"type,omitempty"`

	// Details of the GCP service account which will be impersonated, for authentication to GCP.
	// This can used only on GKE clusters, when workload identity is enabled.
	// [[Ref](https://cloud.google.com/kubernetes-engine/docs/how-to/workload-identity)].
	// This is a pointer because structs with string slices can not be compared for zero values
	ImpersonateConfig *ImpersonateConfig `json:"impersonateConfig,omitempty"`

	// Details of the k8s secret which contains the GCP service account authentication key (in JSON).
	// [[Ref](https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform)].
	// This is a pointer because structs with string slices can not be compared for zero values
	IAMKeySecret *IAMKeySecret `json:"iamKeySecret,omitempty"`
}

Authentication details for the Spanner instance

func (*Authentication) DeepCopy

func (in *Authentication) DeepCopy() *Authentication

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

func (*Authentication) DeepCopyInto

func (in *Authentication) DeepCopyInto(out *Authentication)

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

type ComputeType

type ComputeType string

Type for specifying compute capacity categories +kubebuilder:validation:Enum=nodes;processing-units

const (
	ComputeTypeNode ComputeType = "nodes"
	ComputeTypePU   ComputeType = "processing-units"
)

type IAMKeySecret

type IAMKeySecret struct {
	// Name of the secret which contains the authentication key
	Name string `json:"name"`

	// Namespace of the secret which contains the authentication key
	Namespace string `json:"namespace,omitempty"`

	// Name of the yaml 'key' under which the authentication value is stored
	Key string `json:"key"`
}

Details of the secret which has the GCP service account key for authentication

func (*IAMKeySecret) DeepCopy

func (in *IAMKeySecret) DeepCopy() *IAMKeySecret

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

func (*IAMKeySecret) DeepCopyInto

func (in *IAMKeySecret) DeepCopyInto(out *IAMKeySecret)

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

type ImpersonateConfig

type ImpersonateConfig struct {
	// The service account which will be impersonated
	TargetServiceAccount string `json:"targetServiceAccount"`

	// Delegation chain for the service account impersonation.
	// [[Ref](https://pkg.go.dev/google.golang.org/api/impersonate#hdr-Required_IAM_roles)]
	Delegates []string `json:"delegates,omitempty"`
}

Details of the impersonation service account for GCP authentication

func (*ImpersonateConfig) DeepCopy

func (in *ImpersonateConfig) DeepCopy() *ImpersonateConfig

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

func (*ImpersonateConfig) DeepCopyInto

func (in *ImpersonateConfig) DeepCopyInto(out *ImpersonateConfig)

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

type InstanceState

type InstanceState string
const (
	InstanceStateUnspecified InstanceState = "unspecified"

	// The instance is still being created. Resources may not be
	// available yet, and operations such as database creation may not
	// work.
	InstanceStateCreating InstanceState = "creating"

	// The instance is fully created and ready to do work such as
	// creating databases.
	InstanceStateReady InstanceState = "ready"
)

type ScaleConfig

type ScaleConfig struct {
	// Whether to use `nodes` or `processing-units` for scaling.
	// This is only used at the time of CustomResource creation. If compute capacity is provided in `nodes`, then it is automatically converted to `processing-units` at the time of resource creation, and internally, only `ProcessingUnits` are used for computations and scaling.
	ComputeType ComputeType `json:"computeType,omitempty"`

	// If `nodes` are provided at the time of resource creation, then they are automatically converted to `processing-units`. So it is recommended to use only the processing units. Ref: [Spanner Compute Capacity](https://cloud.google.com/spanner/docs/compute-capacity#compute_capacity)
	Nodes ScaleConfigNodes `json:"nodes,omitempty"`

	// ProcessingUnits for scaling of the Spanner instance. Ref: [Spanner Compute Capacity](https://cloud.google.com/spanner/docs/compute-capacity#compute_capacity)
	ProcessingUnits ScaleConfigPUs `json:"processingUnits,omitempty"`

	// The maximum number of processing units which can be deleted in one scale-down operation. It can be a multiple of 100 for values < 1000, or a multiple of 1000 otherwise.
	// +kubebuilder:default=2000
	ScaledownStepSize int `json:"scaledownStepSize,omitempty"`

	// How often autoscaler is reevaluated for scale down.
	// The cool down period between two consecutive scaledown operations. If this option is omitted, the value of the `--scale-down-interval` command line option is taken as the default value.
	ScaledownInterval *metav1.Duration `json:"scaledownInterval,omitempty"`

	// The maximum number of processing units which can be added in one scale-up operation. It can be a multiple of 100 for values < 1000, or a multiple of 1000 otherwise.
	// +kubebuilder:default=0
	ScaleupStepSize int `json:"scaleupStepSize,omitempty"`

	// How often autoscaler is reevaluated for scale up.
	// The warm up period between two consecutive scaleup operations. If this option is omitted, the value of the `--scale-up-interval` command line option is taken as the default value.
	ScaleupInterval *metav1.Duration `json:"scaleupInterval,omitempty"`

	// The CPU utilization which the autoscaling will try to achieve. Ref: [Spanner CPU utilization](https://cloud.google.com/spanner/docs/cpu-utilization#task-priority)
	TargetCPUUtilization TargetCPUUtilization `json:"targetCPUUtilization"`
}

Details of the autoscaling parameters for the Spanner instance

func (*ScaleConfig) DeepCopy

func (in *ScaleConfig) DeepCopy() *ScaleConfig

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

func (*ScaleConfig) DeepCopyInto

func (in *ScaleConfig) DeepCopyInto(out *ScaleConfig)

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

type ScaleConfigNodes

type ScaleConfigNodes struct {
	// Minimum number of Nodes for the autoscaling range
	Min int `json:"min,omitempty"`

	// Maximum number of Nodes for the autoscaling range
	Max int `json:"max,omitempty"`
}

Compute capacity in terms of Nodes

func (*ScaleConfigNodes) DeepCopy

func (in *ScaleConfigNodes) DeepCopy() *ScaleConfigNodes

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

func (*ScaleConfigNodes) DeepCopyInto

func (in *ScaleConfigNodes) DeepCopyInto(out *ScaleConfigNodes)

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

type ScaleConfigPUs

type ScaleConfigPUs struct {
	// Minimum number of Processing Units for the autoscaling range
	// +kubebuilder:validation:MultipleOf=100
	Min int `json:"min"`

	// Maximum number of Processing Units for the autoscaling range
	// +kubebuilder:validation:MultipleOf=100
	Max int `json:"max"`
}

Compute capacity in terms of Processing Units

func (*ScaleConfigPUs) DeepCopy

func (in *ScaleConfigPUs) DeepCopy() *ScaleConfigPUs

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

func (*ScaleConfigPUs) DeepCopyInto

func (in *ScaleConfigPUs) DeepCopyInto(out *ScaleConfigPUs)

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

type Schedule added in v0.4.0

type Schedule struct {
	// The recurring frequency of the schedule in [standard cron](https://en.wikipedia.org/wiki/Cron) format. Examples and verification utility: https://crontab.guru
	Cron string `json:"cron"`

	// The length of time for which this schedule will remain active each time the cron is triggered.
	Duration string `json:"duration"`
}

The recurring frequency and the length of time for which a schedule will remain active

func (*Schedule) DeepCopy added in v0.4.0

func (in *Schedule) DeepCopy() *Schedule

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

func (*Schedule) DeepCopyInto added in v0.4.0

func (in *Schedule) DeepCopyInto(out *Schedule)

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

type SpannerAutoscaleSchedule added in v0.4.0

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

	Spec   SpannerAutoscaleScheduleSpec   `json:"spec,omitempty"`
	Status SpannerAutoscaleScheduleStatus `json:"status,omitempty"`
}

+kubebuilder:object:root=true +kubebuilder:subresource:status +kubebuilder:storageversion +kubebuilder:printcolumn:name="Cron",type="string",JSONPath=".spec.schedule.cron" +kubebuilder:printcolumn:name="Duration",type="string",JSONPath=".spec.schedule.duration" +kubebuilder:printcolumn:name="Additional PU",type="integer",JSONPath=".spec.additionalProcessingUnits" SpannerAutoscaleSchedule is the Schema for the spannerautoscaleschedules API

func (*SpannerAutoscaleSchedule) DeepCopy added in v0.4.0

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

func (*SpannerAutoscaleSchedule) DeepCopyInto added in v0.4.0

func (in *SpannerAutoscaleSchedule) DeepCopyInto(out *SpannerAutoscaleSchedule)

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

func (*SpannerAutoscaleSchedule) DeepCopyObject added in v0.4.0

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

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

func (*SpannerAutoscaleSchedule) SetupWebhookWithManager added in v0.4.0

func (r *SpannerAutoscaleSchedule) SetupWebhookWithManager(mgr ctrl.Manager) error

func (*SpannerAutoscaleSchedule) ValidateCreate added in v0.4.0

func (r *SpannerAutoscaleSchedule) ValidateCreate() error

ValidateCreate implements webhook.Validator so a webhook will be registered for the type

func (*SpannerAutoscaleSchedule) ValidateDelete added in v0.4.0

func (r *SpannerAutoscaleSchedule) ValidateDelete() error

ValidateDelete implements webhook.Validator so a webhook will be registered for the type

func (*SpannerAutoscaleSchedule) ValidateUpdate added in v0.4.0

func (r *SpannerAutoscaleSchedule) ValidateUpdate(old runtime.Object) error

ValidateUpdate implements webhook.Validator so a webhook will be registered for the type

type SpannerAutoscaleScheduleList added in v0.4.0

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

SpannerAutoscaleScheduleList contains a list of SpannerAutoscaleSchedule

func (*SpannerAutoscaleScheduleList) DeepCopy added in v0.4.0

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

func (*SpannerAutoscaleScheduleList) DeepCopyInto added in v0.4.0

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

func (*SpannerAutoscaleScheduleList) DeepCopyObject added in v0.4.0

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

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

type SpannerAutoscaleScheduleSpec added in v0.4.0

type SpannerAutoscaleScheduleSpec struct {
	// The `SpannerAutoscaler` resource name with which this schedule will be registered
	TargetResource string `json:"targetResource"`

	// The extra compute capacity which will be added when this schedule is active
	AdditionalProcessingUnits int `json:"additionalProcessingUnits"`

	// The details of when and for how long this schedule will be active
	Schedule Schedule `json:"schedule"`
}

SpannerAutoscaleScheduleSpec defines the desired state of SpannerAutoscaleSchedule

func (*SpannerAutoscaleScheduleSpec) DeepCopy added in v0.4.0

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

func (*SpannerAutoscaleScheduleSpec) DeepCopyInto added in v0.4.0

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

type SpannerAutoscaleScheduleStatus added in v0.4.0

type SpannerAutoscaleScheduleStatus struct{}

SpannerAutoscaleScheduleStatus defines the observed state of SpannerAutoscaleSchedule

func (*SpannerAutoscaleScheduleStatus) DeepCopy added in v0.4.0

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

func (*SpannerAutoscaleScheduleStatus) DeepCopyInto added in v0.4.0

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

type SpannerAutoscaler

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

	Spec   SpannerAutoscalerSpec   `json:"spec,omitempty"`
	Status SpannerAutoscalerStatus `json:"status,omitempty"`
}

SpannerAutoscaler is the Schema for the spannerautoscalers API

func (*SpannerAutoscaler) DeepCopy

func (in *SpannerAutoscaler) DeepCopy() *SpannerAutoscaler

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

func (*SpannerAutoscaler) DeepCopyInto

func (in *SpannerAutoscaler) DeepCopyInto(out *SpannerAutoscaler)

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

func (*SpannerAutoscaler) DeepCopyObject

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

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

func (*SpannerAutoscaler) Default

func (r *SpannerAutoscaler) Default()

Default implements webhook.Defaulter so a webhook will be registered for the type

func (*SpannerAutoscaler) Hub

func (*SpannerAutoscaler) Hub()

Hub marks this type as a conversion hub.

func (*SpannerAutoscaler) SetupWebhookWithManager

func (r *SpannerAutoscaler) SetupWebhookWithManager(mgr ctrl.Manager) error

func (*SpannerAutoscaler) ValidateCreate

func (r *SpannerAutoscaler) ValidateCreate() error

ValidateCreate implements webhook.Validator so a webhook will be registered for the type

func (*SpannerAutoscaler) ValidateDelete

func (r *SpannerAutoscaler) ValidateDelete() error

ValidateDelete implements webhook.Validator so a webhook will be registered for the type

func (*SpannerAutoscaler) ValidateUpdate

func (r *SpannerAutoscaler) ValidateUpdate(old runtime.Object) error

ValidateUpdate implements webhook.Validator so a webhook will be registered for the type

type SpannerAutoscalerList

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

SpannerAutoscalerList contains a list of SpannerAutoscaler

func (*SpannerAutoscalerList) DeepCopy

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

func (*SpannerAutoscalerList) DeepCopyInto

func (in *SpannerAutoscalerList) DeepCopyInto(out *SpannerAutoscalerList)

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

func (*SpannerAutoscalerList) DeepCopyObject

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

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

type SpannerAutoscalerSpec

type SpannerAutoscalerSpec struct {
	// The Spanner instance which will be managed for autoscaling
	TargetInstance TargetInstance `json:"targetInstance"`

	// Authentication details for the Spanner instance
	Authentication Authentication `json:"authentication,omitempty"`

	// Details of the autoscaling parameters for the Spanner instance
	ScaleConfig ScaleConfig `json:"scaleConfig"`
}

SpannerAutoscalerSpec defines the desired state of SpannerAutoscaler

func (*SpannerAutoscalerSpec) DeepCopy

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

func (*SpannerAutoscalerSpec) DeepCopyInto

func (in *SpannerAutoscalerSpec) DeepCopyInto(out *SpannerAutoscalerSpec)

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

type SpannerAutoscalerStatus

type SpannerAutoscalerStatus struct {
	// List of schedules which are registered with this spanner-autoscaler instance
	Schedules []string `json:"schedules,omitempty"`

	// List of all the schedules which are currently active and will be used in calculating compute capacity
	CurrentlyActiveSchedules []ActiveSchedule `json:"currentlyActiveSchedules,omitempty"`

	// Last time the `SpannerAutoscaler` scaled the number of Spanner nodes.
	// Used by the autoscaler to control how often the number of nodes are changed
	LastScaleTime metav1.Time `json:"lastScaleTime,omitempty"`

	// Last time the `SpannerAutoscaler` fetched and synced the metrics from Spanner
	LastSyncTime metav1.Time `json:"lastSyncTime,omitempty"`

	// Current number of processing-units in the Spanner instance
	CurrentProcessingUnits int `json:"currentProcessingUnits,omitempty"`

	// Desired number of processing-units in the Spanner instance
	DesiredProcessingUnits int `json:"desiredProcessingUnits,omitempty"`

	// Minimum number of processing units based on the currently active schedules
	DesiredMinPUs int `json:"desiredMinPUs,omitempty"`

	// Maximum number of processing units based on the currently active schedules
	DesiredMaxPUs int `json:"desiredMaxPUs,omitempty"`

	// State of the Cloud Spanner instance
	InstanceState InstanceState `json:"instanceState,omitempty"`

	// Current average CPU utilization for high priority task, represented as a percentage
	CurrentHighPriorityCPUUtilization int `json:"currentHighPriorityCPUUtilization,omitempty"`
}

SpannerAutoscalerStatus defines the observed state of SpannerAutoscaler

func (*SpannerAutoscalerStatus) DeepCopy

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

func (*SpannerAutoscalerStatus) DeepCopyInto

func (in *SpannerAutoscalerStatus) DeepCopyInto(out *SpannerAutoscalerStatus)

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

type TargetCPUUtilization

type TargetCPUUtilization struct {
	// Desired CPU utilization for 'High Priority' CPU consumption category. Ref: [Spanner CPU utilization](https://cloud.google.com/spanner/docs/cpu-utilization#task-priority)
	// +kubebuilder:validation:Minimum=0
	// +kubebuilder:validation:Maximum=100
	// +kubebuilder:validation:ExclusiveMinimum=true
	// +kubebuilder:validation:ExclusiveMaximum=true
	HighPriority int `json:"highPriority"`
}

func (*TargetCPUUtilization) DeepCopy

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

func (*TargetCPUUtilization) DeepCopyInto

func (in *TargetCPUUtilization) DeepCopyInto(out *TargetCPUUtilization)

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

type TargetInstance

type TargetInstance struct {
	// The GCP Project id of the Spanner instance
	ProjectID string `json:"projectId"`

	// The instance id of the Spanner instance
	InstanceID string `json:"instanceId"`
}

The Spanner instance which will be managed for autoscaling

func (*TargetInstance) DeepCopy

func (in *TargetInstance) DeepCopy() *TargetInstance

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

func (*TargetInstance) DeepCopyInto

func (in *TargetInstance) DeepCopyInto(out *TargetInstance)

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