openstack

package
v0.0.0-...-c53fdc3 Latest Latest
Warning

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

Go to latest
Published: Oct 3, 2023 License: Apache-2.0 Imports: 1 Imported by: 0

Documentation

Overview

Package openstack contains OpenStack-specific structures for installer configuration and management.

Index

Constants

View Source
const Name string = "openstack"

Name is the name for the Openstack platform.

Variables

This section is empty.

Functions

This section is empty.

Types

type FixedIP

type FixedIP struct {
	Subnet SubnetFilter `json:"subnet"`
}

FixedIP identifies a subnet defined by a subnet filter.

type MachinePool

type MachinePool struct {
	// FlavorName defines the OpenStack Nova flavor.
	// eg. m1.large
	FlavorName string `json:"type"`

	// RootVolume defines the root volume for instances in the machine pool.
	// The instances use ephemeral disks if not set.
	// +optional
	RootVolume *RootVolume `json:"rootVolume,omitempty"`

	// AdditionalNetworkIDs contains IDs of additional networks for machines,
	// where each ID is presented in UUID v4 format.
	// Allowed address pairs won't be created for the additional networks.
	// +optional
	AdditionalNetworkIDs []string `json:"additionalNetworkIDs,omitempty"`

	// AdditionalSecurityGroupIDs contains IDs of additional security groups for machines,
	// where each ID is presented in UUID v4 format.
	// +optional
	AdditionalSecurityGroupIDs []string `json:"additionalSecurityGroupIDs,omitempty"`

	// ServerGroupPolicy will be used to create the Server Group that will contain all the machines of this MachinePool.
	// Defaults to "soft-anti-affinity".
	ServerGroupPolicy ServerGroupPolicy `json:"serverGroupPolicy,omitempty"`

	// Zones is the list of availability zones where the instances should be deployed.
	// If no zones are provided, all instances will be deployed on OpenStack Nova default availability zone
	// +optional
	Zones []string `json:"zones,omitempty"`
}

MachinePool stores the configuration for a machine pool installed on OpenStack.

func (*MachinePool) Set

func (o *MachinePool) Set(required *MachinePool)

Set sets the values from `required` to `o`.

type Metadata

type Metadata struct {
	Cloud string `json:"cloud"`
	// Most OpenStack resources are tagged with these tags as identifier.
	Identifier map[string]string `json:"identifier"`
}

Metadata contains OpenStack metadata (e.g. for uninstalling the cluster).

type NetworkFilter

type NetworkFilter struct {
	Name string `json:"name,omitempty"`
	ID   string `json:"id,omitempty"`
}

NetworkFilter defines a network by name and/or ID.

type Platform

type Platform struct {
	// Region specifies the OpenStack region where the cluster will be created.
	// Deprecated: this value is not used by the installer.
	// +optional
	DeprecatedRegion string `json:"region,omitempty"`

	// DefaultMachinePlatform is the default configuration used when
	// installing on OpenStack for machine pools which do not define their own
	// platform configuration.
	// +optional
	DefaultMachinePlatform *MachinePool `json:"defaultMachinePlatform,omitempty"`

	// Cloud is the name of OpenStack cloud to use from clouds.yaml.
	Cloud string `json:"cloud"`

	// ExternalNetwork is name of the external network in your OpenStack cluster.
	// +optional
	ExternalNetwork string `json:"externalNetwork,omitempty"`

	// DeprecatedFlavorName is the name of the flavor to use for instances in this cluster.
	// Deprecated: use FlavorName in DefaultMachinePlatform to define default flavor.
	// +optional
	DeprecatedFlavorName string `json:"computeFlavor,omitempty"`

	// LbFloatingIP is the IP address of an available floating IP in your OpenStack cluster
	// to associate with the OpenShift load balancer.
	// Deprecated: this value has been renamed to apiFloatingIP.
	// +optional
	DeprecatedLbFloatingIP string `json:"lbFloatingIP,omitempty"`

	// APIFloatingIP is the IP address of an available floating IP in your OpenStack cluster
	// to associate with the OpenShift API load balancer.
	// +optional
	APIFloatingIP string `json:"apiFloatingIP,omitempty"`

	// IngressFloatingIP is the ID of an available floating IP in your OpenStack cluster
	// that will be associated with the OpenShift ingress port
	// +optional
	IngressFloatingIP string `json:"ingressFloatingIP,omitempty"`

	// ExternalDNS holds the IP addresses of dns servers that will
	// be added to the dns resolution of all instances in the cluster.
	// +optional
	ExternalDNS []string `json:"externalDNS"`

	// TrunkSupport holds a `0` or `1` value that indicates whether or not to use trunk ports
	// in your OpenShift cluster.
	// Deprecated: this value is set by the installer automatically.
	// +optional
	DeprecatedTrunkSupport string `json:"trunkSupport,omitempty"`

	// OctaviaSupport holds a `0` or `1` value that indicates whether your OpenStack
	// cluster supports Octavia Loadbalancing.
	// Deprecated: this value is set by the installer automatically.
	// +optional
	DeprecatedOctaviaSupport string `json:"octaviaSupport,omitempty"`

	// ClusterOSImage is either a URL with `http(s)` or `file` scheme to override
	// the default OS image for cluster nodes, or an existing Glance image name.
	// +optional
	ClusterOSImage string `json:"clusterOSImage,omitempty"`

	// ClusterOSImageProperties is a list of properties to be added to the metadata of the uploaded Glance ClusterOSImage.
	// Default: the default is to not set any properties.
	// +optional
	ClusterOSImageProperties map[string]string `json:"clusterOSImageProperties,omitempty"`

	// DeprecatedAPIVIP is the static IP on the nodes subnet that the api port for openshift will be assigned
	// Default: will be set to the 5 on the first entry in the machineNetwork CIDR
	// Deprecated: Use APIVIPs
	//
	// +kubebuilder:validation:Format=ip
	// +optional
	DeprecatedAPIVIP string `json:"apiVIP,omitempty"`

	// APIVIPs contains the VIP(s) on the nodes subnet that the api port for
	// openshift will be assigned. In dual stack clusters it contains an IPv4
	// and IPv6 address, otherwise only one VIP
	// Default: will be set to the 5 on the first entry in the machineNetwork
	// CIDR
	//
	// +kubebuilder:validation:MaxItems=2
	// +kubebuilder:validation:UniqueItems=true
	// +kubebuilder:validation:Format=ip
	// +optional
	APIVIPs []string `json:"apiVIPs,omitempty"`

	// DeprecatedIngressVIP is the static IP on the nodes subnet that the apps port for openshift will be assigned
	// Default: will be set to the 7 on the first entry in the machineNetwork CIDR
	// Deprecated: Use IngressVIPs
	//
	// +kubebuilder:validation:Format=ip
	// +optional
	DeprecatedIngressVIP string `json:"ingressVIP,omitempty"`

	// IngressVIPs contains the VIP(s) on the nodes subnet that the apps port
	// for openshift will be assigned. In dual stack clusters it contains an
	// IPv4 and IPv6 address, otherwise only one VIP
	// Default: will be set to the 7 on the first entry in the machineNetwork
	// CIDR
	//
	// +kubebuilder:validation:MaxItems=2
	// +kubebuilder:validation:UniqueItems=true
	// +kubebuilder:validation:Format=ip
	// +optional
	IngressVIPs []string `json:"ingressVIPs,omitempty"`

	// DeprecatedMachinesSubnet is a string of the UUIDv4 of an openstack subnet. This subnet will be used by all nodes created by the installer.
	// By setting this, the installer will no longer create a network and subnet.
	// The subnet and network specified in MachinesSubnet will not be deleted or modified by the installer.
	// Deprecated: Use ControlPlanePort
	// +optional
	DeprecatedMachinesSubnet string `json:"machinesSubnet,omitempty"`

	// ControlPlanePort contains details of the network attached to the control plane port, with the network either containing one openstack
	// subnet for IPv4 or two openstack subnets for dualstack clusters. Providing this configuration will prevent OpenShift from managing
	// or updating this network and its subnets. The network and its subnets will be used during creation of all nodes.
	// This is a TechPreview feature and requires setting featureSet to TechPreviewNoUpgrade.
	// +optional
	ControlPlanePort *PortTarget `json:"controlPlanePort,omitempty"`

	// LoadBalancer defines how the load balancer used by the cluster is configured.
	// +optional
	LoadBalancer *configv1.OpenStackPlatformLoadBalancer `json:"loadBalancer,omitempty"`
}

