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

本頁說明如何使用 Cloud Code for VS Code Remote Development,也就是在遠端容器中開啟程式碼集,並在該容器中建構、偵錯及部署應用程式。這樣一來,無論開發機器的作業系統為何,都能建立可攜式應用程式。

必要條件

除了「安裝 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 Remote Tools 擴充功能如何執行遠端開發容器。

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

  3. 在 Dockerfile 中,新增指令來複製 localhost 的 gcloud CLI 和 Skaffold 設定,然後再執行 >> $HOME/.bashrc 指令。或者,您也可以重新編寫指令,安裝 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 檔案,並新增下列執行引數,從 localhost 複製 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 上提問。