Skip to content

Deploying multiple code-servers in a k3s cluster using sub-paths, file loading sharing problem occurs #4939

Closed
@heroyanglonghui

Description

@heroyanglonghui

Is there an existing issue for this?

  • I have searched the existing issues

OS/Web Information

  • Web Browser: Chrome
  • Local OS: macOS 12.2.1
  • Remote OS: CentOS 8.2
  • Remote Architecture: amd64
  • code-server --version: 4.0.2
  • k3d version v5.3.0
  • k3s version v1.22.6-k3s1
  • kubectl version : Client Version: version.Info{Major:"1", Minor:"23", GitVersion:"v1.23.4", GitCommit:"e6c093d87ea4cbb530a7b2ae91e54c0842d8308a", GitTreeState:"clean", BuildDate:"2022-02-16T12:38:05Z", GoVersion:"go1.17.7", Compiler:"gc", Platform:"linux/amd64"}
    Server Version: version.Info{Major:"1", Minor:"22", GitVersion:"v1.22.6+k3s1", GitCommit:"3228d9cb9a4727d48f60de4f1ab472f7c50df904", GitTreeState:"clean", BuildDate:"2022-01-25T01:27:44Z", GoVersion:"go1.16.10", Compiler:"gc", Platform:"linux/amd64"}
  • traefik version 2.6.1
  • helm version v3.8.0

Steps to Reproduce

Deployment of two code-servers,using sub-path access
eg: http://xxxx:8082/v2/ , http://xxxx:8082/v3/

  1. k3d cluster create dev-cluster --port 8082:80@loadbalancer --servers 1 --agents 2 --k3s-arg "--disable=traefik@server:*"
  2. helm install traefik traefik/traefik -f values.yaml
  3. kubectl apply -f code-server-v2.yaml
  4. kubectl apply -f code-server-v3.yaml

code-server-v2 deployment list

apiVersion: v1
kind: Namespace
metadata:
  name: dev-v2
---
apiVersion: v1
kind: Service
metadata:
 name: code-server-v2
 namespace: dev-v2
spec:
 ports:
 - port: 8091
   targetPort: 8080
 selector:
   app: code-server-v2
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: code-server-v2
  name: code-server-v2
  namespace: dev-v2
spec:
  selector:
    matchLabels:
      app: code-server-v2
  template:
    metadata:
      labels:
        app: code-server-v2
    spec:
      containers:
      - image: codercom/code-server:4.0.2
        imagePullPolicy: IfNotPresent
        name: code-server-v2
        ports:
        - containerPort: 8080
        env:
        - name: PASSWORD
          value: "code221"
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: mw-admin-v2
  namespace: dev-v2
spec:
  stripPrefix:
    prefixes:
      - "/v2"
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: code-server-v2
  namespace: dev-v2
spec:
  entryPoints:
    - web
  routes:
    - kind: Rule
      match: PathPrefix(`/v2`)
      services:
        - name: code-server-v2
          port: 8091
      middlewares:
        - name: "mw-admin-v2"

code-server-v3 deployment list

apiVersion: v1
kind: Namespace
metadata:
 name: dev-v3
---
apiVersion: v1
kind: Service
metadata:
name: code-server-v3
namespace: dev-v3
spec:
ports:
- port: 8092
  targetPort: 8080
selector:
  app: code-server-v3
---
apiVersion: apps/v1
kind: Deployment
metadata:
 labels:
   app: code-server-v3
 name: code-server-v3
 namespace: dev-v3
spec:
 selector:
   matchLabels:
     app: code-server-v3
 template:
   metadata:
     labels:
       app: code-server-v3
   spec:
     containers:
     - image: codercom/code-server:4.0.2
       imagePullPolicy: IfNotPresent
       name: code-server-v3
       ports:
       - containerPort: 8080
       env:
       - name: PASSWORD
         value: "code331"
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
 name: mw-admin-v3
 namespace: dev-v3
spec:
 stripPrefix:
   prefixes:
     - "/v3"
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
 name: code-server-v3
 namespace: dev-v3
spec:
 entryPoints:
   - web
 routes:
   - kind: Rule
     match: PathPrefix(`/v3`)
     services:
       - name: code-server-v3
         port: 8092
     middlewares:
       - name: "mw-admin-v3"

Expected

Visit http://xxxx:8082/v2/ and http://xxxx:8082/v3/ do not interfere with each other

Actual

Creating a page and accessing it in code-server-v3, refreshing the page in code-server-v2 can actually access it, and it will prompt that there is no file

image

Logs

No response

Screenshot/Video

2022-03-01.11.14.39.mov

Does this issue happen in VS Code?

  • I cannot reproduce this in VS Code.

Are you accessing code-server over HTTPS?

  • I am using HTTPS.

Notes

I am using HTTP

Metadata

Metadata

Assignees

No one assigned

    Labels

    waiting-for-infoWaiting for more information from submitter

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions