コンテンツに移動
アプリケーション開発

Cloud Code を活用して Kubernetes デベロッパーのエクスペリエンスを最大化する 5 つのヒント

2021年6月9日
https://storage.googleapis.com/gweb-cloudblog-publish/images/Google_Cloud_Kubernetes.max-2600x2600.jpg
Google Cloud Japan Team

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

Kubernetes にデプロイする新しいプロジェクトの開始は、手間のかかる作業になる場合があります。そのため、アプリケーションのビジネス ロジックを作成するどころか、インフラストラクチャの構成で手いっぱいになりかねません。Kubernetes ワークフローの効率化を図るデベロッパー ツールや対策は、デベロッパーがコードの作成に注力しながら生産性を高めるための鍵となります。

ここでは、Kubernetes を利用したアプリ開発を始める際に、留意すべきいくつかのヒントをご紹介します。また、実際にインタラクティブな Kubernetes のチュートリアルを使用し、Cloud Code によって開発の過程がどのように変化するかも見ていきましょう。

1. 最も快適な環境で開発する

デベロッパーであれば、ほとんどの時間を好みの IDE で過ごしていることでしょう。その IDE を拡張機能で強化し Kubernetes を使用した開発を簡素化できます。拡張機能を利用することで、Kubernetes インフラストラクチャやアプリケーションのビルド、デプロイ、スケーリング、管理のプロセスを容易にします。生産性を向上させ、お使いの IDE を Kubernetes 対応にするためには Cloud Code のインストールを検討してください。これは、VS Code と Intellij で使用できる IDE 拡張機能であり、コンテナベースのアプリをより迅速に作成、デバッグ、デプロイするのに役立ちます。

Kubernetes を初めてご利用になる方で、ローカルマシンのリソースを消費することに抵抗がある場合は、ブラウザベースで開発可能な環境が最適な選択肢となります。

ブラウザベースの IDE の一例として Cloud Shell エディタがあります。Cloud Shell エディタは、ブラウザさえあればどこからでもアクセスできる、オンラインの開発および運用環境です。設定のオーバーヘッドを削減するために、Cloud Shell エディタには kubectl、Docker、Skaffold のようなツールがプリロードされています。Cloud Code もプリインストールされているので簡単にアプリにデプロイし、ブラウザベースの IDE から直接 Kubernetes インフラストラクチャを管理できます。

Cloud Shell エディタまたはローカル IDE のどちらを使用している場合でも、最も効率的で生産性が高いと感じる開発環境を選択してください。

2. コンテキストの切り替えを減らす

コンテキストの切り替えには時間がかかり、ワークフローが中断されます。しかしながら、Kubernetes アプリケーションの開発中は、IDE、Cloud Console、ドキュメント、ログなどの切り替えが必要になります。そこで、コーディングに集中するために、お使いの IDE に拡張機能を追加して、コンテキストの切り替えを減らす方法を検討してみましょう。

Cloud Code には、コンテキストの切り替えを減らすための機能が組み込まれています。たとえば、Cloud Code の Kubernetes Explorer を使用すると、CLI コマンドを実行することなく、クラスタ リソースに関する情報の可視化、モニタリング、表示が可能です。また、数回のクリックで、クラスタのログを表示できます。

コンテキストの切り替えを減らすために、Google のデベロッパーがよく使用するのが、Cloud Shell エディタ内で利用できるコンテキスト内のチュートリアルです。このチュートリアルを使用すると、ドキュメントとコードを切り替える必要がなくなります。詳しくはこちらをご覧ください。

3. ローカル開発を簡素化する

一般的に、IDE の拡張機能は、コードを作成しローカルの変更に対するフィードバックを得るプロセスを、より簡単かつ合理的にするものです。

デベロッパーとしては、ビジネス ロジックをコンテナ内で実行する方法よりも、その作成に集中したいはずです。Buildpacks は Dockerfile の記述やメンテナンスの必要がなく、ソースコードから安全で本番環境に対応したコンテナ イメージをスピーディーかつ簡単に作成できるオープンソース技術です。

Cloud Code を使用すると、Buildpacks でのコンテナの構築、Docker Desktop や Minikube へのデプロイが簡単にできます。Minikube は、マシン上にローカル クラスタを作成し、アプリケーションを実行して Kubernetes を試せる遊び場を提供します。Cloud Code は、マシンから CPU やメモリリソースをオフロードするためのリモート クラスタもサポートしています。

Kubernetes アプリケーションのローカルでの反復処理には、コンテナ イメージをビルドし、Kubernetes マニフェストを更新してから、アプリケーションを再デプロイする必要があります。この作業を手動で行うのは面倒なことです。そこで鍵となるのが Cloud Code です。これらの反復的なタスクを簡素化し、Skaffold を活用して、コードを変更するたびにこのプロセスを自動的に実行します

Skaffold は、Kubernetes での開発時に実施する一般的な運用タスクを簡素化するコマンドライン ツールです。Skaffold の Watch Mode は、開発ループをスピードアップし簡素化することを目的として、ローカルのソースコードの変更を監視し、アプリケーションをリアルタイムで再ビルドしてクラスタに再デプロイします。最近、Skaffold はファイル同期機能を導入しました。この新機能により、再ビルドや再デプロイをせずに、コードの変更を数秒で確認できるようになりました。

4. YAML の作成時間の短縮

Kubernetes YAML 構文とスキームの扱いに慣れるには時間がかかり、その時間の多くは試行錯誤です。Cloud Code では、YAML オーサリング サポート機能により、より多くの時間をコードの作成に当てられます。Cloud Code のインライン ドキュメント、スニペット、補完、スキーマ検証(別名「lint チェック」)は、YAML ファイルの作成をより楽しいものにします。

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

Cloud Code はすぐに利用可能な 400 以上の Kubernetes CRD 向けに YAML オーサリング サポートを提供しており、YAML ファイルの記述、理解、エラーの確認が容易になります。また、Cloud Code は、クラスタにインストールされているすべての CRD をサポートします。

5. リアルタイムでのデバッグ

Kubernetes クラスタ上で動作するアプリケーションのデバッグは、設定が難しいという声をよく聞きます。実行中の Pod をデバッグするにはさまざまな方法がありますが、IDE でローカルのデバッグをエミュレートするのは構成が難しく、デバッグポートの公開やポート転送も必要になります。そこで、Skaffold のようなツールを使用すると、デバッグが容易になります。Cloud Code は Skaffold を利用しているので、コードにブレーク ポイントを設定するだけです。ブレーク ポイントがトリガーされると、コードをステップ実行し、変数のプロパティにカーソルを合わせて、コンテナのログを表示できます。IDE からアプリケーションをデバッグする方法をお探しでしたら、Cloud Code を試してみてください。コマンドラインを使用する場合は、Skaffold をおすすめします。

Kubernetes クラスタ上でローカルにデバッグすることで、継続的インテグレーション(CI)、ステージング、本番環境で試す前にランタイム エラーを発見できます。エラーの早期発見が解決までの時間短縮につながります。結果として開発期間の短縮を実現できます。

まとめ

Kubernetes の開発プロセスを簡素化するためには、ワークフローに生産性を向上させるツールを組み込む必要があります。今日は、Kubernetes 上で開発する際に留意すべき、いくつかのヒントをご紹介しました。生産性を最大化するために、デベロッパーにとって使いやすい拡張機能で IDE を強化することは、試しやすい最初のステップではないでしょうか。

-プロダクト マーケティング マネージャー Brenna Washington

-デベロッパー アドボケイト Abby Carey

投稿先