{"id":19792665,"url":"https://github.com/making/code-server","last_synced_at":"2025-08-13T06:17:46.940Z","repository":{"id":44845954,"uuid":"240047263","full_name":"making/code-server","owner":"making","description":"VS Code Server on K8s","archived":false,"fork":false,"pushed_at":"2022-11-09T19:24:13.000Z","size":80,"stargazers_count":17,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-11T04:30:04.481Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/making.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-02-12T15:31:18.000Z","updated_at":"2024-10-16T07:49:52.000Z","dependencies_parsed_at":"2022-09-01T20:01:34.524Z","dependency_job_id":null,"html_url":"https://github.com/making/code-server","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Fcode-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Fcode-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Fcode-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/making%2Fcode-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/making","download_url":"https://codeload.github.com/making/code-server/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241132554,"owners_count":19915196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-12T07:07:38.401Z","updated_at":"2025-02-28T09:42:56.277Z","avatar_url":"https://github.com/making.png","language":"Dockerfile","readme":"# Code Server\n\n\n```\nmkdir -p $HOME/coder/workspace\ndocker run \\\n  --name code-server \\\n  --rm \\\n  -p 3000:3000 \\\n  -e PASSWORD=password  \\\n  -e PORT=3000 \\\n  -v $HOME/coder/workspace:/home/coder/workspace \\\n  -v $HOME/.m2:/home/coder/.m2 \\\n  ghcr.io/making/code-server\n```\n\n\n## Install Code Server on kubernetes\n\n```\ncurl -sL https://github.com/projectcontour/contour/raw/main/examples/kind/kind-expose-port.yaml \u003e kind-expose-port.yaml\nkind create cluster --config kind-expose-port.yaml \n```\n\nInstall\n\n* contour\n* cert-manager\n* kapp-controller\n* secretgen-controller\n\nas prerequisites\n\n```\nkubectl apply -f https://projectcontour.io/quickstart/contour.yaml\nkubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.9.1/cert-manager.yaml\nkubectl apply -f https://github.com/vmware-tanzu/carvel-kapp-controller/releases/download/v0.40.0/release.yml\nkubectl apply -f https://github.com/vmware-tanzu/carvel-secretgen-controller/releases/download/v0.10.3/release.yml\n```\n\n### Quick Install\n\n```\nytt -f config/code-server.yaml -f config/vaules.yaml -v namespace=developer-env -v suffix=demo1 | kubectl apply -f -\nytt -f config/code-server.yaml -f config/vaules.yaml -v namespace=developer-env -v suffix=demo2 | kubectl apply -f -\n```\n\n### Install using Carvel Package\n\n#### Install via kubectl\n\n```\nkubectl apply -f demo/namespace-role.yaml\nkubectl apply -f demo/package-repository.yaml\nkubectl apply -f demo/developer-env-demo1.yaml\nkubectl apply -f demo/developer-env-demo2.yaml\n```\n\n#### Install via tanzu cli\n\n```\ntanzu package repository add code-server-repo \\\n  --url ghcr.io/making/code-server-repo:0.1.0 \\\n  --namespace developer-env\n```\n\n```\n$ tanzu package available list -n developer-env\n- Retrieving available packages... \n  NAME                      DISPLAY-NAME  SHORT-DESCRIPTION       LATEST-VERSION  \n  code-server.pkg.maki.lol  Code Server   VS Code in the browser  0.1.0  \n\n$ tanzu package available get code-server.pkg.maki.lol/0.1.0 --values-schema -n developer-env\n| Retrieving package details for code-server.pkg.maki.lol/0.1.0... \n  KEY                               DEFAULT                         TYPE     DESCRIPTION                                                                                         \n  code_server.external_url_format   https://code-server-{}.vcap.me  string   External URL format                                                                                 \n  code_server.storage_size          10Gi                            string   Storage Size                                                                                        \n  code_server.image                 \u003cnil\u003e                           string   Image name to override the default code server image                                                \n  code_server.image_pull_secrets    []                              array    Image pull secrets for code server                                                                  \n  code_server.args                  \u003cnil\u003e                           array    Extra args to the code server                                                                       \n  code_server.auth_disabled         false                           boolean  Whether to disable authentication.                                                                  \n  code_server.clean                 false                           boolean  Whether to clean extension directory etc.                                                           \n  code_server.clusterissuer         \u003cnil\u003e                           string   ClusterIssuer name to generate the code server's certificate                                        \n  code_server.create_namespace      true                            boolean  Whether to create the namespace                                                                     \n  code_server.env                   []                              array    Extra env to the code server                                                                        \n  code_server.ingress.tls_disabled  false                           boolean  Whether to disable tls.                                                                             \n  code_server.ingress.annotations   map[]                           \u003cnil\u003e    Additional annotations on the ingress resource                                                      \n  code_server.ingress.class_name    \u003cnil\u003e                           string   Explicit Ingress class name in spec.ingressClassName                                                \n  code_server.ingress_class         \u003cnil\u003e                           string   Explicit Ingress class name in annotations (deprecated in favor of code_server.ingress.class_name)  \n  code_server.init_script                                           string   Additional script inside initContainer                                                              \n  namespace                         demo                            string   Namespace to install the code server                                                                \n  resources.limits.cpu              2000m                           string   Limits describes the maximum amount of cpu resources allowed.                                       \n  resources.limits.memory           4Gi                             string   Limits describes the maximum amount of memory resources allowed.                                    \n  resources.requests.cpu            1000m                           string   Requests describes the minimum amount of cpu resources required.                                    \n  resources.requests.memory         2Gi                             string   Requests describes the minimum amount of memory resources required.                                 \n  suffix                            \u003cnil\u003e                           string   Suffix of the namespace      \n```\n\n```\ncat \u003c\u003cEOF \u003e values-demo1.yaml\nnamespace: developer-env\nsuffix: demo1\nEOF\ntanzu package install code-server-demo1 -p code-server.pkg.maki.lol -v 0.1.0 --values-file values-demo1.yaml -n developer-env\n\n\ncat \u003c\u003cEOF \u003e values-demo2.yaml\nnamespace: developer-env\nsuffix: demo2\nEOF\ntanzu package install code-server-demo2 -p code-server.pkg.maki.lol -v 0.1.0 --values-file values-demo2.yaml -n developer-env\n```\n\n### Verify installation\n\n```\n$ kubectl get ingress -A                    \nNAMESPACE             NAME          CLASS    HOSTS                       ADDRESS          PORTS     AGE\ndeveloper-env-demo1   code-server   \u003cnone\u003e   code-server-demo1.vcap.me   *******          80, 443   8m46s\ndeveloper-env-demo2   code-server   \u003cnone\u003e   code-server-demo2.vcap.me   *******          80, 443   4m22s\n```\n\n```\n$ kubectl get secret -n developer-env-demo1 code-server-password -otemplate='{{.data.password | base64decode}}'\ngjknfacl031ndksztukfuxv916exbbjbhdvryaud\n$ kubectl get secret -n developer-env-demo2 code-server-password -otemplate='{{.data.password | base64decode}}'\nk1rhx2sflv9oohzhaemubdoie6emiuao65kqd962\n```\n\nGo to \n* https://code-server-demo1.vcap.me for demo1\n* https://code-server-demo2.vcap.me for demo2\n\n\nYou can install Tanzu VSCode Extensions using runnning `install-from-tanzunet.sh` on the home directory. You will be prompted for the TanzuNet API Token and the target TAP version.\n\nInner Loop Development on the VS Code Server is available.\n\n\u003cimg width=\"1024\" alt=\"image\" src=\"https://user-images.githubusercontent.com/106908/178522858-d6d2446b-286e-40b8-abdb-1cc9261352ea.png\"\u003e\n\n\n## How to configure values\n\nUpdate `values.yaml` in the Secret\n\n```yaml\n# ...   \n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: developer-env-demo1-values\n  namespace: developer-env\nstringData:\n  values.yaml: |\n    ---\n    namespace: developer-env\n    suffix: demo1\n    code_server:\n      external_url_format: https://code-server-{}.code.example.com\n```\n\nIn the above example, `https://code-server-demo1.code.example.com` is the url\n\n## Development Note\n\n### How to publish an imgpkg bundle\n\n```\nVERSION=0.1.0\ndocker build -t ghcr.io/making/code-server . \ndocker push ghcr.io/making/code-server\nkbld -f config/code-server.yaml --imgpkg-lock-output config/.imgpkg/images.yml\nimgpkg push -b ghcr.io/making/code-server-bundle:${VERSION} -f config\n```\n\n### How to publish a package\n\n```\nytt -f config/vaules.yaml --data-values-schema-inspect -o openapi-v3 \u003e /tmp/schema-openapi.yml\nytt -f package-template.yml  --data-value-file openapi=/tmp/schema-openapi.yml -v version=${VERSION} \u003e pkg-repo/packages/code-server.pkg.maki.lol/${VERSION}.yml\nkbld -f pkg-repo/packages --imgpkg-lock-output pkg-repo/.imgpkg/images.yml\nimgpkg push -b ghcr.io/making/code-server-repo:${VERSION} -f pkg-repo\n```\n\nUpdate `demo/*.yaml` and `README.md`\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaking%2Fcode-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaking%2Fcode-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaking%2Fcode-server/lists"}