Easy installation of helper applications in Kubernetes cluster
Our effort in supporting Kubernetes (and GKE) integration (#35956) includes easy interaction with a cluster. On this cluster we want to make very easy to install applications that are needed for GitLab to work correctly and to use the cluster for review apps and deployments.
Allow users to install easily (one-click if possible) the following applications
- Helm tiller, needed to install other apps: #36629
- Ingress, for deployed apps: #35958
- GitLab Runner, to easily auto-scale your jobs: #32831 Stretch
This will be done in the brand new CI/CD > Cluster page, where a cluster must have been added or created previously.
We add an Applications section to the Cluster page. This section cannot be collapsed or expanded because we want it to have maximum visibility.
At the top of the section there is some descriptive text. There is also a link to documentation, which will explain the process of installing applications and what they're for
The application list is a table with the following rows:
- Name of the app, which is a link to documentation/vendor page
- Application description. TODO: Create descriptions for apps (current ones are taken from the Internet)
- A button to install each application
Helm Tiller is required to install other applications. If it is not installed beforehand, it will be automatically installed as a dependency when the user tries to install a different app.
While installation is happening, the
Install button changes to
Installing along with a spinner and becomes disabled.
After installation succeeds, the button changes to
Installed and remains disabled. A banner across the top notifies the user of the successful installation.
If possible, it would be good to have a way to auto-detect if the component is already installed in the cluster, and in that case, turn the button to
Errors may occur during the installation of applications. Errors will be communicated as red banners.
Since multiple apps may be installed at the same time, and each one could throw their own error, we need to show the error message inline with each row of the table.
If possible, any additional information returned by the API should be included in this error
If several errors occur for the same app, they should be displayed as separate lines in the same banner.
|Error in 1 app||Error in more than app|
What is it? Why should someone use this feature? What is the underlying (business) problem? How do you use this feature?
Who is this for? Provide one or more use cases.
Make sure these are completed before closing the issue, with a link to the relevant commit.