diff --git a/.gitignore b/.gitignore index 4d4232cea0..039565c86f 100644 --- a/.gitignore +++ b/.gitignore @@ -173,6 +173,7 @@ sshuttle.pid # Book docs/book/book/ +!docs/book/gen-crd-api-reference-docs/config.json # venv .venv diff --git a/Makefile b/Makefile index c174349cf3..1f4166b2ab 100644 --- a/Makefile +++ b/Makefile @@ -52,6 +52,7 @@ KUSTOMIZE := $(TOOLS_BIN_DIR)/kustomize MOCKGEN := $(TOOLS_BIN_DIR)/mockgen RELEASE_NOTES := $(TOOLS_BIN_DIR)/release-notes SETUP_ENVTEST := $(TOOLS_BIN_DIR)/setup-envtest +GEN_CRD_API_REFERENCE_DOCS := $(TOOLS_BIN_DIR)/gen-crd-api-reference-docs # Kubebuilder export KUBEBUILDER_ENVTEST_KUBERNETES_VERSION ?= 1.25.0 @@ -255,6 +256,7 @@ modules: ## Runs go mod to ensure proper vendoring. generate: ## Generate code $(MAKE) generate-go $(MAKE) generate-manifests + $(MAKE) generate-api-docs .PHONY: generate-go generate-go: $(MOCKGEN) @@ -283,6 +285,19 @@ generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc. output:rbac:dir=$(RBAC_ROOT) \ rbac:roleName=manager-role +.PHONY: generate-api-docs +generate-api-docs: $(GEN_CRD_API_REFERENCE_DOCS) ## Generate api documentation + $(GEN_CRD_API_REFERENCE_DOCS) \ + -api-dir=./api/v1alpha7 \ + -config=./docs/book/gen-crd-api-reference-docs/config.json \ + -template-dir=./docs/book/gen-crd-api-reference-docs/template \ + -out-file=./docs/book/src/api/v1alpha7/api.md + $(GEN_CRD_API_REFERENCE_DOCS) \ + -api-dir=./api/v1alpha6 \ + -config=./docs/book/gen-crd-api-reference-docs/config.json \ + -template-dir=./docs/book/gen-crd-api-reference-docs/template \ + -out-file=./docs/book/src/api/v1alpha6/api.md + ## -------------------------------------- ##@ Docker ## -------------------------------------- diff --git a/api/v1alpha6/doc.go b/api/v1alpha6/doc.go index 721815c0fe..2524645feb 100644 --- a/api/v1alpha6/doc.go +++ b/api/v1alpha6/doc.go @@ -14,5 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +// Package v1alpha6 contains API Schema definitions for the infrastructure v1alpha6 API group +// +kubebuilder:object:generate=true +// +groupName=infrastructure.cluster.x-k8s.io // +k8s:conversion-gen=sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha7 package v1alpha6 diff --git a/api/v1alpha6/groupversion_info.go b/api/v1alpha6/groupversion_info.go index ffc696467f..1b2ae50550 100644 --- a/api/v1alpha6/groupversion_info.go +++ b/api/v1alpha6/groupversion_info.go @@ -14,9 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// package v1alpha6 contains API Schema definitions for the infrastructure v1alpha6 API group -// +kubebuilder:object:generate=true -// +groupName=infrastructure.cluster.x-k8s.io package v1alpha6 import ( diff --git a/api/v1alpha6/openstackcluster_types.go b/api/v1alpha6/openstackcluster_types.go index 6b60c83b9e..06dcdb90d9 100644 --- a/api/v1alpha6/openstackcluster_types.go +++ b/api/v1alpha6/openstackcluster_types.go @@ -212,6 +212,8 @@ type OpenStackClusterStatus struct { FailureMessage *string `json:"failureMessage,omitempty"` } +// +genclient +// +genclient:Namespaced // +kubebuilder:object:root=true // +kubebuilder:resource:path=openstackclusters,scope=Namespaced,categories=cluster-api,shortName=osc // +kubebuilder:subresource:status diff --git a/api/v1alpha6/openstackclustertemplate_types.go b/api/v1alpha6/openstackclustertemplate_types.go index f79730240c..8c04b77f66 100644 --- a/api/v1alpha6/openstackclustertemplate_types.go +++ b/api/v1alpha6/openstackclustertemplate_types.go @@ -41,6 +41,8 @@ type OpenStackClusterTemplate struct { Spec OpenStackClusterTemplateSpec `json:"spec,omitempty"` } +// +genclient +// +genclient:Namespaced //+kubebuilder:object:root=true // OpenStackClusterTemplateList contains a list of OpenStackClusterTemplate. diff --git a/api/v1alpha6/openstackmachine_types.go b/api/v1alpha6/openstackmachine_types.go index c73505de3f..0b6c22ba17 100644 --- a/api/v1alpha6/openstackmachine_types.go +++ b/api/v1alpha6/openstackmachine_types.go @@ -136,6 +136,8 @@ type OpenStackMachineStatus struct { Conditions clusterv1.Conditions `json:"conditions,omitempty"` } +// +genclient +// +genclient:Namespaced // +kubebuilder:object:root=true // +kubebuilder:resource:path=openstackmachines,scope=Namespaced,categories=cluster-api,shortName=osm // +kubebuilder:subresource:status diff --git a/api/v1alpha6/openstackmachinetemplate_types.go b/api/v1alpha6/openstackmachinetemplate_types.go index aca2be9c70..81fcdc665d 100644 --- a/api/v1alpha6/openstackmachinetemplate_types.go +++ b/api/v1alpha6/openstackmachinetemplate_types.go @@ -25,6 +25,8 @@ type OpenStackMachineTemplateSpec struct { Template OpenStackMachineTemplateResource `json:"template"` } +// +genclient +// +genclient:Namespaced // +kubebuilder:object:root=true // +kubebuilder:resource:path=openstackmachinetemplates,scope=Namespaced,categories=cluster-api,shortName=osmt diff --git a/api/v1alpha7/doc.go b/api/v1alpha7/doc.go index 817c2b4119..fbd1ad52c8 100644 --- a/api/v1alpha7/doc.go +++ b/api/v1alpha7/doc.go @@ -14,4 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// Package v1alpha7 contains API Schema definitions for the infrastructure v1alpha7 API group +// +kubebuilder:object:generate=true +// +groupName=infrastructure.cluster.x-k8s.io package v1alpha7 diff --git a/api/v1alpha7/groupversion_info.go b/api/v1alpha7/groupversion_info.go index 019caf4f0f..e795112f64 100644 --- a/api/v1alpha7/groupversion_info.go +++ b/api/v1alpha7/groupversion_info.go @@ -14,9 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ -// package v1alpha7 contains API Schema definitions for the infrastructure v1alpha7 API group -// +kubebuilder:object:generate=true -// +groupName=infrastructure.cluster.x-k8s.io package v1alpha7 import ( diff --git a/api/v1alpha7/openstackcluster_types.go b/api/v1alpha7/openstackcluster_types.go index b4826685b0..c911171715 100644 --- a/api/v1alpha7/openstackcluster_types.go +++ b/api/v1alpha7/openstackcluster_types.go @@ -229,6 +229,8 @@ type OpenStackClusterStatus struct { FailureMessage *string `json:"failureMessage,omitempty"` } +// +genclient +// +genclient:Namespaced // +kubebuilder:object:root=true // +kubebuilder:resource:path=openstackclusters,scope=Namespaced,categories=cluster-api,shortName=osc // +kubebuilder:storageversion diff --git a/api/v1alpha7/openstackclustertemplate_types.go b/api/v1alpha7/openstackclustertemplate_types.go index c255284a77..4ee42ef579 100644 --- a/api/v1alpha7/openstackclustertemplate_types.go +++ b/api/v1alpha7/openstackclustertemplate_types.go @@ -30,9 +30,11 @@ type OpenStackClusterTemplateSpec struct { Template OpenStackClusterTemplateResource `json:"template"` } -//+kubebuilder:object:root=true +// +genclient +// +genclient:Namespaced +// +kubebuilder:object:root=true // +kubebuilder:storageversion -//+kubebuilder:resource:path=openstackclustertemplates,scope=Namespaced,categories=cluster-api,shortName=osct +// +kubebuilder:resource:path=openstackclustertemplates,scope=Namespaced,categories=cluster-api,shortName=osct // OpenStackClusterTemplate is the Schema for the openstackclustertemplates API. type OpenStackClusterTemplate struct { diff --git a/api/v1alpha7/openstackmachine_types.go b/api/v1alpha7/openstackmachine_types.go index 0ed7ca2bc0..83bf118a11 100644 --- a/api/v1alpha7/openstackmachine_types.go +++ b/api/v1alpha7/openstackmachine_types.go @@ -134,6 +134,8 @@ type OpenStackMachineStatus struct { Conditions clusterv1.Conditions `json:"conditions,omitempty"` } +// +genclient +// +genclient:Namespaced // +kubebuilder:object:root=true // +kubebuilder:storageversion // +kubebuilder:resource:path=openstackmachines,scope=Namespaced,categories=cluster-api,shortName=osm diff --git a/api/v1alpha7/openstackmachinetemplate_types.go b/api/v1alpha7/openstackmachinetemplate_types.go index 5202234ba2..b0b940420c 100644 --- a/api/v1alpha7/openstackmachinetemplate_types.go +++ b/api/v1alpha7/openstackmachinetemplate_types.go @@ -37,6 +37,8 @@ type OpenStackMachineTemplate struct { Spec OpenStackMachineTemplateSpec `json:"spec,omitempty"` } +// +genclient +// +genclient:Namespaced // +kubebuilder:object:root=true // OpenStackMachineTemplateList contains a list of OpenStackMachineTemplate. diff --git a/docs/book/gen-crd-api-reference-docs/config.json b/docs/book/gen-crd-api-reference-docs/config.json new file mode 100644 index 0000000000..5c4e964917 --- /dev/null +++ b/docs/book/gen-crd-api-reference-docs/config.json @@ -0,0 +1,36 @@ +{ + "hideMemberFields": [ + "TypeMeta" + ], + "hideTypePatterns": [ + "ParseError$", + "List$" + ], + "externalPackages": [ + { + "typeMatchPrefix": "^k8s\\.io/apimachinery/pkg/apis/meta/v1\\.Duration$", + "docsURLTemplate": "https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration" + }, + { + "typeMatchPrefix": "^k8s\\.io/apimachinery/pkg/apis/meta/v1\\.Condition$", + "docsURLTemplate": "https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Condition" + }, + { + "typeMatchPrefix": "^sigs\\.k8s\\.io/cluster-api/api/v1beta1", + "docsURLTemplate": "https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1" + }, + { + "typeMatchPrefix": "^sigs\\.k8s\\.io/cluster-api/api/v1beta1", + "docsURLTemplate": "https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1" + }, + { + "typeMatchPrefix": "^sigs\\.k8s\\.io/cluster-api/errors", + "docsURLTemplate": "https://pkg.go.dev/sigs.k8s.io/cluster-api@v1.5.1/errors#{{.TypeIdentifier}}" + } + ], + "typeDisplayNamePrefixOverrides": { + "k8s.io/api/": "Kubernetes ", + "k8s.io/apimachinery/pkg/apis/": "Kubernetes " + }, + "markdownDisabled": false + } \ No newline at end of file diff --git a/docs/book/gen-crd-api-reference-docs/template/members.tpl b/docs/book/gen-crd-api-reference-docs/template/members.tpl new file mode 100644 index 0000000000..448ce2fb04 --- /dev/null +++ b/docs/book/gen-crd-api-reference-docs/template/members.tpl @@ -0,0 +1,48 @@ +{{ define "members" }} + +{{ range .Members }} +{{ if not (hiddenMember .)}} + + + {{ fieldName . }}
+ + {{ if linkForType .Type }} + + {{ typeDisplayName .Type }} + + {{ else }} + {{ typeDisplayName .Type }} + {{ end }} + + + + {{ if fieldEmbedded . }} +

