kubermatic / dashboard

Dashboard For The Kubermatic Kubernetes Platform
https://www.kubermatic.com
Other
42 stars 62 forks source link

Machine set creation fails if AZ is not selection with OpenStack Provider #6761

Open gmaksimov opened 3 months ago

gmaksimov commented 3 months ago

What happened

When creating a Machine set (during initial cluster provision or adding to existing cluster), the creation fails if Availability Zone is not selected. Availability Zone field is not mandatory.

Expected behavior

Option1: Availability Zone field should be mandatory (preferably pre-selected as flavor) Option2: Availability Zone should be selected by the backend randomly

How to reproduce

Create a Machine set (during initial cluster provision or adding to existing cluster) without specifying Availability Zone (non mandatory field). The creation fails in the last stage with the following error: failed to create machine deployment: admission webhook "machine-controller.kubermatic.io-machinedeployments" denied the request: validation failed: failed to get availability zone "": not found

Environment

Current workaround

Select Availability Zone

Affected user persona

Business goal to be improved

Metric to be improved

gmaksimov commented 3 months ago

I would prefer to go with option 1, making the AZ field mandatory and pre-selected with the first AZ by default. What are your thoughts?

Option1 (Availability Zone field should be mandatory (preferably pre-selected as flavor)

The field can be changed to mandatory here: https://github.com/kubermatic/dashboard/blob/main/modules/web/src/app/node-data/basic/provider/openstack/component.ts#L167

Error is returned from getAvailabilityZone function of machine-controller: https://github.com/kubermatic/machine-controller/blob/main/pkg/cloudprovider/provider/openstack/provider.go#L537

Which specifically requires AZ to be selected. https://github.com/kubermatic/machine-controller/blob/main/pkg/cloudprovider/provider/openstack/helper.go#L109

Option2 (Availability Zone should be selected by the backend randomly)

However, for option2 there is AddDefaults function in machine-controller. It seems to select AZ automatically if there is only 1 AZ. The "random" AZ can be added here. https://github.com/kubermatic/machine-controller/blob/main/pkg/cloudprovider/provider/openstack/provider.go#L385

kubermatic-bot commented 1 week ago

Issues go stale after 90d of inactivity. After a furter 30 days, they will turn rotten. Mark the issue as fresh with /remove-lifecycle stale.

If this issue is safe to close now please do so with /close.

/lifecycle stale