リモート開発で Kubernetes アプリを開発する

このページでは、Cloud Code for VS Code のリモート開発を使用する方法、つまり、コードベースをリモート コンテナで開いてアプリケーションをビルド、デバッグ、デプロイする方法について説明します。これにより、開発マシンの OS に関係なく、移植可能なアプリケーションを作成できます。

前提条件

Cloud Code 拡張機能をインストールするで説明されている設定のほか、リモート開発 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 で、>> $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 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 で質問します。