Support disabling certain components

Based on the values that are provided, there should be a validation if a resource should be created.

As an example, the self-signed certs job is only reconciled if certain values are configured.

Conversely, most of the other resources in the reconcile loop are reconciled always. This could cause problems if a user disabled a component, such as Registry. The reconcile loop would expect to find Registry-related objects in the Helm template, but they won't exist due to the values provided.

Details

Chart Should Can
Self-signed certs y y
Migrations y n
NGINX y y
Gitaly y y
MinIO y y
Redis y y
PostgreSQL y y
Pages y y
GitLab shell y n
Task-Runner y n
Exporter n n
Webservice y n
Sidekiq y n
Registry y n

Acceptance criteria

  • The GitLab controller checks the Helm values first to confirm that a component should be included before reconciling it
  • (Testing the above) Disabling a component such as Registry a.) does not crash the GitLab Operator with a nil error, and b.) does not attempt to reconcile Registry-related objects (can also test with other components)
  • All components except for Webservice, Sidekikq, and Migrations can be disabled (!238 (merged))
  • Webservice, Sidekiq and Migrations can be disabled (!287 (merged))
Edited by Mitchell Nielsen