Multiple Cells with one GDK
Overview
Today GDK consists of :
- Makefiles to build various components like
bundle install
, Gitaly,yarn install
. - Ability to
gdk update
and get latest of everything -
Procfile
to run manage components, e.g.gdk status
,gdk start rails-web
Cells
With Cells, we now need a development environment that can manage multiple GitLab instances. Options:
-
Use an approach similar to docker-compose to create/update/remove multiple cells. Details / PoC in !3685 (closed)
- Advantages: Declarative, so easy to update
- Disadvantages: Requires each cell to be updated independently
-
Alternatively, maybe we can modify
Procfile
to run multiple copies of each component. Something like :rails-web: exec /usr/bin/env CACHE_CLASSES=$cache_classes BUNDLE_GEMFILE=$bundle_gemfile ENABLE_BOOTSNAP=true RAILS_ENV=development RAILS_RELATIVE_URL_ROOT=$relative_url_root ACTION_CABLE_IN_APP=true ACTION_CABLE_WORKER_POOL_SIZE=4 GITALY_DISABLE_REQUEST_LIMITS=false support/exec-cd gitlab bin/web start_foreground rails-web-2: exec /usr/bin/env CACHE_CLASSES=$cache_classes BUNDLE_GEMFILE=$bundle_gemfile ENABLE_BOOTSNAP=true RAILS_ENV=development RAILS_RELATIVE_URL_ROOT=$relative_url_root ACTION_CABLE_IN_APP=true ACTION_CABLE_WORKER_POOL_SIZE=4 GITALY_DISABLE_REQUEST_LIMITS=false support/exec-cd gitlab bin/web start_foreground
- PoC in !3721 (closed)
- Disadvantages:
- Need to update
lib/gdk.rb
andlib/gdk/config.rb
to support multiple configs - Most services require file-based configs like
gitlab/config/gitlab.yml
- Need to update
-
Switch to GCK (https://gitlab.com/gitlab-org/gitlab-compose-kit) instead.
- GCK doesn't support everything today that GDK has (e.g. Vite)
Impacted categories
The following categories relate to this issue:
-
gdk-reliability - e.g. When a GDK action fails to complete. -
gdk-usability - e.g. Improvements or suggestions around how the GDK functions. -
gdk-performance - e.g. When a GDK action is slow or times out.
Steps to replicate (optional)
Proposal (optional)
Environment (optional)
- Operating system name:
<!-- output of `uname -a` command -->
- Architecture:
<!-- output of `arch` command -->
- The contents of your
gdk.yml
(if any) - Ruby version:
<!-- output of `ruby --version` command -->
- GDK version:
<!-- output of `git rev-parse --short HEAD` command -->
Edited by Thong Kuah