Cloud Code for VS Code で Kubernetes アプリケーションを実行する

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Cloud Code を使用すると、skaffold dev を利用して Kubernetes クラスタでアプリケーションを簡単に実行し、ライブで表示できます。ローカル クラスタ(Minikube や Docker Desktop など)、Google Kubernetes Engine、その他のクラウド プロバイダでアプリケーションを実行できます。

アプリケーションの実行

  1. コマンド パレットを開き(Ctrl/Cmd + Shift + P を押してください)、Cloud Code: Run on Kubernetes コマンドを実行します。
  2. 現在の Kubernetes コンテキストを使用してアプリを実行する(または目的のアプリに切り替える)かどうかを確認します。Kubernetes コンテキストの設定の詳細については、構成の設定をご覧ください。
  3. リモート クラスタをコンテキストとして選択した場合は、プロンプトが表示されたら、イメージを push するイメージ レジストリを選択します。Container Registry を使用している場合は、既存のレジストリを参照するか、作成するレジストリの名前を指定できます。プロジェクトで Artifact Registry API が有効で、1 つ以上の Artifact Registry リポジトリが有効になっている場合は、既存の Artifact Registry リポジトリを参照して選択できます。

    次のサンプルは、一般的なレジストリの場合にコンテナ イメージの保存場所を指定する方法を示しています。

    Artifact Registry {region}-docker.pkg.dev/{project_id}/{repo-name}
    Container Registry gcr.io/{project_id}
    Docker Hub docker.io/{account}
    非公開 Docker Hub リポジトリを使用している場合は、適切に認証されるようにしてください。
    AWS Container Repository(ECR) {aws_account_id}.dkr.ecr.{region}.amazonaws.com/{my-app}
    Azure Container Registry(ACR) {my_acr_name}.azurecr.io/{my-app}

    Cloud Code により、このイメージ レジストリと Kubernetes マニフェストで指定されたイメージ名が連結され、最終的なイメージ リポジトリ名が生成されます。

    詳細については、イメージ レジストリ取り扱いガイドをご覧ください。

    この選択は cloudcode.kubernetes 起動構成(.vscode/launch.json 内)に保存されます。

    Cloud Code はコンテナをビルドして、レジストリに push し、Kubernetes 構成をクラスタに適用して、ロールアウトを待ちます。

    ロールアウトが完了すると、宣言されたすべてのコンテナポートが Cloud Code によってマシンに自動的にポート転送され、URL が出力ウィンドウに表示されるので、ライブ アプリケーションを閲覧できます。

  4. セッションが完了すると、次のコンテキスト メニュー コマンドを使用できます。

    • デプロイログを開く: Cloud Code ログ エクスプローラで特定のデプロイのアプリケーション ログを開きます。
    • Open Service URL: 特定サービスのアプリケーション サービス URL をウェブブラウザで開きます。
  5. 起動構成でウォッチモードをオフにし、アプリケーションを変更して再ビルドと再デプロイを行う場合は、[Development sessions] ペインで、実行アクションを一時停止し、再ビルドと再デプロイのアイコン [Rebuild and redeploy the application] をクリックします。

  6. アプリケーションの実行を停止するには、デバッグ ツールバーの デバッグ停止アイコン [停止] をクリックします。

    アプリケーションを停止すると、デプロイされたすべての Kubernetes リソースがクラスタから削除されます。この動作は、起動構成の cleanUp フラグを使用して変更できます。

Skaffold ファイルの同期とホットリロードを有効にする

ローカルの開発用ワークフローの効率を高め、Pod の再ビルド、再デプロイ、再起動を行わずに済むように、Skaffold は変更されたファイルをデプロイ済みコンテナにコピーできます。つまり、静的ファイルとソースコード ファイルに変更を加えた場合、その変更は数秒で反映されるため、フィードバック ループが高速化されます。

静的ファイル(HTML ファイルや CSS ファイルなど)の場合、このファイルをコピーする動作はファイルの同期と呼ばれます。

ソースコード ファイルの場合、この動作はホットリロードと呼ばれ、次のファイル形式をサポートしています。

  • Go: *.go
  • Java: *.java, *.kt, *.scala, *.groovy, *.clj
  • NodeJS: *.js、*.mjs、*.coffee、*.litcoffee、*.json

