Containers & Kubernetes

人気の高い何百もの Kubernetes CRD の YAML を Cloud Code で簡単に作成

#containers

※この投稿は米国時間 2020 年 10 月 17 日に、Google Cloud blog に投稿されたものの抄訳です。

Kubernetes にデプロイするサービスを開発する際に、アプリケーションの開発よりも YAML ファイルの作成に手間がかかっていると感じることはありませんか。また、YAML を作成するにあたり、開発プロセスの早い段階でエラーを検出しにくくはないでしょうか。Google では、アプリケーションの構成よりもコードの記述により多くの時間をかけられるように、Cloud Code を開発しました。これにはインライン ドキュメント、補完、スキーマ検証(lint チェック)などのオーサリング サポート機能が含まれます。

1  Completions provided by Cloud Code.gif
Cloud Code による Kubernetes deployment.yaml ファイルの補完機能
2 Inline documentation provided by Cloud Code.gif
Cloud Code による Kubernetes deployment.yaml ファイルのインライン ドキュメント機能
3 Schema validation provided by Cloud Code.gif
Cloud Code による Kubernetes deployment.yaml ファイルのスキーマ検証機能

しかし、Kubernetes YAML の作成は年々複雑になってきています。Kubernetes の人気が高まる中、数多くの開発者が新しい Kubernetes オペレーターやカスタム リソース定義(CRD)を作成して Kubernetes API を拡張してきました。これらの新しい Kubernetes オペレーターや CRD により、Kubernetes エコシステムは継続的インテグレーションや継続的デリバリー、機械学習、ネットワーク セキュリティといった新機能に対応するよう拡大を続けてきました。このような現状を踏まえて、本日、次のような多様な Kubernetes CRD のオーサリング サポートの提供を開始いたします。

  • すぐに使える 400 を超える人気の高い Kubernetes CRD(少数から大幅に増加)

  • Kubernetes クラスタ内の既存の CRD

  • ローカルマシンや URL から追加する CRD


Cloud Code は、VS Code や JetBrains 統合開発環境(IDE)向けのプラグインのセットで、クラウドネイティブなアプリケーションの作成、デバッグ、デプロイに必要なものがすべて揃っています。このオーサリング サポートにより、多様な Kubernetes CRD の YAML の記述、理解、エラーの確認が容易になります。

Cloud Code の強化されたオーサリング サポートを利用して、CRD に準拠したリソース ファイルを作成することで、Kubernetes のカスタム機能を活用できるようになります。たとえば、TensorFlow ジョブをクラスタ内の複数の Pod に分散したいとします。これを行うには、TFJob CRD に基づいて TFJob リソースを作成し、それを KubeFlow オペレーターが稼働できるクラスタに適用します。

組み込みサポートの拡張

Cloud Code のオーサリング サポートは、400 を超える人気の高い Kubernetes CRD に対応するよう拡張されました。これには Google Cloud やAnthos で使用される CRD も含まれます。次のような幅広い CRD が対象となります。

  • Agones(ゲームサーバー)

  • Gatekeeper(ポリシー適用)

  • KubeFlow(機械学習ワークフロー)

  • Calico(ネットワーキング、ネットワーク セキュリティ)

  • cert-manager(TLS 証明書の管理と発行)

  • その他多数

4 Inline documentation, completions, and schema validation.gif
Cloud Code による Agones GameServer CRD のインライン ドキュメント、補完、スキーマ検証機能

クラスタ独自の CRD に対応

Cloud Code は、人気の高いパブリック CRD、Google Cloud CRD、Anthos CRD など、幅広い CRD をサポートするようになりましたが、ユーザーによってはクラスタに独自のプライベート CRD をインストールしている場合もあります。Kubernetes v1.16 以降を実行しているクラスタを Cloud Code の Kubernetes Explorer でアクティブなコンテキストとして設定すると、Cloud Code は、クラスタにインストールされているすべての CRD のスキーマからのオーサリング サポートを自動的に提供します。

5 The CronTab CRD installed.jpg

Cloud Code for VSCode の Kubernetes Explorer 内のアクティブなクラスタにインストールされている CronTab CRD

6 Authoring support provided by Cloud Code.gif
アクティブなクラスタにインストールされている CronTab CRD に対して Cloud Code が提供するオーサリング サポート

独自の CRD を追加

多種多様な CRD が存在するとはいえ、ニーズを満たすものがない場合もあります。そのような場合は、解決策として独自の CRD を定義します。たとえば、Kubernetes で社内の CI システムを実行している場合、独自の CRD スキーマを定義して、開発者が Cloud Code でその CRD スキーマ ファイルのコピーを簡単に指定できるようにすると、IDE 内でリソースのオーサリング サポートを利用できるようになります。

CRD を Cloud Code に追加するには、Cloud Code でカスタム リソースを定義するファイルへのローカルパスまたはリモート URL を指定するだけです。リモート URL は、単なる GitHub 内のファイルへの直接リンクでかまいません。カスタム リソース定義の詳細または独自のリソース定義の作成方法については、こちらのドキュメント ページをご覧ください。構成が完了すると、その CRD YAML ファイルの編集時にも同じく、Cloud Code の素晴らしいインライン ドキュメント、補完、lint チェック機能を利用できるようになります。これは VS Code IDEJetBrains IDE のどちらでも非常に簡単にセットアップ可能です。

7 cloud code.jpg
VS Code の settings.json で独自の CRD を指定
8 crd schema locations.jpg
[Preferences] > [Other Settings] > [Cloud Code] > [Kubernetes in IntelliJ]

使ってみる

Cloud Code によって Kubernetes の開発をどのように簡素化できるかをご確認いただくために、Kubernetes CRD の拡張されたオーサリング サポートをぜひお試しください。VS Code または JetBrains 拡張機能マーケットプレイスから Cloud Code をインストールし、CRD の YAML ファイルを開いて編集を開始するだけです。

Cloud Code をインストールしたら、Kubernetes プロジェクトで Cloud Code の高速な反復型開発とデバッグ関連機能を試すこともできます。Kubernetes 以外にも、Cloud Code はプロジェクトへの Google Cloud APIs の追加や、Cloud Run Emulator による Cloud Run サービスの開発の着手にも役立ちます。

-プロダクト マネージャー Russell Wolf