Instance / group / project level serverless domains with SSL
## Description We are working towards https://gitlab.com/gitlab-org/gitlab/issues/30151 and https://gitlab.com/gitlab-org/gitlab/issues/26202. We decided to split these issues into a few smaller ones. This issue is about being able to define a serverless domain on the instance / group / project level. 1. As an instance administrator, a group maintainer and a project user, I want to define a instance-wide serverless domain that will be available for everyone to simplify their Knative cluster creation / configuration 1. I want to be able to go through a wizard that will tell me how to configure this domain. 1. I want to be able to upload my SSL cert / key or use Let's Encrypt for this 1. I want to be able to add more than one domain. These forms should be hidden behind a feature flag, until we resolve all the backstage works that needs to be done in GitLab Pages to support this. ## MVCs 1. just a single domain + custom certs. We would like to support this feature at the instance and project levels. 1. wizard about configuration 1. Let's Encrypt support 1. more than 1 domain ## First Iteration Proposal Follow the same pattern as base domain: ![Screen_Shot_2019-09-30_at_3.09.21_PM](https://gitlab.com/gitlab-org/gitlab/uploads/f90e4ec9562610c1d5a5ce65e7c12d83/Screen_Shot_2019-09-30_at_3.09.21_PM.png) - Add setting to admin area and allow user to set a domain. For example: `*.serverless.gitlab.io` - Auto populate the Knative field on the cluster detail view (instance, group, or project level). For example: `root-example-project.serverless.gitlab.io` - Allow the user to change the domain prior to installing Knative. There is no need for an additional settings or checkbox to toggle between the default or custom domain. ## Tasks ### Frontend * [ ] UI for creating domains, similar to existing Pages domains, includes SSL certificate and key, but can be created at instance, group, and project levels ### Backend * [ ] Leverage existing data model used by Pages for domains, and store domain with provided SSL certificate and key in database for Pages to use
epic