ソフトウェア デリバリーの未来を形作るために、2021 年の State of DevOps アンケートに参加して、あなたの声を聞かせてください。

Google Cloud と Kubernetes YAML ファイルの操作

Cloud Code は、Google Cloud と Kubernetes 関連の構成ファイル(スキーマベースの検証、診断、クイック ドキュメントなど)の編集に役立つように設計されています。

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

さらに、Cloud Code は、すぐに使える Kubeflow などの人気のある Kubernetes CRD もサポートしています。

カスタム スキーマの使用

また、Cloud Code では、IntelliJ の設定([File] > [Settings] > [Tools] > [Cloud Code] > [Kubernetes]、または Mac OS X の場合は [IntelliJ IDEA] > [Preferences] > [Tools] > [Cloud Code] > [Kubernetes] の順に選択して [CRD Schema Locations] セクションに移動)で独自の CRD スキーマを指定できます。

ローカル ファイルまたは URL のどちらかを指定できます。github.com を指す URL は自動的に raw.githubusercontent.com に変換されます。

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

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

Skaffold の追加のサポート

Skaffold は Cloud Code の機能を強化する基盤となるエンジンで、アプリケーションのビルド、push、デプロイと、CI/CD パイプラインの作成に役立ちます。

Cloud Code には、Skaffold 構成ファイルを管理するための追加サポートが含まれています。プロジェクトを開くと、Cloud Code で最新でない Skaffold スキーマが検出され、既存の Skaffold YAML 構成ファイルに対して Skaffold スキーマ バージョンのアップグレードが利用可能になると、イベントログを介してプロンプトが表示されます。

既存の Skaffold YAML ファイルが最新バージョンではないため、イベントログ内の通知で Skaffold スキーマ バージョンのアップグレードを求めるメッセージが表示されます。

または、[Tools] > [Cloud Code] > [Kubernetes] に移動して、[Check for Skaffold Schemas Upgrades] を選択し、利用可能なスキーマのアップグレードを確認できます。

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

一般的な YAML スキーマにすぐに使えるスニペット(Ctrl+Space でオプションを表示)が用意されています。このスニペットを使用すると、新しい YAML ファイルを簡単に構成でき、ベスト プラクティスに準拠しながら既存のファイルに追加することもできます。繰り返しフィールドの操作も簡単です。1 つのフィールドに入力すると、Cloud Code が残りのインスタンスに値を挿入します。

繰り返しフィールドでスニペットを使用する

現在、次のスニペットが提供されています。

  • 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 - 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」がハイライト表示されています。テキストにカーソルを合わせると「データの型が正しくありません。文字列が想定されます」と表示されます。

Skaffold YAML ファイルの検証

Cloud Code では、Skaffold 構成ファイルの編集のサポートが追加されています。また、スマート テンプレートを使用することで、skaffold.yaml ファイルを簡単に検証できます。Cloud Code での既存のアプリの使用に関するガイドをご覧ください。

Skaffold YAML テンプレート

コンテキストを使用して Skaffold 構成ファイルを補完する

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

Skaffold の補完

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

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

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

ソースコード ファイルにおけるこの動作は、ホットリロードと呼ばれ、次のファイル形式で機能します。

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

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

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

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

  • auto(Jib および Buildpacks のアーティファクトのみ)
  • infer
  • manual

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

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

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

クイック ドキュメントで定義を確認する

Cloud Code では、構成ファイル内の行をハイライト表示し、[View] > [Quick Documentation] を選択すると、リソースに関連するドキュメントが表示されます。

クイック ドキュメント

構造と有効性の問題に関する YAML の lint チェック

Cloud Code は、一般的なスキーマの問題に関する lint チェックをサポートし、わかりやすいエラーを表示します。

YAML ファイルの lint チェック

YAML ファイルを適用する

kubectl apply -f を実行して、現在のファイルを使って構成の変更を適用するには、IDE のガターにある kubectl アクション アイコン kubectl actions アイコン を使用して [Apply] を選択します。表示される差分ビューで、[Apply] をクリックする前に違いを確認できます。

kubectl アクション リストでハイライト表示されている Apply オプション

YAML ファイルの差分

ソース管理の YAML ファイルとデプロイされた YAML ファイルの差分を表示したい場合は、エディタのガターにある kubectl アクション アイコン kubectl actions アイコン を使用します。[Diff] オプションを選択すると、2 つのスキーマ ファイルを比較できます。

kubectl アクション リストでハイライト表示されている Diff オプション

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

ファイルのドライランを実行して有効性を確認するには、IDE のガターにある kubectl アクション アイコン kubectl actions アイコン を使用して [Dry-run on Server] または [Dry-run on Client] を選択します。これにより、kubectl apply -f dry-run=server(またはクライアント オプションの場合は kubectl apply -f dry-run=client)が実行され、ターミナル ウィンドウでファイルを正常に作成できるかどうかが通知されます。

kubectl アクション リストでハイライト表示されている Dry-run on Server オプション

サポートの利用

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