コンテナ・オーケストレーションとは
コンテナ・オーケストレーションは、コンテナのライフサイクル全体を通じて、コンテナのデプロイメント、管理、スケーリング、ネットワーキングを自動化するプロセスです。多数のさまざまな環境に大規模にソフトウェアを一貫してデプロイできるようになります。
コンテナはアプリケーションとそのランタイム環境を自己完結型ユニットにパッケージ化し、クラウドネイティブ・アプリケーション開発の基盤となります。コンテナ・オーケストレーションは、数百から数千におよぶコンテナやホストをデプロイし、管理する必要のあるエンタープライズにとって特に重要です。コンテナ・オーケストレーション・ソリューションのほとんどは、広く普及しているオープンソース・プラットフォームの Kubernetes をベースとしています。
コンテナ・オーケストレーションのメリット
コンテナ・オーケストレーションは、開発手法、コスト、セキュリティの面で利点があります。
開発の迅速化
コンテナは可搬性を備え、複数の環境間で一貫して動作するように設計されており、ソフトウェア開発を迅速化する機会をもたらします。コンテナ・オーケストレーションにより、継続的インテグレーションおよび継続的デプロイメント (CI/CD) パイプラインの構築が可能になり、自動化によってソフトウェア開発ライフサイクル全体を通じてソフトウェアのデリバリーが向上します。コンテナ・オーケストレーションは、アイデアを開発からデプロイメントに持ち込むプロセスを加速することを目的とした DevOps アプローチにも関連しています。
コスト削減
コンテナ・オーケストレーションは、ニーズに基づいてコンテナを自動的にスケーリングし、アプリケーションに必要な容量を提供しながら、リソースを節約し、コストを削減します。コンテナ・オーケストレーション・プラットフォームは、マルチクラウド環境やハイブリッド環境を効率的に使用するために必要な柔軟性を提供できます。
セキュリティ
コンテナ内でソフトウェアを開発すると、実行中のアプリケーションを更新したりパッチを適用したりする必要がなく、ビルド段階でセキュリティの問題を修正できます。これにより、コンテナの挙動がより予測しやすくなり、異常な動作が検知できるようになります。また、コンテナ・オーケストレーションを使用することで、セキュリティとガバナンスのポリシーを適用し、Pod または Pod のグループごとにポリシーをセグメント化できます。コンテナ・オーケストレーション・プラットフォームは、ユーザーやサービスアカウントに特定の権限を割り当てるロールベースのアクセス制御 (RBAC) もサポートします。
Red Hat のリソース
コンテナ・オーケストレーションの用途
コンテナ・オーケストレーションを使用すると、次のようなタスクを自動化および管理できます。
- プロビジョニングとデプロイメント
- 構成とスケジューリング
- リソースの割り当て
- コンテナの可用性
- インフラストラクチャ全体のワークロードのバランシングに基づくコンテナのスケーリングまたは削除
- ロードバランシングとトラフィックルーティング
- コンテナの状態の監視
- アプリケーションを実行するコンテナに基づいたアプリケーションの構成
- コンテナ間のやりとりにおける安全性の維持
コンテナ・オーケストレーション・ツール
コンテナ・オーケストレーション・ツールは、コンテナとマイクロサービス・アーキテクチャを大規模に管理するためのフレームワークを提供します。コンテナのライフサイクル管理に使用できるコンテナ・オーケストレーション・ツールは数多くあります。一般的なものとしては、Kubernetes、Docker Swarm、Apache Mesos などがあります。
Kubernetes はオープンソースのコンテナ・オーケストレーション・ツールであり、元々、Google のエンジニアによって開発および設計されました。2015 年に Google は、新しく設立された Cloud Native Computing Foundation に Kubernetes プロジェクトを寄贈しました。
コンテナ・オーケストレーションをサポートする Kubernetes
Kubernetes オーケストレーションによって、複数のコンテナにまたがるアプリケーションサービスを構築し、コンテナをクラスタにスケジュールして、コンテナのスケーリングを行い、コンテナの正常性を継続的に管理できるようになります。
Kubernetes は、コンテナ化されたアプリケーションのデプロイとスケーリングに伴う多くの手動プロセスをなくします。物理マシンでも仮想マシンでも、Linux コンテナを実行しているホストをまとめてクラスタ化することができますが、Kubernetes はこれらのクラスタを容易かつ効率的に管理するプラットフォームを提供します。
さらに、信頼性の高いコンテナベースのインフラストラクチャを本番環境に完全に実装することができます。クラスタには、パブリック、プライベート、ハイブリッドクラウドにまたがるホストが含まれます。この理由で Kubernetes は、迅速なスケーリングが要求されるクラウドネイティブ・アプリケーションをホストするプラットフォームとして最適です。
Kubernetes ではアプリケーションを設計し直すことなく移行できることから、ワークロードの可搬性と負荷分散もサポートされます。
Kubernetes の主なコンポーネント
- クラスタ:コントロールプレーンと、少なくとも 1 つのコンピューティングマシン (ノード)。
- コントロールプレーン:Kubernetes ノードを制御する一連のプロセス。すべてのタスクの割り当てはここで発生します。
- Kubelet:ノード上で実行されるサービスで、コンテナマニフェストを読み取り、定義されたコンテナが確実に開始し実行されるようにします。
- Pod:1 つのノードにデプロイされた、1 つ以上のコンテナからなるグループ。Pod に入っているすべてのコンテナは、同じ IP アドレス、IPC、ホスト名、その他のリソースを共有します。
コンテナ・オーケストレーション・ツールの仕組み
Kubernetes などのコンテナ・オーケストレーション・ツールを使用する場合は、YAML あるいは JSON ファイルを使用してアプリケーションの設定を記述します。設定ファイルは、構成管理ツールに、コンテナイメージの場所、ネットワークの確立方法、ログの保存場所を指示します。
新しいコンテナをデプロイすると、コンテナ管理ツールは、定義された要件や制限を考慮して、クラスタへのデプロイメントを自動的にスケジュールし、適切なホストを見つけます。次に、オーケストレーション・ツールが、構成ファイルで決定された仕様に基づいてコンテナのライフサイクルを管理します。
Kubernetes パターンを使用して、コンテナベースのアプリケーションとサービスの構成、ライフサイクル、規模を管理できます。これらの繰り返し可能なパターンは、Kubernetes 開発者が完全なシステムを構築するために必要とするツールです。
コンテナ・オーケストレーションは、オンプレミスサーバー、パブリッククラウド環境、プライベートクラウド環境など、コンテナを実行する任意の環境で使用できます。
Kubernetes デプロイメントとは
Red Hat のコンテナ・オーケストレーションを選ぶ理由
Red Hat は、オープンソース・コンテナ・テクノロジーのリーダー企業であるとともに積極的に開発も行っており、コンテナ・インフラストラクチャの保護、単純化、自動更新に不可欠なツールを生み出しています。
Red Hat® OpenShift® を活用することで、開発者はコンテナ化された新しいアプリケーションを作成し、ホストし、クラウドでデプロイできるようになります。さらに、スケーラビリティ、制御性、オーケストレーションを提供することで、優れたアイデアが迅速かつ簡単にビジネスにつながるのを助けます。Kubernetes ワークロードのマネージド・クラウドサービスへのデプロイまたは移行を検討しているなら、Amazon Web Services (AWS)、Microsoft Azure、Google Cloud、IBM Cloud、およびその他のプロバイダーで、OpenShift をクラウドネイティブ・サービスとして使用することもできます。
OpenShift を基盤として構築された Red Hat Advanced Cluster Management と Red Hat Ansible® Automation Platform を併用することで、パブリッククラウド、オンプレミス、エッジ環境など、複数のリージョンにまたがる複数の Kubernetes クラスタを効率的にデプロイし、管理できます。
Red Hat 公式ブログ
Red Hat のお客様、パートナー、およびコミュニティのエコシステムに関する最新の情報を入手しましょう。