FIWARE Docker コンテナサービス (FDCS)

ゴール

FIWARE Docker Container Service (FDCS)は、FIWARE テナントがローカルの Docker クライアントを使用して、Docker リソース (コンテナ、ボリューム、ネットワークなど) をリモート管理できるように、Docker APIを公開します。しかし、テナントは互いに絶縁されているため、作成した Docker リソースのみを管理できます。通常の Docker 機能を公開することに加えて、FDCS は認証と認可の機能を提供し、異なる FIWARE アカウント間のテナントの分離をサポートすることができます。マルチテナント Docker サポートは、FIWARE Keystone サービスと既存のアカウント定義と統合します。このサービスは、テナント同士が相互に干渉することなく同じ Docker リソース名を使用できるように、テナント間の名前スコープのサポートも提供します。

FDCS は FIWARE Lab の docker.lab.fiware.org:2376 に配備されているため、ユーザは単にサービスへの参加申請をするだけでそのメリットを得ることができます。FDCS をオンプレミスにインストールして、そのサイトでプライベート FDCS クラスタに Docker コンテナを展開することもできます。

FDCS が提供する主な機能は次のとおりです :

  • マルチテナント・アイソレーション

  • 名前スコープ

  • Docker ホストのライフサイクル管理

  • ネットワークとストレージに接続された Docker ホストの管理

  • Docker ホストのリソース監視

  • Docker ホストに関連付けられた永続データの回復

  • リソース割り当ての管理

  • Docker ホストへの安全なアクセス

  • Docker コンテナへの安全なアクセス

ラショナル

このサービスは、テナント管理者が Docker ホストを管理する作業から解放されるため、FIWARE アプリケーションを開発するための Docker の使用を簡素化します。Docker ホストはFIWARE Lab インフラストラクチャ・プロバイダによって管理されます。さらに、Docker ホストと関連リソースが複数のテナントによって共有されるため、FIWARE Lab はホストあたりのコンテナ密度を高めることができます。

説明

Docker Swarm は Docker のネイティブ・クラスタリングです。これは、Docker ツールのフルスイートを使用して Docker ホストのプールにアクセスできるようにします。Docker Swarm は標準の Docker API を提供していますので、すでに Docker デーモンと通信しているツールであれば、Swarm を使用して複数のホストに透過的に拡張できます。このサービスは、マルチテナントの隔離と名前のスコープをサポートするために Swarm を強化します。

Docker クライアントは、Docker Remote API を介して FDCS と対話します。Docker API は RESTful なインターフェイスであり、すべての相互作用は GET, PUT, DELETE などのよく知られた HTTP メソッドを使用して行われます。

唯一の違いは、Docker の REST リクエストに2つの追加ヘッダが含まれていることです。

 "X-Auth-Token": keystone token id and "X-Auth-TenantId": keystone tenant id

ユーザの Docker クライアントが Docker cli である場合、ヘッダを含むように docker config.json を更新する必要があります :

 { "HttpHeaders":

   { "X-Auth-Token": <keystone token id>,

     "X-Auth-TenantId": <keystone tenant id>

   }

 }

サービスが Docker リクエストを受け取ると、FIWARE の Keystone Identity Manager に通知して、ヘッダのトークンとテナント id に基づいてテナントのリクエストを承認します。

下の図はこのプロセスを示しています。

ステップ1 で、ユーザは、テナントのメンバーである FIWARE ユーザを記述する Keystone に、"Keystone 認証"のリクエストを送信します。

ステップ2,3 では、Keystone がトークンを生成してユーザに返します。ユーザは、docker config.json ファイルを Keystone トークンとテナント ID で更新します。

その後、Docker の REST リクエスト(トークンとテナント id を含む) を透過的にサービスに送信する、docker cli コマンドを使用します。

ステップ6 では、サービスの multi-tenant swarm が、"Keystone list tenants" のリクエストを Keystone に送信し、トークンがアクセスすることが許可されているテナントのリストを返します。

ステップ8 で、サービスの multi-tenant swarm が、ユーザのテナント id がテナントリストにあるかどうかをチェックします。テナントが認可されたら、各テナントが自分のコンテナ、ボリューム、およびネットワークのみを管理し、リンクできるようにして、テナントが互いに隔離されていることを確認します。

FDCS ユーザ・ガイドでは、Docker クライアントがサービスとどのように対話するかを詳しく説明しています。

基本的な設計原則

Docker は、プロセスを独立して実行する軽量コンテナを提供するための高水準 API を実装しています。FDCS は Docker API を公開しているため、Docker クライアントを持つ FIWARE テナントは、コンテナをリモートで作成および管理できます。

以下の図では、ローカルの Docker クライアントが、Docker コンテナをサービスを使用してワークステーションからリモート管理する様子を示しています。クライアントとサービス間の通信のほとんどは、Docker REST API を介して行われます。しかし、クライアントは、サービスと対話するために有効なトークンを取得するために、FIWAREの Openstack Keystone Identity Management と通信する必要があります。

有効なトークンが取得されると、クライアントは docker cli または docker compose を使用して、複雑な Docker サービスを作成および展開できます。

以下の図では、FIWARE Docker Container Service の Docker ホストのクラスタを示しています。3人の FIWARE テナントがクラスタのリソースを共有していますが、このサービスにより、テナント同士が互いに隔離されています。

FDCS の使用方法の詳細については、FDCS ユーザ・ガイドを参照してください。

オンプレミス FDCS を管理およびインストールする方法の詳細については、FDCS 管理&インストール・ガイドを参照してください。