VS Code客户端远程开发(DevPod)
DevPod远程开发
背景介绍
大模型时代,由于对GPU、内存等硬件资源的需求不断增加,相关应用在本地计算机上进行开发变得越来越困难。在本地编写代码,在远程服务器上编译、调试、运行的方式逐渐成为开发的主流模式,Devpod也因此受到越来越多的开发者的关注。
本文将介绍使用Devpod和VS Code做为开发工具,在弹性容器集群
中进行远程开发的基本流程。
什么是DevPod?
DevPod是一个创建基于容器技术的开发环境的工具,通过配置devcontainer.json文件,开发者可以在本地、远程服务器和公有云等环境中创建出标准化的开发环境,满足不同开发者的需求。
DevPod的核心组件
devcontainer.json
开发者需要在自己的项目中创建.devcontainer/devcontainer.json
文件来定义开发环境,下面介绍几个常用的参数
配置 | 类型 | 说明 |
---|---|---|
image | string | 开发环境的基础镜像 |
customizations | object | 目前支持的开发工具和服务的配置项,完整清单请查看 |
portsAttributes | object | 设置需要转发宿主机的端口及其相关属性 |
postCreateCommand | string,array,object | 容器创建后执行的命令,一般用户安装依赖和进行项目的初始化操作 |
features | object | 需要安装的软件 完整清单请查看 |
示例:
{
"name": "Python 3",
"image": "registry.hd-01.alayanew.com:8443/public/mcr.microsoft.com/devcontainers/python:1-3.12"
// "features": {},
"customizations": {
// Configure properties specific to VS Code.
"vscode": {
"settings": {},
"extensions": [
"streetsidesoftware.code-spell-checker"
]
}
},
"portsAttributes": {
"9000": {
"label": "Hello Remote World",
"onAutoForward": "notify"
}
},
"postCreateCommand": "pip3 install -r requirements.txt"
}
Workspace
Worksapce是一个容器化的开发环境,包含项目源码和相关依赖项。
Providers
Providers是用于在不同的环境(Docker、Kubernetes、AWS、Azure等)上创建、管理和运行Workspace的CLI程序,使用provider.yaml
文件定义相关配置。
使用DevPod和VS Code远程开发
DevPod支持命令行和客户端两种使用方式,本文档中使用命令行的方式进行操作。
在开始前,请参考官方文档安装DevPod。安装完成后,在命令行工具中执行devpod version
命令检查是否安装成功。
准备工作
本文中向大家展示了如何为Workspace添加额外的逻辑卷、环境变量等内容,为此准备了一些配置文件,请点击这里下载。
配置文件列表:
文件名 | 说明 |
---|---|
provider.yaml | 用于创建kuberneetes Provider的配置文件 |
pod-manifest-tmpl.yaml | 用于定义Workspace的Pod模板 |
remote-container-env | 用于添加额外的环境变量 |
创建Provider
进入配置文件所在目录,执行以下命令创建Provider
devpod provider add --name kubernetes ./provider.yaml
创建成功后,设置该Provider的参数
# 添加kubeconfig文件路径
devpod provider set-options -o KUBERNETES_CONFIG=$(pwd)/kubeconfig
# 设置storage class,用于保存Workspace中的项目源码等数据
devpod provider set-options -o STORAGE_CLASS=<STORAGE_CLASS_NAME>
# 设置namespace,Wrokspace将被创建在该namespace下
devpod provider set-options -o KUBERNETES_NAMESPACE=devpod
# 设置pod manifest模板文件路径
devpod provider set-options -o POD_MANIFEST_TEMPLATE=$(pwd)/pod-manifest-tmpl.yaml
# 设置额外的环境变量
devpod provider set-options -o ENV_FILE=$(pwd)/remote-container-env
# 设置资源限制
devpod provider set-options -o RESOURCES="limits.cpu=18,limits.memory=200G,limits.nvidia.com/gpu-h800=1,requests.cpu=18,requests.memory=200G,requests.nvidia.com/gpu-h800=1"
检查Provider的参数是否设置成功
devpod provider options kubernetes
启动Workspace
Provider创建完成后,执行以下命令启动Workspace
devpod up --provider kubernetes github.com/microsoft/vscode-remote-try-python \
--workspace-env-file ./remote-container-env \
--devcontainer-image registry.hd-01.alayanew.com:8443/public/mcr.microsoft.com/devcontainers/python:1-3.12 \
--ide vscode \
--debug
参数说明:
github.com/leoncamel/vscode-remote-try-python
:要启动的项目地址--workspace-env-file
:添加额外的环境变量文件--devcontainer-image
:更改devcontainer.json中指定的镜像--ide
:指定IDE,本文使用VS Code--debug
:开启调试模式,输出更多日志信息
启动成功后,VS Code会自动打开,并连接到DevPod中运行的容器。如有需要外部访问的服务,请在VS Code的"PORTS"中添加端口。
启动Workspace过程中,会涉及到拉取代码、下载安装DevPod agent等操作,请耐心等待。
打开Workspace
启动Workspace后,VS Code会自动打开,也可以通过下面的命令打开:
devpod up <WORKSPACE_NAME> --ide vscode