DockerとKubernetes
ソフトウェアの開発、テストを行ったコンピューティング環境から別のコンピューティング環境に移行する場合、サポートするソフトウェア環境が同一でないと、問題が発生する可能性があります(たとえば、ノートパソコンで開発したソフトウェアを仮想マシン(VM)に移行したり、LinuxをWindowsオペレーティングシステムに移行したりする場合など)。
ソフトウェアコンテナを使用することで、アプリケーションを一つの環境から別の環境に移動するときに発生する可能性のある移行の問題を解決できます。
コンテナでは、アプリケーションを単一のバンドルと、その実行に必要な関連バイナリ、ライブラリ、設定ファイル、および任意の依存関係がカプセル化されます。 コンテナを使用すると、小さなマイクロサービスや大きなアプリケーションを実行できます。
コンテナの一般的なユースケースは、以下のようなものです。
- 既存のアプリケーションのリフトアンドシフトを行い、最新のクラウドアーキテクチャに移行する。
- 反復的なジョブやタスクを新しいコンテナですばやく処理する。
一般的なコンテナエンジンソフトウェアには、以下のようなものがあります。
- Docker
- AWS Fargate
- LXC Linux Containers
- Rkt
- Apache Mesos
Docker
Dockerエンジンは、アプリケーションを開発し、コンテナ化するオープンソースのコンテナ化テクノロジーです。
アプリケーションの高速かつ安定した配信、デプロイメント、スケーリングに活用でき、同じハードウェアで多数のワークロードを実行できます。
Dockerエンジンでは、REST API通信を利用したDockerクライアントとDockerデーモン(Docker Host)によるクライアントサーバーアーキテクチャが採用されています。 Dockerレジストリ(Docker Hub)には、パブリックおよびプライベートのDockerイメージが保存されます。
Pega Platformをインストールする場合は、Webサーバーとデータベースサーバーを使用する必要があります。 これらのサーバーはそれぞれ独自のコンテナで実行されます。1つはアプリケーションサーバー用で、もう1つはデータベースサーバー用です。 最初のコンテナにはデータベースサーバーと必要なライブラリ、およびその他のコンポーネントが収められています。 2番目のコンテナには、Tomcatアプリケーションサーバーとデータベース接続用のデータベースドライバーライブラリーファイルがインストールされます。
Pega Platform™のインストールの例では、Dockerなどのコンテナを使用した場合、以下の利点があります。
- ワークロードのバランスに基づいて、Webサーバーを自動的にスケールアップまたはスケールダウンできます。
- 古いサーバーに障害が発生した場合、自動的に新しいWebサーバーを作成できます。
- コンテナの状態をモニタリングできます。
コンテナのオーケストレーション
コンテナオーケストレーションは、パイプラインのコンテナの数が大幅に増加したときに、特に継続的インテグレーションと継続的デリバリー(CI/CD)パイプラインで威力を発揮します。 コンテナオーケストレーションにより、自動化コンテナの管理、スケジュール、負荷分散、ネットワーク化、およびモニタリングが可能になります。
一般的なコンテナオーケストレーションツールには、以下のようなものがあります。
- Kubernetes
- Docker Swarm
- Apache Mesos
Kubernetes
Kubernetesは、コンテナのデプロイメント、スケーリング管理を自動化するオープンソースのコンテナオーケストレーションエンジンとなります。 オープンソースプロジェクトはCloud Native Computing Foundation(CNCF)によってホスティングされます。
Pega PlatformのオーケストレーションのコンテキストでKubernetesに使用されるいくつかの用語について理解しておきましょう。
Pega Platformのオーケストレーションは、「Pods」から始まります。「Pods」は、Pegaが提供するDockerイメージです。 Kubernetesを使って「Pods」の論理セットと、それにアクセスするためのポリシーを定義できます。 外部アクセスは「Ingress」を使用して管理することもできます。 Kubernetesでは、「ConfigMap」を使用した設定変更もサポートされており、prconfig.xmlファイルなどのXMLベースのオブジェクトを利用できます。