Platform stores all the global configuration that all machinesets use.

type PortTarget

type PortTarget struct {
	// Network is a query for an openstack network that the port will be discovered on.
	// This will fail if the query returns more than one network.
	Network NetworkFilter `json:"network,omitempty"`
	// Specify subnets of the network where control plane port will be discovered.
	FixedIPs []FixedIP `json:"fixedIPs"`
}

PortTarget defines, directly or indirectly, one or more subnets where to attach a port.

type RootVolume

type RootVolume struct {
	// Size defines the size of the volume in gibibytes (GiB).
	// Required
	Size int `json:"size"`
	// Type defines the type of the volume.
	// Deprecated: Use Types instead.
	// +optional
	DeprecatedType string `json:"type,omitempty"`

	// Types is the list of the volume types of the root volumes.
	// This is mutually exclusive with Type.
	// +required
	Types []string `json:"types"`

	// Zones is the list of availability zones where the root volumes should be deployed.
	// If no zones are provided, all instances will be deployed on OpenStack Cinder default availability zone
	// +optional
	Zones []string `json:"zones,omitempty"`
}

RootVolume defines the storage for an instance.

type ServerGroupPolicy

type ServerGroupPolicy string

ServerGroupPolicy is the policy to be applied to an OpenStack Server Group.

+kubebuilder:validation:Enum="";affinity;soft-affinity;anti-affinity;soft-anti-affinity +optional

const (
	// SGPolicyUnset represents the default empty string for the ServerGroupPolicy field of the MachinePool.
	SGPolicyUnset ServerGroupPolicy = ""

	// SGPolicyAffinity represents the "affinity" ServerGroupPolicy field of the MachinePool.
	SGPolicyAffinity ServerGroupPolicy = "affinity"

	// SGPolicySoftAffinity represents the "soft-affinity" ServerGroupPolicy field of the MachinePool.
	SGPolicySoftAffinity ServerGroupPolicy = "soft-affinity"

	// SGPolicyAntiAffinity represents the "anti-affinity" ServerGroupPolicy field of the MachinePool.
	SGPolicyAntiAffinity ServerGroupPolicy = "anti-affinity"

	// SGPolicySoftAntiAffinity represents the "soft-anti-affinity" ServerGroupPolicy field of the MachinePool.
	SGPolicySoftAntiAffinity ServerGroupPolicy = "soft-anti-affinity"
)

func (ServerGroupPolicy) IsSet

func (p ServerGroupPolicy) IsSet() bool

IsSet returns true when p is not the empty string.

type SubnetFilter

type SubnetFilter struct {
	ID   string `json:"id,omitempty"`
	Name string `json:"name,omitempty"`
}

SubnetFilter defines a subnet by ID and/or name.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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