Cloud Code for Cloud Shell で Google Cloud と Kubernetes YAML を操作する

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

Cloud Code for Cloud Shell は、スキーマと有効な値の両方について、スキーマを lint チェックし、わかりやすいエラーを提供することで、Kubernetes と Cloud Build の構成を簡単にするように設計されています。また、Cloud Code には一般的なスキーマ、スマート補完、ホバー操作でのドキュメント表示など、既定のソリューションが用意されています。

サポートされる YAML 構成ファイル

Cloud Code は、既定の Kubeflow などの Kubernetes カスタム リソース定義(CRD)もサポートしています。

カスタム スキーマの使用

Cloud Code では、settings.json ファイルの cloudcode.yaml.crdSchemaLocations 設定で独自の CRD スキーマを指定できます。ローカル ファイルまたは URL のどちらかを指定できます。github.com を指す URL は自動的に raw.githubusercontent.com に変換されます。

クラスタからのスキーマの pull

Kubernetes ビューで Kubernetes v1.16 以降が実行されているクラスタに切り替えると、Cloud Code によってインストールされているすべての CRD のスキーマが自動的に pull されます。

スニペットを使用して構成する

一般的な YAML スキーマ用の標準装備のスニペット(Command/Ctrl+Space を使用してオプションを表示)を使用すると、新しい YAML ファイルを簡単に構成でき、ベスト プラクティスの手順に沿って既存のファイルに追加することもできます。Cloud Code では、最初のフィールドに入力した後、残りのインスタンスに値を入力することで、繰り返しフィールドの操作が容易になります。

Cloud Code には次のスニペットが用意されています。

  • Anthos Config Management - Cluster
  • Anthos Config Management - Cluster Selector
  • Anthos Config Management - Config Management
  • Anthos Config Management - Namespace Selector
  • Cloud Build - Cloud Run deployment
  • Cloud Build - Docker container build
  • Cloud Build - GKE deployment
  • Cloud Build - GKE Skaffold deployment
  • Cloud Build - Go build
  • Cloud Build - Terraform plan + apply
  • Config Connector - BigQueryDataset
  • Config Connector - BigQueryTable
  • Config Connector - BigtableCluster
  • Config Connector - BigtableInstance
  • Config Connector - PubSubSubscription
  • Config Connector - PubSubTopic
  • Config Connector - RedisInstance
  • Config Connector - SpannerInstance
  • Kubernetes - ConfigMap
  • Kubernetes - Deployment
  • Kubernetes - Ingress
  • Kubernetes - Pod
  • Kubernetes - Secret
  • Kubernetes - Service
  • Migrate for Anthos - Export
  • Migrate for Anthos - PersistentVolumeClaim
  • Migrate for Anthos - StatefulSet
  • Skaffold - Bazel
  • Skaffold - Getting-started
  • Skaffold - Helm deployment
  • Skaffold - Kaniko

コンテキストを使用して補完する

Cloud Code は、現在のスキーマに基づいてコンテキスト補完を行い、関連するドキュメントを表示します。これにより、正しいオプションを簡単に選択できます。

Kubernetes スキーマのコンテキスト補完

YAML スキーマの検証

Cloud Code は、YAML ファイル内の無効なタグと値を報告し、可能な場合には修正を提案することで、スキーマの検証をサポートします。

名前フィールドの値に赤い下線が付され、無効な値「1234」がハイライト表示されています。テキストにカーソルを合わせると「データの型が正しくありません。文字列が想定されます」と表示されます。

カーソルを置いてドキュメントを表示する

スキーマ内の値の上にポインタを置くと、Cloud Code が関連ドキュメントを表示します。

スキーマ内の値の上にポインタを置くと表示されるドキュメント情報

リソース定義にアクセスする

リソースの定義を表示するには、リソースを右クリックして [Go to Definition] または [Peek Definition] を選択します。

YAML ファイルを適用する

現在のファイルを使用して構成の変更を適用するには、コマンド パレット(Ctrl/Cmd +Shift +Pを押下または、表示 > コマンド パレットをクリック)を使用して、Cloud Code: 現在の JSON/YAML ファイルを K8s のデプロイ済みリソースに適用を実行します。

このコマンドにより、差分ビューが表示され、違いを比較できます。この変更を適用するかどうかの確認が表示されたら、[適用] をクリックします。これにより kubectl apply -f が実行されます。

YAML ファイル間の違いの表示

ソース管理の YAML ファイルとデプロイされた YAML ファイルの違いを表示するには、コマンド パレットを開き(Ctrl/Cmd+Shift+P を押下するか、[表示] > [コマンド パレット] をクリック)、[Cloud Code: Diff Current JSON/YAML File with K8s Deployed Resource] を実行します。

YAML ファイルのドライランを実行する

構成のドライランを実行してその有効性を確認するには、コマンド パレットを開き(Ctrl/Cmd+Shift+P を押下するか、[表示] > [コマンド パレット] をクリック)、[Cloud Code: Dry-run current config for server-side validation] と [Cloud Code: Dry-run Current Config for Client-side Validation] を実行します。

これにより、kubectl apply -f dry-run=server(または、クライアント オプションの場合は kubectl apply -f dry-run=client)が実行され、有効な検証(構成ファイルが有効でない場合はエラー メッセージ)がトースト通知として表示されます。

次の例では、構成ファイル(hello.deployment.yaml)のサーバー側でのドライラン検証によって、デプロイの作成を試行した際にエラーが返されます。これは指定された名前空間 random-namespace が存在しないためです。

サーバー側のドライラン検証は、「hello.deployment.yaml」で失敗し、トーストとしてエラー メッセージが表示されます。エラーの詳細は出力チャネルで確認できます。名前空間「random-namespace」は存在しません

Secret を操作する

構成マップと Secret の使用は、Kubernetes を使用して作業を行ううえで重要な部分です。Cloud Code で Base64 の Secret の内容を表示するには、Secret の上にポインタを置いてデコードします。

Secret の上にポインタを置いて Secret をデコードする