+ (Members of {{ fieldName . }} are embedded into this type.) +

+ {{ end}} + + {{ if isOptionalMember .}} + (Optional) + {{ end }} + + {{ safe (renderComments .CommentLines) }} + + {{ if and (eq (.Type.Name.Name) "ObjectMeta") }} + Refer to the Kubernetes API documentation for the fields of the + metadata field. + {{ end }} + + {{ if or (eq (fieldName .) "spec") }} +
+
+ + {{ template "members" .Type }} +
+ {{ end }} + + +{{ end }} +{{ end }} + +{{ end }} \ No newline at end of file diff --git a/docs/book/gen-crd-api-reference-docs/template/pkg.tpl b/docs/book/gen-crd-api-reference-docs/template/pkg.tpl new file mode 100644 index 0000000000..e9a0697911 --- /dev/null +++ b/docs/book/gen-crd-api-reference-docs/template/pkg.tpl @@ -0,0 +1,37 @@ +{{ define "packages" }} + +{{ range .packages }} +

+ {{- packageDisplayName . -}} +

+ + {{ with (index .GoPackages 0 )}} + {{ with .DocComments }} +

+ {{ safe (renderComments .) }} +

+ {{ end }} + {{ end }} + + Resource Types: + + + {{ range (visibleTypes (sortedTypes .Types))}} + {{ template "type" . }} + {{ end }} +
+{{ end }} + +

+ Generated with gen-crd-api-reference-docs. +

+ +{{ end }} \ No newline at end of file diff --git a/docs/book/gen-crd-api-reference-docs/template/type.tpl b/docs/book/gen-crd-api-reference-docs/template/type.tpl new file mode 100644 index 0000000000..7ee5af5ab1 --- /dev/null +++ b/docs/book/gen-crd-api-reference-docs/template/type.tpl @@ -0,0 +1,81 @@ +{{ define "type" }} + +

+ {{- .Name.Name }} + {{ if eq .Kind "Alias" }}({{.Underlying}} alias)

{{ end -}} +

+{{ with (typeReferences .) }} +

+ (Appears on: + {{- $prev := "" -}} + {{- range . -}} + {{- if $prev -}}, {{ end -}} + {{ $prev = . }} + {{ typeDisplayName . }} + {{- end -}} + ) +

+{{ end }} + +

+ {{ safe (renderComments .CommentLines) }} +

+ +{{ with (constantsOfType .) }} + + + + + + + + + {{- range . -}} + + {{- /* + renderComments implicitly creates a

element, so we + add one to the display name as well to make the contents + of the two cells align evenly. + */ -}} +

+ + + {{- end -}} + +
ValueDescription

{{ typeDisplayName . }}

{{ safe (renderComments .CommentLines) }}
+{{ end }} + +{{ if .Members }} + + + + + + + + + {{ if isExportedType . }} + + + + + + + + + {{ end }} + {{ template "members" .}} + +
FieldDescription
+ apiVersion
+ string
+ + {{apiGroup .}} + +
+ kind
+ string +
{{.Name.Name}}
+{{ end }} + +{{ end }} \ No newline at end of file diff --git a/docs/book/src/SUMMARY.md b/docs/book/src/SUMMARY.md index 0d309b83fc..dbff6f6935 100644 --- a/docs/book/src/SUMMARY.md +++ b/docs/book/src/SUMMARY.md @@ -11,5 +11,8 @@ - [v1alpha4 to v1alpha5](./topics/crd-changes/v1alpha4-to-v1alpha5.md) - [v1alpha5 to v1alpha6](./topics/crd-changes/v1alpha5-to-v1alpha6.md) - [v1alpha6 to v1alpha7](./topics/crd-changes/v1alpha6-to-v1alpha7.md) +- [API reference](./api/index.md) + - [v1alpha6](./api/v1alpha6/api.md) + - [v1alpha7](./api/v1alpha7/api.md) - [Development](./development/development.md) - [Hacking CI](./development/ci.md) diff --git a/docs/book/src/api/index.md b/docs/book/src/api/index.md new file mode 100644 index 0000000000..4ef12691eb --- /dev/null +++ b/docs/book/src/api/index.md @@ -0,0 +1 @@ +# API reference \ No newline at end of file diff --git a/docs/book/src/api/v1alpha6/api.md b/docs/book/src/api/v1alpha6/api.md new file mode 100644 index 0000000000..56eec3cdf9 --- /dev/null +++ b/docs/book/src/api/v1alpha6/api.md @@ -0,0 +1,4195 @@ +

infrastructure.cluster.x-k8s.io/v1alpha6

+

+

Package v1alpha6 contains API Schema definitions for the infrastructure v1alpha6 API group

+

+Resource Types: + +

OpenStackCluster +

+

+

OpenStackCluster is the Schema for the openstackclusters API.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+apiVersion
+string
+ +infrastructure.cluster.x-k8s.io/v1alpha6 + +
+kind
+string +
OpenStackCluster
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackClusterSpec + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+nodeCidr
+ +string + +
+

NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a +network, a subnet with NodeCIDR, and a router connected to this subnet. +If you leave this empty, no network will be created.

+
+network
+ + +NetworkFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing network.

+
+subnet
+ + +SubnetFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing subnet.

+
+dnsNameservers
+ +[]string + +
+

DNSNameservers is the list of nameservers for OpenStack Subnet being created. +Set this value when you need create a new network/subnet while the access +through DNS is required.

+
+externalRouterIPs
+ + +[]ExternalRouterIPParam + + +
+

ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.

+
+externalNetworkId
+ +string + +
+(Optional) +

ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.

+
+apiServerLoadBalancer
+ + +APIServerLoadBalancer + + +
+(Optional) +

APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting enabled: true.

+
+disableAPIServerFloatingIP
+ +bool + +
+(Optional) +

DisableAPIServerFloatingIP determines whether or not to attempt to attach a floating +IP to the API server. This allows for the creation of clusters when attaching a floating +IP to the API server (and hence, in many cases, exposing the API server to the internet) +is not possible or desirable, e.g. if using a shared VLAN for communication between +management and workload clusters or when the management cluster is inside the +project network. +This option requires that the API server use a VIP on the cluster network so that the +underlying machines can change without changing ControlPlaneEndpoint.Host. +When using a managed load balancer, this VIP will be managed automatically. +If not using a managed load balancer, cluster configuration will fail without additional +configuration to manage the VIP on the control plane machines, which falls outside of +the scope of this controller.

+
+apiServerFloatingIP
+ +string + +
+

APIServerFloatingIP is the floatingIP which will be associated with the API server. +The floatingIP will be created if it does not already exist. +If not specified, a new floatingIP is allocated. +This field is not used if DisableAPIServerFloatingIP is set to true.

+
+apiServerFixedIP
+ +string + +
+

APIServerFixedIP is the fixed IP which will be associated with the API server. +In the case where the API server has a floating IP but not a managed load balancer, +this field is not used. +If a managed load balancer is used and this field is not specified, a fixed IP will +be dynamically allocated for the load balancer. +If a managed load balancer is not used AND the API server floating IP is disabled, +this field MUST be specified and should correspond to a pre-allocated port that +holds the fixed IP to be used as a VIP.

+
+apiServerPort
+ +int + +
+

APIServerPort is the port on which the listener on the APIServer +will be created

+
+managedSecurityGroups
+ +bool + +
+(Optional) +

ManagedSecurityGroups determines whether OpenStack security groups for the cluster +will be managed by the OpenStack provider or whether pre-existing security groups will +be specified as part of the configuration. +By default, the managed security groups have rules that allow the Kubelet, etcd, the +Kubernetes API server and the Calico CNI plugin to function correctly.

+
+allowAllInClusterTraffic
+ +bool + +
+(Optional) +

AllowAllInClusterTraffic is only used when managed security groups are in use. +If set to true, the rules for the managed security groups are configured so that all +ingress and egress between cluster nodes is permitted, allowing CNIs other than +Calico to be used.

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups

+
+tags
+ +[]string + +
+

Tags for all resources in cluster

+
+controlPlaneEndpoint
+ + +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint + + +
+(Optional) +

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+controlPlaneAvailabilityZones
+ +[]string + +
+

ControlPlaneAvailabilityZones is the az to deploy control plane to

+
+controlPlaneOmitAvailabilityZone
+ +bool + +
+

Indicates whether to omit the az for control plane nodes, allowing the Nova scheduler +to make a decision on which az to use based on other scheduling constraints

+
+bastion
+ + +Bastion + + +
+(Optional) +

Bastion is the OpenStack instance to login the nodes

+

As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set enabled: false to +make changes.

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+status
+ + +OpenStackClusterStatus + + +
+
+

OpenStackMachine +

+

+

OpenStackMachine is the Schema for the openstackmachines API.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+apiVersion
+string
+ +infrastructure.cluster.x-k8s.io/v1alpha6 + +
+kind
+string +
OpenStackMachine
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackMachineSpec + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+providerID
+ +string + +
+

ProviderID is the unique identifier as specified by the cloud provider.

+
+instanceID
+ +string + +
+

InstanceID is the OpenStack instance ID for this machine.

+
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+flavor
+ +string + +
+

The flavor reference for the flavor for your server instance.

+
+image
+ +string + +
+

The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.

+
+imageUUID
+ +string + +
+

The uuid of the image to use for your server instance. +if it’s empty, Image name will be used

+
+sshKeyName
+ +string + +
+

The ssh key to inject in the instance

+
+networks
+ + +[]NetworkParam + + +
+

A networks object. Required parameter when there are multiple networks defined for the tenant. +When you do not specify both networks and ports parameters, the server attaches to the only network created for the current tenant.

+
+ports
+ + +[]PortOpts + + +
+

Ports to be attached to the server instance. They are created if a port with the given name does not already exist. +When you do not specify both networks and ports parameters, the server attaches to the only network created for the current tenant.

+
+subnet
+ +string + +
+

UUID, IP address of a port from this subnet will be marked as AccessIPv4 on the created compute instance

+
+floatingIP
+ +string + +
+

The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.

+
+securityGroups
+ + +[]SecurityGroupParam + + +
+

The names of the security groups to assign to the instance

+
+trunk
+ +bool + +
+

Whether the server instance is created on a trunk port or not.

+
+tags
+ +[]string + +
+

Machine tags +Requires Nova api 2.52 minimum!

+
+serverMetadata
+ +map[string]string + +
+

Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.

+
+configDrive
+ +bool + +
+

Config Drive support

+
+rootVolume
+ + +RootVolume + + +
+

The volume metadata to boot from

+
+serverGroupID
+ +string + +
+

The server group to assign the machine to

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+status
+ + +OpenStackMachineStatus + + +
+
+

OpenStackMachineTemplate +

