Skip to content

Migrate tools/setup-gcp to ai-on-gke/substrate-gke #2304

Open

Description

Description

Currently, the GCP setup tools for Substrate are located in this repository under tools/setup-gcp. We propose migrating this directory and its contents to the GCP-owned repository at ai-on-gke/substrate-gke.

Rationale

  • Ownership & Maintenance: The ai-on-gke organization is owned and maintained by the GCP team, making it the natural, authoritative home for GCP-specific setup scripts and configurations.
  • Separation of Concerns: Moving cloud-specific deployment logic out of the core substrate repository helps keep the core codebase cloud-agnostic.
  • Discoverability: Users looking to deploy Substrate on GKE will find all related scripts and deployment configurations consolidated in one place.

Proposed Action Items

  • Port the contents of tools/setup-gcp to ai-on-gke/substrate-gke.
  • Update any deployment guides, READMEs, and documentation in this repository to point users to the new location.
  • Delete the tools/setup-gcp directory from this repository once the migration is complete.
  • Ensure that no existing CI/CD pipelines or automated tests are broken by this removal.

Please let me know if there are any concerns or additional steps required before we proceed with this migration!

Activity

  1. stshrive commented on Oct 7, 2026

    @stshrive
    Collaborator

    As I was scoping this out, I have identified various other locations that include GCP-specific logic. I don't know that this is comprehensive yet, I will dig into it further.

    1. hack/teardown.sh
    2. Various ate-setup arguments are pass through GCP settings
    3. A lot of docs reference GCP
    4. Benchmarking (e.g. orchestrator.py) (FYI Max Smythe (@maxsmythe))
  2. maxsmythe commented on Oct 8, 2026

    @maxsmythe
    Collaborator

    Glancing through orchestrator, I don't see any cloud-specific imports. Just the transitive dependency on the installer?

  3. stshrive commented on Oct 9, 2026

    @stshrive
    Collaborator

    I have done a bit of an analysis on this and I am concerned that the requisite tooling to re-inject GCP settings as to prevent major breakages is currently missing and there is no existing consensus on how to solve the problem. The fact that provider-specific tooling should be moved out is well-established as a design pattern, however there is no simple "move it somewhere else" solution available.

    Finalizing this migration will require an agreement for how provider-specific settings can be articulated. There at least four possible options for this that I am aware of not all of them have support.

    1. Helm
    2. ate-setup + rendered kustomize configs that need patched.
    3. A plugin system in ate-setup
    4. Completely custom tools for provider-specific install with some contract provided by ate-setup.

    I am working out the details of each of those options and can update this issue once they are ready for review.

  4. stshrive commented on Oct 9, 2026

    @stshrive
    Collaborator

    There is broader alignment needed on how this would end up working. The installation story itself is not well defined, so simply removing the GCP bits could land us in another suboptimal implementation of something.

    Here is the proposal to make the install story more extensible

  5. skamboj commented on Oct 16, 2026

    @skamboj
    Contributor

    We run Substrate on our company’s managed Kubernetes platform. Its supported production deployment path is Helm; operators cannot normally run ate-setup, kubectl scripts, or arbitrary installer binaries directly against production clusters.

    Because of that constraint, Helm would be our preferred option among the four described here. ate-setup plus Kustomize patches remains useful for development and could provide much of the underlying implementation, but we would need to package its output ourselves before using it in production.

    We understand the concerns raised on #79 about requiring Helm, duplicating installation logic, and disrupting the current ko workflow. We are not suggesting that Helm must replace those workflows. One possible model would be:

    • Keep the existing manifests and Kustomize structure as the canonical source.
    • Keep ko and ate-setup for development and rapid iteration.
    • Offer a versioned Helm chart as an additional release artifact.
    • Keep provider-specific infrastructure and Helm values in provider repositories.
    • Allow externally managed infrastructure and secrets instead of requiring imperative bootstrap steps.

    Based on our installation, it would be helpful for a generic chart to support configuration for image registries and mirrors, external PostgreSQL and object storage, trust bundles, credential providers, optional observability resources, sandbox assets, and component arguments.

    A rendered manifest or an ate-setup extension hook would still be valuable, but a supported Helm chart would make adoption substantially easier in environments where Helm is the approved deployment interface. We would be happy to contribute to or test such an installation path on our clusters.

  6. EItanya commented on Oct 21, 2026

    @EItanya
    Collaborator

    Steven Shriver (@stshrive) is this issue still relevant as an M3 blocker?

  7. stshrive commented on Oct 21, 2026

    @stshrive
    Collaborator

    The road map I put together sets the direction we want to move in. I think it would be nice to finish this all before GA, however I think the scope is broader than the original issue uncovered and the timelines don't match up here. Based on some conversations I've had related to this work, it shouldn't be a hard blocker for M3.

  8. EItanya commented on Oct 21, 2026

    @EItanya
    Collaborator

    Ok, i'm removing that milestone

  9. removed this from the M3 milestone on Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area/dev-infrakind/docsImprovements or additions to documentationprio/P0Highest priority / required for next milestone

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions