使用远程开发功能开发 Kubernetes 应用

本页面介绍了如何使用 Cloud Code for VS Code 的远程开发功能,即在远程容器中打开代码库,以便在其中构建、调试和部署应用。这样一来,无论开发机器的操作系统是什么,您都可以创建可移植的应用。

前提条件

除了安装 Cloud Code 扩展程序中所述的设置之外,还要安装 Remote Development VS Code 扩展程序包。

设置

  1. 如需设置包含 Dockerfile 和 Devcontainer.json 文件的 .devcontainer 文件夹(已针对您使用的语言进行配置),请依次点击 打开远程窗口 Open a Remote Window > Add Dev Container Config Files。或者,您也可以按照在容器中进行远程开发中的步骤操作。

    按照提示操作后,您的工作区将包含:

    • Dockerfile - 定义一个容器映像,其中包含要在远程开发容器中安装的开发者工具。

    • Devcontainer.json - 指示 VS Code 远程工具扩展程序如何运行远程开发容器。

  2. 打开 Dockerfile 并添加用于安装 Google Cloud CLISkaffold 的说明。如需了解最新命令,请参阅安装指南。

  3. 在 Dockerfile 中,添加用于在 >> $HOME/.bashrc 命令之前复制 localhost 的 gcloud CLI 和 Skaffold 配置的指令。或者,您也可以重写命令来安装 gcloud CLI 和 Skaffold。

    # Copy localhost's ~/.kube/config file into the container and swap out localhost
    # for host.docker.internal whenever a new shell starts to keep them in sync.
    RUN echo '\n\
    if [ "$SYNC_LOCALHOST_KUBECONFIG" == "true" ]; then\n\
      mkdir -p $HOME/.kube\n\
      cp -r $HOME/.kube-localhost/* $HOME/.kube\n\
      sed -i -e "s/localhost/host.docker.internal/g" $HOME/.kube/config\n\
    \n\
    fi' \
    if [ "$SYNC_LOCALHOST_GCLOUD" == "true" ]; then\n\
     mkdir -p $HOME/.config/gcloud\n\
     cp -r $HOME/.gcloud-localhost/* $HOME/.config/gcloud\n\
    \n\
    fi' \
    
  4. 打开 Devcontainer.json 文件,并添加以下运行实参以从本地主机复制 gcloud CLI 和 Skaffold 配置:

      "-e", "SYNC_LOCALHOST_KUBECONFIG=true",
      "-e", "SYNC_LOCALHOST_GCLOUD=true",
    
  5. 确保文件包含所需内容后,点击 打开远程窗口

devcontainer.json 文件示例

devcontainer.json 文件会告知 Remote Container 扩展程序要在容器中公开哪些端口、如何装载驱动器,以及要在远程容器中安装哪些扩展程序。以下示例 devcontainer.json 文件指定了 Remote Container 扩展程序应安装 Cloud Code for VS Code 扩展程序:

   "runArgs": [
         "-v","/var/run/docker.sock:/var/run/docker.sock",
         "--mount", "type=bind,source=${env:HOME}${env:USERPROFILE}/.kube,target=/root/.kube-localhost",
         "--mount", "type=bind,source=${env:HOME}${env:USERPROFILE}/.config/gcloud,target=/root/.gcloud-localhost",
         "-e", "SYNC_LOCALHOST_KUBECONFIG=true",
         "-e", "SYNC_LOCALHOST_GCLOUD=true",
         "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined"
      ]

后续步骤

获取支持

如需发送反馈,请在 GitHub 上报告问题,或者在 Stack Overflow 上提问。