IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウドネイティブで行こう

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第8回 宣言型API (宮崎悟) 2023年3月

前回は、イミュータブルインフラストラクチャについて説明しました。今回は、Kubernetesでも使用される、宣言型APIについて説明します。

宣言型APIとは

クラウドネイティブで使用されるマイクロサービスでは、サービス同士をAPIを使用して連携します。このAPIとして使用されるのが、宣言型APIです。

これまで使用されたAPI、サービスへ具体的に実行すべきコマンドを命令しています。このようなAPIは、命令型APIとも呼ばれます。宣言型APIは、サービスのあるべき状態、つまり最終的に得たい結果を指示します。宣言型APIを使用することで、すべてのコマンドをコントローラが制御せず、サービス側が自律的に目的の状態になるように動作します。命令型APIでは、コマンド実行時のエラーなど、意図した結果が得られない場合もあります。

Kubernetesの宣言型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でできること

宣言型APIは、自分で構築したKubernetesや各クラウドプロバイダが提供するマネージドKubernetesに採用されています。マネージドKubernetesでは、負荷に応じた自動的なワーカーノードの増減、ダッシュボードにKubernetesの稼働状態の連携、クラウド側とKubernetesのアカウント連携などをAPIを経由して可能にしています。

すでに、プライベートクラウド、パブリッククラウドを問わず、APIを使用してコンピューティング環境の構築は可能です。これを、宣言型APIと組み合わせることで、クラウドネイティブが求めるダイナミックでスケーラブルな環境を手に入れられます。

おわりに

今回は宣言型APIについて説明しました。宣言型APIは、Kubernetesをコントロールする基本的な方法です。つまり、クラウドネイティブを構成する要素の1つと言えます。次回は、疎結合について説明していきます。次回をお楽しみに。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes