Red Hat OpenShift Container Platform の主要な概念

アプリケーションをクラウドにマイグレーションする利点を理解するのに役立つ、オペレーター、コンテナー、および Kubernetes の基本概念について説明します。

Red Hat® OpenShift® Container Platformの操作について詳しくは、以下のトピックを参照してください。

オペレーターおよび依存関係

オペレーターとは何ですか?
オペレーターは、 Kubernetes API を拡張することによって Kubernetes アプリケーションをパッケージ化、デプロイ、および管理する Kubernetesネイティブ・リソースのセットです。
Kubernetes アプリケーションとは何ですか?
Kubernetes アプリケーションは、 Kubernetes にデプロイされ、 Kubernetes API および kubectl ツールを使用して管理されるアプリケーションです。
オペレーターはどのように機能しますか?

オペレーターは、 Kubernetes 上のアプリケーションの効率的な管理を可能にするいくつかのソフトウェア (コントローラーと 1 つ以上のカスタム・リソース定義 (CRD)) で構成されます。

コントローラーは、カスタム Kubernetes リソースへの変更を監視し、それらに対応する Kubernetes クラスターにデプロイされるカスタム・コードです。 カスタム・リソースは、 Kubernetes API の拡張機能であり、デフォルトの Kubernetes インストール済み環境では使用できない可能性がある追加機能を提供するために使用されます。 これにより、 Kubernetesのカスタマイズとモジュール化が可能になります。

依存関係とは?
依存関係は、処理を続行する前に満たす必要がある前提条件です。 つまり、システム内の 1 つのエンティティーが別のエンティティーなしでは意味のある機能を実行できない場合、そのエンティティーは依存していると見なされます。 例えば、アプリケーションには、接続先のサーバー、データベース、またはその他のサービスに対する依存関係がある場合があります。 クラウド・マイグレーションでは、このようなアプリケーション依存関係がリスクになる可能性があります。 検出ツールにより、各アプリケーションとその依存関係の関係を明確に把握できるため、重要なすべてのアプリケーションとサービスをクラウドに正常に移行することができます。

Operator Lifecycle Manager (OLM)

Operator Lifecycle Manager とは
Operator Lifecycle Manager (OLM) は、ユーザーがクラスター内のオペレーターとその依存関係をインストール、管理、およびアップグレードできるようにすることで、 Kubernetes の機能を拡張します。
Operator Lifecycle Managerを使用する理由
  • 各要件とメタデータを持つ単一の Kubernetes リソースとしてアプリケーションを定義することで、アプリケーションをより簡単に管理できます。 OLM は、オペレーターがクラスター上で安全に実行できることを検証し、更新がどのように適用されるかを理解するために、このメタデータを必要とします。
  • アプリケーションのインストールを自動化して依存関係を解決することも、kubectl のみを使用して手動でインストールすることもできます。
  • アプリケーションの更新を自動化し、それぞれに異なる承認ポリシーを適用することができます。

コンテナー化、 Kubernetes、および Red Hat OpenShift Container Platform

コンテナーとは?
コンテナーは、アプリケーション・コードがライブラリーおよび依存関係と一緒にパッケージ化されるソフトウェアの実行可能単位です。 デスクトップ、従来型の IT、クラウドのどこでも実行できます。 コンテナーは、オペレーティング・システム (OS) 仮想化の 1 つの形式を利用します。これにより、複数のアプリケーションがプロセスを分離し、それらのプロセスがアクセスできる CPU、メモリー、およびディスクの量を制御することで、OS を共有します。
コンテナー化とは何ですか?
コンテナー化とは、ソフトウェア・コードとそのすべての依存関係をパッケージ化して、どのインフラストラクチャーでも一貫して実行できるようにするプロセスです。
コンテナー化の利点

