このページでは、Cloud Code での Kubernetes 開発の概要について説明します。
Cloud Code の Kubernetes セクションを使用する
[Kubernetes] セクションを使用すると、IDE から直接、クラスタ、ノード、ワークロードなどに関する情報にアクセスできます。 また、Kubernetes セクションで現在のコンテキストの設定、ログのストリーミングと表示、インタラクティブ ターミナルのオープン、リソースの説明の検索ができます。
![[Cloud Code Kubernetes] セクション](https://cloud.google.com/static/code/docs/vscode/images/vscode-k8s-section-dev-section.png?authuser=7&hl=ja)
Cloud Code は、Kubernetes リソースの取得に、MacOS / Linux の場合は $HOME/.kube
ディレクトリ、Windows の場合は %USERPROFILE%\.kube
に配置されたデフォルトの kubeconfig ファイルを使用します。Kubernetes セクション内から Kubeconfig ファイルを切り替えたり、新しい Kubeconfig ファイルを追加したりできます。Kubeconfig ファイルは、Kubernetes クラスタの詳細、証明書、クラスタに対する認証用シークレット トークンを含む YAML ファイルです。
デフォルトの kubeconfig 以外の kubeconfig ファイルを使用するには、kubeconfig ファイルを操作するガイドをご覧ください。
Kubernetes セクションにアクセスする
Kubernetes リソースを表示して管理するには、デバッグしようとすると、ローカルでアプリケーションを実行およびデバッグするための認証情報を認証するよう求められる場合があります。
[Development sessions] セクションにアクセスする
開発セッションを使用して Kubernetes アプリケーションを実行またはデバッグするか、テンプレートを使用してサンプル アプリケーションを作成します。
開発、デバッグのセッションを開始すると、[Development sessions] セクションに構造化ロギングビューが表示されます。
基本操作
[Kubernetes] セクションは kubectl
によって提供されます。クラスタにアクセスするように kubectl
構成ファイルを構成すると、アクティブまたは非アクティブのコンテキストに関係なく、[Kubernetes] セクションを使用して、クラスタの追加、クラスタのすべての Namespace、リソース、ノードの参照を行うことができます。
[Kubernetes] セクション
[Kubernetes] セクションのアイコンからアクセスできる一般的な Kubernetes のアクションは次のとおりです。
- add KubeConfig
- refresh Kubernetes セクションを更新する
- question_mark ウェブブラウザで Cloud Code Kubernetes ドキュメントを開く
[開発セッション] セクション
Kubernetes の [開発セッション] セクションのアイコンからアクセスできる Kubernetes のアクションは次のとおりです。
Kubernetes サンプル アプリケーションを開く
- play_arrow アプリケーションを実行する
アプリケーションをデバッグする
リソース名をコピーする
Kubernetes リソース名(コンテナ名とクラスタ名を含む)をクリップボードにコピーできます。リソース名をコピーするには、リソースを右クリックして [リソース名をコピー] を選択します。
![右クリック メニューを使用してリソース名をコピーする](https://cloud.google.com/static/code/docs/vscode/images/vscode-copy-resource-name.png?authuser=7&hl=ja)
リソースを更新する
Kubernetes セクションにより変更が監視され、更新を反映するために自動的に更新されます。Kubernetes リソースを強制的に更新して最新の情報を取得するには、リソースを右クリックして [更新] を選択します。
![右クリック メニューを使用して Pod を更新する](https://cloud.google.com/static/code/docs/vscode/images/vscode-refresh-resource.png?authuser=7&hl=ja)
![[Kubernetes] セクションの更新ボタン](https://cloud.google.com/static/code/docs/vscode/images/vscode-k8s-refresh-section.png?authuser=7&hl=ja)
リソースを説明する
クラスタ以外のリソースの詳細を表示するには、リソースを右クリックして [説明] を選択します。ターミナルが開き、リソース情報が表示されます。![右クリック メニューでリソースの詳細を説明する](https://cloud.google.com/static/code/docs/vscode/images/vscode-describe-resource.png?authuser=7&hl=ja)
起動構成をカスタマイズする
アプリケーションの実行方法を設定するには、skaffold.yaml
ファイルをカスタマイズできます。
.vscode/launch.json
ファイルの cloudcode.kubernetes
構成で次のフィールドを指定して、起動を構成することもできます。
- skaffoldConfig: ビルドとデプロイの設定を含む Skaffold 構成ファイルを指定します。
- profile: 使用する Skaffold プロファイルを指定します。定義されていない場合は、デフォルトのプロファイルが使用されます。
- imageRegistry: イメージを push するイメージ レジストリを指定します。
- watch: ワークスペース内の変更を監視し、アプリケーションを再実行するかどうかを指定します。明示的に false に設定されていない限り、デフォルトでは true です。
- cleanUp: アプリケーションの終了後にクラスタにデプロイされた Kubernetes リソースを削除するかどうかを指定します。明示的に false に設定されていない限り、デフォルトでは true です。
- portForward: クラスタに公開された Kubernetes リソースをローカルマシンにポート転送するかどうかを指定します。明示的に false に設定されていない限り、デフォルトでは true です。
リモート YAML を表示する
クラスタ内のリソースの YAML を表示するには、リソースを選択するかカーソルを合わせると、次の情報が表示されます。![](https://cloud.google.com/static/code/docs/vscode/images/vscode-edit-yaml-icon.png?authuser=7&hl=ja)
![](https://cloud.google.com/static/code/docs/vscode/images/vscode-view-yaml-icon.png?authuser=7&hl=ja)
![[YAML を表示] アイコンを使用して開いた Kubernetes Pod YAML](https://cloud.google.com/static/code/docs/vscode/images/vscode-view-yaml.png?authuser=7&hl=ja)
ログの表示
Kubernetes リソースから [Kubernetes] セクションにログをストリーミングして表示し、進捗状況をモニタリングできます。
ログビューアを開くには、Ctrl/Cmd+Shift+P
を押してコマンド パレットを開くか、[View] > [Command Palette] をクリックして [Cloud Code: View Logs] を選択します。
新しいエディタタブでログビューアが開きます。
Pod またはコンテナのログを表示するには、リソースを右クリックして [ログを表示] を選択します。
ターミナルを起動する
Pod とコンテナの場合は、Pod またはコンテナを右クリックして [ターミナルを取得] を選択することで、インタラクティブ ターミナルを開くことができます。
![インタラクティブ ターミナルを開く](https://cloud.google.com/static/code/docs/shell/images/shell-get-terminal.png?authuser=7&hl=ja)
リソース固有の操作
Kubernetes セクションには、クラスタ、Namespace、ノード、ワークロード(Deployment、レプリカセット、Pod、コンテナなど)、サービスと Ingress、構成(Secret、構成マップなど)、ストレージ(ボリュームなど)が表示されます。 Kubernetes セクションを使用すると、これらのリソースの一部に対して独自のアクションを実行できます。
クラスタ
- KubeConfig にクラスタを追加: 既存の GKE クラスタまたは minikube クラスタを追加するか、新しいクラスタを作成します。
[Add Cluster] ダイアログが表示されるので、使用するプロジェクトとクラスタを選択するか、新しいクラスタを作成します。
![クラスタ プラットフォームの選択](https://cloud.google.com/static/code/docs/shell/images/shell-cluster-choose-platform.png?authuser=7&hl=ja)
アクティブ クラスタに設定: 指定されたクラスタをアクティブとして設定し、構成済みの
kubectl
コンテキストがデフォルトでこのクラスタにアクセスするようにします。
Kubernetes セクションが自動的に更新され、該当するクラスタの横に Kubernetes の記号が表示されます。
クラスタに複数のコンテキストが構成されている場合は、使用可能なコンテキストの 1 つを選択して、現在のコンテキストとして設定できます。
Namespace
アクティブな Namespace に設定: 指定された Namespace をアクティブとして設定し、構成済みの
kubectl
コンテキストがデフォルトでこの Namespace にアクセスするようにします。アクティブとして設定する Namespace を右クリックします。
Kubernetes コンテキストは、クラスタ内の Namespace にすばやくアクセスするためのショートカットです。コンテキストは通常、minikube クラスタまたは GKE クラスタを起動すると自動的に作成されます。特定の Namespace に対して [現在のコンテキストに設定] オプションが表示されず、そのコンテキストを作成する場合は、ターミナルで kubectl config set-context
コマンドを使用して、好みのクラスタ、ユーザー、Namespace でコンテキストを設定します。
Pod
- ログを表示: Pod から [Kubernetes] セクション コンソールにログを表示します。
ターミナルの取得: Kubernetes セクション Console で Pod のターミナルを取得します。
また、実行中の Pod では、ラベルの横に色付きのステータス マークが表示されます。
- 赤: Pod は失敗状態です。
- 黄色: Pod が起動中または終了中です。
- 緑: Pod は正常で、実行中です
![Pod の横の正常な状態を示す緑色のチェックマーク](https://cloud.google.com/static/code/docs/vscode/images/vscode-pod-status-green.png?authuser=7&hl=ja)
コンテナ
- ログを表示: コンテナから [Kubernetes] セクション コンソールにログを表示します。
- ターミナルを取得: [Kubernetes] セクション コンソールでコンテナのターミナルを取得します。
デプロイメント
ログを表示: デプロイから [Kubernetes] セクション コンソールにログを表示します。
ライブ Deployment では、ラベルの横に色付きのステータス マーク、現在のレプリカ数、合計レプリカの数が表示されます。
- 黄色: Deployment に最小限の可用性がないか、イメージに問題があります。
- 緑: Deployment は正常で、最小限の可用性が確保されていました。
![正常な状態を示す緑色のデプロイ アイコン](https://cloud.google.com/static/code/docs/vscode/images/vscode-deploy-status-green.png?authuser=7&hl=ja)
ノード
クラスタのノードの Namespace の横に色付きのステータス マークが表示されます。
- 黄色: ノードにリソースの問題(メモリやディスクの可用性など)があります。
- 緑: ノードは正常です。
カスタム リソース定義(CRD)
Kubernetes セクションには、クラスタにインストールされ、使用可能なすべてのカスタム リソース定義(CRD)が表示されます。
![セクションのカスタム リソース定義のリスト](https://cloud.google.com/static/code/docs/vscode/images/vscode-crd-list.png?authuser=7&hl=ja)
次のステップ
- コードサンプルから Kubernetes アプリケーションを作成してデプロイし、Kubernetes 用 Cloud Code for VS Code を使ってみる。
- ファイルの同期とホットリロードを使用して開発を高速化する。
- Cloud Code でアプリケーションをデバッグする。