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:

  1. 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
  2. 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 and lib/gdk/config.rb to support multiple configs
      • Most services require file-based configs like gitlab/config/gitlab.yml
  3. 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:

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