dashboard
dashboard copied to clipboard
Gke provisioning
Summary
Fixes #8967 #10621
Occurred changes and/or fixed issues
Functionality should be on par with existing GKE provisioning in the Ember UI. Some Ember validation happens at same time: it's all form validation in this port. There are a handful of areas where I have deviated from Ember:
- logging and monitoring services are hardcoded lists with two options, one of which is none: I'm using a checkbox instead of a dropdown.
- node pool 'local ssd count/local ssd disks' is a GB input in Ember - this is inaccurate, the google ui describes the field as: "For every node in a node-pool, the number of local SSD disks are attached."
- node pool preemptible is labeled as beta - it appears to be GA now https://cloud.google.com/kubernetes-engine/docs/how-to/preemptible-vms
- node pool has only 1 thing under 'show advanced options' so I just got rid of the show advanced toggle - seems excessive
- (autoscaling) node minimum is not configurable in Ember. The input component has a max value of...itself. The input is now validated so that the minimum number of nodes specified can't exceed the maximum number of nodes specified
- Ember had two 'description' inputs - one for the norman cluster object and one for the GKE cluster. I combined them in the same way that the 'name' input actually sets a norman cluster name and gkeconfig name (aks and eks have the same thing with names)
- image type options list is shorter and simpler - my ~excuses~ justification for this is detailed in inline comments
- Ember UI had a section called 'config' with what appears to be entirely networking stuff, plus a kubernetes version dropdown. I did not care for this, particularly given that the networking stuff is the most complicated part of the form, and re-arranged the sections so that the k8s version dropdown appears with location and labels ('general stuff' I guess)
- in the Ember location can't be changed once you start configuring the rest of the form...I allow it to be changed and re-fetch relevant GCP data when it does
- unlike EKS and AKS I've left projectid/cloud credential un-changeable once the user starts configuring the rest of the cluster (more in line with the Ember UX). This is because the project id field is an input, while EKS/AKS are able to rely entirely on dropdowns...the ux where we just automatically verify the new cred selection and re-fetch any data from azure/aws does not work well here
Areas or cases that should be tested
- GKE provisioning generally
- editing clusters when the underlying GKE cluster was provisioned successfully - most fields can't be edited, though new node pools can be added/fully configured
- editing clusters when GKE provisioning fails (one way to achieve this state consistently is to use one of the spoofed 'shared subnetwork' options) - the user should be able to edit gke config fields they otherwise wouldn't be able to
- validation: the nodepool name validation, min/max node validation is the most deviant and probably worthy of double-checking
- adding/removing nodepools on edit
- adding cluster members on create or on edit
- in Ember I see a request for GKE service accounts but I don't see them used anywhere in the UI so I left it out. if you see something say something.
Areas which could experience regressions
This PR is pretty self-contained and should not impact areas outside of GKE provisioning. There is a minor stylistic update to ArrayList so it matches KeyValue (both are used next to eachother in node pools and the difference in spacing was apparent, and ugly)
Screenshot/Video
Checklist
- [x] The PR is linked to an issue and the linked issue has a Milestone, or no issue is needed
- [x] The PR has a Milestone
- [x] The PR template has been filled out
- [x] The PR has been self reviewed
- [x] The PR has a reviewer assigned
- [x] The PR has automated tests or clear instructions for manual tests and the linked issue has appropriate QA labels, or tests are not needed
- [x] The PR has reviewed with UX and tested in light and dark mode, or there are no UX changes