CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回は、イミュータブルインフラストラクチャについて説明しました。今回は、Kubernetesでも使用される、宣言型APIについて説明します。
クラウドネイティブで使用されるマイクロサービスでは、サービス同士をAPIを使用して連携します。このAPIとして使用されるのが、宣言型APIです。
これまで使用されたAPI、サービスへ具体的に実行すべきコマンドを命令しています。このようなAPIは、命令型APIとも呼ばれます。宣言型APIは、サービスのあるべき状態、つまり最終的に得たい結果を指示します。宣言型APIを使用することで、すべてのコマンドをコントローラが制御せず、サービス側が自律的に目的の状態になるように動作します。命令型APIでは、コマンド実行時のエラーなど、意図した結果が得られない場合もあります。
クラウドネイティブで良く使用されるKubernetesも宣言型APIを使用しています。例えば、「サービスのPod数を5にする」と命令すると、Kubernetesはコンテナ数を5にするため、自動的にコンテナの追加もしくは削除します。これを命令型APIで行うには、ユーザ側で常にコンテナ数を把握し、コンテナ数を手動で増減しすることになります。状態を宣言するため、Podが異常終了して想定の状態より少なくなった時でも、自動的にPod数を元の状態に戻します。
KubernetesのAPIは、URLを指定してHTTPSで接続するREST型のAPIです。また、Python、Go、Javaなどの言語ライブラリが提供され、プログラムから利用しやすくなっています。サービスのあるべき状態は、YAMLもしくはJSON形式で与えられます。現在の状況を確認も、宣言型APIで行い、YAMLやJSON形式で取得できます。
Kubernetesの管理は宣言型APIで行い、YAMLやJSON形式で行うため、この形式のファイルで構成を管理できます。これらのファイルをGitによりバージョン管理し、CI/CDツールと組み合わせられます。ユーザが開発環境で構成変更したファイルを実環境向けのブランチに commitすると、自動的に実環境へ反映することが可能になります。この手法をGitOpsと言います。Kubernetesの構築や管理の自動化に有用で、開発環境と実環境を別に管理することが容易となります。
Kubernetesを構成するCNIやCSIなども宣言型APIで操作します。また、自分でスケジューラなどのモジュールを作成する際にも、宣言型APIを使用して、ある状態を維持するように作成する必要があります。
宣言型APIは、自分で構築したKubernetesや各クラウドプロバイダが提供するマネージドKubernetesに採用されています。マネージドKubernetesでは、負荷に応じた自動的なワーカーノードの増減、ダッシュボードにKubernetesの稼働状態の連携、クラウド側とKubernetesのアカウント連携などをAPIを経由して可能にしています。
すでに、プライベートクラウド、パブリッククラウドを問わず、APIを使用してコンピューティング環境の構築は可能です。これを、宣言型APIと組み合わせることで、クラウドネイティブが求めるダイナミックでスケーラブルな環境を手に入れられます。
今回は宣言型APIについて説明しました。宣言型APIは、Kubernetesをコントロールする基本的な方法です。つまり、クラウドネイティブを構成する要素の1つと言えます。次回は、疎結合について説明していきます。次回をお楽しみに。
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes