Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the infrastructure v1alpha1 API group. +kubebuilder:object:generate=true +groupName=infrastructure.cluster.x-k8s.io
Index ¶
- Constants
- Variables
- type CIDR
- type ControlPlaneDNSSpec
- type ControlPlaneLoadBalancerSpec
- type ControlPlanePrivateDNSSpec
- type ImageSpec
- type LoadBalancerSpec
- type NetworkSpec
- type NetworkStatus
- type PlacementGroupSpec
- type PrivateNetworkSpec
- type PublicGatewaySpec
- type PublicNetworkSpec
- type RootVolumeSpec
- type ScalewayCluster
- type ScalewayClusterList
- type ScalewayClusterSpec
- type ScalewayClusterStatus
- type ScalewayClusterTemplate
- type ScalewayClusterTemplateList
- type ScalewayClusterTemplateResource
- type ScalewayClusterTemplateSpec
- type ScalewayMachine
- type ScalewayMachineList
- type ScalewayMachineSpec
- type ScalewayMachineStatus
- type ScalewayMachineTemplate
- type ScalewayMachineTemplateList
- type ScalewayMachineTemplateResource
- type ScalewayMachineTemplateSpec
- type SecurityGroupSpec
Constants ¶
const ClusterFinalizer = "scalewaycluster.infrastructure.cluster.x-k8s.io/sc-protection"
const MachineFinalizer = "scalewaycluster.infrastructure.cluster.x-k8s.io/sm-protection"
Variables ¶
var ( // GroupVersion is group version used to register these objects. GroupVersion = schema.GroupVersion{Group: "infrastructure.cluster.x-k8s.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 CIDR ¶
type CIDR string
CIDR is an IP address range in CIDR notation (for example, "10.0.0.0/8" or "fd00::/8"). +kubebuilder:validation:XValidation:rule="isCIDR(self)",message="value must be a valid CIDR network address" +kubebuilder:validation:MaxLength:=43 +kubebuilder:validation:MinLength:=1
type ControlPlaneDNSSpec ¶
type ControlPlaneDNSSpec struct {
// Domain is the DNS Zone that this record should live in. It must be pre-existing in your Scaleway account.
// The format must be a string that conforms to the definition of a subdomain in DNS (RFC 1123).
// +kubebuilder:validation:Pattern:=^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
Domain string `json:"domain"`
// Name is the DNS short name of the record (non-FQDN). The format must consist of
// alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character.
// +kubebuilder:validation:Pattern:=^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$
Name string `json:"name"`
}
func (*ControlPlaneDNSSpec) DeepCopy ¶
func (in *ControlPlaneDNSSpec) DeepCopy() *ControlPlaneDNSSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneDNSSpec.
func (*ControlPlaneDNSSpec) DeepCopyInto ¶
func (in *ControlPlaneDNSSpec) DeepCopyInto(out *ControlPlaneDNSSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ControlPlaneLoadBalancerSpec ¶
type ControlPlaneLoadBalancerSpec struct {
// +kubebuilder:validation:XValidation:rule="!has(oldSelf.ip) || self.ip == oldSelf.ip",message="ip is immutable"
// +kubebuilder:validation:XValidation:rule="!has(oldSelf.zone) || self.zone == oldSelf.zone",message="zone is immutable"
// +kubebuilder:validation:XValidation:rule="!has(oldSelf.privateIP) || self.privateIP == oldSelf.privateIP",message="privateIP is immutable"
LoadBalancerSpec `json:",inline"`
// AllowedRanges allows to set a list of allowed IP ranges that can access
// the cluster through the loadbalancer. When unset, all IP ranges are allowed.
// To allow the cluster to work properly, public IPs of nodes and Public
// Gateways will automatically be allowed. However, if this field is set,
// you MUST manually allow IPs of the nodes of your management cluster.
// +kubebuilder:validation:MaxItems=30
// +listType=set
// +optional
AllowedRanges []CIDR `json:"allowedRanges,omitempty"`
// Private disables the creation of a public IP on the LoadBalancers when it's set to true.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
Private *bool `json:"private,omitempty"`
}
ControlPlaneLoadBalancerSpec defines control-plane loadbalancer settings for the cluster.
func (*ControlPlaneLoadBalancerSpec) DeepCopy ¶
func (in *ControlPlaneLoadBalancerSpec) DeepCopy() *ControlPlaneLoadBalancerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlaneLoadBalancerSpec.
func (*ControlPlaneLoadBalancerSpec) DeepCopyInto ¶
func (in *ControlPlaneLoadBalancerSpec) DeepCopyInto(out *ControlPlaneLoadBalancerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ControlPlanePrivateDNSSpec ¶ added in v0.1.1
type ControlPlanePrivateDNSSpec struct {
// Name is the DNS short name of the record (non-FQDN). The format must consist of
// alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character.
// +kubebuilder:validation:Pattern:=^[a-z0-9]([-a-z0-9.]*[a-z0-9])?$
Name string `json:"name"`
}
func (*ControlPlanePrivateDNSSpec) DeepCopy ¶ added in v0.1.1
func (in *ControlPlanePrivateDNSSpec) DeepCopy() *ControlPlanePrivateDNSSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ControlPlanePrivateDNSSpec.
func (*ControlPlanePrivateDNSSpec) DeepCopyInto ¶ added in v0.1.1
func (in *ControlPlanePrivateDNSSpec) DeepCopyInto(out *ControlPlanePrivateDNSSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ImageSpec ¶
type ImageSpec struct {
// ID of the image.
ID *string `json:"id,omitempty"`
// Name of the image.
Name *string `json:"name,omitempty"`
// Label of the image.
Label *string `json:"label,omitempty"`
}
ImageSpec contains an ID, Name or Label to use to create the instance. +kubebuilder:validation:XValidation:rule="(has(self.id) ? 1 : 0) + (has(self.name) ? 1 : 0) + (has(self.label) ? 1 : 0) == 1",message="exactly one of id, name or label must be set"
func (*ImageSpec) DeepCopy ¶
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ImageSpec.
func (*ImageSpec) DeepCopyInto ¶
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type LoadBalancerSpec ¶
type LoadBalancerSpec struct {
// Zone where to create the loadbalancer. Must be in the same region as the
// cluster. Defaults to the first zone of the region.
// +optional
Zone *string `json:"zone,omitempty"`
// Load Balancer commercial offer type.
// +kubebuilder:default="LB-S"
// +optional
Type *string `json:"type,omitempty"`
// IP to use when creating a loadbalancer.
// +kubebuilder:validation:Format=ipv4
// +optional
IP *string `json:"ip,omitempty"`
// Private IP to use when attaching a loadbalancer to a Private Network.
// +kubebuilder:validation:Format=ipv4
// +optional
PrivateIP *string `json:"privateIP,omitempty"`
}
LoadBalancerSpec defines loadbalancer parameters.
func (*LoadBalancerSpec) DeepCopy ¶
func (in *LoadBalancerSpec) DeepCopy() *LoadBalancerSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new LoadBalancerSpec.
func (*LoadBalancerSpec) DeepCopyInto ¶
func (in *LoadBalancerSpec) DeepCopyInto(out *LoadBalancerSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkSpec ¶
type NetworkSpec struct {
// ControlPlaneLoadBalancer contains loadbalancer settings.
// +optional
ControlPlaneLoadBalancer *ControlPlaneLoadBalancerSpec `json:"controlPlaneLoadBalancer,omitempty"`
// ControlPlaneExtraLoadBalancers allows configuring additional LoadBalancers.
// Because Scaleway LoadBalancers are currently zonal resources, you may set
// up to 3 additional LoadBalancers for achieving regional redundancy. It is
// mandatory to set the controlPlaneDNS field when you do so.
// This may be removed in the future, when Scaleway supports regional LoadBalancers.
// +kubebuilder:validation:MaxItems=3
// +optional
ControlPlaneExtraLoadBalancers []LoadBalancerSpec `json:"controlPlaneExtraLoadBalancers,omitempty"`
// ControlPlaneDNS allows configuring a Scaleway Domain DNS Zone.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
ControlPlaneDNS *ControlPlaneDNSSpec `json:"controlPlaneDNS,omitempty"`
// ControlPlanePrivateDNS allows configuring the DNS Zone of the VPC with
// records that point to the control plane LoadBalancers. This field is only
// available when the control plane LoadBalancers are private. Only one of
// ControlPlaneDNS or ControlPlanePrivateDNS can be set.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
ControlPlanePrivateDNS *ControlPlanePrivateDNSSpec `json:"controlPlanePrivateDNS,omitempty"`
// PrivateNetwork allows attaching machines of the cluster to a Private Network.
// +optional
PrivateNetwork *PrivateNetworkSpec `json:"privateNetwork,omitempty"`
// PublicGateways allows to create Public Gateways that will be attached to the
// Private Network of the cluster.
// +kubebuilder:validation:MaxItems=6
// +optional
PublicGateways []PublicGatewaySpec `json:"publicGateways,omitempty"`
}
NetworkSpec defines network specific settings.
+kubebuilder:validation:XValidation:rule="!has(self.controlPlaneExtraLoadBalancers) || has(self.controlPlaneDNS) || has(self.controlPlanePrivateDNS)",message="controlPlaneDNS or controlPlanePrivateDNS is required when controlPlaneExtraLoadBalancers is set" +kubebuilder:validation:XValidation:rule="!has(self.publicGateways) || has(self.privateNetwork) && self.privateNetwork.enabled",message="privateNetwork is required when publicGateways is set" +kubebuilder:validation:XValidation:rule="!has(self.controlPlaneLoadBalancer) || !has(self.controlPlaneLoadBalancer.private) || !self.controlPlaneLoadBalancer.private || has(self.privateNetwork) && self.privateNetwork.enabled",message="privateNetwork is required when private LoadBalancer is enabled" +kubebuilder:validation:XValidation:rule="!has(self.controlPlanePrivateDNS) || has(self.controlPlaneLoadBalancer.private) && self.controlPlaneLoadBalancer.private",message="private LoadBalancer must be enabled to set controlPlanePrivateDNS" +kubebuilder:validation:XValidation:rule="(has(self.controlPlaneDNS) ? 1 : 0) + (has(self.controlPlanePrivateDNS) ? 1 : 0) < 2",message="controlPlaneDNS and controlPlanePrivateDNS cannot be set at the same time"
func (*NetworkSpec) DeepCopy ¶
func (in *NetworkSpec) DeepCopy() *NetworkSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkSpec.
func (*NetworkSpec) DeepCopyInto ¶
func (in *NetworkSpec) DeepCopyInto(out *NetworkSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type NetworkStatus ¶
type NetworkStatus struct {
// VPCID is set if the cluster has an associated Private Network.
// +optional
VPCID *string `json:"vpcID,omitempty"`
// PrivateNetworkID is set if the cluster has an associated Private Network.
// +optional
PrivateNetworkID *string `json:"privateNetworkID,omitempty"`
// PublicGatewayIDs is a list of Public Gateway IDs.
// +optional
PublicGatewayIDs []string `json:"publicGatewayIDs,omitempty"`
// LoadBalancerIP is the public IP of the cluster control-plane.
// +optional
LoadBalancerIP *string `json:"loadBalancerIP,omitempty"`
// ExtraLoadBalancerIPs is a list of IPs of the extra loadbalancers.
// +optional
ExtraLoadBalancerIPs []string `json:"extraLoadBalancerIPs,omitempty"`
}
NetworkStatus contains information about network resources of the cluster.
func (*NetworkStatus) DeepCopy ¶
func (in *NetworkStatus) DeepCopy() *NetworkStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NetworkStatus.
func (*NetworkStatus) DeepCopyInto ¶
func (in *NetworkStatus) DeepCopyInto(out *NetworkStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PlacementGroupSpec ¶ added in v0.1.1
type PlacementGroupSpec struct {
// ID of the placement group.
// +optional
ID *string `json:"id,omitempty"`
// Name of the placement group.
// +optional
Name *string `json:"name,omitempty"`
}
PlacementGroupSpec contains an ID or Name of an existing Placement Group. +kubebuilder:validation:XValidation:rule="(has(self.id) ? 1 : 0) + (has(self.name) ? 1 : 0) == 1",message="exactly one of id or name must be set"
func (*PlacementGroupSpec) DeepCopy ¶ added in v0.1.1
func (in *PlacementGroupSpec) DeepCopy() *PlacementGroupSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlacementGroupSpec.
func (*PlacementGroupSpec) DeepCopyInto ¶ added in v0.1.1
func (in *PlacementGroupSpec) DeepCopyInto(out *PlacementGroupSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PrivateNetworkSpec ¶
type PrivateNetworkSpec struct {
// Set to true to automatically attach machines to a Private Network.
// The Private Network is automatically created if no existing Private
// Network ID is provided.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
Enabled bool `json:"enabled"`
// Set a Private Network ID to reuse an existing Private Network.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
ID *string `json:"id,omitempty"`
// Set the VPC ID where the new Private Network will be created.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
VPCID *string `json:"vpcID,omitempty"`
// Optional subnet for the Private Network. Only used on newly created Private Networks.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
Subnet *string `json:"subnet,omitempty"`
}
PrivateNetworkSpec defines Private Network settings for the cluster. +kubebuilder:validation:XValidation:rule="has(self.vpcID) == has(oldSelf.vpcID)",message="vpcID cannot be added or removed" +kubebuilder:validation:XValidation:rule="has(self.id) == has(oldSelf.id)",message="id cannot be added or removed" +kubebuilder:validation:XValidation:rule="has(self.subnet) == has(oldSelf.subnet)",message="subnet cannot be added or removed" +kubebuilder:validation:XValidation:rule="has(self.id) && !has(self.subnet) || !has(self.id)",message="subnet cannot be set when id is set" +kubebuilder:validation:XValidation:rule="has(self.id) && !has(self.vpcID) || !has(self.id)",message="vpcID cannot be set when id is set"
func (*PrivateNetworkSpec) DeepCopy ¶
func (in *PrivateNetworkSpec) DeepCopy() *PrivateNetworkSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrivateNetworkSpec.
func (*PrivateNetworkSpec) DeepCopyInto ¶
func (in *PrivateNetworkSpec) DeepCopyInto(out *PrivateNetworkSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PublicGatewaySpec ¶
type PublicGatewaySpec struct {
// Public Gateway commercial offer type.
// +kubebuilder:default="VPC-GW-S"
// +optional
Type *string `json:"type,omitempty"`
// IP to use when creating a Public Gateway.
// +kubebuilder:validation:Format=ipv4
// +optional
IP *string `json:"ip,omitempty"`
// Zone where to create the Public Gateway. Must be in the same region as the
// cluster. Defaults to the first zone of the region.
// +optional
Zone *string `json:"zone,omitempty"`
}
PublicGatewaySpec defines Public Gateway settings for the cluster.
func (*PublicGatewaySpec) DeepCopy ¶
func (in *PublicGatewaySpec) DeepCopy() *PublicGatewaySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicGatewaySpec.
func (*PublicGatewaySpec) DeepCopyInto ¶
func (in *PublicGatewaySpec) DeepCopyInto(out *PublicGatewaySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type PublicNetworkSpec ¶
type PublicNetworkSpec struct {
// EnableIPv4 defines whether server has IPv4 address enabled.
// +optional
EnableIPv4 *bool `json:"enableIPv4,omitempty"`
// EnableIPv6 defines whether server has IPv6 addresses enabled.
// +optional
EnableIPv6 *bool `json:"enableIPv6,omitempty"`
}
PublicNetworkSpec allows enabling the attachment of public IPs to the instance.
func (*PublicNetworkSpec) DeepCopy ¶
func (in *PublicNetworkSpec) DeepCopy() *PublicNetworkSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PublicNetworkSpec.
func (*PublicNetworkSpec) DeepCopyInto ¶
func (in *PublicNetworkSpec) DeepCopyInto(out *PublicNetworkSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type RootVolumeSpec ¶
type RootVolumeSpec struct {
// Size of the root volume in GB. Defaults to 20 GB.
// +kubebuilder:default=20
// +kubebuilder:validation:Minimum=8
// +optional
Size *int64 `json:"size,omitempty"`
// Type of the root volume. Can be local or block. Note that not all types
// of instances support local volumes.
// +kubebuilder:validation:Enum=local;block
// +kubebuilder:default="block"
// +optional
Type *string `json:"type,omitempty"`
// IOPS is the number of IOPS requested for the disk. This is only applicable for block volumes.
// +optional
IOPS *int64 `json:"iops,omitempty"`
}
RootVolumeSpec defines the characteristics of the system (root) volume.
func (*RootVolumeSpec) DeepCopy ¶
func (in *RootVolumeSpec) DeepCopy() *RootVolumeSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RootVolumeSpec.
func (*RootVolumeSpec) DeepCopyInto ¶
func (in *RootVolumeSpec) DeepCopyInto(out *RootVolumeSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayCluster ¶
type ScalewayCluster struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ScalewayClusterSpec `json:"spec,omitempty"`
Status ScalewayClusterStatus `json:"status,omitempty"`
}
ScalewayCluster is the Schema for the scalewayclusters API. +kubebuilder:validation:XValidation:rule="self.metadata.name.size() <= 63",message="name must be between 1 and 63 characters" +kubebuilder:validation:XValidation:rule="self.metadata.name.matches('^[a-z0-9]([-a-z0-9]*[a-z0-9])?$')",message="name must be a valid DNS label"
func (*ScalewayCluster) DeepCopy ¶
func (in *ScalewayCluster) DeepCopy() *ScalewayCluster
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayCluster.
func (*ScalewayCluster) DeepCopyInto ¶
func (in *ScalewayCluster) DeepCopyInto(out *ScalewayCluster)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayCluster) DeepCopyObject ¶
func (in *ScalewayCluster) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayClusterList ¶
type ScalewayClusterList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ScalewayCluster `json:"items"`
}
ScalewayClusterList contains a list of ScalewayCluster.
func (*ScalewayClusterList) DeepCopy ¶
func (in *ScalewayClusterList) DeepCopy() *ScalewayClusterList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayClusterList.
func (*ScalewayClusterList) DeepCopyInto ¶
func (in *ScalewayClusterList) DeepCopyInto(out *ScalewayClusterList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayClusterList) DeepCopyObject ¶
func (in *ScalewayClusterList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayClusterSpec ¶
type ScalewayClusterSpec struct {
// ProjectID is the Scaleway project ID where the cluster will be created.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +kubebuilder:validation:Pattern:="^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"
ProjectID string `json:"projectID"`
// Region represents the region where the cluster will be hosted.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +kubebuilder:validation:Pattern:="^[a-z]{2}-[a-z]{3}$"
Region string `json:"region"`
// Network contains network related options for the cluster.
// +optional
Network *NetworkSpec `json:"network,omitempty"`
// ScalewaySecretName is the name of the secret that contains the Scaleway client parameters.
// The following keys are required: SCW_ACCESS_KEY, SCW_SECRET_KEY, SCW_DEFAULT_PROJECT_ID.
// The following key is optional: SCW_API_URL.
ScalewaySecretName string `json:"scalewaySecretName"`
// FailureDomains is a list of failure domains where the control-plane nodes will be created.
// Failure domains correspond to Scaleway zones inside the cluster region (e.g. fr-par-1).
// +listType=set
// +optional
FailureDomains []string `json:"failureDomains,omitempty"`
// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
ControlPlaneEndpoint clusterv1.APIEndpoint `json:"controlPlaneEndpoint,omitempty"`
}
ScalewayClusterSpec defines the desired state of ScalewayCluster.
+kubebuilder:validation:XValidation:rule="!has(oldSelf.controlPlaneEndpoint) || has(self.controlPlaneEndpoint)", message="controlPlaneEndpoint is required once set"
+kubebuilder:validation:XValidation:rule="(has(self.network) && has(self.network.controlPlaneDNS)) == (has(oldSelf.network) && has(oldSelf.network.controlPlaneDNS))",message="controlPlaneDNS cannot be added or removed" +kubebuilder:validation:XValidation:rule="(has(self.network) && has(self.network.controlPlanePrivateDNS)) == (has(oldSelf.network) && has(oldSelf.network.controlPlanePrivateDNS))",message="controlPlanePrivateDNS cannot be added or removed" +kubebuilder:validation:XValidation:rule="(has(self.network) && has(self.network.privateNetwork)) == (has(oldSelf.network) && has(oldSelf.network.privateNetwork))",message="privateNetwork cannot be added or removed"
+kubebuilder:validation:XValidation:rule="(has(self.network) && has(self.network.controlPlaneLoadBalancer) && has(self.network.controlPlaneLoadBalancer.private)) == (has(oldSelf.network) && has(oldSelf.network.controlPlaneLoadBalancer) && has(oldSelf.network.controlPlaneLoadBalancer.private))",message="private cannot be added or removed" +kubebuilder:validation:XValidation:rule="(has(self.network) && has(self.network.controlPlaneLoadBalancer) && has(self.network.controlPlaneLoadBalancer.ip)) == (has(oldSelf.network) && has(oldSelf.network.controlPlaneLoadBalancer) && has(oldSelf.network.controlPlaneLoadBalancer.ip))",message="ip cannot be added or removed" +kubebuilder:validation:XValidation:rule="(has(self.network) && has(self.network.controlPlaneLoadBalancer) && has(self.network.controlPlaneLoadBalancer.zone)) == (has(oldSelf.network) && has(oldSelf.network.controlPlaneLoadBalancer) && has(oldSelf.network.controlPlaneLoadBalancer.zone))",message="zone cannot be added or removed" +kubebuilder:validation:XValidation:rule="(has(self.network) && has(self.network.controlPlaneLoadBalancer) && has(self.network.controlPlaneLoadBalancer.privateIP)) == (has(oldSelf.network) && has(oldSelf.network.controlPlaneLoadBalancer) && has(oldSelf.network.controlPlaneLoadBalancer.privateIP))",message="privateIP cannot be added or removed"
func (*ScalewayClusterSpec) DeepCopy ¶
func (in *ScalewayClusterSpec) DeepCopy() *ScalewayClusterSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayClusterSpec.
func (*ScalewayClusterSpec) DeepCopyInto ¶
func (in *ScalewayClusterSpec) DeepCopyInto(out *ScalewayClusterSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayClusterStatus ¶
type ScalewayClusterStatus struct {
// Ready denotes that the Scaleway cluster infrastructure is fully provisioned.
// NOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.
// The value of this field is never updated after provisioning is completed.
// +optional
Ready bool `json:"ready"`
// Network contains information about network resources of the cluster.
// +optional
Network *NetworkStatus `json:"network,omitempty"`
// FailureDomains is a list of failure domain objects synced from the infrastructure provider.
// +optional
FailureDomains clusterv1.FailureDomains `json:"failureDomains,omitempty"`
}
ScalewayClusterStatus defines the observed state of ScalewayCluster.
func (*ScalewayClusterStatus) DeepCopy ¶
func (in *ScalewayClusterStatus) DeepCopy() *ScalewayClusterStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayClusterStatus.
func (*ScalewayClusterStatus) DeepCopyInto ¶
func (in *ScalewayClusterStatus) DeepCopyInto(out *ScalewayClusterStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayClusterTemplate ¶
type ScalewayClusterTemplate struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ScalewayClusterTemplateSpec `json:"spec,omitempty"`
}
ScalewayClusterTemplate is the Schema for the scalewayclustertemplates API.
func (*ScalewayClusterTemplate) DeepCopy ¶
func (in *ScalewayClusterTemplate) DeepCopy() *ScalewayClusterTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayClusterTemplate.
func (*ScalewayClusterTemplate) DeepCopyInto ¶
func (in *ScalewayClusterTemplate) DeepCopyInto(out *ScalewayClusterTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayClusterTemplate) DeepCopyObject ¶
func (in *ScalewayClusterTemplate) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayClusterTemplateList ¶
type ScalewayClusterTemplateList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ScalewayClusterTemplate `json:"items"`
}
ScalewayClusterTemplateList contains a list of ScalewayClusterTemplate.
func (*ScalewayClusterTemplateList) DeepCopy ¶
func (in *ScalewayClusterTemplateList) DeepCopy() *ScalewayClusterTemplateList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayClusterTemplateList.
func (*ScalewayClusterTemplateList) DeepCopyInto ¶
func (in *ScalewayClusterTemplateList) DeepCopyInto(out *ScalewayClusterTemplateList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayClusterTemplateList) DeepCopyObject ¶
func (in *ScalewayClusterTemplateList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayClusterTemplateResource ¶
type ScalewayClusterTemplateResource struct {
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ScalewayClusterSpec `json:"spec"`
}
func (*ScalewayClusterTemplateResource) DeepCopy ¶
func (in *ScalewayClusterTemplateResource) DeepCopy() *ScalewayClusterTemplateResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayClusterTemplateResource.
func (*ScalewayClusterTemplateResource) DeepCopyInto ¶
func (in *ScalewayClusterTemplateResource) DeepCopyInto(out *ScalewayClusterTemplateResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayClusterTemplateSpec ¶
type ScalewayClusterTemplateSpec struct {
Template ScalewayClusterTemplateResource `json:"template"`
}
ScalewayClusterTemplateSpec defines the desired state of ScalewayClusterTemplate.
func (*ScalewayClusterTemplateSpec) DeepCopy ¶
func (in *ScalewayClusterTemplateSpec) DeepCopy() *ScalewayClusterTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayClusterTemplateSpec.
func (*ScalewayClusterTemplateSpec) DeepCopyInto ¶
func (in *ScalewayClusterTemplateSpec) DeepCopyInto(out *ScalewayClusterTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayMachine ¶
type ScalewayMachine struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
// +kubebuilder:validation:Required
Spec ScalewayMachineSpec `json:"spec,omitempty"`
Status ScalewayMachineStatus `json:"status,omitempty"`
}
ScalewayMachine is the Schema for the scalewaymachines API. +kubebuilder:validation:XValidation:rule="self.metadata.name.size() <= 63",message="name must be between 1 and 63 characters" +kubebuilder:validation:XValidation:rule="self.metadata.name.matches('^[a-z0-9]([-a-z0-9]*[a-z0-9])?$')",message="name must be a valid DNS label"
func (*ScalewayMachine) DeepCopy ¶
func (in *ScalewayMachine) DeepCopy() *ScalewayMachine
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachine.
func (*ScalewayMachine) DeepCopyInto ¶
func (in *ScalewayMachine) DeepCopyInto(out *ScalewayMachine)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayMachine) DeepCopyObject ¶
func (in *ScalewayMachine) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayMachineList ¶
type ScalewayMachineList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ScalewayMachine `json:"items"`
}
ScalewayMachineList contains a list of ScalewayMachine.
func (*ScalewayMachineList) DeepCopy ¶
func (in *ScalewayMachineList) DeepCopy() *ScalewayMachineList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachineList.
func (*ScalewayMachineList) DeepCopyInto ¶
func (in *ScalewayMachineList) DeepCopyInto(out *ScalewayMachineList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayMachineList) DeepCopyObject ¶
func (in *ScalewayMachineList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayMachineSpec ¶
type ScalewayMachineSpec struct {
// ProviderID must match the provider ID as seen on the node object corresponding to this machine.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
ProviderID *string `json:"providerID,omitempty"`
// CommercialType of instance (e.g. PRO2-S).
// +kubebuilder:default="PRO2-S"
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
CommercialType string `json:"commercialType"`
// Image ID, Name or Label to use to create the instance.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
Image ImageSpec `json:"image"`
// RootVolume defines the characteristics of the system (root) volume.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
RootVolume *RootVolumeSpec `json:"rootVolume,omitempty"`
// PublicNetwork allows attaching public IPs to the instance.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
PublicNetwork *PublicNetworkSpec `json:"publicNetwork,omitempty"`
// PlacementGroup allows attaching a Placement Group to the instance.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
PlacementGroup *PlacementGroupSpec `json:"placementGroup,omitempty"`
// SecurityGroup allows attaching a Security Group to the instance.
// +kubebuilder:validation:XValidation:rule="self == oldSelf",message="Value is immutable"
// +optional
SecurityGroup *SecurityGroupSpec `json:"securityGroup,omitempty"`
}
ScalewayMachineSpec defines the desired state of ScalewayMachine. +kubebuilder:validation:XValidation:rule="has(self.rootVolume) == has(oldSelf.rootVolume)",message="rootVolume cannot be added or removed" +kubebuilder:validation:XValidation:rule="has(self.publicNetwork) == has(oldSelf.publicNetwork)",message="publicNetwork cannot be added or removed" +kubebuilder:validation:XValidation:rule="has(self.placementGroup) == has(oldSelf.placementGroup)",message="placementGroup cannot be added or removed" +kubebuilder:validation:XValidation:rule="has(self.securityGroup) == has(oldSelf.securityGroup)",message="securityGroup cannot be added or removed"
func (*ScalewayMachineSpec) DeepCopy ¶
func (in *ScalewayMachineSpec) DeepCopy() *ScalewayMachineSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachineSpec.
func (*ScalewayMachineSpec) DeepCopyInto ¶
func (in *ScalewayMachineSpec) DeepCopyInto(out *ScalewayMachineSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayMachineStatus ¶
type ScalewayMachineStatus struct {
// Addresses contains the associated addresses for the machine.
// +optional
Addresses []clusterv1.MachineAddress `json:"addresses,omitempty"`
// Ready denotes that the Scaleway machine infrastructure is fully provisioned.
// NOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.
// The value of this field is never updated after provisioning is completed. Please use conditions
// to check the operational state of the infra machine.
// +optional
Ready bool `json:"ready"`
}
ScalewayMachineStatus defines the observed state of ScalewayMachine.
func (*ScalewayMachineStatus) DeepCopy ¶
func (in *ScalewayMachineStatus) DeepCopy() *ScalewayMachineStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachineStatus.
func (*ScalewayMachineStatus) DeepCopyInto ¶
func (in *ScalewayMachineStatus) DeepCopyInto(out *ScalewayMachineStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayMachineTemplate ¶
type ScalewayMachineTemplate struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ScalewayMachineTemplateSpec `json:"spec,omitempty"`
}
ScalewayMachineTemplate is the Schema for the scalewaymachinetemplates API.
func (*ScalewayMachineTemplate) DeepCopy ¶
func (in *ScalewayMachineTemplate) DeepCopy() *ScalewayMachineTemplate
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachineTemplate.
func (*ScalewayMachineTemplate) DeepCopyInto ¶
func (in *ScalewayMachineTemplate) DeepCopyInto(out *ScalewayMachineTemplate)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayMachineTemplate) DeepCopyObject ¶
func (in *ScalewayMachineTemplate) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayMachineTemplateList ¶
type ScalewayMachineTemplateList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []ScalewayMachineTemplate `json:"items"`
}
ScalewayMachineTemplateList contains a list of ScalewayMachineTemplate.
func (*ScalewayMachineTemplateList) DeepCopy ¶
func (in *ScalewayMachineTemplateList) DeepCopy() *ScalewayMachineTemplateList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachineTemplateList.
func (*ScalewayMachineTemplateList) DeepCopyInto ¶
func (in *ScalewayMachineTemplateList) DeepCopyInto(out *ScalewayMachineTemplateList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*ScalewayMachineTemplateList) DeepCopyObject ¶
func (in *ScalewayMachineTemplateList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type ScalewayMachineTemplateResource ¶
type ScalewayMachineTemplateResource struct {
// Standard object's metadata.
// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
// +optional
ObjectMeta metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ScalewayMachineSpec `json:"spec"`
}
func (*ScalewayMachineTemplateResource) DeepCopy ¶
func (in *ScalewayMachineTemplateResource) DeepCopy() *ScalewayMachineTemplateResource
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachineTemplateResource.
func (*ScalewayMachineTemplateResource) DeepCopyInto ¶
func (in *ScalewayMachineTemplateResource) DeepCopyInto(out *ScalewayMachineTemplateResource)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type ScalewayMachineTemplateSpec ¶
type ScalewayMachineTemplateSpec struct {
Template ScalewayMachineTemplateResource `json:"template"`
}
ScalewayMachineTemplateSpec defines the desired state of ScalewayMachineTemplate.
func (*ScalewayMachineTemplateSpec) DeepCopy ¶
func (in *ScalewayMachineTemplateSpec) DeepCopy() *ScalewayMachineTemplateSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ScalewayMachineTemplateSpec.
func (*ScalewayMachineTemplateSpec) DeepCopyInto ¶
func (in *ScalewayMachineTemplateSpec) DeepCopyInto(out *ScalewayMachineTemplateSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type SecurityGroupSpec ¶ added in v0.1.1
type SecurityGroupSpec struct {
// ID of the security group.
// +optional
ID *string `json:"id,omitempty"`
// +optional
// Name of the security group.
Name *string `json:"name,omitempty"`
}
SecurityGroupSpec contains an ID or Name of an existing Security Group. +kubebuilder:validation:XValidation:rule="(has(self.id) ? 1 : 0) + (has(self.name) ? 1 : 0) == 1",message="exactly one of id or name must be set"
func (*SecurityGroupSpec) DeepCopy ¶ added in v0.1.1
func (in *SecurityGroupSpec) DeepCopy() *SecurityGroupSpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SecurityGroupSpec.
func (*SecurityGroupSpec) DeepCopyInto ¶ added in v0.1.1
func (in *SecurityGroupSpec) DeepCopyInto(out *SecurityGroupSpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.