コンテナー化により、開発者と開発チームに以下の利点が提供されます。

  • 移植性: コンテナーは、ホスト・オペレーティング・システムから (結合されていないか、依存していない) 抽象化されたソフトウェアの実行可能パッケージを作成します。したがって、ポータブルであり、プラットフォームまたはクラウド全体で一様に一貫して実行することができます。
  • 俊敏性: コンテナーを実行するためのオープン・ソースの Docker Engine は、単純な開発者ツールと、 Linux® オペレーティング・システムと Windows オペレーティング・システムの両方で機能する汎用パッケージ化アプローチを使用して、コンテナーの業界標準を開始しました。 現在では、多くのユーザーが Open Container Initiative (OCI) によって管理されるエンジンを好みます。 ソフトウェア開発者は、迅速なアプリケーション開発と機能拡張のために、アジャイルまたは DevOps のツールとプロセスを引き続き使用できます。
  • 速度: コンテナーは「軽量」と呼ばれることが多く、コンピューターのオペレーティング・システム (OS) カーネルを共有することを意味します。 このアーキテクチャーにより、サーバーの効率性が向上し、サーバーとライセンス交付のコストが削減され、初期化時間が短縮されます。
  • 障害分離: コンテナー化された各アプリケーションは分離され、他のアプリケーションとは独立して動作します。 1 つのコンテナーの障害が他のコンテナーの操作の継続に影響することはありません。 開発チームは、他のコンテナーでダウン時間を発生させずに、1 つのコンテナー内の技術的な問題を特定して修正することができます。 また、コンテナー・エンジンは、任意の OS セキュリティー分離技法 (SELinux アクセス制御など) を使用して、コンテナー内の障害を分離できます。
  • 効率性: コンテナ化された環境で実行されるソフトウェアは、マシンの OS カーネルを共有し、コンテナ内のアプリケーション層をコンテナ間で共有することができます。 したがって、コンテナーは本質的に VM よりも容量が小さく、始動時間が少なくて済みます。これにより、1 つの VM と同じ計算容量で実行できるコンテナーの数がはるかに多くなります。 このアーキテクチャーにより、サーバーの効率性が向上し、サーバーとライセンス交付のコストが削減されます。
  • 容易な管理: コンテナー・オーケストレーション・プラットフォームは、コンテナー化されたワークロードおよびサービスのインストール、スケーリング、および管理を自動化します。 コンテナー・オーケストレーション・プラットフォームは、コンテナー化されたアプリのスケーリング、新しいバージョンのアプリのロールアウト、モニタリング、ロギング、デバッグなどの機能の提供などの管理タスクを容易にします。 おそらく最も一般的なコンテナー・オーケストレーション・システムである Kubernetesは、元々 Linux コンテナー機能を自動化するオープン・ソース・テクノロジー (当初は Borg と呼ばれる社内プロジェクトに基づく Googleによるオープン・ソース・テクノロジー) です。 Kubernetes は、 Dockerなどの多くのコンテナー・エンジンと連携しますが、コンテナー・イメージのフォーマットおよびランタイムに関する Open Container Initiative (OCI) 標準に準拠するコンテナー・システムとも連携します。
  • セキュリティー: アプリケーションをコンテナーとして分離することにより、悪意のあるコードが他のコンテナーやホスト・システムに影響を与えることを本質的に防止できます。 また、セキュリティー権限を定義して、不要なコンポーネントがコンテナーに入るのを自動的にブロックしたり、不要なリソースとの通信を制限したりすることもできます。

コンテナ化について詳しく知りたい場合は、 「コンテナ化の説明」 を参照してください。

Kubernetes とは何ですか?
Kubernetes (別名「k8s」または「kube」) は、コンテナー化されたアプリケーションのデプロイメント、管理、およびスケーリングをスケジューリングおよび自動化するためのコンテナー・オーケストレーション・プラットフォームです。
Kubernetesを使用する理由

運用チームは、増え続けるコンテナーのデプロイメント、ネットワーキング、スケーラビリティー、および可用性をスケジュールし、自動化する必要があります。

開発者は、 Kubernetes を機能の幅、オープン・ソース・ツールの広範囲で拡大するエコシステム、主要なクラウド・プロバイダー (現在フル・マネージドの Kubernetes サービスを提供している企業もあります) 間でのサポートとポータビリティーを選択します。

Kubernetes は何を行いますか?

Kubernetes は、以下のタスクをスケジュールして自動化します。

  • デプロイメント: 指定された数のコンテナーを指定されたホストにデプロイし、それらを望ましい状態で実行し続けます。
  • ロールアウト: ロールアウトは、デプロイメントに対する変更です。 Kubernetesを使用して、ロールアウトの開始、一時停止、再開、またはロールバックを行うことができます。
  • サービス・ディスカバリー: Kubernetes は、DNS 名または IP アドレスを使用して、コンテナーをインターネットまたは他のコンテナーに自動的に公開できます。
  • ストレージのプロビジョニング: 必要に応じて、コンテナーの永続ローカル・ストレージまたはクラウド・ストレージをマウントするように Kubernetes を設定します。
  • ロード・バランシングとスケーリング: コンテナーへのトラフィックが急増した場合、 Kubernetes はロード・バランシングとスケーリングを採用して、安定性を維持するためにネットワーク全体に分散させることができます。
  • 高可用性のための自己修復: コンテナーに障害が発生した場合、 Kubernetes はそのコンテナーを自動的に再始動または置換することができます。また、ヘルス・チェックの要件を満たさないコンテナーを停止することもできます。
Red Hat Red Hat OpenShift Container Platformとは何ですか?

Red Hat OpenShift Container Platform は、コンテナー化されたアプリケーションのデプロイメントと管理を自動化するためのプラットフォームです。 Red Hat OpenShift Container Platform は Kubernetes を使用してコンテナーをオーケストレーションしますが、 Kubernetes はプラットフォーム・レベルの要件やデプロイメント・プロセスを管理しません。 したがって、 Red Hat OpenShift Container Platform は、プラットフォーム管理ツールとプロセスを提供することにより、 Kubernetes の機能を強化します。

詳細については、を参照してください 外部リンク・アイコンRed Hat OpenShift Container Platform