+

+

OpenStackMachineTemplate is the Schema for the openstackmachinetemplates API.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+apiVersion
+string
+ +infrastructure.cluster.x-k8s.io/v1alpha6 + +
+kind
+string +
OpenStackMachineTemplate
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackMachineTemplateSpec + + +
+
+
+ + + + + +
+template
+ + +OpenStackMachineTemplateResource + + +
+
+
+

APIServerLoadBalancer +

+

+(Appears on: +OpenStackClusterSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+enabled
+ +bool + +
+

Enabled defines whether a load balancer should be created.

+
+additionalPorts
+ +[]int + +
+

AdditionalPorts adds additional tcp ports to the load balancer.

+
+allowedCidrs
+ +[]string + +
+

AllowedCIDRs restrict access to all API-Server listeners to the given address CIDRs.

+
+provider
+ +string + +
+

Octavia Provider Used to create load balancer

+
+

AddressPair +

+

+(Appears on: +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+ipAddress
+ +string + +
+
+macAddress
+ +string + +
+
+

Bastion +

+

+(Appears on: +OpenStackClusterSpec) +

+

+

Bastion represents basic information about the bastion node.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+enabled
+ +bool + +
+(Optional) +
+instance
+ + +OpenStackMachineSpec + + +
+

Instance for the bastion itself

+
+availabilityZone
+ +string + +
+(Optional) +
+

ExternalRouterIPParam +

+

+(Appears on: +OpenStackClusterSpec) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+fixedIP
+ +string + +
+

The FixedIP in the corresponding subnet

+
+subnet
+ + +SubnetParam + + +
+

The subnet in which the FixedIP is used for the Gateway of this router

+
+

FixedIP +

+

+(Appears on: +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+subnet
+ + +SubnetFilter + + +
+

Subnet is an openstack subnet query that will return the id of a subnet to create +the fixed IP of a port in. This query must not return more than one subnet.

+
+ipAddress
+ +string + +
+
+

Instance +

+

+(Appears on: +OpenStackClusterStatus) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+id
+ +string + +
+
+name
+ +string + +
+
+trunk
+ +bool + +
+
+failureDomain
+ +string + +
+
+securigyGroups
+ +[]string + +
+
+networks
+ + +[]Network + + +
+
+subnet
+ +string + +
+
+tags
+ +[]string + +
+
+image
+ +string + +
+
+imageUUID
+ +string + +
+
+flavor
+ +string + +
+
+sshKeyName
+ +string + +
+
+userData
+ +string + +
+
+metadata
+ +map[string]string + +
+
+configDrive
+ +bool + +
+
+rootVolume
+ + +RootVolume + + +
+
+serverGroupID
+ +string + +
+
+state
+ + +InstanceState + + +
+
+ip
+ +string + +
+
+floatingIP
+ +string + +
+
+

InstanceState +(string alias)

+

+(Appears on: +Instance, +OpenStackMachineStatus) +

+

+

InstanceState describes the state of an OpenStack instance.

+

+

LoadBalancer +

+

+(Appears on: +Network) +

+

+

LoadBalancer represents basic information about the associated OpenStack LoadBalancer.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+ip
+ +string + +
+
+internalIP
+ +string + +
+
+allowedCIDRs
+ +[]string + +
+(Optional) +
+tags
+ +[]string + +
+(Optional) +
+

Network +

+

+(Appears on: +Instance, +OpenStackClusterStatus) +

+

+

Network represents basic information about an OpenStack Neutron Network associated with an instance’s port.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+tags
+ +[]string + +
+(Optional) +
+subnet
+ + +Subnet + + +
+
+port
+ + +PortOpts + + +
+
+router
+ + +Router + + +
+
+apiServerLoadBalancer
+ + +LoadBalancer + + +
+

Be careful when using APIServerLoadBalancer, because this field is optional and therefore not +set in all cases

+
+

NetworkFilter +

+

+(Appears on: +NetworkParam, +OpenStackClusterSpec, +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+description
+ +string + +
+
+projectId
+ +string + +
+
+id
+ +string + +
+
+tags
+ +string + +
+
+tagsAny
+ +string + +
+
+notTags
+ +string + +
+
+notTagsAny
+ +string + +
+
+

NetworkParam +

+

+(Appears on: +OpenStackMachineSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+uuid
+ +string + +
+

Optional UUID of the network. +If specified this will not be validated prior to server creation. +Required if Subnets specifies a subnet by UUID.

+
+fixedIP
+ +string + +
+

A fixed IPv4 address for the NIC.

+
+filter
+ + +NetworkFilter + + +
+

Filters for optional network query

+
+subnets
+ + +[]SubnetParam + + +
+

Subnet within a network to use

+
+

OpenStackClusterSpec +

+

+(Appears on: +OpenStackCluster, +OpenStackClusterTemplateResource) +

+

+

OpenStackClusterSpec defines the desired state of OpenStackCluster.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+nodeCidr
+ +string + +
+

NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a +network, a subnet with NodeCIDR, and a router connected to this subnet. +If you leave this empty, no network will be created.

+
+network
+ + +NetworkFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing network.

+
+subnet
+ + +SubnetFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing subnet.

+
+dnsNameservers
+ +[]string + +
+

DNSNameservers is the list of nameservers for OpenStack Subnet being created. +Set this value when you need create a new network/subnet while the access +through DNS is required.

+
+externalRouterIPs
+ + +[]ExternalRouterIPParam + + +
+

ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.

+
+externalNetworkId
+ +string + +
+(Optional) +

ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.

+
+apiServerLoadBalancer
+ + +APIServerLoadBalancer + + +
+(Optional) +

APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting enabled: true.

+
+disableAPIServerFloatingIP
+ +bool + +
+(Optional) +

DisableAPIServerFloatingIP determines whether or not to attempt to attach a floating +IP to the API server. This allows for the creation of clusters when attaching a floating +IP to the API server (and hence, in many cases, exposing the API server to the internet) +is not possible or desirable, e.g. if using a shared VLAN for communication between +management and workload clusters or when the management cluster is inside the +project network. +This option requires that the API server use a VIP on the cluster network so that the +underlying machines can change without changing ControlPlaneEndpoint.Host. +When using a managed load balancer, this VIP will be managed automatically. +If not using a managed load balancer, cluster configuration will fail without additional +configuration to manage the VIP on the control plane machines, which falls outside of +the scope of this controller.

+
+apiServerFloatingIP
+ +string + +
+

APIServerFloatingIP is the floatingIP which will be associated with the API server. +The floatingIP will be created if it does not already exist. +If not specified, a new floatingIP is allocated. +This field is not used if DisableAPIServerFloatingIP is set to true.

+
+apiServerFixedIP
+ +string + +
+

APIServerFixedIP is the fixed IP which will be associated with the API server. +In the case where the API server has a floating IP but not a managed load balancer, +this field is not used. +If a managed load balancer is used and this field is not specified, a fixed IP will +be dynamically allocated for the load balancer. +If a managed load balancer is not used AND the API server floating IP is disabled, +this field MUST be specified and should correspond to a pre-allocated port that +holds the fixed IP to be used as a VIP.

+
+apiServerPort
+ +int + +
+

APIServerPort is the port on which the listener on the APIServer +will be created

+
+managedSecurityGroups
+ +bool + +
+(Optional) +

ManagedSecurityGroups determines whether OpenStack security groups for the cluster +will be managed by the OpenStack provider or whether pre-existing security groups will +be specified as part of the configuration. +By default, the managed security groups have rules that allow the Kubelet, etcd, the +Kubernetes API server and the Calico CNI plugin to function correctly.

+
+allowAllInClusterTraffic
+ +bool + +
+(Optional) +

AllowAllInClusterTraffic is only used when managed security groups are in use. +If set to true, the rules for the managed security groups are configured so that all +ingress and egress between cluster nodes is permitted, allowing CNIs other than +Calico to be used.

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups

+
+tags
+ +[]string + +
+

Tags for all resources in cluster

+
+controlPlaneEndpoint
+ + +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint + + +
+(Optional) +

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+controlPlaneAvailabilityZones
+ +[]string + +
+

ControlPlaneAvailabilityZones is the az to deploy control plane to

+
+controlPlaneOmitAvailabilityZone
+ +bool + +
+

Indicates whether to omit the az for control plane nodes, allowing the Nova scheduler +to make a decision on which az to use based on other scheduling constraints

+
+bastion
+ + +Bastion + + +
+(Optional) +

Bastion is the OpenStack instance to login the nodes

+

As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set enabled: false to +make changes.

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+

OpenStackClusterStatus +

+

+(Appears on: +OpenStackCluster) +

+

+

OpenStackClusterStatus defines the observed state of OpenStackCluster.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+ready
+ +bool + +
+
+network
+ + +Network + + +
+

Network contains all information about the created OpenStack Network. +It includes Subnets and Router.

+
+externalNetwork
+ + +Network + + +
+

External Network contains information about the created OpenStack external network.

+
+failureDomains
+ + +sigs.k8s.io/cluster-api/api/v1beta1.FailureDomains + + +
+

FailureDomains represent OpenStack availability zones

+
+controlPlaneSecurityGroup
+ + +SecurityGroup + + +
+

ControlPlaneSecurityGroups contains all the information about the OpenStack +Security Group that needs to be applied to control plane nodes. +TODO: Maybe instead of two properties, we add a property to the group?

+
+workerSecurityGroup
+ + +SecurityGroup + + +
+

WorkerSecurityGroup contains all the information about the OpenStack Security +Group that needs to be applied to worker nodes.

+
+bastionSecurityGroup
+ + +SecurityGroup + + +
+
+bastion
+ + +Instance + + +
+
+failureReason
+ + +sigs.k8s.io/cluster-api/errors.ClusterStatusError + + +
+(Optional) +

FailureReason will be set in the event that there is a terminal problem +reconciling the OpenStackCluster and will contain a succinct value suitable +for machine interpretation.

+

This field should not be set for transitive errors that a controller +faces that are expected to be fixed automatically over +time (like service outages), but instead indicate that something is +fundamentally wrong with the OpenStackCluster’s spec or the configuration of +the controller, and that manual intervention is required. Examples +of terminal errors would be invalid combinations of settings in the +spec, values that are unsupported by the controller, or the +responsible controller itself being critically misconfigured.

+

Any transient errors that occur during the reconciliation of +OpenStackClusters can be added as events to the OpenStackCluster object +and/or logged in the controller’s output.

+
+failureMessage
+ +string + +
+(Optional) +

FailureMessage will be set in the event that there is a terminal problem +reconciling the OpenStackCluster and will contain a more verbose string suitable +for logging and human consumption.

+

This field should not be set for transitive errors that a controller +faces that are expected to be fixed automatically over +time (like service outages), but instead indicate that something is +fundamentally wrong with the OpenStackCluster’s spec or the configuration of +the controller, and that manual intervention is required. Examples +of terminal errors would be invalid combinations of settings in the +spec, values that are unsupported by the controller, or the +responsible controller itself being critically misconfigured.

+

Any transient errors that occur during the reconciliation of +OpenStackClusters can be added as events to the OpenStackCluster object +and/or logged in the controller’s output.

+
+

OpenStackClusterTemplate +

+

+

OpenStackClusterTemplate is the Schema for the openstackclustertemplates API.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackClusterTemplateSpec + + +
+
+
+ + + + + +
+template
+ + +OpenStackClusterTemplateResource + + +
+
+
+

OpenStackClusterTemplateResource +

+

+(Appears on: +OpenStackClusterTemplateSpec) +

+

+

OpenStackClusterTemplateResource describes the data needed to create a OpenStackCluster from a template.

+

+ + + + + + + + + + + + + +
FieldDescription
+spec
+ + +OpenStackClusterSpec + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+nodeCidr
+ +string + +
+

NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a +network, a subnet with NodeCIDR, and a router connected to this subnet. +If you leave this empty, no network will be created.

+
+network
+ + +NetworkFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing network.

+
+subnet
+ + +SubnetFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing subnet.

+
+dnsNameservers
+ +[]string + +
+

DNSNameservers is the list of nameservers for OpenStack Subnet being created. +Set this value when you need create a new network/subnet while the access +through DNS is required.

+
+externalRouterIPs
+ + +[]ExternalRouterIPParam + + +
+

ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.

+
+externalNetworkId
+ +string + +
+(Optional) +

ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.

+
+apiServerLoadBalancer
+ + +APIServerLoadBalancer + + +
+(Optional) +

APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting enabled: true.

+
+disableAPIServerFloatingIP
+ +bool + +
+(Optional) +

DisableAPIServerFloatingIP determines whether or not to attempt to attach a floating +IP to the API server. This allows for the creation of clusters when attaching a floating +IP to the API server (and hence, in many cases, exposing the API server to the internet) +is not possible or desirable, e.g. if using a shared VLAN for communication between +management and workload clusters or when the management cluster is inside the +project network. +This option requires that the API server use a VIP on the cluster network so that the +underlying machines can change without changing ControlPlaneEndpoint.Host. +When using a managed load balancer, this VIP will be managed automatically. +If not using a managed load balancer, cluster configuration will fail without additional +configuration to manage the VIP on the control plane machines, which falls outside of +the scope of this controller.

+
+apiServerFloatingIP
+ +string + +
+

APIServerFloatingIP is the floatingIP which will be associated with the API server. +The floatingIP will be created if it does not already exist. +If not specified, a new floatingIP is allocated. +This field is not used if DisableAPIServerFloatingIP is set to true.

+
+apiServerFixedIP
+ +string + +
+

APIServerFixedIP is the fixed IP which will be associated with the API server. +In the case where the API server has a floating IP but not a managed load balancer, +this field is not used. +If a managed load balancer is used and this field is not specified, a fixed IP will +be dynamically allocated for the load balancer. +If a managed load balancer is not used AND the API server floating IP is disabled, +this field MUST be specified and should correspond to a pre-allocated port that +holds the fixed IP to be used as a VIP.

+
+apiServerPort
+ +int + +
+

APIServerPort is the port on which the listener on the APIServer +will be created

+
+managedSecurityGroups
+ +bool + +
+(Optional) +

ManagedSecurityGroups determines whether OpenStack security groups for the cluster +will be managed by the OpenStack provider or whether pre-existing security groups will +be specified as part of the configuration. +By default, the managed security groups have rules that allow the Kubelet, etcd, the +Kubernetes API server and the Calico CNI plugin to function correctly.

+
+allowAllInClusterTraffic
+ +bool + +
+(Optional) +

AllowAllInClusterTraffic is only used when managed security groups are in use. +If set to true, the rules for the managed security groups are configured so that all +ingress and egress between cluster nodes is permitted, allowing CNIs other than +Calico to be used.

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups

+
+tags
+ +[]string + +
+

Tags for all resources in cluster

+
+controlPlaneEndpoint
+ + +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint + + +
+(Optional) +

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+controlPlaneAvailabilityZones
+ +[]string + +
+

ControlPlaneAvailabilityZones is the az to deploy control plane to

+
+controlPlaneOmitAvailabilityZone
+ +bool + +
+

Indicates whether to omit the az for control plane nodes, allowing the Nova scheduler +to make a decision on which az to use based on other scheduling constraints

+
+bastion
+ + +Bastion + + +
+(Optional) +

Bastion is the OpenStack instance to login the nodes

+

As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set enabled: false to +make changes.

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+

OpenStackClusterTemplateSpec +

+

+(Appears on: +OpenStackClusterTemplate) +

+

+

OpenStackClusterTemplateSpec defines the desired state of OpenStackClusterTemplate.

+

+ + + + + + + + + + + + + +
FieldDescription
+template
+ + +OpenStackClusterTemplateResource + + +
+
+

OpenStackIdentityReference +

+

+(Appears on: +OpenStackClusterSpec, +OpenStackMachineSpec) +

+

+

OpenStackIdentityReference is a reference to an infrastructure +provider identity to be used to provision cluster resources.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+kind
+ +string + +
+

Kind of the identity. Must be supported by the infrastructure +provider and may be either cluster or namespace-scoped.

+
+name
+ +string + +
+

Name of the infrastructure identity to be used. +Must be either a cluster-scoped resource, or namespaced-scoped +resource the same namespace as the resource(s) being provisioned.

+
+

OpenStackMachineSpec +

+

+(Appears on: +OpenStackMachine, +Bastion, +OpenStackMachineTemplateResource) +

+

+

OpenStackMachineSpec defines the desired state of OpenStackMachine.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+providerID
+ +string + +
+

ProviderID is the unique identifier as specified by the cloud provider.

+
+instanceID
+ +string + +
+

InstanceID is the OpenStack instance ID for this machine.

+
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+flavor
+ +string + +
+

The flavor reference for the flavor for your server instance.

+
+image
+ +string + +
+

The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.

+
+imageUUID
+ +string + +
+

The uuid of the image to use for your server instance. +if it’s empty, Image name will be used

+
+sshKeyName
+ +string + +
+

The ssh key to inject in the instance

+
+networks
+ + +[]NetworkParam + + +
+

A networks object. Required parameter when there are multiple networks defined for the tenant. +When you do not specify both networks and ports parameters, the server attaches to the only network created for the current tenant.

+
+ports
+ + +[]PortOpts + + +
+

Ports to be attached to the server instance. They are created if a port with the given name does not already exist. +When you do not specify both networks and ports parameters, the server attaches to the only network created for the current tenant.

+
+subnet
+ +string + +
+

UUID, IP address of a port from this subnet will be marked as AccessIPv4 on the created compute instance

+
+floatingIP
+ +string + +
+

The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.

+
+securityGroups
+ + +[]SecurityGroupParam + + +
+

The names of the security groups to assign to the instance

+
+trunk
+ +bool + +
+

Whether the server instance is created on a trunk port or not.

+
+tags
+ +[]string + +
+

Machine tags +Requires Nova api 2.52 minimum!

+
+serverMetadata
+ +map[string]string + +
+

Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.

+
+configDrive
+ +bool + +
+

Config Drive support

+
+rootVolume
+ + +RootVolume + + +
+

The volume metadata to boot from

+
+serverGroupID
+ +string + +
+

The server group to assign the machine to

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+

OpenStackMachineStatus +

+

+(Appears on: +OpenStackMachine) +

+

+

OpenStackMachineStatus defines the observed state of OpenStackMachine.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+ready
+ +bool + +
+(Optional) +

Ready is true when the provider resource is ready.

+
+addresses
+ +[]Kubernetes core/v1.NodeAddress + +
+

Addresses contains the OpenStack instance associated addresses.

+
+instanceState
+ + +InstanceState + + +
+(Optional) +

InstanceState is the state of the OpenStack instance for this machine.

+
+failureReason
+ + +sigs.k8s.io/cluster-api/errors.MachineStatusError + + +
+
+failureMessage
+ +string + +
+(Optional) +

FailureMessage will be set in the event that there is a terminal problem +reconciling the Machine and will contain a more verbose string suitable +for logging and human consumption.

+

This field should not be set for transitive errors that a controller +faces that are expected to be fixed automatically over +time (like service outages), but instead indicate that something is +fundamentally wrong with the Machine’s spec or the configuration of +the controller, and that manual intervention is required. Examples +of terminal errors would be invalid combinations of settings in the +spec, values that are unsupported by the controller, or the +responsible controller itself being critically misconfigured.

+

Any transient errors that occur during the reconciliation of Machines +can be added as events to the Machine object and/or logged in the +controller’s output.

+
+conditions
+ + +sigs.k8s.io/cluster-api/api/v1beta1.Conditions + + +
+
+

OpenStackMachineTemplateResource +

+

+(Appears on: +OpenStackMachineTemplateSpec) +

+

+

OpenStackMachineTemplateResource describes the data needed to create a OpenStackMachine from a template.

+

+ + + + + + + + + + + + + +
FieldDescription
+spec
+ + +OpenStackMachineSpec + + +
+

Spec is the specification of the desired behavior of the machine.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+providerID
+ +string + +
+

ProviderID is the unique identifier as specified by the cloud provider.

+
+instanceID
+ +string + +
+

InstanceID is the OpenStack instance ID for this machine.

+
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+flavor
+ +string + +
+

The flavor reference for the flavor for your server instance.

+
+image
+ +string + +
+

The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.

+
+imageUUID
+ +string + +
+

The uuid of the image to use for your server instance. +if it’s empty, Image name will be used

+
+sshKeyName
+ +string + +
+

The ssh key to inject in the instance

+
+networks
+ + +[]NetworkParam + + +
+

A networks object. Required parameter when there are multiple networks defined for the tenant. +When you do not specify both networks and ports parameters, the server attaches to the only network created for the current tenant.

+
+ports
+ + +[]PortOpts + + +
+

Ports to be attached to the server instance. They are created if a port with the given name does not already exist. +When you do not specify both networks and ports parameters, the server attaches to the only network created for the current tenant.

+
+subnet
+ +string + +
+

UUID, IP address of a port from this subnet will be marked as AccessIPv4 on the created compute instance

+
+floatingIP
+ +string + +
+

The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.

+
+securityGroups
+ + +[]SecurityGroupParam + + +
+

The names of the security groups to assign to the instance

+
+trunk
+ +bool + +
+

Whether the server instance is created on a trunk port or not.

+
+tags
+ +[]string + +
+

Machine tags +Requires Nova api 2.52 minimum!

+
+serverMetadata
+ +map[string]string + +
+

Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.

+
+configDrive
+ +bool + +
+

Config Drive support

+
+rootVolume
+ + +RootVolume + + +
+

The volume metadata to boot from

+
+serverGroupID
+ +string + +
+

The server group to assign the machine to

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+

OpenStackMachineTemplateSpec +

+

+(Appears on: +OpenStackMachineTemplate) +

+

+

OpenStackMachineTemplateSpec defines the desired state of OpenStackMachineTemplate.

+

+ + + + + + + + + + + + + +
FieldDescription
+template
+ + +OpenStackMachineTemplateResource + + +
+
+

PortOpts +

+

+(Appears on: +Network, +OpenStackMachineSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+network
+ + +NetworkFilter + + +
+

Network is a query for an openstack network that the port will be created or discovered on. +This will fail if the query returns more than one network.

+
+nameSuffix
+ +string + +
+

Used to make the name of the port unique. If unspecified, instead the 0-based index of the port in the list is used.

+
+description
+ +string + +
+
+adminStateUp
+ +bool + +
+
+macAddress
+ +string + +
+
+fixedIPs
+ + +[]FixedIP + + +
+

Specify pairs of subnet and/or IP address. These should be subnets of the network with the given NetworkID.

+
+tenantId
+ +string + +
+
+projectId
+ +string + +
+
+securityGroups
+ +[]string + +
+

The uuids of the security groups to assign to the instance

+
+securityGroupFilters
+ + +[]SecurityGroupParam + + +
+

The names, uuids, filters or any combination these of the security groups to assign to the instance

+
+allowedAddressPairs
+ + +[]AddressPair + + +
+
+trunk
+ +bool + +
+

Enables and disables trunk at port level. If not provided, openStackMachine.Spec.Trunk is inherited.

+
+hostId
+ +string + +
+

The ID of the host where the port is allocated

+
+vnicType
+ +string + +
+

The virtual network interface card (vNIC) type that is bound to the neutron port.

+
+profile
+ +map[string]string + +
+

A dictionary that enables the application running on the specified +host to pass and receive virtual network interface (VIF) port-specific +information to the plug-in.

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity enables or disables the port security when set. +When not set, it takes the value of the corresponding field at the network level.

+
+tags
+ +[]string + +
+

Tags applied to the port (and corresponding trunk, if a trunk is configured.) +These tags are applied in addition to the instance’s tags, which will also be applied to the port.

+
+valueSpecs
+ + +[]ValueSpec + + +
+(Optional) +

Value specs are extra parameters to include in the API request with OpenStack. +This is an extension point for the API, so what they do and if they are supported, +depends on the specific OpenStack implementation.

+
+

RootVolume +

+

+(Appears on: +Instance, +OpenStackMachineSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+diskSize
+ +int + +
+
+volumeType
+ +string + +
+
+availabilityZone
+ +string + +
+
+

Router +

+

+(Appears on: +Network) +

+

+

Router represents basic information about the associated OpenStack Neutron Router.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+tags
+ +[]string + +
+(Optional) +
+ips
+ +[]string + +
+(Optional) +
+

SecurityGroup +

+

+(Appears on: +OpenStackClusterStatus) +

+

+

SecurityGroup represents the basic information of the associated +OpenStack Neutron Security Group.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+rules
+ + +[]SecurityGroupRule + + +
+
+

SecurityGroupFilter +

+

+(Appears on: +SecurityGroupParam) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+id
+ +string + +
+
+name
+ +string + +
+
+description
+ +string + +
+
+tenantId
+ +string + +
+
+projectId
+ +string + +
+
+limit
+ +int + +
+
+marker
+ +string + +
+
+sortKey
+ +string + +
+
+sortDir
+ +string + +
+
+tags
+ +string + +
+
+tagsAny
+ +string + +
+
+notTags
+ +string + +
+
+notTagsAny
+ +string + +
+
+

SecurityGroupParam +

+

+(Appears on: +OpenStackMachineSpec, +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+uuid
+ +string + +
+

Security Group UID

+
+name
+ +string + +
+

Security Group name

+
+filter
+ + +SecurityGroupFilter + + +
+

Filters used to query security groups in openstack

+
+

SecurityGroupRule +

+

+(Appears on: +SecurityGroup) +

+

+

SecurityGroupRule represent the basic information of the associated OpenStack +Security Group Role.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+description
+ +string + +
+
+name
+ +string + +
+
+direction
+ +string + +
+
+etherType
+ +string + +
+
+securityGroupID
+ +string + +
+
+portRangeMin
+ +int + +
+
+portRangeMax
+ +int + +
+
+protocol
+ +string + +
+
+remoteGroupID
+ +string + +
+
+remoteIPPrefix
+ +string + +
+
+

Subnet +

+

+(Appears on: +Network) +

+

+

Subnet represents basic information about the associated OpenStack Neutron Subnet.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+cidr
+ +string + +
+
+tags
+ +[]string + +
+(Optional) +
+

SubnetFilter +

+

+(Appears on: +FixedIP, +OpenStackClusterSpec, +SubnetParam) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+description
+ +string + +
+
+projectId
+ +string + +
+
+ipVersion
+ +int + +
+
+gateway_ip
+ +string + +
+
+cidr
+ +string + +
+
+ipv6AddressMode
+ +string + +
+
+ipv6RaMode
+ +string + +
+
+id
+ +string + +
+
+tags
+ +string + +
+
+tagsAny
+ +string + +
+
+notTags
+ +string + +
+
+notTagsAny
+ +string + +
+
+

SubnetParam +

+

+(Appears on: +ExternalRouterIPParam, +NetworkParam) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+uuid
+ +string + +
+

Optional UUID of the subnet. +If specified this will not be validated prior to server creation. +If specified, the enclosing NetworkParam must also be specified by UUID.

+
+filter
+ + +SubnetFilter + + +
+

Filters for optional subnet query

+
+

ValueSpec +

+

+(Appears on: +PortOpts) +

+

+

ValueSpec represents a single value_spec key-value pair.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+

Name is the name of the key-value pair. +This is just for identifying the pair and will not be sent to the OpenStack API.

+
+key
+ +string + +
+

Key is the key in the key-value pair.

+
+value
+ +string + +
+

Value is the value in the key-value pair.

+
+
+

+Generated with gen-crd-api-reference-docs. +

diff --git a/docs/book/src/api/v1alpha7/api.md b/docs/book/src/api/v1alpha7/api.md new file mode 100644 index 0000000000..f00fa1fedb --- /dev/null +++ b/docs/book/src/api/v1alpha7/api.md @@ -0,0 +1,4098 @@ +

infrastructure.cluster.x-k8s.io/v1alpha7

+

+

Package v1alpha7 contains API Schema definitions for the infrastructure v1alpha7 API group

+

+Resource Types: + +

OpenStackCluster +

+

+

OpenStackCluster is the Schema for the openstackclusters API.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+apiVersion
+string
+ +infrastructure.cluster.x-k8s.io/v1alpha7 + +
+kind
+string +
OpenStackCluster
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackClusterSpec + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+nodeCidr
+ +string + +
+

NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a +network, a subnet with NodeCIDR, and a router connected to this subnet. +If you leave this empty, no network will be created.

+
+router
+ + +RouterFilter + + +
+(Optional) +

If NodeCIDR is set this option can be used to detect an existing router. +If specified, no new router will be created.

+
+network
+ + +NetworkFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing network.

+
+subnet
+ + +SubnetFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing subnet.

+
+networkMtu
+ +int + +
+(Optional) +

NetworkMTU sets the maximum transmission unit (MTU) value to address fragmentation for the private network ID. +This value will be used only if the Cluster actuator creates the network. +If leaved empty, the network will have the default MTU defined in Openstack network service. +To use this field, the Openstack installation requires the net-mtu neutron API extension.

+
+dnsNameservers
+ +[]string + +
+

DNSNameservers is the list of nameservers for OpenStack Subnet being created. +Set this value when you need create a new network/subnet while the access +through DNS is required.

+
+externalRouterIPs
+ + +[]ExternalRouterIPParam + + +
+

ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.

+
+externalNetworkId
+ +string + +
+(Optional) +

ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.

+
+apiServerLoadBalancer
+ + +APIServerLoadBalancer + + +
+(Optional) +

APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting enabled: true.

+
+disableAPIServerFloatingIP
+ +bool + +
+(Optional) +

DisableAPIServerFloatingIP determines whether or not to attempt to attach a floating +IP to the API server. This allows for the creation of clusters when attaching a floating +IP to the API server (and hence, in many cases, exposing the API server to the internet) +is not possible or desirable, e.g. if using a shared VLAN for communication between +management and workload clusters or when the management cluster is inside the +project network. +This option requires that the API server use a VIP on the cluster network so that the +underlying machines can change without changing ControlPlaneEndpoint.Host. +When using a managed load balancer, this VIP will be managed automatically. +If not using a managed load balancer, cluster configuration will fail without additional +configuration to manage the VIP on the control plane machines, which falls outside of +the scope of this controller.

+
+apiServerFloatingIP
+ +string + +
+

APIServerFloatingIP is the floatingIP which will be associated with the API server. +The floatingIP will be created if it does not already exist. +If not specified, a new floatingIP is allocated. +This field is not used if DisableAPIServerFloatingIP is set to true.

+
+apiServerFixedIP
+ +string + +
+

APIServerFixedIP is the fixed IP which will be associated with the API server. +In the case where the API server has a floating IP but not a managed load balancer, +this field is not used. +If a managed load balancer is used and this field is not specified, a fixed IP will +be dynamically allocated for the load balancer. +If a managed load balancer is not used AND the API server floating IP is disabled, +this field MUST be specified and should correspond to a pre-allocated port that +holds the fixed IP to be used as a VIP.

+
+apiServerPort
+ +int + +
+

APIServerPort is the port on which the listener on the APIServer +will be created

+
+managedSecurityGroups
+ +bool + +
+(Optional) +

ManagedSecurityGroups determines whether OpenStack security groups for the cluster +will be managed by the OpenStack provider or whether pre-existing security groups will +be specified as part of the configuration. +By default, the managed security groups have rules that allow the Kubelet, etcd, the +Kubernetes API server and the Calico CNI plugin to function correctly.

+
+allowAllInClusterTraffic
+ +bool + +
+(Optional) +

AllowAllInClusterTraffic is only used when managed security groups are in use. +If set to true, the rules for the managed security groups are configured so that all +ingress and egress between cluster nodes is permitted, allowing CNIs other than +Calico to be used.

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups

+
+tags
+ +[]string + +
+

Tags for all resources in cluster

+
+controlPlaneEndpoint
+ + +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint + + +
+(Optional) +

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+controlPlaneAvailabilityZones
+ +[]string + +
+

ControlPlaneAvailabilityZones is the az to deploy control plane to

+
+controlPlaneOmitAvailabilityZone
+ +bool + +
+

Indicates whether to omit the az for control plane nodes, allowing the Nova scheduler +to make a decision on which az to use based on other scheduling constraints

+
+bastion
+ + +Bastion + + +
+(Optional) +

Bastion is the OpenStack instance to login the nodes

+

As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set enabled: false to +make changes.

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+status
+ + +OpenStackClusterStatus + + +
+
+

OpenStackClusterTemplate +

+

+

OpenStackClusterTemplate is the Schema for the openstackclustertemplates API.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+apiVersion
+string
+ +infrastructure.cluster.x-k8s.io/v1alpha7 + +
+kind
+string +
OpenStackClusterTemplate
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackClusterTemplateSpec + + +
+
+
+ + + + + +
+template
+ + +OpenStackClusterTemplateResource + + +
+
+
+

OpenStackMachine +

+

+

OpenStackMachine is the Schema for the openstackmachines API.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+apiVersion
+string
+ +infrastructure.cluster.x-k8s.io/v1alpha7 + +
+kind
+string +
OpenStackMachine
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackMachineSpec + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+providerID
+ +string + +
+

ProviderID is the unique identifier as specified by the cloud provider.

+
+instanceID
+ +string + +
+

InstanceID is the OpenStack instance ID for this machine.

+
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+flavor
+ +string + +
+

The flavor reference for the flavor for your server instance.

+
+image
+ +string + +
+

The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.

+
+imageUUID
+ +string + +
+

The uuid of the image to use for your server instance. +if it’s empty, Image name will be used

+
+sshKeyName
+ +string + +
+

The ssh key to inject in the instance

+
+ports
+ + +[]PortOpts + + +
+

Ports to be attached to the server instance. They are created if a port with the given name does not already exist. +If not specified a default port will be added for the default cluster network.

+
+floatingIP
+ +string + +
+

The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.

+
+securityGroups
+ + +[]SecurityGroupFilter + + +
+

The names of the security groups to assign to the instance

+
+trunk
+ +bool + +
+

Whether the server instance is created on a trunk port or not.

+
+tags
+ +[]string + +
+

Machine tags +Requires Nova api 2.52 minimum!

+
+serverMetadata
+ +map[string]string + +
+

Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.

+
+configDrive
+ +bool + +
+

Config Drive support

+
+rootVolume
+ + +RootVolume + + +
+

The volume metadata to boot from

+
+additionalBlockDevices
+ + +[]AdditionalBlockDevice + + +
+

AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance

+
+serverGroupID
+ +string + +
+

The server group to assign the machine to

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+status
+ + +OpenStackMachineStatus + + +
+
+

APIServerLoadBalancer +

+

+(Appears on: +OpenStackClusterSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+enabled
+ +bool + +
+

Enabled defines whether a load balancer should be created.

+
+additionalPorts
+ +[]int + +
+

AdditionalPorts adds additional tcp ports to the load balancer.

+
+allowedCidrs
+ +[]string + +
+

AllowedCIDRs restrict access to all API-Server listeners to the given address CIDRs.

+
+provider
+ +string + +
+

Octavia Provider Used to create load balancer

+
+

AdditionalBlockDevice +

+

+(Appears on: +OpenStackMachineSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+

Name of the Cinder volume in the context of a machine. +It will be combined with the machine name to make the actual volume name.

+
+diskSize
+ +int + +
+

Size is the size in GB of the volume.

+
+volumeType
+ +string + +
+

VolumeType is the volume type of the volume. +If omitted, the default type will be used.

+
+availabilityZone
+ +string + +
+

AvailabilityZone is the volume availability zone to create the volume in. +If omitted, the availability zone of the server will be used.

+
+

AddressPair +

+

+(Appears on: +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+ipAddress
+ +string + +
+
+macAddress
+ +string + +
+
+

Bastion +

+

+(Appears on: +OpenStackClusterSpec) +

+

+

Bastion represents basic information about the bastion node.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+enabled
+ +bool + +
+(Optional) +
+instance
+ + +OpenStackMachineSpec + + +
+

Instance for the bastion itself

+
+availabilityZone
+ +string + +
+(Optional) +
+

BastionStatus +

+

+(Appears on: +OpenStackClusterStatus) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+id
+ +string + +
+
+name
+ +string + +
+
+sshKeyName
+ +string + +
+
+state
+ + +InstanceState + + +
+
+ip
+ +string + +
+
+floatingIP
+ +string + +
+
+

BindingProfile +

+

+(Appears on: +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+ovsHWOffload
+ +bool + +
+

OVSHWOffload enables or disables the OVS hardware offload feature.

+
+trustedVF
+ +bool + +
+

TrustedVF enables or disables the “trusted mode” for the VF.

+
+

ExternalRouterIPParam +

+

+(Appears on: +OpenStackClusterSpec) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+fixedIP
+ +string + +
+

The FixedIP in the corresponding subnet

+
+subnet
+ + +SubnetFilter + + +
+

The subnet in which the FixedIP is used for the Gateway of this router

+
+

FixedIP +

+

+(Appears on: +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+subnet
+ + +SubnetFilter + + +
+

Subnet is an openstack subnet query that will return the id of a subnet to create +the fixed IP of a port in. This query must not return more than one subnet.

+
+ipAddress
+ +string + +
+
+

InstanceState +(string alias)

+

+(Appears on: +BastionStatus, +OpenStackMachineStatus) +

+

+

InstanceState describes the state of an OpenStack instance.

+

+

LoadBalancer +

+

+(Appears on: +OpenStackClusterStatus) +

+

+

LoadBalancer represents basic information about the associated OpenStack LoadBalancer.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+ip
+ +string + +
+
+internalIP
+ +string + +
+
+allowedCIDRs
+ +[]string + +
+(Optional) +
+tags
+ +[]string + +
+(Optional) +
+

NetworkFilter +

+

+(Appears on: +OpenStackClusterSpec, +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+description
+ +string + +
+
+projectId
+ +string + +
+
+id
+ +string + +
+
+tags
+ +string + +
+
+tagsAny
+ +string + +
+
+notTags
+ +string + +
+
+notTagsAny
+ +string + +
+
+

NetworkStatus +

+

+(Appears on: +NetworkStatusWithSubnets, +OpenStackClusterStatus) +

+

+

NetworkStatus contains basic information about an existing neutron network.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+tags
+ +[]string + +
+(Optional) +
+

NetworkStatusWithSubnets +

+

+(Appears on: +OpenStackClusterStatus) +

+

+

NetworkStatusWithSubnets represents basic information about an existing neutron network and an associated set of subnets.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+NetworkStatus
+ + +NetworkStatus + + +
+

+(Members of NetworkStatus are embedded into this type.) +

+
+subnets
+ + +[]Subnet + + +
+

Subnets is a list of subnets associated with the default cluster network. Machines which use the default cluster network will get an address from all of these subnets.

+
+

OpenStackClusterSpec +

+

+(Appears on: +OpenStackCluster, +OpenStackClusterTemplateResource) +

+

+

OpenStackClusterSpec defines the desired state of OpenStackCluster.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+nodeCidr
+ +string + +
+

NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a +network, a subnet with NodeCIDR, and a router connected to this subnet. +If you leave this empty, no network will be created.

+
+router
+ + +RouterFilter + + +
+(Optional) +

If NodeCIDR is set this option can be used to detect an existing router. +If specified, no new router will be created.

+
+network
+ + +NetworkFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing network.

+
+subnet
+ + +SubnetFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing subnet.

+
+networkMtu
+ +int + +
+(Optional) +

NetworkMTU sets the maximum transmission unit (MTU) value to address fragmentation for the private network ID. +This value will be used only if the Cluster actuator creates the network. +If leaved empty, the network will have the default MTU defined in Openstack network service. +To use this field, the Openstack installation requires the net-mtu neutron API extension.

+
+dnsNameservers
+ +[]string + +
+

DNSNameservers is the list of nameservers for OpenStack Subnet being created. +Set this value when you need create a new network/subnet while the access +through DNS is required.

+
+externalRouterIPs
+ + +[]ExternalRouterIPParam + + +
+

ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.

+
+externalNetworkId
+ +string + +
+(Optional) +

ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.

+
+apiServerLoadBalancer
+ + +APIServerLoadBalancer + + +
+(Optional) +

APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting enabled: true.

+
+disableAPIServerFloatingIP
+ +bool + +
+(Optional) +

DisableAPIServerFloatingIP determines whether or not to attempt to attach a floating +IP to the API server. This allows for the creation of clusters when attaching a floating +IP to the API server (and hence, in many cases, exposing the API server to the internet) +is not possible or desirable, e.g. if using a shared VLAN for communication between +management and workload clusters or when the management cluster is inside the +project network. +This option requires that the API server use a VIP on the cluster network so that the +underlying machines can change without changing ControlPlaneEndpoint.Host. +When using a managed load balancer, this VIP will be managed automatically. +If not using a managed load balancer, cluster configuration will fail without additional +configuration to manage the VIP on the control plane machines, which falls outside of +the scope of this controller.

+
+apiServerFloatingIP
+ +string + +
+

APIServerFloatingIP is the floatingIP which will be associated with the API server. +The floatingIP will be created if it does not already exist. +If not specified, a new floatingIP is allocated. +This field is not used if DisableAPIServerFloatingIP is set to true.

+
+apiServerFixedIP
+ +string + +
+

APIServerFixedIP is the fixed IP which will be associated with the API server. +In the case where the API server has a floating IP but not a managed load balancer, +this field is not used. +If a managed load balancer is used and this field is not specified, a fixed IP will +be dynamically allocated for the load balancer. +If a managed load balancer is not used AND the API server floating IP is disabled, +this field MUST be specified and should correspond to a pre-allocated port that +holds the fixed IP to be used as a VIP.

+
+apiServerPort
+ +int + +
+

APIServerPort is the port on which the listener on the APIServer +will be created

+
+managedSecurityGroups
+ +bool + +
+(Optional) +

ManagedSecurityGroups determines whether OpenStack security groups for the cluster +will be managed by the OpenStack provider or whether pre-existing security groups will +be specified as part of the configuration. +By default, the managed security groups have rules that allow the Kubelet, etcd, the +Kubernetes API server and the Calico CNI plugin to function correctly.

+
+allowAllInClusterTraffic
+ +bool + +
+(Optional) +

AllowAllInClusterTraffic is only used when managed security groups are in use. +If set to true, the rules for the managed security groups are configured so that all +ingress and egress between cluster nodes is permitted, allowing CNIs other than +Calico to be used.

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups

+
+tags
+ +[]string + +
+

Tags for all resources in cluster

+
+controlPlaneEndpoint
+ + +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint + + +
+(Optional) +

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+controlPlaneAvailabilityZones
+ +[]string + +
+

ControlPlaneAvailabilityZones is the az to deploy control plane to

+
+controlPlaneOmitAvailabilityZone
+ +bool + +
+

Indicates whether to omit the az for control plane nodes, allowing the Nova scheduler +to make a decision on which az to use based on other scheduling constraints

+
+bastion
+ + +Bastion + + +
+(Optional) +

Bastion is the OpenStack instance to login the nodes

+

As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set enabled: false to +make changes.

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+

OpenStackClusterStatus +

+

+(Appears on: +OpenStackCluster) +

+

+

OpenStackClusterStatus defines the observed state of OpenStackCluster.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+ready
+ +bool + +
+
+network
+ + +NetworkStatusWithSubnets + + +
+

Network contains information about the created OpenStack Network.

+
+externalNetwork
+ + +NetworkStatus + + +
+

externalNetwork contains information about the external network used for default ingress and egress traffic.

+
+router
+ + +Router + + +
+

Router describes the default cluster router

+
+apiServerLoadBalancer
+ + +LoadBalancer + + +
+

APIServerLoadBalancer describes the api server load balancer if one exists

+
+failureDomains
+ + +sigs.k8s.io/cluster-api/api/v1beta1.FailureDomains + + +
+

FailureDomains represent OpenStack availability zones

+
+controlPlaneSecurityGroup
+ + +SecurityGroup + + +
+

ControlPlaneSecurityGroups contains all the information about the OpenStack +Security Group that needs to be applied to control plane nodes. +TODO: Maybe instead of two properties, we add a property to the group?

+
+workerSecurityGroup
+ + +SecurityGroup + + +
+

WorkerSecurityGroup contains all the information about the OpenStack Security +Group that needs to be applied to worker nodes.

+
+bastionSecurityGroup
+ + +SecurityGroup + + +
+
+bastion
+ + +BastionStatus + + +
+
+failureReason
+ + +sigs.k8s.io/cluster-api/errors.ClusterStatusError + + +
+(Optional) +

FailureReason will be set in the event that there is a terminal problem +reconciling the OpenStackCluster and will contain a succinct value suitable +for machine interpretation.

+

This field should not be set for transitive errors that a controller +faces that are expected to be fixed automatically over +time (like service outages), but instead indicate that something is +fundamentally wrong with the OpenStackCluster’s spec or the configuration of +the controller, and that manual intervention is required. Examples +of terminal errors would be invalid combinations of settings in the +spec, values that are unsupported by the controller, or the +responsible controller itself being critically misconfigured.

+

Any transient errors that occur during the reconciliation of +OpenStackClusters can be added as events to the OpenStackCluster object +and/or logged in the controller’s output.

+
+failureMessage
+ +string + +
+(Optional) +

FailureMessage will be set in the event that there is a terminal problem +reconciling the OpenStackCluster and will contain a more verbose string suitable +for logging and human consumption.

+

This field should not be set for transitive errors that a controller +faces that are expected to be fixed automatically over +time (like service outages), but instead indicate that something is +fundamentally wrong with the OpenStackCluster’s spec or the configuration of +the controller, and that manual intervention is required. Examples +of terminal errors would be invalid combinations of settings in the +spec, values that are unsupported by the controller, or the +responsible controller itself being critically misconfigured.

+

Any transient errors that occur during the reconciliation of +OpenStackClusters can be added as events to the OpenStackCluster object +and/or logged in the controller’s output.

+
+

OpenStackClusterTemplateResource +

+

+(Appears on: +OpenStackClusterTemplateSpec) +

+

+

OpenStackClusterTemplateResource describes the data needed to create a OpenStackCluster from a template.

+

+ + + + + + + + + + + + + +
FieldDescription
+spec
+ + +OpenStackClusterSpec + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+nodeCidr
+ +string + +
+

NodeCIDR is the OpenStack Subnet to be created. Cluster actuator will create a +network, a subnet with NodeCIDR, and a router connected to this subnet. +If you leave this empty, no network will be created.

+
+router
+ + +RouterFilter + + +
+(Optional) +

If NodeCIDR is set this option can be used to detect an existing router. +If specified, no new router will be created.

+
+network
+ + +NetworkFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing network.

+
+subnet
+ + +SubnetFilter + + +
+

If NodeCIDR cannot be set this can be used to detect an existing subnet.

+
+networkMtu
+ +int + +
+(Optional) +

NetworkMTU sets the maximum transmission unit (MTU) value to address fragmentation for the private network ID. +This value will be used only if the Cluster actuator creates the network. +If leaved empty, the network will have the default MTU defined in Openstack network service. +To use this field, the Openstack installation requires the net-mtu neutron API extension.

+
+dnsNameservers
+ +[]string + +
+

DNSNameservers is the list of nameservers for OpenStack Subnet being created. +Set this value when you need create a new network/subnet while the access +through DNS is required.

+
+externalRouterIPs
+ + +[]ExternalRouterIPParam + + +
+

ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.

+
+externalNetworkId
+ +string + +
+(Optional) +

ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.

+
+apiServerLoadBalancer
+ + +APIServerLoadBalancer + + +
+(Optional) +

APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting enabled: true.

+
+disableAPIServerFloatingIP
+ +bool + +
+(Optional) +

DisableAPIServerFloatingIP determines whether or not to attempt to attach a floating +IP to the API server. This allows for the creation of clusters when attaching a floating +IP to the API server (and hence, in many cases, exposing the API server to the internet) +is not possible or desirable, e.g. if using a shared VLAN for communication between +management and workload clusters or when the management cluster is inside the +project network. +This option requires that the API server use a VIP on the cluster network so that the +underlying machines can change without changing ControlPlaneEndpoint.Host. +When using a managed load balancer, this VIP will be managed automatically. +If not using a managed load balancer, cluster configuration will fail without additional +configuration to manage the VIP on the control plane machines, which falls outside of +the scope of this controller.

+
+apiServerFloatingIP
+ +string + +
+

APIServerFloatingIP is the floatingIP which will be associated with the API server. +The floatingIP will be created if it does not already exist. +If not specified, a new floatingIP is allocated. +This field is not used if DisableAPIServerFloatingIP is set to true.

+
+apiServerFixedIP
+ +string + +
+

APIServerFixedIP is the fixed IP which will be associated with the API server. +In the case where the API server has a floating IP but not a managed load balancer, +this field is not used. +If a managed load balancer is used and this field is not specified, a fixed IP will +be dynamically allocated for the load balancer. +If a managed load balancer is not used AND the API server floating IP is disabled, +this field MUST be specified and should correspond to a pre-allocated port that +holds the fixed IP to be used as a VIP.

+
+apiServerPort
+ +int + +
+

APIServerPort is the port on which the listener on the APIServer +will be created

+
+managedSecurityGroups
+ +bool + +
+(Optional) +

ManagedSecurityGroups determines whether OpenStack security groups for the cluster +will be managed by the OpenStack provider or whether pre-existing security groups will +be specified as part of the configuration. +By default, the managed security groups have rules that allow the Kubelet, etcd, the +Kubernetes API server and the Calico CNI plugin to function correctly.

+
+allowAllInClusterTraffic
+ +bool + +
+(Optional) +

AllowAllInClusterTraffic is only used when managed security groups are in use. +If set to true, the rules for the managed security groups are configured so that all +ingress and egress between cluster nodes is permitted, allowing CNIs other than +Calico to be used.

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups

+
+tags
+ +[]string + +
+

Tags for all resources in cluster

+
+controlPlaneEndpoint
+ + +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint + + +
+(Optional) +

ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.

+
+controlPlaneAvailabilityZones
+ +[]string + +
+

ControlPlaneAvailabilityZones is the az to deploy control plane to

+
+controlPlaneOmitAvailabilityZone
+ +bool + +
+

Indicates whether to omit the az for control plane nodes, allowing the Nova scheduler +to make a decision on which az to use based on other scheduling constraints

+
+bastion
+ + +Bastion + + +
+(Optional) +

Bastion is the OpenStack instance to login the nodes

+

As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set enabled: false to +make changes.

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+

OpenStackClusterTemplateSpec +

+

+(Appears on: +OpenStackClusterTemplate) +

+

+

OpenStackClusterTemplateSpec defines the desired state of OpenStackClusterTemplate.

+

+ + + + + + + + + + + + + +
FieldDescription
+template
+ + +OpenStackClusterTemplateResource + + +
+
+

OpenStackIdentityReference +

+

+(Appears on: +OpenStackClusterSpec, +OpenStackMachineSpec) +

+

+

OpenStackIdentityReference is a reference to an infrastructure +provider identity to be used to provision cluster resources.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+kind
+ +string + +
+

Kind of the identity. Must be supported by the infrastructure +provider and may be either cluster or namespace-scoped.

+
+name
+ +string + +
+

Name of the infrastructure identity to be used. +Must be either a cluster-scoped resource, or namespaced-scoped +resource the same namespace as the resource(s) being provisioned.

+
+

OpenStackMachineSpec +

+

+(Appears on: +OpenStackMachine, +Bastion, +OpenStackMachineTemplateResource) +

+

+

OpenStackMachineSpec defines the desired state of OpenStackMachine.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+providerID
+ +string + +
+

ProviderID is the unique identifier as specified by the cloud provider.

+
+instanceID
+ +string + +
+

InstanceID is the OpenStack instance ID for this machine.

+
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+flavor
+ +string + +
+

The flavor reference for the flavor for your server instance.

+
+image
+ +string + +
+

The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.

+
+imageUUID
+ +string + +
+

The uuid of the image to use for your server instance. +if it’s empty, Image name will be used

+
+sshKeyName
+ +string + +
+

The ssh key to inject in the instance

+
+ports
+ + +[]PortOpts + + +
+

Ports to be attached to the server instance. They are created if a port with the given name does not already exist. +If not specified a default port will be added for the default cluster network.

+
+floatingIP
+ +string + +
+

The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.

+
+securityGroups
+ + +[]SecurityGroupFilter + + +
+

The names of the security groups to assign to the instance

+
+trunk
+ +bool + +
+

Whether the server instance is created on a trunk port or not.

+
+tags
+ +[]string + +
+

Machine tags +Requires Nova api 2.52 minimum!

+
+serverMetadata
+ +map[string]string + +
+

Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.

+
+configDrive
+ +bool + +
+

Config Drive support

+
+rootVolume
+ + +RootVolume + + +
+

The volume metadata to boot from

+
+additionalBlockDevices
+ + +[]AdditionalBlockDevice + + +
+

AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance

+
+serverGroupID
+ +string + +
+

The server group to assign the machine to

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+

OpenStackMachineStatus +

+

+(Appears on: +OpenStackMachine) +

+

+

OpenStackMachineStatus defines the observed state of OpenStackMachine.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+ready
+ +bool + +
+(Optional) +

Ready is true when the provider resource is ready.

+
+addresses
+ +[]Kubernetes core/v1.NodeAddress + +
+

Addresses contains the OpenStack instance associated addresses.

+
+instanceState
+ + +InstanceState + + +
+(Optional) +

InstanceState is the state of the OpenStack instance for this machine.

+
+failureReason
+ + +sigs.k8s.io/cluster-api/errors.MachineStatusError + + +
+
+failureMessage
+ +string + +
+(Optional) +

FailureMessage will be set in the event that there is a terminal problem +reconciling the Machine and will contain a more verbose string suitable +for logging and human consumption.

+

This field should not be set for transitive errors that a controller +faces that are expected to be fixed automatically over +time (like service outages), but instead indicate that something is +fundamentally wrong with the Machine’s spec or the configuration of +the controller, and that manual intervention is required. Examples +of terminal errors would be invalid combinations of settings in the +spec, values that are unsupported by the controller, or the +responsible controller itself being critically misconfigured.

+

Any transient errors that occur during the reconciliation of Machines +can be added as events to the Machine object and/or logged in the +controller’s output.

+
+conditions
+ + +sigs.k8s.io/cluster-api/api/v1beta1.Conditions + + +
+
+

OpenStackMachineTemplate +

+

+

OpenStackMachineTemplate is the Schema for the openstackmachinetemplates API.

+

+ + + + + + + + + + + + + + + + + +
FieldDescription
+metadata
+ +Kubernetes meta/v1.ObjectMeta + +
+Refer to the Kubernetes API documentation for the fields of the +metadata field. +
+spec
+ + +OpenStackMachineTemplateSpec + + +
+
+
+ + + + + +
+template
+ + +OpenStackMachineTemplateResource + + +
+
+
+

OpenStackMachineTemplateResource +

+

+(Appears on: +OpenStackMachineTemplateSpec) +

+

+

OpenStackMachineTemplateResource describes the data needed to create a OpenStackMachine from a template.

+

+ + + + + + + + + + + + + +
FieldDescription
+spec
+ + +OpenStackMachineSpec + + +
+

Spec is the specification of the desired behavior of the machine.

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+providerID
+ +string + +
+

ProviderID is the unique identifier as specified by the cloud provider.

+
+instanceID
+ +string + +
+

InstanceID is the OpenStack instance ID for this machine.

+
+cloudName
+ +string + +
+(Optional) +

The name of the cloud to use from the clouds secret

+
+flavor
+ +string + +
+

The flavor reference for the flavor for your server instance.

+
+image
+ +string + +
+

The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.

+
+imageUUID
+ +string + +
+

The uuid of the image to use for your server instance. +if it’s empty, Image name will be used

+
+sshKeyName
+ +string + +
+

The ssh key to inject in the instance

+
+ports
+ + +[]PortOpts + + +
+

Ports to be attached to the server instance. They are created if a port with the given name does not already exist. +If not specified a default port will be added for the default cluster network.

+
+floatingIP
+ +string + +
+

The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.

+
+securityGroups
+ + +[]SecurityGroupFilter + + +
+

The names of the security groups to assign to the instance

+
+trunk
+ +bool + +
+

Whether the server instance is created on a trunk port or not.

+
+tags
+ +[]string + +
+

Machine tags +Requires Nova api 2.52 minimum!

+
+serverMetadata
+ +map[string]string + +
+

Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.

+
+configDrive
+ +bool + +
+

Config Drive support

+
+rootVolume
+ + +RootVolume + + +
+

The volume metadata to boot from

+
+additionalBlockDevices
+ + +[]AdditionalBlockDevice + + +
+

AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance

+
+serverGroupID
+ +string + +
+

The server group to assign the machine to

+
+identityRef
+ + +OpenStackIdentityReference + + +
+(Optional) +

IdentityRef is a reference to a identity to be used when reconciling this cluster

+
+
+

OpenStackMachineTemplateSpec +

+

+(Appears on: +OpenStackMachineTemplate) +

+

+

OpenStackMachineTemplateSpec defines the desired state of OpenStackMachineTemplate.

+

+ + + + + + + + + + + + + +
FieldDescription
+template
+ + +OpenStackMachineTemplateResource + + +
+
+

OpenStackMachineTemplateWebhook +

+

+

+

PortOpts +

+

+(Appears on: +OpenStackMachineSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+network
+ + +NetworkFilter + + +
+

Network is a query for an openstack network that the port will be created or discovered on. +This will fail if the query returns more than one network.

+
+nameSuffix
+ +string + +
+

Used to make the name of the port unique. If unspecified, instead the 0-based index of the port in the list is used.

+
+description
+ +string + +
+
+adminStateUp
+ +bool + +
+
+macAddress
+ +string + +
+
+fixedIPs
+ + +[]FixedIP + + +
+

Specify pairs of subnet and/or IP address. These should be subnets of the network with the given NetworkID.

+
+securityGroupFilters
+ + +[]SecurityGroupFilter + + +
+

The names, uuids, filters or any combination these of the security groups to assign to the instance

+
+allowedAddressPairs
+ + +[]AddressPair + + +
+
+trunk
+ +bool + +
+

Enables and disables trunk at port level. If not provided, openStackMachine.Spec.Trunk is inherited.

+
+hostId
+ +string + +
+

The ID of the host where the port is allocated

+
+vnicType
+ +string + +
+

The virtual network interface card (vNIC) type that is bound to the neutron port.

+
+profile
+ + +BindingProfile + + +
+

Profile is a set of key-value pairs that are used for binding details. +We intentionally don’t expose this as a map[string]string because we only want to enable +the users to set the values of the keys that are known to work in OpenStack Networking API. +See https://docs.openstack.org/api-ref/network/v2/index.html?expanded=create-port-detail#create-port

+
+disablePortSecurity
+ +bool + +
+

DisablePortSecurity enables or disables the port security when set. +When not set, it takes the value of the corresponding field at the network level.

+
+propagateUplinkStatus
+ +bool + +
+

PropageteUplinkStatus enables or disables the propagate uplink status on the port.

+
+tags
+ +[]string + +
+

Tags applied to the port (and corresponding trunk, if a trunk is configured.) +These tags are applied in addition to the instance’s tags, which will also be applied to the port.

+
+valueSpecs
+ + +[]ValueSpec + + +
+(Optional) +

Value specs are extra parameters to include in the API request with OpenStack. +This is an extension point for the API, so what they do and if they are supported, +depends on the specific OpenStack implementation.

+
+

RootVolume +

+

+(Appears on: +OpenStackMachineSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+diskSize
+ +int + +
+
+volumeType
+ +string + +
+
+availabilityZone
+ +string + +
+
+

Router +

+

+(Appears on: +OpenStackClusterStatus) +

+

+

Router represents basic information about the associated OpenStack Neutron Router.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+tags
+ +[]string + +
+(Optional) +
+ips
+ +[]string + +
+(Optional) +
+

RouterFilter +

+

+(Appears on: +OpenStackClusterSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+id
+ +string + +
+
+name
+ +string + +
+
+description
+ +string + +
+
+projectId
+ +string + +
+
+tags
+ +string + +
+
+tagsAny
+ +string + +
+
+notTags
+ +string + +
+
+notTagsAny
+ +string + +
+
+

SecurityGroup +

+

+(Appears on: +OpenStackClusterStatus) +

+

+

SecurityGroup represents the basic information of the associated +OpenStack Neutron Security Group.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+rules
+ + +[]SecurityGroupRule + + +
+
+

SecurityGroupFilter +

+

+(Appears on: +OpenStackMachineSpec, +PortOpts) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+id
+ +string + +
+
+name
+ +string + +
+
+description
+ +string + +
+
+projectId
+ +string + +
+
+tags
+ +string + +
+
+tagsAny
+ +string + +
+
+notTags
+ +string + +
+
+notTagsAny
+ +string + +
+
+

SecurityGroupRule +

+

+(Appears on: +SecurityGroup) +

+

+

SecurityGroupRule represent the basic information of the associated OpenStack +Security Group Role.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+description
+ +string + +
+
+name
+ +string + +
+
+direction
+ +string + +
+
+etherType
+ +string + +
+
+securityGroupID
+ +string + +
+
+portRangeMin
+ +int + +
+
+portRangeMax
+ +int + +
+
+protocol
+ +string + +
+
+remoteGroupID
+ +string + +
+
+remoteIPPrefix
+ +string + +
+
+

Subnet +

+

+(Appears on: +NetworkStatusWithSubnets) +

+

+

Subnet represents basic information about the associated OpenStack Neutron Subnet.

+

+ + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+id
+ +string + +
+
+cidr
+ +string + +
+
+tags
+ +[]string + +
+(Optional) +
+

SubnetFilter +

+

+(Appears on: +ExternalRouterIPParam, +FixedIP, +OpenStackClusterSpec) +

+

+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+
+description
+ +string + +
+
+projectId
+ +string + +
+
+ipVersion
+ +int + +
+
+gateway_ip
+ +string + +
+
+cidr
+ +string + +
+
+ipv6AddressMode
+ +string + +
+
+ipv6RaMode
+ +string + +
+
+id
+ +string + +
+
+tags
+ +string + +
+
+tagsAny
+ +string + +
+
+notTags
+ +string + +
+
+notTagsAny
+ +string + +
+
+

ValueSpec +

+

+(Appears on: +PortOpts) +

+

+

ValueSpec represents a single value_spec key-value pair.

+

+ + + + + + + + + + + + + + + + + + + + + +
FieldDescription
+name
+ +string + +
+

Name is the name of the key-value pair. +This is just for identifying the pair and will not be sent to the OpenStack API.

+
+key
+ +string + +
+

Key is the key in the key-value pair.

+
+value
+ +string + +
+

Value is the value in the key-value pair.

+
+
+

+Generated with gen-crd-api-reference-docs. +

diff --git a/hack/tools/Makefile b/hack/tools/Makefile index 60f45a9955..f39cfadfd6 100644 --- a/hack/tools/Makefile +++ b/hack/tools/Makefile @@ -142,6 +142,10 @@ $(PLANTUML): plantuml.Dockerfile ../../versions.mk | $(BIN_DIR) docker build --build-arg PLANTUML_VERSION=$(PLANTUML_VERSION) . -f plantuml.Dockerfile -t "plantuml-builder" touch $@ +GEN_CRD_API_REFERENCE_DOCS := $(BIN_DIR)/gen-crd-api-reference-docs +$(GEN_CRD_API_REFERENCE_DOCS): + go build -tags tools -o $@ github.com/ahmetb/gen-crd-api-reference-docs + .PHONY: clean clean: ## Remove all tools rm -rf $(BIN_DIR) diff --git a/hack/tools/go.mod b/hack/tools/go.mod index 2e53fc779d..4f7259efa4 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -4,6 +4,7 @@ go 1.19 require ( github.com/a8m/envsubst v1.2.0 + github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20220420215017-3f29e6853552 github.com/golang/mock v1.6.0 github.com/itchyny/gojq v0.12.2 github.com/onsi/ginkgo/v2 v2.11.0 @@ -49,6 +50,7 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/spf13/afero v1.9.2 // indirect github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect @@ -70,7 +72,8 @@ require ( k8s.io/api v0.28.0 // indirect k8s.io/apiextensions-apiserver v0.28.0 // indirect k8s.io/apimachinery v0.28.0 // indirect - k8s.io/gengo v0.0.0-20220902162205-c0856e24416d // indirect + k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect + k8s.io/klog v1.0.0 // indirect k8s.io/klog/v2 v2.100.1 // indirect k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index 415e9a4add..711b3fe601 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -40,6 +40,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/a8m/envsubst v1.2.0 h1:yvzAhJD2QKdo35Ut03wIfXQmg+ta3wC/1bskfZynz+Q= github.com/a8m/envsubst v1.2.0/go.mod h1:PpvLvNWa+Rvu/10qXmFbFiGICIU5hZvFJNPCCkUaObg= +github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20220420215017-3f29e6853552 h1:ppHFRuYry83Rkj933CxFXAV4F2ciIdVz/uLuELSG1DI= +github.com/ahmetb/gen-crd-api-reference-docs v0.3.1-0.20220420215017-3f29e6853552/go.mod h1:TdjdkYhlOifCQWPs1UdTma97kQQMozf5h26hTuG70u8= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= @@ -75,6 +77,7 @@ github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3Bop github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= @@ -227,8 +230,11 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/spf13/afero v1.9.2 h1:j49Hj62F0n+DaZ1dDCvhABaPNSGNkt32oRFxI33IEMw= github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= @@ -613,8 +619,12 @@ k8s.io/apimachinery v0.28.0 h1:ScHS2AG16UlYWk63r46oU3D5y54T53cVI5mMJwwqFNA= k8s.io/apimachinery v0.28.0/go.mod h1:X0xh/chESs2hP9koe+SdIAcXWcQ+RM5hy0ZynB+yEvw= k8s.io/code-generator v0.28.0 h1:msdkRVJNVFgdiIJ8REl/d3cZsMB9HByFcWMmn13NyuE= k8s.io/code-generator v0.28.0/go.mod h1:ueeSJZJ61NHBa0ccWLey6mwawum25vX61nRZ6WOzN9A= -k8s.io/gengo v0.0.0-20220902162205-c0856e24416d h1:U9tB195lKdzwqicbJvyJeOXV7Klv+wNAWENRnXEGi08= -k8s.io/gengo v0.0.0-20220902162205-c0856e24416d/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20201203183100-97869a43a9d9/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 h1:pWEwq4Asjm4vjW7vcsmijwBhOr1/shsbSYiWXmNGlks= +k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= +k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= +k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= diff --git a/hack/tools/tools.go b/hack/tools/tools.go index a6cbdbe0c5..b43864a9a4 100644 --- a/hack/tools/tools.go +++ b/hack/tools/tools.go @@ -22,6 +22,7 @@ package tools import ( _ "github.com/a8m/envsubst" + _ "github.com/ahmetb/gen-crd-api-reference-docs" _ "github.com/golang/mock/mockgen" _ "github.com/itchyny/gojq/cmd/gojq" _ "github.com/onsi/ginkgo/v2/ginkgo"