Skip to content

feat(QOV-1954): add --ephemeral flag with clone/debug modes to qovery shell#652

Open
Guimove wants to merge 3 commits into
mainfrom
feat/ephemeral-shell
Open

feat(QOV-1954): add --ephemeral flag with clone/debug modes to qovery shell#652
Guimove wants to merge 3 commits into
mainfrom
feat/ephemeral-shell

Conversation

@Guimove
Copy link
Copy Markdown
Contributor

@Guimove Guimove commented May 29, 2026

Jira: https://qovery.atlassian.net/browse/QOV-1954

Summary

  • Adds --ephemeral flag to qovery shell
  • Adds --mode flag (clone or debug) to control the ephemeral behavior
  • When --ephemeral is set, routes to /shell/ephemeral instead of /shell/exec
  • --mode clone (default): spawns a new isolated pod from the service image (Heroku-style, HIPAA-safe)
  • --mode debug: injects an ephemeral container into an existing running pod (kubectl-debug style, shares network/PID namespace)
  • Warning printed if --mode is set without --ephemeral

Usage

# Normal shell (existing behavior)
qovery shell

# Ephemeral shell -- clone mode (new isolated pod, default)
qovery shell --ephemeral --mode clone \
  --organization myorg --project myproject --environment myenv --service myservice

# Ephemeral shell -- debug mode (inject into existing pod)
qovery shell --ephemeral --mode debug \
  --organization myorg --project myproject --environment myenv --service myservice

# Custom command (e.g. Django shell_plus)
qovery shell --ephemeral --mode clone --command python,manage.py,shell_plus \
  --organization myorg --project myproject --environment myenv --service myservice

# Via console URL
qovery shell --ephemeral --mode clone <qovery_console_service_url>

Depends on

rust-backend MR !635 must be merged and deployed first: https://gitlab.com/qovery/backend/rust-backend/-/merge_requests/635

The new /shell/ephemeral WebSocket endpoint is implemented there.

Test plan

  • qovery shell (no flag) -- verify existing behavior unchanged
  • qovery shell --ephemeral --mode clone -- interactive selection, verify new pod spawns and is deleted on exit
  • qovery shell --ephemeral --mode clone -- pod deleted on Ctrl+C
  • qovery shell --ephemeral --mode debug -- verify ephemeral container injected into existing pod
  • qovery shell --ephemeral --mode clone --command python,manage.py,shell_plus -- custom command
  • qovery shell --mode clone (without --ephemeral) -- verify warning printed, normal shell opened
  • Via console URL with --ephemeral --mode clone

Guimove added 3 commits May 29, 2026 07:35
…mage

When --ephemeral is passed, qovery shell creates a new temporary pod using
the service's image and env vars instead of connecting to an existing pod.
The pod is automatically deleted when the session ends.

Depends on: rust-backend feat/ephemeral-shell (new /shell/ephemeral endpoint)
@Guimove Guimove changed the title feat(shell): add --ephemeral flag to spawn a debug pod from service image feat(QOV-1954): add --ephemeral flag with clone/debug modes to qovery shell May 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant