透過遠端開發功能開發 Kubernetes 應用程式

本頁面說明如何使用 Cloud Code for VS Code 的遠端開發功能,也就是在遠端容器中開啟程式碼庫,以便建構、偵錯及部署應用程式。這會建立可攜式的應用程式,無論開發機器的作業系統為何。

事前準備

除了安裝 Cloud Code 擴充功能一節所述的設定外,請安裝 遠端開發 VS Code 擴充功能套件。

設定

  1. 如要針對您使用的語言設定 .devcontainer 資料夾,其中包含 Dockerfile 和 Devcontainer.json 檔案,請依序按一下 開啟遠端視窗「Open a Remote Window」>「Add Dev Container Config Files」。或者,您也可以按照「在容器中進行遠端開發」一文中的步驟操作。

    按照提示操作後,您的工作區就會包含以下項目:

    • Dockerfile:定義容器映像檔,用於儲存要在遠端開發容器中安裝的開發人員工具。

    • Devcontainer.json:指示 VS Code 遠端工具擴充功能如何執行遠端開發容器。

  2. 開啟 Dockerfile,並新增指令來安裝 Google Cloud CLISkaffold。如需最新指令,請參閱安裝指南。

  3. 在 Dockerfile 中,新增指令,以便在 >> $HOME/.bashrc 指令前複製本機的 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 檔案會告知遠端容器擴充功能在容器中要公開哪些通訊埠、如何掛接磁碟機,以及要在遠端容器中安裝哪些擴充功能。下列範例 devcontainer.json 檔案會指定遠端容器擴充功能應安裝 VS Code 適用的 Cloud 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 上提問。