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 b66e60a5c6..d2a8b2c2d5 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.28.0 @@ -248,6 +249,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) @@ -279,6 +281,24 @@ 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/v1alpha8 \ + -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/v1alpha8/api.md + $(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 e0fde58a62..e178b0355b 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/v1alpha8 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 3d7ba3d13c..e3a0d82a42 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:deprecatedversion:warning="The v1alpha6 version of OpenStackCluster has been deprecated and will be removed in a future release of the API. Please upgrade." // +kubebuilder:resource:path=openstackclusters,scope=Namespaced,categories=cluster-api,shortName=osc diff --git a/api/v1alpha6/openstackclustertemplate_types.go b/api/v1alpha6/openstackclustertemplate_types.go index c76170dd52..8fc597cfff 100644 --- a/api/v1alpha6/openstackclustertemplate_types.go +++ b/api/v1alpha6/openstackclustertemplate_types.go @@ -44,6 +44,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 7dc263f099..9048c181ca 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:deprecatedversion:warning="The v1alpha6 version of OpenStackMachine has been deprecated and will be removed in a future release of the API. Please upgrade." // +kubebuilder:resource:path=openstackmachines,scope=Namespaced,categories=cluster-api,shortName=osm diff --git a/api/v1alpha6/openstackmachinetemplate_types.go b/api/v1alpha6/openstackmachinetemplate_types.go index 6dbddaa85e..d1fd2f0895 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:deprecatedversion:warning="The v1alpha6 version of OpenStackMachineTemplate has been deprecated and will be removed in a future release of the API. Please upgrade." // +kubebuilder:resource:path=openstackmachinetemplates,scope=Namespaced,categories=cluster-api,shortName=osmt diff --git a/api/v1alpha7/doc.go b/api/v1alpha7/doc.go index 91f912911d..9179ac0280 100644 --- a/api/v1alpha7/doc.go +++ b/api/v1alpha7/doc.go @@ -14,5 +14,8 @@ 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 // +k8s:conversion-gen=sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha8 package v1alpha7 diff --git a/api/v1alpha7/groupversion_info.go b/api/v1alpha7/groupversion_info.go index bc23eee49e..e3aadf9ff5 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 e822e02872..ef0ea51702 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:subresource:status diff --git a/api/v1alpha7/openstackclustertemplate_types.go b/api/v1alpha7/openstackclustertemplate_types.go index 0c02a154b3..4ee42ef579 100644 --- a/api/v1alpha7/openstackclustertemplate_types.go +++ b/api/v1alpha7/openstackclustertemplate_types.go @@ -30,8 +30,11 @@ type OpenStackClusterTemplateSpec struct { Template OpenStackClusterTemplateResource `json:"template"` } -//+kubebuilder:object:root=true -//+kubebuilder:resource:path=openstackclustertemplates,scope=Namespaced,categories=cluster-api,shortName=osct +// +genclient +// +genclient:Namespaced +// +kubebuilder:object:root=true +// +kubebuilder:storageversion +// +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 e70075ecff..1cc5378573 100644 --- a/api/v1alpha7/openstackmachine_types.go +++ b/api/v1alpha7/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/v1alpha7/openstackmachinetemplate_types.go b/api/v1alpha7/openstackmachinetemplate_types.go index 3eeda6ad7a..a81154c085 100644 --- a/api/v1alpha7/openstackmachinetemplate_types.go +++ b/api/v1alpha7/openstackmachinetemplate_types.go @@ -36,6 +36,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/api/v1alpha8/doc.go b/api/v1alpha8/doc.go index 6e9bd36d84..e9ac580581 100644 --- a/api/v1alpha8/doc.go +++ b/api/v1alpha8/doc.go @@ -14,4 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +// package v1alpha8 contains API Schema definitions for the infrastructure v1alpha8 API group +// +kubebuilder:object:generate=true +// +groupName=infrastructure.cluster.x-k8s.io package v1alpha8 diff --git a/api/v1alpha8/groupversion_info.go b/api/v1alpha8/groupversion_info.go index b0ab35273c..01f2266886 100644 --- a/api/v1alpha8/groupversion_info.go +++ b/api/v1alpha8/groupversion_info.go @@ -13,10 +13,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ - -// package v1alpha8 contains API Schema definitions for the infrastructure v1alpha8 API group -// +kubebuilder:object:generate=true -// +groupName=infrastructure.cluster.x-k8s.io package v1alpha8 import ( diff --git a/api/v1alpha8/openstackcluster_types.go b/api/v1alpha8/openstackcluster_types.go index a6f9c0b15f..bed3fc5553 100644 --- a/api/v1alpha8/openstackcluster_types.go +++ b/api/v1alpha8/openstackcluster_types.go @@ -235,6 +235,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/v1alpha8/openstackclustertemplate_types.go b/api/v1alpha8/openstackclustertemplate_types.go index 65ea6aeff6..a20ca4a991 100644 --- a/api/v1alpha8/openstackclustertemplate_types.go +++ b/api/v1alpha8/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/v1alpha8/openstackmachine_types.go b/api/v1alpha8/openstackmachine_types.go index bc98e02a98..e8971c3019 100644 --- a/api/v1alpha8/openstackmachine_types.go +++ b/api/v1alpha8/openstackmachine_types.go @@ -143,6 +143,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/v1alpha8/openstackmachinetemplate_types.go b/api/v1alpha8/openstackmachinetemplate_types.go index fa80dc371d..52771dfb6b 100644 --- a/api/v1alpha8/openstackmachinetemplate_types.go +++ b/api/v1alpha8/openstackmachinetemplate_types.go @@ -25,6 +25,8 @@ type OpenStackMachineTemplateSpec struct { Template OpenStackMachineTemplateResource `json:"template"` } +// +genclient +// +genclient:Namespaced // +kubebuilder:object:root=true // +kubebuilder:storageversion // +kubebuilder:resource:path=openstackmachinetemplates,scope=Namespaced,categories=cluster-api,shortName=osmt diff --git a/config/crd/bases/infrastructure.cluster.x-k8s.io_openstackclustertemplates.yaml b/config/crd/bases/infrastructure.cluster.x-k8s.io_openstackclustertemplates.yaml index cb48bc42f4..c1609818a9 100644 --- a/config/crd/bases/infrastructure.cluster.x-k8s.io_openstackclustertemplates.yaml +++ b/config/crd/bases/infrastructure.cluster.x-k8s.io_openstackclustertemplates.yaml @@ -2233,7 +2233,7 @@ spec: type: object type: object served: true - storage: false + storage: true - name: v1alpha8 schema: openAPIV3Schema: 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 .)}} +<tr> + <td> + <code>{{ fieldName . }}</code><br/> + <em> + {{ if linkForType .Type }} + <a href="{{ linkForType .Type}}"> + {{ typeDisplayName .Type }} + </a> + {{ else }} + {{ typeDisplayName .Type }} + {{ end }} + </em> + </td> + <td> + {{ if fieldEmbedded . }} + <p> + (Members of <code>{{ fieldName . }}</code> are embedded into this type.) + </p> + {{ end}} + + {{ if isOptionalMember .}} + <em>(Optional)</em> + {{ end }} + + {{ safe (renderComments .CommentLines) }} + + {{ if and (eq (.Type.Name.Name) "ObjectMeta") }} + Refer to the Kubernetes API documentation for the fields of the + <code>metadata</code> field. + {{ end }} + + {{ if or (eq (fieldName .) "spec") }} + <br/> + <br/> + <table> + {{ template "members" .Type }} + </table> + {{ end }} + </td> +</tr> +{{ 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 }} + <h2 id="{{- packageAnchorID . -}}"> + {{- packageDisplayName . -}} + </h2> + + {{ with (index .GoPackages 0 )}} + {{ with .DocComments }} + <p> + {{ safe (renderComments .) }} + </p> + {{ end }} + {{ end }} + + Resource Types: + <ul> + {{- range (visibleTypes (sortedTypes .Types)) -}} + {{ if isExportedType . -}} + <li> + <a href="{{ linkForType . }}">{{ typeDisplayName . }}</a> + </li> + {{- end }} + {{- end -}} + </ul> + + {{ range (visibleTypes (sortedTypes .Types))}} + {{ template "type" . }} + {{ end }} + <hr/> +{{ end }} + +<p><em> + Generated with <code>gen-crd-api-reference-docs</code>. +</em></p> + +{{ 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" }} + +<h3 id="{{ anchorIDForType . }}"> + {{- .Name.Name }} + {{ if eq .Kind "Alias" }}(<code>{{.Underlying}}</code> alias)</p>{{ end -}} +</h3> +{{ with (typeReferences .) }} + <p> + (<em>Appears on:</em> + {{- $prev := "" -}} + {{- range . -}} + {{- if $prev -}}, {{ end -}} + {{ $prev = . }} + <a href="{{ linkForType . }}">{{ typeDisplayName . }}</a> + {{- end -}} + ) + </p> +{{ end }} + +<p> + {{ safe (renderComments .CommentLines) }} +</p> + +{{ with (constantsOfType .) }} +<table> + <thead> + <tr> + <th>Value</th> + <th>Description</th> + </tr> + </thead> + <tbody> + {{- range . -}} + <tr> + {{- /* + renderComments implicitly creates a <p> element, so we + add one to the display name as well to make the contents + of the two cells align evenly. + */ -}} + <td><p>{{ typeDisplayName . }}</p></td> + <td>{{ safe (renderComments .CommentLines) }}</td> + </tr> + {{- end -}} + </tbody> +</table> +{{ end }} + +{{ if .Members }} +<table> + <thead> + <tr> + <th>Field</th> + <th>Description</th> + </tr> + </thead> + <tbody> + {{ if isExportedType . }} + <tr> + <td> + <code>apiVersion</code><br/> + string</td> + <td> + <code> + {{apiGroup .}} + </code> + </td> + </tr> + <tr> + <td> + <code>kind</code><br/> + string + </td> + <td><code>{{.Name.Name}}</code></td> + </tr> + {{ end }} + {{ template "members" .}} + </tbody> +</table> +{{ end }} + +{{ end }} \ No newline at end of file diff --git a/docs/book/src/SUMMARY.md b/docs/book/src/SUMMARY.md index a03f4c5fc7..b33a06f6fe 100644 --- a/docs/book/src/SUMMARY.md +++ b/docs/book/src/SUMMARY.md @@ -12,5 +12,9 @@ - [v1alpha5 to v1alpha6](./topics/crd-changes/v1alpha5-to-v1alpha6.md) - [v1alpha6 to v1alpha7](./topics/crd-changes/v1alpha6-to-v1alpha7.md) - [v1alpha7 to v1alpha8](./topics/crd-changes/v1alpha7-to-v1alpha8.md) +- [API reference](./api/index.md) + - [v1alpha6](./api/v1alpha6/api.md) + - [v1alpha7](./api/v1alpha7/api.md) + - [v1alpha8](./api/v1alpha8/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..bc8cfe5239 --- /dev/null +++ b/docs/book/src/api/v1alpha6/api.md @@ -0,0 +1,4199 @@ +<h2 id="infrastructure.cluster.x-k8s.io/v1alpha6">infrastructure.cluster.x-k8s.io/v1alpha6</h2> +<p> +<p>Package v1alpha6 contains API Schema definitions for the infrastructure v1alpha6 API group</p> +</p> +Resource Types: +<ul><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackCluster">OpenStackCluster</a> +</li><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachine">OpenStackMachine</a> +</li><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplate">OpenStackMachineTemplate</a> +</li></ul> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackCluster">OpenStackCluster +</h3> +<p> +<p>OpenStackCluster is the Schema for the openstackclusters API.</p> +<p>Deprecated: This type will be removed in one of the next releases.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha6 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackCluster</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec"> +OpenStackClusterSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>nodeCidr</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing network.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing subnet.</p> +</td> +</tr> +<tr> +<td> +<code>dnsNameservers</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetworkId</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>allowAllInClusterTraffic</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set <code>enabled: false</code> to +make changes.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +<tr> +<td> +<code>status</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterStatus"> +OpenStackClusterStatus +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachine">OpenStackMachine +</h3> +<p> +<p>OpenStackMachine is the Schema for the openstackmachines API.</p> +<p>Deprecated: This type will be removed in one of the next releases.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha6 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackMachine</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +string +</em> +</td> +<td> +<p>The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.</p> +</td> +</tr> +<tr> +<td> +<code>imageUUID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The uuid of the image to use for your server instance. +if it’s empty, Image name will be used</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>networks</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkParam"> +[]NetworkParam +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +string +</em> +</td> +<td> +<p>UUID, IP address of a port from this subnet will be marked as AccessIPv4 on the created compute instance</p> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupParam"> +[]SecurityGroupParam +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +map[string]string +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The server group to assign the machine to</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +<tr> +<td> +<code>status</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineStatus"> +OpenStackMachineStatus +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplate">OpenStackMachineTemplate +</h3> +<p> +<p>OpenStackMachineTemplate is the Schema for the openstackmachinetemplates API.</p> +<p>Deprecated: This type will be removed in one of the next releases.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha6 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackMachineTemplate</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplateSpec"> +OpenStackMachineTemplateSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplateResource"> +OpenStackMachineTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.APIServerLoadBalancer">APIServerLoadBalancer +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>enabled</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Enabled defines whether a load balancer should be created.</p> +</td> +</tr> +<tr> +<td> +<code>additionalPorts</code><br/> +<em> +[]int +</em> +</td> +<td> +<p>AdditionalPorts adds additional tcp ports to the load balancer.</p> +</td> +</tr> +<tr> +<td> +<code>allowedCidrs</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>AllowedCIDRs restrict access to all API-Server listeners to the given address CIDRs.</p> +</td> +</tr> +<tr> +<td> +<code>provider</code><br/> +<em> +string +</em> +</td> +<td> +<p>Octavia Provider Used to create load balancer</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.AddressPair">AddressPair +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ipAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>macAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.Bastion">Bastion +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +<p>Bastion represents basic information about the bastion node.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>enabled</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>instance</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<p>Instance for the bastion itself</p> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.ExternalRouterIPParam">ExternalRouterIPParam +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>fixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The FixedIP in the corresponding subnet</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetParam"> +SubnetParam +</a> +</em> +</td> +<td> +<p>The subnet in which the FixedIP is used for the Gateway of this router</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.FixedIP">FixedIP +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>ipAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.Instance">Instance +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>failureDomain</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>securigyGroups</code><br/> +<em> +[]string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>networks</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Network"> +[]Network +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>imageUUID</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>userData</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +map[string]string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>state</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.InstanceState"> +InstanceState +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.InstanceState">InstanceState +(<code>string</code> alias)</p></h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Instance">Instance</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineStatus">OpenStackMachineStatus</a>) +</p> +<p> +<p>InstanceState describes the state of an OpenStack instance.</p> +</p> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.LoadBalancer">LoadBalancer +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Network">Network</a>) +</p> +<p> +<p>LoadBalancer represents basic information about the associated OpenStack LoadBalancer.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>internalIP</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>allowedCIDRs</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.Network">Network +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Instance">Instance</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>Network represents basic information about an OpenStack Neutron Network associated with an instance’s port.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Subnet"> +Subnet +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>port</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts"> +PortOpts +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Router"> +Router +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.LoadBalancer"> +LoadBalancer +</a> +</em> +</td> +<td> +<p>Be careful when using APIServerLoadBalancer, because this field is optional and therefore not +set in all cases</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.NetworkFilter">NetworkFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkParam">NetworkParam</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec">OpenStackClusterSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.NetworkParam">NetworkParam +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>uuid</code><br/> +<em> +string +</em> +</td> +<td> +<p>Optional UUID of the network. +If specified this will not be validated prior to server creation. +Required if <code>Subnets</code> specifies a subnet by UUID.</p> +</td> +</tr> +<tr> +<td> +<code>fixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>A fixed IPv4 address for the NIC.</p> +</td> +</tr> +<tr> +<td> +<code>filter</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>Filters for optional network query</p> +</td> +</tr> +<tr> +<td> +<code>subnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetParam"> +[]SubnetParam +</a> +</em> +</td> +<td> +<p>Subnet within a network to use</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec">OpenStackClusterSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackCluster">OpenStackCluster</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplateResource">OpenStackClusterTemplateResource</a>) +</p> +<p> +<p>OpenStackClusterSpec defines the desired state of OpenStackCluster.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>nodeCidr</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing network.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing subnet.</p> +</td> +</tr> +<tr> +<td> +<code>dnsNameservers</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetworkId</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>allowAllInClusterTraffic</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set <code>enabled: false</code> to +make changes.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterStatus">OpenStackClusterStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackCluster">OpenStackCluster</a>) +</p> +<p> +<p>OpenStackClusterStatus defines the observed state of OpenStackCluster.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ready</code><br/> +<em> +bool +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Network"> +Network +</a> +</em> +</td> +<td> +<p>Network contains all information about the created OpenStack Network. +It includes Subnets and Router.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetwork</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Network"> +Network +</a> +</em> +</td> +<td> +<p>External Network contains information about the created OpenStack external network.</p> +</td> +</tr> +<tr> +<td> +<code>failureDomains</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.FailureDomains +</a> +</em> +</td> +<td> +<p>FailureDomains represent OpenStack availability zones</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroup"> +SecurityGroup +</a> +</em> +</td> +<td> +<p>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?</p> +</td> +</tr> +<tr> +<td> +<code>workerSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroup"> +SecurityGroup +</a> +</em> +</td> +<td> +<p>WorkerSecurityGroup contains all the information about the OpenStack Security +Group that needs to be applied to worker nodes.</p> +</td> +</tr> +<tr> +<td> +<code>bastionSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroup"> +SecurityGroup +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Instance"> +Instance +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>failureReason</code><br/> +<em> +<a href="https://pkg.go.dev/sigs.k8s.io/cluster-api@v1.5.1/errors#ClusterStatusError"> +sigs.k8s.io/cluster-api/errors.ClusterStatusError +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>failureMessage</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplate">OpenStackClusterTemplate +</h3> +<p> +<p>OpenStackClusterTemplate is the Schema for the openstackclustertemplates API.</p> +<p>Deprecated: This type will be removed in one of the next releases.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplateSpec"> +OpenStackClusterTemplateSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplateResource"> +OpenStackClusterTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplateResource">OpenStackClusterTemplateResource +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplateSpec">OpenStackClusterTemplateSpec</a>) +</p> +<p> +<p>OpenStackClusterTemplateResource describes the data needed to create a OpenStackCluster from a template.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec"> +OpenStackClusterSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>nodeCidr</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing network.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing subnet.</p> +</td> +</tr> +<tr> +<td> +<code>dnsNameservers</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetworkId</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>allowAllInClusterTraffic</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set <code>enabled: false</code> to +make changes.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplateSpec">OpenStackClusterTemplateSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplate">OpenStackClusterTemplate</a>) +</p> +<p> +<p>OpenStackClusterTemplateSpec defines the desired state of OpenStackClusterTemplate.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterTemplateResource"> +OpenStackClusterTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackIdentityReference">OpenStackIdentityReference +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec">OpenStackClusterSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +<p>OpenStackIdentityReference is a reference to an infrastructure +provider identity to be used to provision cluster resources.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>kind</code><br/> +<em> +string +</em> +</td> +<td> +<p>Kind of the identity. Must be supported by the infrastructure +provider and may be either cluster or namespace-scoped.</p> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec">OpenStackMachineSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachine">OpenStackMachine</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Bastion">Bastion</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplateResource">OpenStackMachineTemplateResource</a>) +</p> +<p> +<p>OpenStackMachineSpec defines the desired state of OpenStackMachine.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +string +</em> +</td> +<td> +<p>The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.</p> +</td> +</tr> +<tr> +<td> +<code>imageUUID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The uuid of the image to use for your server instance. +if it’s empty, Image name will be used</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>networks</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkParam"> +[]NetworkParam +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +string +</em> +</td> +<td> +<p>UUID, IP address of a port from this subnet will be marked as AccessIPv4 on the created compute instance</p> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupParam"> +[]SecurityGroupParam +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +map[string]string +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The server group to assign the machine to</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineStatus">OpenStackMachineStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachine">OpenStackMachine</a>) +</p> +<p> +<p>OpenStackMachineStatus defines the observed state of OpenStackMachine.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ready</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>Ready is true when the provider resource is ready.</p> +</td> +</tr> +<tr> +<td> +<code>addresses</code><br/> +<em> +[]Kubernetes core/v1.NodeAddress +</em> +</td> +<td> +<p>Addresses contains the OpenStack instance associated addresses.</p> +</td> +</tr> +<tr> +<td> +<code>instanceState</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.InstanceState"> +InstanceState +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>InstanceState is the state of the OpenStack instance for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>failureReason</code><br/> +<em> +<a href="https://pkg.go.dev/sigs.k8s.io/cluster-api@v1.5.1/errors#MachineStatusError"> +sigs.k8s.io/cluster-api/errors.MachineStatusError +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>failureMessage</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>conditions</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.Conditions +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplateResource">OpenStackMachineTemplateResource +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplateSpec">OpenStackMachineTemplateSpec</a>) +</p> +<p> +<p>OpenStackMachineTemplateResource describes the data needed to create a OpenStackMachine from a template.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<p>Spec is the specification of the desired behavior of the machine.</p> +<br/> +<br/> +<table> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +string +</em> +</td> +<td> +<p>The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.</p> +</td> +</tr> +<tr> +<td> +<code>imageUUID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The uuid of the image to use for your server instance. +if it’s empty, Image name will be used</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>networks</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkParam"> +[]NetworkParam +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +string +</em> +</td> +<td> +<p>UUID, IP address of a port from this subnet will be marked as AccessIPv4 on the created compute instance</p> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupParam"> +[]SecurityGroupParam +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +map[string]string +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The server group to assign the machine to</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplateSpec">OpenStackMachineTemplateSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplate">OpenStackMachineTemplate</a>) +</p> +<p> +<p>OpenStackMachineTemplateSpec defines the desired state of OpenStackMachineTemplate.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineTemplateResource"> +OpenStackMachineTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts">PortOpts +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Network">Network</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>nameSuffix</code><br/> +<em> +string +</em> +</td> +<td> +<p>Used to make the name of the port unique. If unspecified, instead the 0-based index of the port in the list is used.</p> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>adminStateUp</code><br/> +<em> +bool +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>macAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>fixedIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.FixedIP"> +[]FixedIP +</a> +</em> +</td> +<td> +<p>Specify pairs of subnet and/or IP address. These should be subnets of the network with the given NetworkID.</p> +</td> +</tr> +<tr> +<td> +<code>tenantId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>The uuids of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>securityGroupFilters</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupParam"> +[]SecurityGroupParam +</a> +</em> +</td> +<td> +<p>The names, uuids, filters or any combination these of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>allowedAddressPairs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.AddressPair"> +[]AddressPair +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Enables and disables trunk at port level. If not provided, openStackMachine.Spec.Trunk is inherited.</p> +</td> +</tr> +<tr> +<td> +<code>hostId</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ID of the host where the port is allocated</p> +</td> +</tr> +<tr> +<td> +<code>vnicType</code><br/> +<em> +string +</em> +</td> +<td> +<p>The virtual network interface card (vNIC) type that is bound to the neutron port.</p> +</td> +</tr> +<tr> +<td> +<code>profile</code><br/> +<em> +map[string]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity enables or disables the port security when set. +When not set, it takes the value of the corresponding field at the network level.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>valueSpecs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.ValueSpec"> +[]ValueSpec +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.RootVolume">RootVolume +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Instance">Instance</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>diskSize</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>volumeType</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.Router">Router +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Network">Network</a>) +</p> +<p> +<p>Router represents basic information about the associated OpenStack Neutron Router.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>ips</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroup">SecurityGroup +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>SecurityGroup represents the basic information of the associated +OpenStack Neutron Security Group.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>rules</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupRule"> +[]SecurityGroupRule +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupFilter">SecurityGroupFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupParam">SecurityGroupParam</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tenantId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>limit</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>marker</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>sortKey</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>sortDir</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupParam">SecurityGroupParam +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackMachineSpec">OpenStackMachineSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>uuid</code><br/> +<em> +string +</em> +</td> +<td> +<p>Security Group UID</p> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>Security Group name</p> +</td> +</tr> +<tr> +<td> +<code>filter</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupFilter"> +SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>Filters used to query security groups in openstack</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroupRule">SecurityGroupRule +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SecurityGroup">SecurityGroup</a>) +</p> +<p> +<p>SecurityGroupRule represent the basic information of the associated OpenStack +Security Group Role.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>direction</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>etherType</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>securityGroupID</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>portRangeMin</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>portRangeMax</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>protocol</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>remoteGroupID</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>remoteIPPrefix</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.Subnet">Subnet +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.Network">Network</a>) +</p> +<p> +<p>Subnet represents basic information about the associated OpenStack Neutron Subnet.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>cidr</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.SubnetFilter">SubnetFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.FixedIP">FixedIP</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.OpenStackClusterSpec">OpenStackClusterSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetParam">SubnetParam</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipVersion</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>gateway_ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>cidr</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipv6AddressMode</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipv6RaMode</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.SubnetParam">SubnetParam +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.ExternalRouterIPParam">ExternalRouterIPParam</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.NetworkParam">NetworkParam</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>uuid</code><br/> +<em> +string +</em> +</td> +<td> +<p>Optional UUID of the subnet. +If specified this will not be validated prior to server creation. +If specified, the enclosing <code>NetworkParam</code> must also be specified by UUID.</p> +</td> +</tr> +<tr> +<td> +<code>filter</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>Filters for optional subnet query</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha6.ValueSpec">ValueSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha6.PortOpts">PortOpts</a>) +</p> +<p> +<p>ValueSpec represents a single value_spec key-value pair.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>key</code><br/> +<em> +string +</em> +</td> +<td> +<p>Key is the key in the key-value pair.</p> +</td> +</tr> +<tr> +<td> +<code>value</code><br/> +<em> +string +</em> +</td> +<td> +<p>Value is the value in the key-value pair.</p> +</td> +</tr> +</tbody> +</table> +<hr/> +<p><em> +Generated with <code>gen-crd-api-reference-docs</code>. +</em></p> diff --git a/docs/book/src/api/v1alpha7/api.md b/docs/book/src/api/v1alpha7/api.md new file mode 100644 index 0000000000..1d9e0484c1 --- /dev/null +++ b/docs/book/src/api/v1alpha7/api.md @@ -0,0 +1,4216 @@ +<h2 id="infrastructure.cluster.x-k8s.io/v1alpha7">infrastructure.cluster.x-k8s.io/v1alpha7</h2> +<p> +<p>Package v1alpha7 contains API Schema definitions for the infrastructure v1alpha7 API group</p> +</p> +Resource Types: +<ul><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackCluster">OpenStackCluster</a> +</li><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplate">OpenStackClusterTemplate</a> +</li><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachine">OpenStackMachine</a> +</li></ul> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackCluster">OpenStackCluster +</h3> +<p> +<p>OpenStackCluster is the Schema for the openstackclusters API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha7 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackCluster</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec"> +OpenStackClusterSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>nodeCidr</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.RouterFilter"> +RouterFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>If NodeCIDR is set this option can be used to detect an existing router. +If specified, no new router will be created.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing network.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing subnet.</p> +</td> +</tr> +<tr> +<td> +<code>networkMtu</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>dnsNameservers</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetworkId</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>allowAllInClusterTraffic</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set <code>enabled: false</code> to +make changes.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +<tr> +<td> +<code>status</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus"> +OpenStackClusterStatus +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplate">OpenStackClusterTemplate +</h3> +<p> +<p>OpenStackClusterTemplate is the Schema for the openstackclustertemplates API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha7 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackClusterTemplate</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplateSpec"> +OpenStackClusterTemplateSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplateResource"> +OpenStackClusterTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachine">OpenStackMachine +</h3> +<p> +<p>OpenStackMachine is the Schema for the openstackmachines API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha7 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackMachine</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +string +</em> +</td> +<td> +<p>The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.</p> +</td> +</tr> +<tr> +<td> +<code>imageUUID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The uuid of the image to use for your server instance. +if it’s empty, Image name will be used</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +map[string]string +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>additionalBlockDevices</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.AdditionalBlockDevice"> +[]AdditionalBlockDevice +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance</p> +</td> +</tr> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The server group to assign the machine to</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster. +If not specified, the identity ref of the cluster will be used instead.</p> +</td> +</tr> +</table> +</td> +</tr> +<tr> +<td> +<code>status</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineStatus"> +OpenStackMachineStatus +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.APIServerLoadBalancer">APIServerLoadBalancer +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>enabled</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Enabled defines whether a load balancer should be created.</p> +</td> +</tr> +<tr> +<td> +<code>additionalPorts</code><br/> +<em> +[]int +</em> +</td> +<td> +<p>AdditionalPorts adds additional tcp ports to the load balancer.</p> +</td> +</tr> +<tr> +<td> +<code>allowedCidrs</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>AllowedCIDRs restrict access to all API-Server listeners to the given address CIDRs.</p> +</td> +</tr> +<tr> +<td> +<code>provider</code><br/> +<em> +string +</em> +</td> +<td> +<p>Octavia Provider Used to create load balancer</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.AdditionalBlockDevice">AdditionalBlockDevice +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +<p>AdditionalBlockDevice is a block device to attach to the server.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>Name of the block device in the context of a machine. +If the block device is a volume, the Cinder volume will be named +as a combination of the machine name and this name. +Also, this name will be used for tagging the block device. +Information about the block device tag can be obtained from the OpenStack +metadata API or the config drive.</p> +</td> +</tr> +<tr> +<td> +<code>sizeGiB</code><br/> +<em> +int +</em> +</td> +<td> +<p>SizeGiB is the size of the block device in gibibytes (GiB).</p> +</td> +</tr> +<tr> +<td> +<code>storage</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceStorage"> +BlockDeviceStorage +</a> +</em> +</td> +<td> +<p>Storage specifies the storage type of the block device and +additional storage options.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.AddressPair">AddressPair +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ipAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>macAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.Bastion">Bastion +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +<p>Bastion represents basic information about the bastion node.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>enabled</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>instance</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<p>Instance for the bastion itself</p> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.BastionStatus">BastionStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>state</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.InstanceState"> +InstanceState +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.BindingProfile">BindingProfile +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ovsHWOffload</code><br/> +<em> +bool +</em> +</td> +<td> +<p>OVSHWOffload enables or disables the OVS hardware offload feature.</p> +</td> +</tr> +<tr> +<td> +<code>trustedVF</code><br/> +<em> +bool +</em> +</td> +<td> +<p>TrustedVF enables or disables the “trusted mode” for the VF.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceStorage">BlockDeviceStorage +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.AdditionalBlockDevice">AdditionalBlockDevice</a>) +</p> +<p> +<p>BlockDeviceStorage is the storage type of a block device to create and +contains additional storage options.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>type</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceType"> +BlockDeviceType +</a> +</em> +</td> +<td> +<p>Type is the type of block device to create. +This can be either “Volume” or “Local”.</p> +</td> +</tr> +<tr> +<td> +<code>volume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceVolume"> +BlockDeviceVolume +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Volume contains additional storage options for a volume block device.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceType">BlockDeviceType +(<code>string</code> alias)</p></h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceStorage">BlockDeviceStorage</a>) +</p> +<p> +<p>BlockDeviceType defines the type of block device to create.</p> +</p> +<table> +<thead> +<tr> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody><tr><td><p>"Local"</p></td> +<td><p>LocalBlockDevice is an ephemeral block device attached to the server.</p> +</td> +</tr><tr><td><p>"Volume"</p></td> +<td><p>VolumeBlockDevice is a volume block device attached to the server.</p> +</td> +</tr></tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceVolume">BlockDeviceVolume +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BlockDeviceStorage">BlockDeviceStorage</a>) +</p> +<p> +<p>BlockDeviceVolume contains additional storage options for a volume block device.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>type</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>Type is the Cinder volume type of the volume. +If omitted, the default Cinder volume type that is configured in the OpenStack cloud +will be used.</p> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>AvailabilityZone is the volume availability zone to create the volume in. +If omitted, the availability zone of the server will be used. +The availability zone must NOT contain spaces otherwise it will lead to volume that belongs +to this availability zone register failure, see kubernetes/cloud-provider-openstack#1379 for +further information.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.ExternalRouterIPParam">ExternalRouterIPParam +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>fixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The FixedIP in the corresponding subnet</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>The subnet in which the FixedIP is used for the Gateway of this router</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.FixedIP">FixedIP +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>ipAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.InstanceState">InstanceState +(<code>string</code> alias)</p></h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BastionStatus">BastionStatus</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineStatus">OpenStackMachineStatus</a>) +</p> +<p> +<p>InstanceState describes the state of an OpenStack instance.</p> +</p> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.LoadBalancer">LoadBalancer +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>LoadBalancer represents basic information about the associated OpenStack LoadBalancer.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>internalIP</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>allowedCIDRs</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.NetworkFilter">NetworkFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.NetworkStatus">NetworkStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkStatusWithSubnets">NetworkStatusWithSubnets</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>NetworkStatus contains basic information about an existing neutron network.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.NetworkStatusWithSubnets">NetworkStatusWithSubnets +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>NetworkStatusWithSubnets represents basic information about an existing neutron network and an associated set of subnets.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>NetworkStatus</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkStatus"> +NetworkStatus +</a> +</em> +</td> +<td> +<p> +(Members of <code>NetworkStatus</code> are embedded into this type.) +</p> +</td> +</tr> +<tr> +<td> +<code>subnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.Subnet"> +[]Subnet +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackCluster">OpenStackCluster</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplateResource">OpenStackClusterTemplateResource</a>) +</p> +<p> +<p>OpenStackClusterSpec defines the desired state of OpenStackCluster.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>nodeCidr</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.RouterFilter"> +RouterFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>If NodeCIDR is set this option can be used to detect an existing router. +If specified, no new router will be created.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing network.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing subnet.</p> +</td> +</tr> +<tr> +<td> +<code>networkMtu</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>dnsNameservers</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetworkId</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>allowAllInClusterTraffic</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set <code>enabled: false</code> to +make changes.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus">OpenStackClusterStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackCluster">OpenStackCluster</a>) +</p> +<p> +<p>OpenStackClusterStatus defines the observed state of OpenStackCluster.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ready</code><br/> +<em> +bool +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkStatusWithSubnets"> +NetworkStatusWithSubnets +</a> +</em> +</td> +<td> +<p>Network contains information about the created OpenStack Network.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetwork</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkStatus"> +NetworkStatus +</a> +</em> +</td> +<td> +<p>externalNetwork contains information about the external network used for default ingress and egress traffic.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.Router"> +Router +</a> +</em> +</td> +<td> +<p>Router describes the default cluster router</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.LoadBalancer"> +LoadBalancer +</a> +</em> +</td> +<td> +<p>APIServerLoadBalancer describes the api server load balancer if one exists</p> +</td> +</tr> +<tr> +<td> +<code>failureDomains</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.FailureDomains +</a> +</em> +</td> +<td> +<p>FailureDomains represent OpenStack availability zones</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroup"> +SecurityGroup +</a> +</em> +</td> +<td> +<p>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?</p> +</td> +</tr> +<tr> +<td> +<code>workerSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroup"> +SecurityGroup +</a> +</em> +</td> +<td> +<p>WorkerSecurityGroup contains all the information about the OpenStack Security +Group that needs to be applied to worker nodes.</p> +</td> +</tr> +<tr> +<td> +<code>bastionSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroup"> +SecurityGroup +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BastionStatus"> +BastionStatus +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>failureReason</code><br/> +<em> +<a href="https://pkg.go.dev/sigs.k8s.io/cluster-api@v1.5.1/errors#ClusterStatusError"> +sigs.k8s.io/cluster-api/errors.ClusterStatusError +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>failureMessage</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplateResource">OpenStackClusterTemplateResource +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplateSpec">OpenStackClusterTemplateSpec</a>) +</p> +<p> +<p>OpenStackClusterTemplateResource describes the data needed to create a OpenStackCluster from a template.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec"> +OpenStackClusterSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>nodeCidr</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.RouterFilter"> +RouterFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>If NodeCIDR is set this option can be used to detect an existing router. +If specified, no new router will be created.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing network.</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>If NodeCIDR cannot be set this can be used to detect an existing subnet.</p> +</td> +</tr> +<tr> +<td> +<code>networkMtu</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>dnsNameservers</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetworkId</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetworkID is the ID of an external OpenStack Network. This is necessary +to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>allowAllInClusterTraffic</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. Set <code>enabled: false</code> to +make changes.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplateSpec">OpenStackClusterTemplateSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplate">OpenStackClusterTemplate</a>) +</p> +<p> +<p>OpenStackClusterTemplateSpec defines the desired state of OpenStackClusterTemplate.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterTemplateResource"> +OpenStackClusterTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackIdentityReference">OpenStackIdentityReference +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +<p>OpenStackIdentityReference is a reference to an infrastructure +provider identity to be used to provision cluster resources.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>kind</code><br/> +<em> +string +</em> +</td> +<td> +<p>Kind of the identity. Must be supported by the infrastructure +provider and may be either cluster or namespace-scoped.</p> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec">OpenStackMachineSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachine">OpenStackMachine</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.Bastion">Bastion</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplateResource">OpenStackMachineTemplateResource</a>) +</p> +<p> +<p>OpenStackMachineSpec defines the desired state of OpenStackMachine.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +string +</em> +</td> +<td> +<p>The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.</p> +</td> +</tr> +<tr> +<td> +<code>imageUUID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The uuid of the image to use for your server instance. +if it’s empty, Image name will be used</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +map[string]string +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>additionalBlockDevices</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.AdditionalBlockDevice"> +[]AdditionalBlockDevice +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance</p> +</td> +</tr> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The server group to assign the machine to</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster. +If not specified, the identity ref of the cluster will be used instead.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineStatus">OpenStackMachineStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachine">OpenStackMachine</a>) +</p> +<p> +<p>OpenStackMachineStatus defines the observed state of OpenStackMachine.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ready</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>Ready is true when the provider resource is ready.</p> +</td> +</tr> +<tr> +<td> +<code>addresses</code><br/> +<em> +[]Kubernetes core/v1.NodeAddress +</em> +</td> +<td> +<p>Addresses contains the OpenStack instance associated addresses.</p> +</td> +</tr> +<tr> +<td> +<code>instanceState</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.InstanceState"> +InstanceState +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>InstanceState is the state of the OpenStack instance for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>failureReason</code><br/> +<em> +<a href="https://pkg.go.dev/sigs.k8s.io/cluster-api@v1.5.1/errors#MachineStatusError"> +sigs.k8s.io/cluster-api/errors.MachineStatusError +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>failureMessage</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>conditions</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.Conditions +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplate">OpenStackMachineTemplate +</h3> +<p> +<p>OpenStackMachineTemplate is the Schema for the openstackmachinetemplates API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplateSpec"> +OpenStackMachineTemplateSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplateResource"> +OpenStackMachineTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplateResource">OpenStackMachineTemplateResource +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplateSpec">OpenStackMachineTemplateSpec</a>) +</p> +<p> +<p>OpenStackMachineTemplateResource describes the data needed to create a OpenStackMachine from a template.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<p>Spec is the specification of the desired behavior of the machine.</p> +<br/> +<br/> +<table> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +string +</em> +</td> +<td> +<p>The name of the image to use for your server instance. +If the RootVolume is specified, this will be ignored and use rootVolume directly.</p> +</td> +</tr> +<tr> +<td> +<code>imageUUID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The uuid of the image to use for your server instance. +if it’s empty, Image name will be used</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The floatingIP which will be associated to the machine, only used for master. +The floatingIP should have been created and haven’t been associated.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +map[string]string +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>additionalBlockDevices</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.AdditionalBlockDevice"> +[]AdditionalBlockDevice +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance</p> +</td> +</tr> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<p>The server group to assign the machine to</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster. +If not specified, the identity ref of the cluster will be used instead.</p> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplateSpec">OpenStackMachineTemplateSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplate">OpenStackMachineTemplate</a>) +</p> +<p> +<p>OpenStackMachineTemplateSpec defines the desired state of OpenStackMachineTemplate.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineTemplateResource"> +OpenStackMachineTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts">PortOpts +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>nameSuffix</code><br/> +<em> +string +</em> +</td> +<td> +<p>Used to make the name of the port unique. If unspecified, instead the 0-based index of the port in the list is used.</p> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>adminStateUp</code><br/> +<em> +bool +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>macAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>fixedIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.FixedIP"> +[]FixedIP +</a> +</em> +</td> +<td> +<p>Specify pairs of subnet and/or IP address. These should be subnets of the network with the given NetworkID.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroupFilters</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names, uuids, filters or any combination these of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>allowedAddressPairs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.AddressPair"> +[]AddressPair +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Enables and disables trunk at port level. If not provided, openStackMachine.Spec.Trunk is inherited.</p> +</td> +</tr> +<tr> +<td> +<code>hostId</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ID of the host where the port is allocated</p> +</td> +</tr> +<tr> +<td> +<code>vnicType</code><br/> +<em> +string +</em> +</td> +<td> +<p>The virtual network interface card (vNIC) type that is bound to the neutron port.</p> +</td> +</tr> +<tr> +<td> +<code>profile</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.BindingProfile"> +BindingProfile +</a> +</em> +</td> +<td> +<p>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 <a href="https://docs.openstack.org/api-ref/network/v2/index.html?expanded=create-port-detail#create-port">https://docs.openstack.org/api-ref/network/v2/index.html?expanded=create-port-detail#create-port</a></p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity enables or disables the port security when set. +When not set, it takes the value of the corresponding field at the network level.</p> +</td> +</tr> +<tr> +<td> +<code>propagateUplinkStatus</code><br/> +<em> +bool +</em> +</td> +<td> +<p>PropageteUplinkStatus enables or disables the propagate uplink status on the port.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>valueSpecs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.ValueSpec"> +[]ValueSpec +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.RootVolume">RootVolume +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>diskSize</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>volumeType</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.Router">Router +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>Router represents basic information about the associated OpenStack Neutron Router.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>ips</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.RouterFilter">RouterFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroup">SecurityGroup +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>SecurityGroup represents the basic information of the associated +OpenStack Neutron Security Group.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>rules</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroupRule"> +[]SecurityGroupRule +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroupFilter">SecurityGroupFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackMachineSpec">OpenStackMachineSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroupRule">SecurityGroupRule +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.SecurityGroup">SecurityGroup</a>) +</p> +<p> +<p>SecurityGroupRule represent the basic information of the associated OpenStack +Security Group Role.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>direction</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>etherType</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>securityGroupID</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>portRangeMin</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>portRangeMax</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>protocol</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>remoteGroupID</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>remoteIPPrefix</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.Subnet">Subnet +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.NetworkStatusWithSubnets">NetworkStatusWithSubnets</a>) +</p> +<p> +<p>Subnet represents basic information about the associated OpenStack Neutron Subnet.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>cidr</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.SubnetFilter">SubnetFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.ExternalRouterIPParam">ExternalRouterIPParam</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.FixedIP">FixedIP</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipVersion</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>gateway_ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>cidr</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipv6AddressMode</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipv6RaMode</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha7.ValueSpec">ValueSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha7.PortOpts">PortOpts</a>) +</p> +<p> +<p>ValueSpec represents a single value_spec key-value pair.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>key</code><br/> +<em> +string +</em> +</td> +<td> +<p>Key is the key in the key-value pair.</p> +</td> +</tr> +<tr> +<td> +<code>value</code><br/> +<em> +string +</em> +</td> +<td> +<p>Value is the value in the key-value pair.</p> +</td> +</tr> +</tbody> +</table> +<hr/> +<p><em> +Generated with <code>gen-crd-api-reference-docs</code>. +</em></p> diff --git a/docs/book/src/api/v1alpha8/api.md b/docs/book/src/api/v1alpha8/api.md new file mode 100644 index 0000000000..b6ef68b3fb --- /dev/null +++ b/docs/book/src/api/v1alpha8/api.md @@ -0,0 +1,4661 @@ +<h2 id="infrastructure.cluster.x-k8s.io/v1alpha8">infrastructure.cluster.x-k8s.io/v1alpha8</h2> +<p> +<p>package v1alpha8 contains API Schema definitions for the infrastructure v1alpha8 API group</p> +</p> +Resource Types: +<ul><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackCluster">OpenStackCluster</a> +</li><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplate">OpenStackClusterTemplate</a> +</li><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachine">OpenStackMachine</a> +</li><li> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplate">OpenStackMachineTemplate</a> +</li></ul> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackCluster">OpenStackCluster +</h3> +<p> +<p>OpenStackCluster is the Schema for the openstackclusters API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha8 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackCluster</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec"> +OpenStackClusterSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>managedSubnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetSpec"> +[]SubnetSpec +</a> +</em> +</td> +<td> +<p>ManagedSubnets describe OpenStack Subnets to be created. Cluster actuator will create a network, +subnets with the defined CIDR, and a router connected to these subnets. Currently only one IPv4 +subnet is supported. If you leave this empty, no network will be created.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.RouterFilter"> +RouterFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Router specifies an existing router to be used if ManagedSubnets are +specified. If specified, no new router will be created.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>Network specifies an existing network to use if no ManagedSubnets +are specified.</p> +</td> +</tr> +<tr> +<td> +<code>subnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetFilter"> +[]SubnetFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Subnets specifies existing subnets to use if not ManagedSubnets are +specified. All subnets must be in the network specified by Network. +There can be zero, one, or two subnets. If no subnets are specified, +all subnets in Network will be used. If 2 subnets are specified, one +must be IPv4 and the other IPv6.</p> +</td> +</tr> +<tr> +<td> +<code>networkMtu</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>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 left 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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetwork</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetwork is the OpenStack Network to be used to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>disableExternalNetwork</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>DisableExternalNetwork determines whether or not to attempt to connect the cluster +to an external network. This allows for the creation of clusters when connecting +to an external network is not possible or desirable, e.g. if using a provider network.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ManagedSecurityGroups"> +ManagedSecurityGroups +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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, and the +Kubernetes API server to function correctly. +It’s possible to add additional rules to the managed security groups. +When defined to an empty struct, the managed security groups will be created with the default rules.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. To make changes, it’s required +to first set <code>enabled: false</code> which will remove the bastion and then changes can be made.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +<tr> +<td> +<code>status</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus"> +OpenStackClusterStatus +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplate">OpenStackClusterTemplate +</h3> +<p> +<p>OpenStackClusterTemplate is the Schema for the openstackclustertemplates API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha8 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackClusterTemplate</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplateSpec"> +OpenStackClusterTemplateSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplateResource"> +OpenStackClusterTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachine">OpenStackMachine +</h3> +<p> +<p>OpenStackMachine is the Schema for the openstackmachines API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha8 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackMachine</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ImageFilter"> +ImageFilter +</a> +</em> +</td> +<td> +<p>The image to use for your server instance. +If the rootVolume is specified, this will be used when creating the root volume.</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ServerMetadata"> +[]ServerMetadata +</a> +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>additionalBlockDevices</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.AdditionalBlockDevice"> +[]AdditionalBlockDevice +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance</p> +</td> +</tr> +<tr> +<td> +<code>serverGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ServerGroupFilter"> +ServerGroupFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>The server group to assign the machine to.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +<tr> +<td> +<code>status</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineStatus"> +OpenStackMachineStatus +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplate">OpenStackMachineTemplate +</h3> +<p> +<p>OpenStackMachineTemplate is the Schema for the openstackmachinetemplates API.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>apiVersion</code><br/> +string</td> +<td> +<code> +infrastructure.cluster.x-k8s.io/v1alpha8 +</code> +</td> +</tr> +<tr> +<td> +<code>kind</code><br/> +string +</td> +<td><code>OpenStackMachineTemplate</code></td> +</tr> +<tr> +<td> +<code>metadata</code><br/> +<em> +Kubernetes meta/v1.ObjectMeta +</em> +</td> +<td> +Refer to the Kubernetes API documentation for the fields of the +<code>metadata</code> field. +</td> +</tr> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateSpec"> +OpenStackMachineTemplateSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateResource"> +OpenStackMachineTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.APIServerLoadBalancer">APIServerLoadBalancer +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>enabled</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Enabled defines whether a load balancer should be created.</p> +</td> +</tr> +<tr> +<td> +<code>additionalPorts</code><br/> +<em> +[]int +</em> +</td> +<td> +<p>AdditionalPorts adds additional tcp ports to the load balancer.</p> +</td> +</tr> +<tr> +<td> +<code>allowedCidrs</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>AllowedCIDRs restrict access to all API-Server listeners to the given address CIDRs.</p> +</td> +</tr> +<tr> +<td> +<code>provider</code><br/> +<em> +string +</em> +</td> +<td> +<p>Octavia Provider Used to create load balancer</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.AdditionalBlockDevice">AdditionalBlockDevice +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +<p>AdditionalBlockDevice is a block device to attach to the server.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>Name of the block device in the context of a machine. +If the block device is a volume, the Cinder volume will be named +as a combination of the machine name and this name. +Also, this name will be used for tagging the block device. +Information about the block device tag can be obtained from the OpenStack +metadata API or the config drive.</p> +</td> +</tr> +<tr> +<td> +<code>sizeGiB</code><br/> +<em> +int +</em> +</td> +<td> +<p>SizeGiB is the size of the block device in gibibytes (GiB).</p> +</td> +</tr> +<tr> +<td> +<code>storage</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceStorage"> +BlockDeviceStorage +</a> +</em> +</td> +<td> +<p>Storage specifies the storage type of the block device and +additional storage options.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.AddressPair">AddressPair +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ipAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>macAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.Bastion">Bastion +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +<p>Bastion represents basic information about the bastion node.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>enabled</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>instance</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<p>Instance for the bastion itself</p> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>FloatingIP which will be associated to the bastion machine. +The floating IP should already exist and should not be associated with a port.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.BastionStatus">BastionStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>state</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.InstanceState"> +InstanceState +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>floatingIP</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>referencedResources</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ReferencedMachineResources"> +ReferencedMachineResources +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.BindingProfile">BindingProfile +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ovsHWOffload</code><br/> +<em> +bool +</em> +</td> +<td> +<p>OVSHWOffload enables or disables the OVS hardware offload feature.</p> +</td> +</tr> +<tr> +<td> +<code>trustedVF</code><br/> +<em> +bool +</em> +</td> +<td> +<p>TrustedVF enables or disables the “trusted mode” for the VF.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceStorage">BlockDeviceStorage +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.AdditionalBlockDevice">AdditionalBlockDevice</a>) +</p> +<p> +<p>BlockDeviceStorage is the storage type of a block device to create and +contains additional storage options.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>type</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceType"> +BlockDeviceType +</a> +</em> +</td> +<td> +<p>Type is the type of block device to create. +This can be either “Volume” or “Local”.</p> +</td> +</tr> +<tr> +<td> +<code>volume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceVolume"> +BlockDeviceVolume +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Volume contains additional storage options for a volume block device.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceType">BlockDeviceType +(<code>string</code> alias)</p></h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceStorage">BlockDeviceStorage</a>) +</p> +<p> +<p>BlockDeviceType defines the type of block device to create.</p> +</p> +<table> +<thead> +<tr> +<th>Value</th> +<th>Description</th> +</tr> +</thead> +<tbody><tr><td><p>"Local"</p></td> +<td><p>LocalBlockDevice is an ephemeral block device attached to the server.</p> +</td> +</tr><tr><td><p>"Volume"</p></td> +<td><p>VolumeBlockDevice is a volume block device attached to the server.</p> +</td> +</tr></tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceVolume">BlockDeviceVolume +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BlockDeviceStorage">BlockDeviceStorage</a>) +</p> +<p> +<p>BlockDeviceVolume contains additional storage options for a volume block device.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>type</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>Type is the Cinder volume type of the volume. +If omitted, the default Cinder volume type that is configured in the OpenStack cloud +will be used.</p> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>AvailabilityZone is the volume availability zone to create the volume in. +If omitted, the availability zone of the server will be used. +The availability zone must NOT contain spaces otherwise it will lead to volume that belongs +to this availability zone register failure, see kubernetes/cloud-provider-openstack#1379 for +further information.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ExternalRouterIPParam">ExternalRouterIPParam +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>fixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>The FixedIP in the corresponding subnet</p> +</td> +</tr> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>The subnet in which the FixedIP is used for the Gateway of this router</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.FixedIP">FixedIP +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>subnet</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetFilter"> +SubnetFilter +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>ipAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ImageFilter">ImageFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ID of the desired image. If this is provided, the other filters will be ignored.</p> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>The name of the desired image. If specified, the combination of name and tags must return a single matching image or an error will be raised.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>The tags associated with the desired image. If specified, the combination of name and tags must return a single matching image or an error will be raised.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.InstanceState">InstanceState +(<code>string</code> alias)</p></h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BastionStatus">BastionStatus</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineStatus">OpenStackMachineStatus</a>) +</p> +<p> +<p>InstanceState describes the state of an OpenStack instance.</p> +</p> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.LoadBalancer">LoadBalancer +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>LoadBalancer represents basic information about the associated OpenStack LoadBalancer.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>internalIP</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>allowedCIDRs</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ManagedSecurityGroupName">ManagedSecurityGroupName +(<code>string</code> alias)</p></h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupRuleSpec">SecurityGroupRuleSpec</a>) +</p> +<p> +</p> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ManagedSecurityGroups">ManagedSecurityGroups +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +<p>ManagedSecurityGroups defines the desired state of security groups and rules for the cluster.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>allNodesSecurityGroupRules</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupRuleSpec"> +[]SecurityGroupRuleSpec +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>allNodesSecurityGroupRules defines the rules that should be applied to all nodes.</p> +</td> +</tr> +<tr> +<td> +<code>allowAllInClusterTraffic</code><br/> +<em> +bool +</em> +</td> +<td> +<p>AllowAllInClusterTraffic allows all ingress and egress traffic between cluster nodes when set to true.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter">NetworkFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.NetworkStatus">NetworkStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkStatusWithSubnets">NetworkStatusWithSubnets</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>NetworkStatus contains basic information about an existing neutron network.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.NetworkStatusWithSubnets">NetworkStatusWithSubnets +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>NetworkStatusWithSubnets represents basic information about an existing neutron network and an associated set of subnets.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>NetworkStatus</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkStatus"> +NetworkStatus +</a> +</em> +</td> +<td> +<p> +(Members of <code>NetworkStatus</code> are embedded into this type.) +</p> +</td> +</tr> +<tr> +<td> +<code>subnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.Subnet"> +[]Subnet +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackCluster">OpenStackCluster</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplateResource">OpenStackClusterTemplateResource</a>) +</p> +<p> +<p>OpenStackClusterSpec defines the desired state of OpenStackCluster.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>managedSubnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetSpec"> +[]SubnetSpec +</a> +</em> +</td> +<td> +<p>ManagedSubnets describe OpenStack Subnets to be created. Cluster actuator will create a network, +subnets with the defined CIDR, and a router connected to these subnets. Currently only one IPv4 +subnet is supported. If you leave this empty, no network will be created.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.RouterFilter"> +RouterFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Router specifies an existing router to be used if ManagedSubnets are +specified. If specified, no new router will be created.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>Network specifies an existing network to use if no ManagedSubnets +are specified.</p> +</td> +</tr> +<tr> +<td> +<code>subnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetFilter"> +[]SubnetFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Subnets specifies existing subnets to use if not ManagedSubnets are +specified. All subnets must be in the network specified by Network. +There can be zero, one, or two subnets. If no subnets are specified, +all subnets in Network will be used. If 2 subnets are specified, one +must be IPv4 and the other IPv6.</p> +</td> +</tr> +<tr> +<td> +<code>networkMtu</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>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 left 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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetwork</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetwork is the OpenStack Network to be used to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>disableExternalNetwork</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>DisableExternalNetwork determines whether or not to attempt to connect the cluster +to an external network. This allows for the creation of clusters when connecting +to an external network is not possible or desirable, e.g. if using a provider network.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ManagedSecurityGroups"> +ManagedSecurityGroups +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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, and the +Kubernetes API server to function correctly. +It’s possible to add additional rules to the managed security groups. +When defined to an empty struct, the managed security groups will be created with the default rules.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. To make changes, it’s required +to first set <code>enabled: false</code> which will remove the bastion and then changes can be made.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus">OpenStackClusterStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackCluster">OpenStackCluster</a>) +</p> +<p> +<p>OpenStackClusterStatus defines the observed state of OpenStackCluster.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ready</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Ready is true when the cluster infrastructure is ready.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkStatusWithSubnets"> +NetworkStatusWithSubnets +</a> +</em> +</td> +<td> +<p>Network contains information about the created OpenStack Network.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetwork</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkStatus"> +NetworkStatus +</a> +</em> +</td> +<td> +<p>externalNetwork contains information about the external network used for default ingress and egress traffic.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.Router"> +Router +</a> +</em> +</td> +<td> +<p>Router describes the default cluster router</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.LoadBalancer"> +LoadBalancer +</a> +</em> +</td> +<td> +<p>APIServerLoadBalancer describes the api server load balancer if one exists</p> +</td> +</tr> +<tr> +<td> +<code>failureDomains</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.FailureDomains +</a> +</em> +</td> +<td> +<p>FailureDomains represent OpenStack availability zones</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupStatus"> +SecurityGroupStatus +</a> +</em> +</td> +<td> +<p>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?</p> +</td> +</tr> +<tr> +<td> +<code>workerSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupStatus"> +SecurityGroupStatus +</a> +</em> +</td> +<td> +<p>WorkerSecurityGroup contains all the information about the OpenStack Security +Group that needs to be applied to worker nodes.</p> +</td> +</tr> +<tr> +<td> +<code>bastionSecurityGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupStatus"> +SecurityGroupStatus +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BastionStatus"> +BastionStatus +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>failureReason</code><br/> +<em> +<a href="https://pkg.go.dev/sigs.k8s.io/cluster-api@v1.5.1/errors#ClusterStatusError"> +sigs.k8s.io/cluster-api/errors.ClusterStatusError +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>failureMessage</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplateResource">OpenStackClusterTemplateResource +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplateSpec">OpenStackClusterTemplateSpec</a>) +</p> +<p> +<p>OpenStackClusterTemplateResource describes the data needed to create a OpenStackCluster from a template.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec"> +OpenStackClusterSpec +</a> +</em> +</td> +<td> +<br/> +<br/> +<table> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>managedSubnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetSpec"> +[]SubnetSpec +</a> +</em> +</td> +<td> +<p>ManagedSubnets describe OpenStack Subnets to be created. Cluster actuator will create a network, +subnets with the defined CIDR, and a router connected to these subnets. Currently only one IPv4 +subnet is supported. If you leave this empty, no network will be created.</p> +</td> +</tr> +<tr> +<td> +<code>router</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.RouterFilter"> +RouterFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Router specifies an existing router to be used if ManagedSubnets are +specified. If specified, no new router will be created.</p> +</td> +</tr> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>Network specifies an existing network to use if no ManagedSubnets +are specified.</p> +</td> +</tr> +<tr> +<td> +<code>subnets</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SubnetFilter"> +[]SubnetFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Subnets specifies existing subnets to use if not ManagedSubnets are +specified. All subnets must be in the network specified by Network. +There can be zero, one, or two subnets. If no subnets are specified, +all subnets in Network will be used. If 2 subnets are specified, one +must be IPv4 and the other IPv6.</p> +</td> +</tr> +<tr> +<td> +<code>networkMtu</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>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 left 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.</p> +</td> +</tr> +<tr> +<td> +<code>externalRouterIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ExternalRouterIPParam"> +[]ExternalRouterIPParam +</a> +</em> +</td> +<td> +<p>ExternalRouterIPs is an array of externalIPs on the respective subnets. +This is necessary if the router needs a fixed ip in a specific subnet.</p> +</td> +</tr> +<tr> +<td> +<code>externalNetwork</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ExternalNetwork is the OpenStack Network to be used to get public internet to the VMs.</p> +</td> +</tr> +<tr> +<td> +<code>disableExternalNetwork</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>DisableExternalNetwork determines whether or not to attempt to connect the cluster +to an external network. This allows for the creation of clusters when connecting +to an external network is not possible or desirable, e.g. if using a provider network.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerLoadBalancer</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.APIServerLoadBalancer"> +APIServerLoadBalancer +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>APIServerLoadBalancer configures the optional LoadBalancer for the APIServer. +It must be activated by setting <code>enabled: true</code>.</p> +</td> +</tr> +<tr> +<td> +<code>disableAPIServerFloatingIP</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFloatingIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerFixedIP</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>apiServerPort</code><br/> +<em> +int +</em> +</td> +<td> +<p>APIServerPort is the port on which the listener on the APIServer +will be created</p> +</td> +</tr> +<tr> +<td> +<code>managedSecurityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ManagedSecurityGroups"> +ManagedSecurityGroups +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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, and the +Kubernetes API server to function correctly. +It’s possible to add additional rules to the managed security groups. +When defined to an empty struct, the managed security groups will be created with the default rules.</p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity disables the port security of the network created for the +Kubernetes cluster, which also disables SecurityGroups</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Tags for all resources in cluster</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneEndpoint</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.APIEndpoint +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneAvailabilityZones</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>ControlPlaneAvailabilityZones is the az to deploy control plane to</p> +</td> +</tr> +<tr> +<td> +<code>controlPlaneOmitAvailabilityZone</code><br/> +<em> +bool +</em> +</td> +<td> +<p>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</p> +</td> +</tr> +<tr> +<td> +<code>bastion</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.Bastion"> +Bastion +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>Bastion is the OpenStack instance to login the nodes</p> +<p>As a rolling update is not ideal during a bastion host session, we +prevent changes to a running bastion configuration. To make changes, it’s required +to first set <code>enabled: false</code> which will remove the bastion and then changes can be made.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplateSpec">OpenStackClusterTemplateSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplate">OpenStackClusterTemplate</a>) +</p> +<p> +<p>OpenStackClusterTemplateSpec defines the desired state of OpenStackClusterTemplate.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterTemplateResource"> +OpenStackClusterTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackIdentityReference">OpenStackIdentityReference +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +<p>OpenStackIdentityReference is a reference to an infrastructure +provider identity to be used to provision cluster resources.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>kind</code><br/> +<em> +string +</em> +</td> +<td> +<p>Kind of the identity. Must be supported by the infrastructure +provider and may be either cluster or namespace-scoped.</p> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachine">OpenStackMachine</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.Bastion">Bastion</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateResource">OpenStackMachineTemplateResource</a>) +</p> +<p> +<p>OpenStackMachineSpec defines the desired state of OpenStackMachine.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ImageFilter"> +ImageFilter +</a> +</em> +</td> +<td> +<p>The image to use for your server instance. +If the rootVolume is specified, this will be used when creating the root volume.</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ServerMetadata"> +[]ServerMetadata +</a> +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>additionalBlockDevices</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.AdditionalBlockDevice"> +[]AdditionalBlockDevice +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance</p> +</td> +</tr> +<tr> +<td> +<code>serverGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ServerGroupFilter"> +ServerGroupFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>The server group to assign the machine to.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineStatus">OpenStackMachineStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachine">OpenStackMachine</a>) +</p> +<p> +<p>OpenStackMachineStatus defines the observed state of OpenStackMachine.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>ready</code><br/> +<em> +bool +</em> +</td> +<td> +<em>(Optional)</em> +<p>Ready is true when the provider resource is ready.</p> +</td> +</tr> +<tr> +<td> +<code>addresses</code><br/> +<em> +[]Kubernetes core/v1.NodeAddress +</em> +</td> +<td> +<p>Addresses contains the OpenStack instance associated addresses.</p> +</td> +</tr> +<tr> +<td> +<code>instanceState</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.InstanceState"> +InstanceState +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>InstanceState is the state of the OpenStack instance for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>referencedResources</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ReferencedMachineResources"> +ReferencedMachineResources +</a> +</em> +</td> +<td> +<p>ReferencedResources contains resolved references to resources that the machine depends on.</p> +</td> +</tr> +<tr> +<td> +<code>failureReason</code><br/> +<em> +<a href="https://pkg.go.dev/sigs.k8s.io/cluster-api@v1.5.1/errors#MachineStatusError"> +sigs.k8s.io/cluster-api/errors.MachineStatusError +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>failureMessage</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +<p>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.</p> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>conditions</code><br/> +<em> +<a href="https://doc.crds.dev/github.com/kubernetes-sigs/cluster-api@v1.5.1"> +sigs.k8s.io/cluster-api/api/v1beta1.Conditions +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateResource">OpenStackMachineTemplateResource +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateSpec">OpenStackMachineTemplateSpec</a>) +</p> +<p> +<p>OpenStackMachineTemplateResource describes the data needed to create a OpenStackMachine from a template.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>spec</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec"> +OpenStackMachineSpec +</a> +</em> +</td> +<td> +<p>Spec is the specification of the desired behavior of the machine.</p> +<br/> +<br/> +<table> +<tr> +<td> +<code>providerID</code><br/> +<em> +string +</em> +</td> +<td> +<p>ProviderID is the unique identifier as specified by the cloud provider.</p> +</td> +</tr> +<tr> +<td> +<code>instanceID</code><br/> +<em> +string +</em> +</td> +<td> +<p>InstanceID is the OpenStack instance ID for this machine.</p> +</td> +</tr> +<tr> +<td> +<code>cloudName</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>The name of the cloud to use from the clouds secret</p> +</td> +</tr> +<tr> +<td> +<code>flavor</code><br/> +<em> +string +</em> +</td> +<td> +<p>The flavor reference for the flavor for your server instance.</p> +</td> +</tr> +<tr> +<td> +<code>image</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ImageFilter"> +ImageFilter +</a> +</em> +</td> +<td> +<p>The image to use for your server instance. +If the rootVolume is specified, this will be used when creating the root volume.</p> +</td> +</tr> +<tr> +<td> +<code>sshKeyName</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ssh key to inject in the instance</p> +</td> +</tr> +<tr> +<td> +<code>ports</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts"> +[]PortOpts +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Whether the server instance is created on a trunk port or not.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>Machine tags +Requires Nova api 2.52 minimum!</p> +</td> +</tr> +<tr> +<td> +<code>serverMetadata</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ServerMetadata"> +[]ServerMetadata +</a> +</em> +</td> +<td> +<p>Metadata mapping. Allows you to create a map of key value pairs to add to the server instance.</p> +</td> +</tr> +<tr> +<td> +<code>configDrive</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Config Drive support</p> +</td> +</tr> +<tr> +<td> +<code>rootVolume</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.RootVolume"> +RootVolume +</a> +</em> +</td> +<td> +<p>The volume metadata to boot from</p> +</td> +</tr> +<tr> +<td> +<code>additionalBlockDevices</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.AdditionalBlockDevice"> +[]AdditionalBlockDevice +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>AdditionalBlockDevices is a list of specifications for additional block devices to attach to the server instance</p> +</td> +</tr> +<tr> +<td> +<code>serverGroup</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ServerGroupFilter"> +ServerGroupFilter +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>The server group to assign the machine to.</p> +</td> +</tr> +<tr> +<td> +<code>identityRef</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackIdentityReference"> +OpenStackIdentityReference +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>IdentityRef is a reference to a identity to be used when reconciling this cluster</p> +</td> +</tr> +</table> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateSpec">OpenStackMachineTemplateSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplate">OpenStackMachineTemplate</a>) +</p> +<p> +<p>OpenStackMachineTemplateSpec defines the desired state of OpenStackMachineTemplate.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>template</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateResource"> +OpenStackMachineTemplateResource +</a> +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineTemplateWebhook">OpenStackMachineTemplateWebhook +</h3> +<p> +</p> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts">PortOpts +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>network</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkFilter"> +NetworkFilter +</a> +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>nameSuffix</code><br/> +<em> +string +</em> +</td> +<td> +<p>Used to make the name of the port unique. If unspecified, instead the 0-based index of the port in the list is used.</p> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>adminStateUp</code><br/> +<em> +bool +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>macAddress</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>fixedIPs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.FixedIP"> +[]FixedIP +</a> +</em> +</td> +<td> +<p>Specify pairs of subnet and/or IP address. These should be subnets of the network with the given NetworkID.</p> +</td> +</tr> +<tr> +<td> +<code>securityGroupFilters</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupFilter"> +[]SecurityGroupFilter +</a> +</em> +</td> +<td> +<p>The names, uuids, filters or any combination these of the security groups to assign to the instance</p> +</td> +</tr> +<tr> +<td> +<code>allowedAddressPairs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.AddressPair"> +[]AddressPair +</a> +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>trunk</code><br/> +<em> +bool +</em> +</td> +<td> +<p>Enables and disables trunk at port level. If not provided, openStackMachine.Spec.Trunk is inherited.</p> +</td> +</tr> +<tr> +<td> +<code>hostId</code><br/> +<em> +string +</em> +</td> +<td> +<p>The ID of the host where the port is allocated</p> +</td> +</tr> +<tr> +<td> +<code>vnicType</code><br/> +<em> +string +</em> +</td> +<td> +<p>The virtual network interface card (vNIC) type that is bound to the neutron port.</p> +</td> +</tr> +<tr> +<td> +<code>profile</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BindingProfile"> +BindingProfile +</a> +</em> +</td> +<td> +<p>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 <a href="https://docs.openstack.org/api-ref/network/v2/index.html?expanded=create-port-detail#create-port">https://docs.openstack.org/api-ref/network/v2/index.html?expanded=create-port-detail#create-port</a></p> +</td> +</tr> +<tr> +<td> +<code>disablePortSecurity</code><br/> +<em> +bool +</em> +</td> +<td> +<p>DisablePortSecurity enables or disables the port security when set. +When not set, it takes the value of the corresponding field at the network level.</p> +</td> +</tr> +<tr> +<td> +<code>propagateUplinkStatus</code><br/> +<em> +bool +</em> +</td> +<td> +<p>PropageteUplinkStatus enables or disables the propagate uplink status on the port.</p> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>valueSpecs</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ValueSpec"> +[]ValueSpec +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>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.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ReferencedMachineResources">ReferencedMachineResources +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.BastionStatus">BastionStatus</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineStatus">OpenStackMachineStatus</a>) +</p> +<p> +<p>ReferencedMachineResources contains resolved references to resources required by the machine.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>serverGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ServerGroupID is the ID of the server group the machine should be added to and is calculated based on ServerGroupFilter.</p> +</td> +</tr> +<tr> +<td> +<code>imageID</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>ImageID is the ID of the image to use for the machine and is calculated based on ImageFilter.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.RootVolume">RootVolume +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>diskSize</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>volumeType</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>availabilityZone</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.Router">Router +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>Router represents basic information about the associated OpenStack Neutron Router.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +<tr> +<td> +<code>ips</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.RouterFilter">RouterFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupFilter">SecurityGroupFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts">PortOpts</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupRuleSpec">SecurityGroupRuleSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ManagedSecurityGroups">ManagedSecurityGroups</a>) +</p> +<p> +<p>SecurityGroupRuleSpec represent the basic information of the associated OpenStack +Security Group Role. +For now this is only used for the allNodesSecurityGroupRules but when we add +other security groups, we’ll need to add a validation because +Remote* fields are mutually exclusive.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>name of the security group rule. +It’s used to identify the rule so it can be patched and will not be sent to the OpenStack API.</p> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>description of the security group rule.</p> +</td> +</tr> +<tr> +<td> +<code>direction</code><br/> +<em> +string +</em> +</td> +<td> +<p>direction in which the security group rule is applied. The only values +allowed are “ingress” or “egress”. For a compute instance, an ingress +security group rule is applied to incoming (ingress) traffic for that +instance. An egress rule is applied to traffic leaving the instance.</p> +</td> +</tr> +<tr> +<td> +<code>etherType</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>etherType must be IPv4 or IPv6, and addresses represented in CIDR must match the +ingress or egress rules.</p> +</td> +</tr> +<tr> +<td> +<code>portRangeMin</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>portRangeMin is a number in the range that is matched by the security group +rule. If the protocol is TCP or UDP, this value must be less than or equal +to the value of the portRangeMax attribute.</p> +</td> +</tr> +<tr> +<td> +<code>portRangeMax</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>portRangeMax is a number in the range that is matched by the security group +rule. The portRangeMin attribute constrains the portRangeMax attribute.</p> +</td> +</tr> +<tr> +<td> +<code>protocol</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>protocol is the protocol that is matched by the security group rule.</p> +</td> +</tr> +<tr> +<td> +<code>remoteGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>remoteGroupID is the remote group ID to be associated with this security group rule. +You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups.</p> +</td> +</tr> +<tr> +<td> +<code>remoteIPPrefix</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>remoteIPPrefix is the remote IP prefix to be associated with this security group rule. +You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups.</p> +</td> +</tr> +<tr> +<td> +<code>remoteManagedGroups</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ManagedSecurityGroupName"> +[]ManagedSecurityGroupName +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>remoteManagedGroups is the remote managed groups to be associated with this security group rule. +You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupRuleStatus">SecurityGroupRuleStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupStatus">SecurityGroupStatus</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +<p>id of the security group rule</p> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>description of the security group rule.</p> +</td> +</tr> +<tr> +<td> +<code>direction</code><br/> +<em> +string +</em> +</td> +<td> +<p>direction in which the security group rule is applied. The only values +allowed are “ingress” or “egress”. For a compute instance, an ingress +security group rule is applied to incoming (ingress) traffic for that +instance. An egress rule is applied to traffic leaving the instance.</p> +</td> +</tr> +<tr> +<td> +<code>etherType</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>etherType must be IPv4 or IPv6, and addresses represented in CIDR must match the +ingress or egress rules.</p> +</td> +</tr> +<tr> +<td> +<code>portRangeMin</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>portRangeMin is a number in the range that is matched by the security group +rule. If the protocol is TCP or UDP, this value must be less than or equal +to the value of the portRangeMax attribute.</p> +</td> +</tr> +<tr> +<td> +<code>portRangeMax</code><br/> +<em> +int +</em> +</td> +<td> +<em>(Optional)</em> +<p>portRangeMax is a number in the range that is matched by the security group +rule. The portRangeMin attribute constrains the portRangeMax attribute.</p> +</td> +</tr> +<tr> +<td> +<code>protocol</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>protocol is the protocol that is matched by the security group rule.</p> +</td> +</tr> +<tr> +<td> +<code>remoteGroupID</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>remoteGroupID is the remote group ID to be associated with this security group rule. +You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups.</p> +</td> +</tr> +<tr> +<td> +<code>remoteIPPrefix</code><br/> +<em> +string +</em> +</td> +<td> +<em>(Optional)</em> +<p>remoteIPPrefix is the remote IP prefix to be associated with this security group rule. +You can specify either remoteGroupID or remoteIPPrefix or remoteManagedGroups.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupStatus">SecurityGroupStatus +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterStatus">OpenStackClusterStatus</a>) +</p> +<p> +<p>SecurityGroupStatus represents the basic information of the associated +OpenStack Neutron Security Group.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>name of the security group</p> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +<p>id of the security group</p> +</td> +</tr> +<tr> +<td> +<code>rules</code><br/> +<em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.SecurityGroupRuleStatus"> +[]SecurityGroupRuleStatus +</a> +</em> +</td> +<td> +<em>(Optional)</em> +<p>list of security group rules</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ServerGroupFilter">ServerGroupFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ServerMetadata">ServerMetadata +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackMachineSpec">OpenStackMachineSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>key</code><br/> +<em> +string +</em> +</td> +<td> +<p>Key is the server metadata key +kubebuilder:validation:MaxLength:=255</p> +</td> +</tr> +<tr> +<td> +<code>value</code><br/> +<em> +string +</em> +</td> +<td> +<p>Value is the server metadata value +kubebuilder:validation:MaxLength:=255</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.Subnet">Subnet +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.NetworkStatusWithSubnets">NetworkStatusWithSubnets</a>) +</p> +<p> +<p>Subnet represents basic information about the associated OpenStack Neutron Subnet.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>cidr</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +[]string +</em> +</td> +<td> +<em>(Optional)</em> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.SubnetFilter">SubnetFilter +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.ExternalRouterIPParam">ExternalRouterIPParam</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.FixedIP">FixedIP</a>, +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>description</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>projectId</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipVersion</code><br/> +<em> +int +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>gateway_ip</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>cidr</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipv6AddressMode</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>ipv6RaMode</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>id</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>tagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTags</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +<tr> +<td> +<code>notTagsAny</code><br/> +<em> +string +</em> +</td> +<td> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.SubnetSpec">SubnetSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.OpenStackClusterSpec">OpenStackClusterSpec</a>) +</p> +<p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>cidr</code><br/> +<em> +string +</em> +</td> +<td> +<p>CIDR is representing the IP address range used to create the subnet, e.g. 10.0.0.0/24. +This field is required when defining a subnet.</p> +</td> +</tr> +<tr> +<td> +<code>dnsNameservers</code><br/> +<em> +[]string +</em> +</td> +<td> +<p>DNSNameservers holds a list of DNS server addresses that will be provided when creating +the subnet. These addresses need to have the same IP version as CIDR.</p> +</td> +</tr> +</tbody> +</table> +<h3 id="infrastructure.cluster.x-k8s.io/v1alpha8.ValueSpec">ValueSpec +</h3> +<p> +(<em>Appears on:</em> +<a href="#infrastructure.cluster.x-k8s.io/v1alpha8.PortOpts">PortOpts</a>) +</p> +<p> +<p>ValueSpec represents a single value_spec key-value pair.</p> +</p> +<table> +<thead> +<tr> +<th>Field</th> +<th>Description</th> +</tr> +</thead> +<tbody> +<tr> +<td> +<code>name</code><br/> +<em> +string +</em> +</td> +<td> +<p>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.</p> +</td> +</tr> +<tr> +<td> +<code>key</code><br/> +<em> +string +</em> +</td> +<td> +<p>Key is the key in the key-value pair.</p> +</td> +</tr> +<tr> +<td> +<code>value</code><br/> +<em> +string +</em> +</td> +<td> +<p>Value is the value in the key-value pair.</p> +</td> +</tr> +</tbody> +</table> +<hr/> +<p><em> +Generated with <code>gen-crd-api-reference-docs</code>. +</em></p> 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 79cbbebe17..5d0c742794 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -4,6 +4,7 @@ go 1.22 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.13.0 @@ -47,6 +48,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.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect @@ -70,6 +72,7 @@ require ( k8s.io/apiextensions-apiserver v0.29.0 // indirect k8s.io/apimachinery v0.29.0 // indirect k8s.io/gengo v0.0.0-20230829151522-9cce18d56c01 // indirect + k8s.io/klog v0.2.0 // indirect k8s.io/klog/v2 v2.110.1 // indirect k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect diff --git a/hack/tools/go.sum b/hack/tools/go.sum index 8d2cb148c6..54f95cff3e 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= @@ -232,9 +234,12 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: 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/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +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/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= +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.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= @@ -625,8 +630,11 @@ k8s.io/apimachinery v0.29.0 h1:+ACVktwyicPz0oc6MTMLwa2Pw3ouLAfAon1wPLtG48o= k8s.io/apimachinery v0.29.0/go.mod h1:eVBxQ/cwiJxH58eK/jd/vAk4mrxmVlnpBH5J2GbMeis= k8s.io/code-generator v0.29.0 h1:2LQfayGDhaIlaamXjIjEQlCMy4JNCH9lrzas4DNW1GQ= k8s.io/code-generator v0.29.0/go.mod h1:5bqIZoCxs2zTRKMWNYqyQWW/bajc+ah4rh0tMY8zdGA= +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 h1:0ElL0OHzF3N+OhoJTL0uca20SxtYt4X4+bzHeqrB83c= +k8s.io/klog v0.2.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= 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"