概要
Kubernetes Java™ クライアントは、Java プログラミング言語を使用して Kubernetes と連動できるようにするクライアントライブラリです。Kubernetes REST API 上に構築される Java クライアントは、プログラミングによる Kubernetes へのアクセスを実現し、Kubernetes クラスタ内のさまざまなリソースの作成、変更、削除、デプロイの拡張、コマンドの実行、イベントの監視を行う機能を付与します。
Kubernetes はオープンソースのコンテナ・オーケストレーション・プラットフォームで、コンテナ化されたアプリケーションのデプロイ、管理、スケーリングを自動化します。Kubernetes クライアントライブラリは認証などのタスクを処理できるため、開発者は Kubernetes API を使用するアプリケーションを簡単に作成できます。
最も古く、最も広く使用されているクライアント・フレームワークは、client-go と呼ばれる公式の Kubernetes Go クライアントです。client-go は、Kubernetes 自体だけでなく、他のディストリビューションや Red Hat® OpenShift などのプラットフォームでも使用されます。その他の一般的なクライアントには、公式のクライアントライブラリもコミュニティが管理するクライアントライブラリもあり、さまざまなプログラミング言語に対応します。Kubernetes 向けにはコミュニティ版の Java クライアントがいくつかありますが、Kubernetes Java クライアントは、Kubernetes API Machinery Special Interest Group が管理する公式クライアントライブラリです。
Kubernetes Java クライアントを使用する理由
近年、開発者はモノリシック・アーキテクチャから離れ、より汎用性の高いクラウドネイティブ・アプリケーションを採用しています。レガシー Java アプリケーションのモダナイゼーションを検討している多くの組織は、クラウドデプロイモデルへの移行を選択しています。Java アプリケーションのモダナイゼーションの重要な部分であるクラウドネイティブ Java では、多くの場合、アプリケーションの効率的な管理、デプロイ、拡張のために Kubernetes のようなコンテナ・オーケストレーション・プラットフォームを使用することが必要になります。
コンテナ化されたアプリケーションが常に Kubernetes API と通信する必要はありませんが、特定のタスクを実行するために API 呼び出しが必要になるユースケースは数多くあります。Red Hat OpenShift などのプラットフォームや Red Hat Advanced Cluster Management for Kubernetes などのコンポーネントを使用するのではなく、DIY アプローチで Kubernetes クラスタを管理している場合、以下のユースケースでは公式 Java クライアントを使用して Kubernetes API と通信することができます。
- アプリケーションの管理
- スケーリングと自動スケーリング
- 監視、アラート、ロギング
- 継続的デプロイメントのセットアップ
- カスタムオペレーターによる Kubernetes API の拡張
- クラスタ管理
- ハイブリッドクラウドの管理
Kubernetes とそのツールやライブラリの多くは Golang で記述されているため、組織の既存の開発者に Golang の使用経験がない場合、Kubernetes でのクラウドネイティブ開発に移行するには追加のトレーニングとリソースが必要になる場合があります。すでに Java アプリケーションを使用している組織や Java の使用経験を持つ開発者の場合、Kubernetes Java クライアントを使用することで、新しいプログラミング言語を習得する必要がなくなり、クラウドネイティブ開発への移行が単純化されます。
Red Hat のリソース
Kubernetes Java クライアントの代替となるもの
公式の Kubernetes Java クライアントは Java 開発者にとって最良の選択であると思えるかもしれませんが、Kubernetes クラスタの運用と管理に役立つ選択肢は他にもあります。
Kubernetes REST API と kubectl
Kubernetes REST API は Kubernetes コントロールプレーンのフロントエンドとして機能し、Kubernetes クラスタの管理、作成、設定に使用されます。Kubernetes コマンドラインツールの kubectl を使用して API と対話し、API 呼び出しを行ったり、Kubernetes リソースを管理したりすることができます。また、curl や Wget などの http クライアントを使用して REST API に直接アクセスすることもできます。
Fabric8 Java クライアント
Fabric8 Java クライアントはコミュニティが管理するクライアントライブラリであり、Kubernetes 向けの最も古い Java ライブラリです。さらに依存関係を付加することなく、堅牢なドメイン固有言語 (DSL)、さまざまな拡張機能、カスタムリソースのサポートを提供するという点で、公式の Java クライアントとは異なります。
Kubernetes Operator
Kubernetes Operator は、Kubernetes API と kubectl ツールを使用してアプリケーションの作成、設定、管理を行う、アプリケーション固有のカスタムコントローラーです。ほとんどのコントローラーとは異なり、Kubernetes Operator にはコンテナ化アプリケーションのライフサイクル全体を自動化するためのドメインまたはアプリケーション固有の知識が含まれており、開発者はこれらのアプリケーションが依存するプロセスを容易にデプロイし、拡張することができます。
その他のサードパーティ・ライブラリ
Fabric8 クライアントと公式 Java クライアントは、 Kubernetes 向けの Java ライブラリとして最も一般的なものですが、これらが利用可能な唯一の選択肢というわけではありません。他の Java クライアントとしては、OSGI Java フレームワーク用の Amdatu Labs Java クライアントや、Kubernetes 用の YAKC Java クライアントなどがあります。
あるいは、他のプログラミング言語の専門知識を持つ開発者であれば、自らのニーズにより適した Java 以外のクライアントを選択することもできます。その他の公式ライブラリやサードパーティ・ライブラリは、C、dotnet、Haskell、JavaScript、Perl、Python、Ruby などの多数の言語で利用できます。
Red Hat のサポート内容
Kubernetes は強力なオープンソースのコンテナ・オーケストレーション・プラットフォームですが、より迅速なアプリケーション開発に必要なネットワーキング、ストレージ、モニタリング、CI/CD などの他のコンポーネントを統合する機能がありません。Red Hat OpenShift は Kubernetes 上に構築されており、エンタープライズ・コンテナ・オーケストレーション・プラットフォームを提供するとともに、これらすべてのコンポーネントを組み込み、コンテナ化されたアプリケーションの提供を加速します。
公式の Kubernetes Java クライアントや他の Kubernetes ライブラリを引き続き使用できますが、Red Hat OpenShift によって付加される追加のリソースと API エンドポイントの利用を可能にする他のクライアントを使用することもできます。Kubernetes クライアントと同様に、OpenShift の REST API クライアントライブラリは Java やその他の多数のプログラミング言語で利用できます。
Red Hat は、コンテナ・テクノロジーの専門知識を提供するだけでなく、Red Hat OpenShift、 Red Hat Ansible Automation Platform、Kubernetes Operator を組み合わせてインフラストラクチャ管理を自動化することで、お客様がアプリケーションのモダナイゼーションの複雑さを克服できるよう支援します。また、Red Hat は Red Hat Advanced Cluster Management for Kubernetes により、複数のクラスタやさまざまなインフラストラクチャにまたがるアプリケーション管理を自動化するための追加ツールを提供しており、アプリケーション提供の高速化とワークロードのモダナイゼーションも支援します。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。