Skip to content

start_dev: error setting up proxy commands in container #2174

@Nafalgar

Description

@Nafalgar

What happened?
Starting the dev pipeline results in creating the pod successfully and starting the proxies, however the process exits with a 'error writing command' message:

info Using namespace '<namespace redacted>'
info Using kube context '<context redacted>'
deploy:bot Skipping deployment bot
dev:bot Waiting for pod to become ready...
dev:bot Selected botservice-deployment-devspace-84447cd8f-pchsf:botservice (pod:container)
dev:bot open  Opening 'http://localhost:3978' as soon as application will be started
dev:bot sync  Sync started on: ./ <-> ./
dev:bot sync  Waiting for initial sync to complete
dev:bot ssh   Port forwarding started on: 10997 -> 8022
dev:bot ports Port forwarding started on: 5186 -> 5186, 3978 -> 3978
dev:bot proxy Port forwarding started on: 10210 <- 10567
dev:bot ssh   Use 'ssh bot.bot.devspace' to connect via SSH
dev:bot sync  Initial sync completed
start_dev: error setting up proxy commands in container:  Error: error writing command '/usr/local/bin/devspace': open /usr/local/bin/devspace: read-only file system
Usage:
  devspacehelper proxy-commands configure [flags]

Flags:
      --commands strings     Commands to overwrite
      --git-credentials      If git credentials should get configured
  -h, --help                 help for configure
      --private-key string   Private key to use
      --public-key string    Public key to use
      --working-dir string   Working dir to use

error writing command '/usr/local/bin/devspace': open /usr/local/bin/devspace: read-only file system command terminated with exit code 1
fatal exit status 1

What did you expect to happen instead?
The pipeline to execute successfully and set up the dev environment as intended

How can we reproduce the bug? (as minimally and precisely as possible)

My devspace.yaml:

version: v2beta1
name: bot

# This is a list of `pipelines` that DevSpace can execute (you can define your own)
pipelines:
  # This is the pipeline for the main command: `devspace dev` (or `devspace run-pipeline dev`)
  dev:
    run: |-
      run_dependencies --all       # 1. Deploy any projects this project needs (see "dependencies")
      create_deployments --all     # 2. Deploy Helm charts and manifests specfied as "deployments"
      start_dev bot                # 3. Start dev mode "app" (see "dev" section)
  # You can run this pipeline via `devspace deploy` (or `devspace run-pipeline deploy`)
  deploy:
    run: |-
      run_dependencies --all                            # 1. Deploy any projects this project needs (see "dependencies")
      build_images --all -t $(git describe --always)    # 2. Build, tag (git commit hash) and push all images (see "images")
      create_deployments --all                          # 3. Deploy Helm charts and manifests specfied as "deployments"

# This is a list of `images` that DevSpace can build for this project
# We recommend to skip image building during development (devspace dev) as much as possible
images:
  app:
    image: <redacted>
    dockerfile: <redacted>
    context: <redacted>

# This is a list of `deployments` that DevSpace can create for this project
deployments:
  bot:
    # This deployment uses `helm` but you can also define `kubectl` deployments or kustomizations
    helm:
      # We are deploying this project with the Helm chart you provided
      chart:
        name: ../Kubernetes/Helm/bot
      # Under `values` we can define the values for this Helm chart used during `helm install/upgrade`
      # You may also use `valuesFiles` to load values from files, e.g. valuesFiles: ["values.yaml"]
      valuesFiles: ["../Kubernetes/Helm/bot/values-test.yaml"]

# This is a list of `dev` containers that are based on the containers created by your deployments
dev:
  bot:
    # Search for the container that runs this image
    imageSelector: <redacted>
    # Replace the container image with this dev-optimized image (allows to skip image building during development)
    devImage: ghcr.io/loft-sh/devspace-containers/dotnet:6.0-alpine
    # Sync files between the local filesystem and the development container
    sync:
      - path: ./
        uploadExcludeFile: .dockerignore
    # Open a terminal and use the following command to start it
    terminal:
      command: ./devspace_start.sh
    # Inject a lightweight SSH server into the container (so your IDE can connect to the remote dev env)
    ssh:
      enabled: true
    # Make the following commands from my local machine available inside the dev container
    proxyCommands:
      - command: devspace
      - command: kubectl
      - command: helm
      - command: git
    # Forward the following ports to be able access your application via localhost
    ports:
      - port: "5186"
      - port: "3978"
    # Open the following URLs once they return an HTTP status code other than 502 or 503
    open:
      - url: http://localhost:3978

# Use the `commands` section to define repeatable dev workflows for this project 
commands:
  migrate-db:
    command: |-
      echo 'This is a cross-platform, shared command that can be used to codify any kind of dev task.'
      echo 'Anyone using this project can invoke it via "devspace run migrate-db"'

# Define dependencies to other projects with a devspace.yaml
# dependencies:
#   api:
#     git: https://...  # Git-based dependencies
#     tag: v1.0.0
#   ui:
#     path: ./ui        # Path-based dependencies (for monorepos)

Local Environment:

  • DevSpace Version:devspace version 6.0.0-beta.6
  • Operating System: windows
  • ARCH of the OS: AMD64
    Kubernetes Cluster:
  • Cloud Provider: azure
  • Kubernetes Version:
    Client Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.5", GitCommit:"5c99e2ac2ff9a3c549d9ca665e7bc05a3e18f07e", GitTreeState:"clean", BuildDate:"2021-12-16T08:38:33Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"windows/amd64"}
    Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.6", GitCommit:"42a9a90338d705a1650fb68b7891f84b62adb0b0", GitTreeState:"clean", BuildDate:"2022-06-15T04:25:21Z", GoVersion:"go1.16.12", Compiler:"gc", Platform:"linux/amd64"}

Anything else we need to know?
The devspace, helm, git, kubectl commands are all present in the pod in the intended path ('/usr/local/bin/') and are executable without errors, it does not have write permission and I can not use chmod to assign these

/kind bug

Metadata

Metadata

Assignees

No one assigned

    Labels

    devspacekind/enhancementEnhancement of an existing feature / improvementkind/questionFurther information is requestedneeds-informationIndicates an issue needs more information to work on it

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions