Containers as a Service(CaaS)は、コンテナ オーケストレーションのための自動化されたマネージド プラットフォームを提供するクラウド サービス モデルです。これはクラスタ オペレーションを整理して合理化する方法です。
CaaS は、コンテナ オーケストレーション エンジンを中心に構築されたマネージド環境を提供することで機能します。Kubernetes は、コンテナ オーケストレーション エンジンの業界標準です。このプロセスでは、デベロッパーと基盤となるインフラストラクチャの関心事が分離されます。
デベロッパーの仕事: まず、すべての依存関係とアプリケーションを取得し、これらをコンテナ イメージにパッケージ化する必要があります。このイメージは、アプリケーションのポータブルなブループリントです。
完成したら、CaaS プロダクトが引き継ぎます。構築と保存が完了したら、あとは API またはインターフェースを介して管理を適用するだけです。Google Kubernetes Engine などの CaaS プロダクトが、その他すべての処理を支援します。次に、プログラムの状態を定義します。同じプログラムを実行するサーバーが 3 台必要な場合にも、このサービスが役立ちます。
その後、新しいデプロイは自動的に処理されます。これには次のオプションが考えられます。
CaaS は、アーキテクチャと開発手法の基盤として機能する汎用性の高いプラットフォームです。
アプリケーションとマイクロサービスのデプロイに最適なプラットフォーム。
レガシー アプリケーションのモダナイゼーションで古いアプリケーションをパッケージ化するのに最適。
開発構造には、CaaS プラットフォームは最適です。自動システムで新しいコンテナ イメージを構築し、テストを実行して、ダウンタイムなしで CaaS プラットフォームにデプロイできます。
CaaS はトラフィックのニーズを自動化します。プラットフォームは、ユーザーの需要に合わせてコンテナ インスタンスを自動的に追加または削除できます。
Kubernetes などのオープン スタンダードに基づいて構築された CaaS プラットフォームは、オンプレミス データセンターと複数のパブリック クラウドにわたって一貫した運用環境を提供できます。これにより、企業はコンテナ化されたアプリケーションを、再設計することなくどこでも実行できます。
「サービスとしての」環境にはさまざまなモデルが含まれており、それぞれが異なるレベルの抽象化と管理を提供します。CaaS は、Infrastructure as a Service(IaaS)と Platform as a Service(PaaS)の中間に位置する独自のサービスです。
クラウドモデル | 管理対象 | 抽象化レベル | 一般的なユースケース |
Infrastructure as a Service(IaaS) | オペレーティング システム、ミドルウェア、ランタイム、アプリケーション、データ。 | 低: 仮想マシンやストレージなどの未加工のコンピューティング リソースにアクセスできます。 | カスタム インフラストラクチャをゼロから構築。 |
Containers as a Service(CaaS) | アプリケーションと構成。 | 中: クラスタと OS は管理されますが、コンテナ環境はユーザーが制御できます。 | コンテナ化されたアプリケーションを大規模にオーケストレート。 |
Platform as a Service(PaaS) | アプリケーションとデータ。 | 高: ほぼすべてを管理。ソースコードを提供すれば、プラットフォームがそれを実行します。 | シンプルなウェブ アプリケーションと API を迅速にデプロイ。 |
Functions as a Service(FaaS)(サーバーレス) | コード機能のみ。 | 非常に高い: イベントに応答して個々のステートレス関数を実行します。 | 軽量でイベント ドリブンなデータ処理タスク。 |
Software as a Service(SaaS) | なし(エンドユーザーであるため)。 | 完了: 完成したソフトウェア プロダクトをウェブ経由で配信する。 | メールや CRM などのすぐに使えるソフトウェアを利用する。 |
クラウドモデル
管理対象
抽象化レベル
一般的なユースケース
Infrastructure as a Service(IaaS)
オペレーティング システム、ミドルウェア、ランタイム、アプリケーション、データ。
低: 仮想マシンやストレージなどの未加工のコンピューティング リソースにアクセスできます。
カスタム インフラストラクチャをゼロから構築。
Containers as a Service(CaaS)
アプリケーションと構成。
中: クラスタと OS は管理されますが、コンテナ環境はユーザーが制御できます。
コンテナ化されたアプリケーションを大規模にオーケストレート。
Platform as a Service(PaaS)
アプリケーションとデータ。
高: ほぼすべてを管理。ソースコードを提供すれば、プラットフォームがそれを実行します。
シンプルなウェブ アプリケーションと API を迅速にデプロイ。
Functions as a Service(FaaS)(サーバーレス)
コード機能のみ。
非常に高い: イベントに応答して個々のステートレス関数を実行します。
軽量でイベント ドリブンなデータ処理タスク。
Software as a Service(SaaS)
なし(エンドユーザーであるため)。
完了: 完成したソフトウェア プロダクトをウェブ経由で配信する。
メールや CRM などのすぐに使えるソフトウェアを利用する。
コンテナは、ソフトウェアをあらゆる場所に配信することを目的としています。コンテナの詳細を確認する。
はい。実際には、責任の分離、アプリケーションの分離、バッチ処理、ハイブリッド クラウドのデプロイなど、他の多くのメリットも得られます。
Google Kubernetes Engine(GKE)は、Service オブジェクトや DNS などの Kubernetes のネイティブ メカニズムとのシームレスな統合により、サービス ディスカバリを簡素化します。マネージド サービスとして提供される GKE は、マルチクラスタ サービス(MCS)や Service Directory との直接統合などの機能によって、これらの機能を強化します。
新しいコードをより迅速に作成してデプロイできますが、リソースは管理されず、何度も考え直されることもありません。
CaaS プラットフォームの導入は、企業の開発チームと運用チームにさまざまな戦略的メリットをもたらします。
ポータビリティ
CaaS はワークロードに役立ちます。コンテナベースのアプリケーションが標準の CaaS フレームワークで実行されている場合、簡単に編集できます。
スケーラビリティ
リソースを必要なものに適合させることができます。
コーディングの高速化
これにより、自動化のプラクティスを改善できます。
メンテナンスの改善
コンポーネントに障害が発生した場合、プラットフォームによって対処され、ユーザーの機能を維持するために迅速に修正されます。
プロバイダが基盤となる作業を処理するため、アプリのコード、アカウントへのアクセス、ファイアウォール、アクセスルールに依存することになります。CaaS 環境のセキュリティは、責任共有モデルに基づいて運用されます。CaaS プロバイダは、基盤となるインフラストラクチャを保護する責任を負います。これには、コンテナ オーケストレーションのコントロール プレーンの保護、物理データセンターとネットワークのセキュリティ確保、マネージド サービス自体の完全性の確保が含まれます。
お客様は、管理するコンポーネントのセキュリティについて責任を負います。これには、アプリケーション コードの保護、Identity and Access Management(IAM)を使用したクラスタへのアクセスの管理、コンテナ間のトラフィックを制御するためのネットワーク ポリシーの構成、そして最も重要なソフトウェア サプライ チェーンの保護が含まれます。つまり、安全なコンテナ レジストリを使用し、コンテナ イメージをデプロイする前に既知の脆弱性についてスキャンします。
IT チームの責任:
Google Kubernetes Engine(GKE)は、Google Cloud の優れた CaaS サービスです。基本的なデプロイのセットアップは、論理的なコンテナネイティブのワークフローに従います。
ステップ 1: アプリケーションをコンテナ化する。
まず、アプリケーションのテキスト ファイルを作成します。このシンプルなテキスト ファイルには、アプリケーション、その依存関係、ランタイム環境を静的コンテナ イメージにビルドする手順が含まれています。
ステップ 2: イメージをレジストリに保存する。
テキスト ファイルからコンテナ イメージをビルドし、安全な非公開レジストリに push します。Artifact Registry は、コンテナ イメージの保存とバージョン管理を行うための Google Cloud のマネージド サービスです。
ステップ 3: GKE クラスタを作成する。
Google Cloud コンソールまたは gcloud コマンドライン ツールを使用して Kubernetes クラスタをプロビジョニングします。ノードの管理とスケーリングを自動化するフルマネージドのエクスペリエンスを実現するには、GKE Autopilot クラスタを選択できます。
ステップ 4: デプロイを定義する。
Kubernetes マニフェスト ファイル(deployment.yaml など)を作成します。このファイルでは、使用するコンテナ イメージ、必要なレプリカ数、必要な CPU とメモリのリソースを指定して、アプリケーションの望ましい状態を宣言的に定義します。
ステップ 5: アプリケーションをクラスタにデプロイする。
Kubernetes コマンドライン ツールである kubectl を使用して、マニフェスト ファイルをクラスタに適用します。GKE のコントロール プレーンはリクエストを受け取り、アプリケーションのコンテナがクラスタのワーカーノードで実行されるようにスケジュールします。
ステップ 6: アプリケーションを公開する。
ユーザーがインターネット経由でアプリケーションにアクセスできるようにするには、LoadBalancer タイプの Kubernetes Service マニフェストを作成します。このマニフェストを適用すると、GKE はクラウド ロードバランサを自動的にプロビジョニングし、パブリック IP アドレスを割り当てて、外部トラフィックを実行中のコンテナにルーティングします。