コンテンツに移動
Containers & Kubernetes

Google Kubernetes Engine(GKE)デベロッパー向けガイド

2020年11月26日
Google Cloud Japan Team

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

Kubernetes のようなコンテナ管理プラットフォームへのデプロイを検討する際、決め手となるのは、リソースの効率性の向上、スケーラビリティの改善、高度な復元力、セキュリティといった運用上のメリットです。しかし Kubernetes にはそれに加えて、ソフトウェア開発面でのメリットもあります。コードのポータビリティの向上であれ、生産性の向上であれ、Kubernetes はオペレーターだけでなくデベロッパーにもメリットをもたらします。

たとえばクラウド ネイティブへの再構築: デベロッパーの生産性を大幅に向上させる革新的なアプローチで論じたように、Kubernetes を使用することで、マイクロサービスなどの最新のクラウドネイティブ ソフトウェア開発パターンを簡単に採用できます。これには次のメリットがあります。

  • チームサイズを大きくした場合でも、デベロッパーの生産性が向上します。

  • 製品化までの時間を短縮 - 新機能を追加し、不具合をより迅速に修正します。

  • 可用性の向上 - ソフトウェアの稼働時間を増加し、デプロイの失敗率を減少させ、インシデント発生時の復元までの時間を短縮します。

  • セキュリティの向上 - アプリケーションの攻撃対象領域を減らし、攻撃や新たな脆弱性の迅速な検出と対処を簡単に行えるようにします。

  • スケーラビリティの向上 - クラウドネイティブのプラットフォームとアプリケーションにより、必要に応じた水平方向のスケーリング、さらにはスケールダウンを簡単に行えます。

  • コストの削減 - 合理化されたソフトウェア デリバリー プロセスにより、新機能のリリースコストが削減されます。また、クラウド プラットフォームを効果的に使用することで、サービスの運用コストが大幅に削減されます。

Google が開発した Kubernetes は、Google Cloud でフルマネージド サービスの Google Kubernetes Engine(GKE)として提供されていますが、Google Cloud が GKE と緊密に統合されたデベロッパー ツールも豊富に用意していることはご存じでしたか?本日は KubeCon の開催を祝して、GKE 向けアプリの開発方法、それらのアプリを安全かつ効率的にデプロイする方法、そして本番環境に移行したアプリのモニタリングとデバッグの方法についてのブログをもう一度ご紹介します。

GKE 向けの開発: すべてはあなたからはじまる

特に企業向けといえるようなアプリケーションでさえ、デベロッパーのノートパソコンの中で産声を上げます。GKE で実行されるアプリケーションについても同様です。これを可能にするため、ローカル開発環境を GKE と統合するために使用できるさまざまなツールが用意されています。

  • デベロッパーは、大量のコンピューティング リソースを利用してノートパソコンを自在に扱うことで有名です。たとえば Minikube を使用することで、GPU を最大限に活用できます。JibSkaffold といった、Java アプリをコンテナ化するのに便利なローカル開発ツールも用意されています。Jib は、Docker のインストール、Docker デーモンの実行、Dockerfile の作成の必要なく Java アプリをコンテナ化するのに便利なツールで、Maven または Gradle プラグインとして利用できます。その後、Skaffold が変更を検出したときに、Skaffold を使用してコンテナ化された Java アプリを Kubernetes クラスタにデプロイすることができます。また、Skaffold は実行中のコンテナに新しいバージョンのファイルを挿入することも可能です。詳しくは、Livin’ la vida local: ノートパソコンでのより簡単な Kubernetes 開発をご覧ください。

  • GKE デベロッパーの間で人気のあるもう 1 つのツールが Cloud Code です。Cloud Code は GKE の開発を簡素化することで人気の高い Visual Studio と IntelliJ の統合開発環境(IDE)のためのプラグインを提供しています。たとえば Google では最近、Kubernetes YAML とカスタム リソース定義(CRD)をより堅牢にサポートできるよう、Cloud Code をアップデートしました。詳しくは、人気の高い何百もの Kubernetes CRD の YAML を Cloud Code で簡単に作成をご覧ください。

簡易に済ます開発タスクがありますか?Cloud Shell エディタをチェックしてみてください。このツールは、フル機能型かつ自己完結型のコンテナ開発環境をブラウザで起動します。詳しくは、新しい Cloud Shell エディタ: クラウドネイティブ アプリを数分で実行をご覧ください。

パイプラインを通す

最終的には、ノートパソコンで開発したアプリを本番環境に向けて push する準備ができます。その途中で、コードが適切にテストされ、必要なセキュリティとコンプライアンスのテストに合格していることを確認しなければと思うはずです。Google Cloud では、コードがそのパイプラインを通過できるようにするためのさまざまなツールを提供しています。

モニタリング、デバッグ、そして繰り返し。GKE アプリのリモート開発

さあ、これでアプリが GKE クラスタ上で本番環境になったので、作業は完了ですね。残念ながら違います。開発者にとって、アプリを本番環境にすることは、ソフトウェア ライフサイクルの始まりにすぎません。アプリを改善する方法についてのアイデアを持っているなら、トラブルの兆候のモニタリングもすべきと思うことでしょう。GKE は、複数のモニタリング、デバッグ、パフォーマンス管理ツールと緊密に統合されており、GKE アプリの健全性を確保し、さらなる改善に役立ちます。

私たちも開発者です

Cloud Native Computing Foundation(CNCF)や Open Container Initiative(OCI)といったような、長年にわたってオープンソース コミュニティをリードしてきた者として、私たちは業界の発展が GKE デベロッパーの皆様の毎日にどのような影響を与えるのかを常に考えています。例えば、Docker の pull リクエストの制限についての最近の発表を受け、GKE 環境におけるこれらの制限を管理する方法という記事を書くことになりました。GKE を最もスケーラブルで堅牢なコンテナ管理プラットフォームにするのはもちろん、私たちは GKE を最も使いやすく、開発しやすいものにすることに深くコミットしています。Kubernetes、GKE を初めてご利用ですか?無料のハンズオン トレーニングをご覧ください。もし今週 KubeCon に参加されるなら、私たちの(バーチャル)ブースのオフィスアワーにもぜひお越しください。

-グループ プロダクト マネージャー Drew Bradstock

投稿先