ホットリロードを構成すると、Skaffold はサポートされているファイルの変更を検出し、これらの変更をクラスタで実行中のコンテナに同期します。ホットリロードをサポートしていないファイル形式が変更されると、イメージの再ビルドがトリガーされ、Pod が再起動します。

Buildpacks を優先ビルダーとして使用している場合、ファイルの自動同期とホット リロードはデフォルトで有効になっています。Docker などの他のビルダーでは、カスタマイズするアーティファクトの skaffold.yaml ファイルで sync セクションを指定できます。

次の同期設定のいずれかを行うことができます(優先順位順)。

  • auto(Jib および Buildpacks のアーティファクトのみ。Buildpacks が指定されていない場合のデフォルトです)
  • infer
  • manual

skaffold.yaml ファイル内の次のサンプル sync セクションでは、manual 同期を指定して、すべての /static-html HTML ファイルをコンテナ内の static フォルダに同期しています。

build:
  artifacts:
    - image: gcr.io/k8s-skaffold/node-example
      context: node
      sync:
        manual:
          - src: 'static-html/*.html'
            dest: static

ファイルの同期と同期ルールの指定の詳細については、ファイル同期に関する Skaffold のガイドをご覧ください。

シークレットの保管

API キー、パスワード、証明書などの潜在的なセンシティブ データがコードに含まれている場合は、シークレットとして保管することをおすすめします。Cloud Code を使用すると、シークレットをシークレット マネージャーに安全に保管し、必要に応じてプログラムで取得できます。Cloud Code でシークレットを作成および管理する方法の詳細については、シークレット マネージャー ガイドをご覧ください。

ビルダーとビルド環境の選択

ルートに skaffold.yaml ファイルが含まれていないプロジェクト、または .vscode/launch.json ファイル内の skaffold.yaml を参照していないプロジェクトは、Cloud Code UI を使用してビルド環境とビルド環境を選択できます。ローカルでのビルドは、独自のリソースを使用するため、無料です。Cloud Build でのビルドは、ターゲット マシンのプロセッサ アーキテクチャと一致していない低速のマシンに適しています。Cloud Build を使用してアプリケーションをビルドする場合のコストについては、Cloud Build の料金をご覧ください。

サンプルのいずれかを使用して UI を使用する場合は、ビルド アクションを実行する前に skaffold.yaml ファイルを削除します。UI を使用せずにビルダーとビルド環境を選択する手順については、Skaffold 構成の手動作成をご覧ください。

  1. skaffold.yaml ファイルのないプロジェクトでコマンド パレットを開き(Ctrl/Cmd+Shift+P を押下するか、[表示] > コマンド パレット をクリック)、Cloud Code: Run on Kubernetes または Cloud Code: Debug on Kubernetes を実行します。

  2. ビルド環境を選択します。

    Cloud Build を選択する場合は、イメージ レジストリを指定します。

  3. 各イメージのビルダー(Docker または Buildpack)とその設定を指定します。

  4. 構成オプションのチェックボックスをオンまたはオフにして、[Debug] または [Run] をクリックします。

選択したオプションは skaffold.yaml ファイルに保存され、直接編集してカスタマイズできます。

起動構成のカスタマイズ

アプリケーションの実行方法を構成するには、skaffold.yaml ファイルをカスタマイズします。

.vscode/launch.json ファイルの cloudcode.kubernetes 構成で次のフィールドを指定して、起動を構成することもできます。

  • skaffoldConfig: ビルドとデプロイの設定を含む Skaffold 構成ファイルを指定します。
  • profile: 使用する Skaffold プロファイルを指定します。定義されていない場合は、デフォルトのプロファイルが使用されます。
  • imageRegistry: イメージを push するイメージ レジストリを指定します。
  • watch: ワークスペース内の変更を監視し、アプリケーションを再実行するかどうかを指定します。明示的に false に設定されていない限り、デフォルトでは true です。
  • cleanUp: アプリケーションの終了後にクラスタにデプロイされた Kubernetes リソースを削除するかどうかを指定します。明示的に false に設定されていない限り、デフォルトでは true です。
  • portForward: クラスタに公開された Kubernetes リソースをローカルマシンにポート転送するかどうかを指定します。明示的に false に設定されていない限り、デフォルトでは true です。

サポートの利用

フィードバックを送信するには、GitHub で問題を報告します。または、Stack Overflow で質問します。