What's new TOP Usage

詳細

K2HR3 の仕様およびシステム構成について説明します。
K2HR3 の概要は、概要特徴を参照してください。

ユーザ(USER)とテナント(TENANT)

ユーザ(USER)とテナント(TENANT)および連携するIaaS(OpenStack)のイメージを以下に示します。

K2HR3 Detail - USER/TENANT

ユーザ(USER)とログイン

K2HR3 の利用者をユーザ(USER)と定義します。

K2HR3 のユーザは、K2HR3と連携するIaaS(OpenStack)のユーザです。
OpenStackと連携する場合、既存のOpenStackへのログインユーザがそのままK2HR3で利用できます。

K2HR3でログインする場合、OpenStack Identity サービス (Keystone) を使用しています。
連携するOpenStack Identity サービス (Keystone) のユーザであれば、K2HR3をすぐに利用できます。

テナント(TENANT)

テナント(TENANT)は、K2HR3と連携するIaaS(OpenStack)のテナント(もしくはプロジェクト)と同じになります。
これは、K2HR3が連携するIaaS(OpenStack)のテナント(もしくはプロジェクト)と同期して動作するためです。

K2HR3のユーザ(USER)は、OpenStack OpenStack Identity サービス (Keystone) でグルーピングされているOpenStackのテナント(もしくはプロジェクト)に自動的に紐付けされます。

ロール(ROLE)・ポリシー/ルール(POLICY)・リソース(RESOURCE)

ロール(ROLE)、ポリシー/ルール(POLICY)およびリソース(RESOURCE)の関係を以下の図に示します。

K2HR3 Detail - ROLE/POLICY-RULE/RESOURCE

ロール(ROLE)

K2HR3のロール(ROLE)とは、リソース(RESOURCE)へのアクセスをするグループを定義したものです。
ユーザ(USER)が、リソース(RESOURCE)へのアクセスの種類別、グループ別にロール(ROLE)を登録します。
ロール(ROLE)は、テナント(TENANT)に紐付き、テナント(TENANT)別に定義します。

ロール(ROLE)は、リソース(RESOURCE)にアクセスするメンバーの入れ物(グルーピングされたもの)です。
このメンバーとは、K2HR3のREST APIサーバーにアクセスするホスト(HOST)であり、オンプレミスおよびIaaS(OpenStackなど)で管理される仮想コンピューティング(Virtual Machine)です。
ロール(ROLE)のメンバーは、ホスト(HOST)のIPアドレス他が登録されます。

ロール(ROLE)のメンバー登録は、K2HR3の連携するIaaS(OpenStack)による仮想コンピューティング(Virtual Machine)の作成に連動して、自動的に登録できます。
自動的に登録したメンバーは、IaaS(OpenStack)からの仮想コンピューティング(Virtual Machine)削除に連動して、自動的に登録が抹消されます。
また、K2HR3のWebアプリケーションからロール(ROLE)のメンバーをユーザ(USER)の手動入力で登録/削除することもできます。

ポリシー/ルール(POLICY)

ポリシー/ルール(POLICY)とは、リソース(RESOURCE)へのアクセス方法を定義したものです。
ポリシー/ルール(POLICY)は、テナント(TENANT)に紐付き、テナント(TENANT)別に定義します。
リソース(RESOURCE)へのアクセス方法には、以下の3つの種別があらかじめ定義されています。

ユーザ(USER)は、ポリシー/ルール(POLICY)をこの規則を適用する対象のリソース(RESOURCE)と共に、上記の3つの種別を組み合わせて定義します。
つまり、K2HR3システムは、リソース(RESOURCE)へのアクセスは、ポリシー/ルール(POLICY)を指定して行うことで、そのリソース(RESOURCE)へのアクセス制御を行います。

リソース(RESOURCE)

リソース(RESOURCE)とは、ユーザ(USER)が自由に定義できる任意のデータです。
リソース(RESOURCE)は、テナント(TENANT)に紐付き、テナント(TENANT)別に定義します。
リソース(RESOURCE)には、テキストデータ、バイナリデータ(REST APIから指定します)を設定でき、あらゆるデータを設定できます。

たとえば、リソース(RESOURCE)にロール(ROLE)メンバーであるホスト(HOST)上で動作するアプリケーション(プログラム)が必要とする個別のデータ(設定情報等々)を設定できます。
また、それらプログラムが利用するTokenデータ、証明書なども設定できます。

リソース(RESOURCE)に設定するデータは、K2HR3システムが提供するテンプレートエンジン(後述)により展開されるテンプレート(TEMPLATE)データも設定できます。
このテンプレート(TEMPLATE)により、動的に変化するリソース(RESOURCE)を定義でき、状況に応じたリソース(RESOURCE)を提供できます。

テンプレート(TEMPLATE)

テンプレート(TEMPLATE)とは、K2HR3システムが提供するK2HR3 テンプレートエンジンにより展開されるリソース(RESOURCE)を定義したテキストデータです。
テンプレート(TEMPLATE)には、K2HR3システムにユーザ(USER)が登録したリソース(RESOURCE)、ロール(ROLE)などを指定し、その内容を展開する命令を記述できます。
また、単純な四則演算や条件文を記述できます。
このテンプレート(TEMPLATE)をK2HR3 テンプレートエンジンがロードし、その内容を展開することで、動的なリソース(RESOURCE)を提供できます。
K2HR3テンプレートエンジンの使い方は、K2HR3 テンプレートエンジンを参照してください。

サービス(SERVICE)の連携について

サービス(SERVICE)の連携のイメージを以下に示します。

K2HR3 Detail - SERVICE

サービス(SERVICE)

+サービス+SERVICE)機能とは、K2HR3システムの中でテナント(TENANT)もしくはロール(ROLE)間を跨ぐリソース(RESOURCE)の提供を行うための機能です。 +サービス+SERVICE)機能で使うサービス(SERVICE)は、テナント(TENANT)に紐付き、テナント(TENANT)別に定義します。

サービス(SERVICE)は、その機能の所有側(OWNER)と利用側(MEMBER)が定義されています。
所有側(OWNER)とは、リソース(RESOURCE)を提供する側であり、利用側(MEMBER)とは、リソース(RESOURCE)を利用する側です。

用途・目的

+サービス+SERVICE)機能の目的は、異なるテナント(TENANT)間でリソース(RESOURCE)提供する上での連携機能を提供することです。
リソース(RESOURCE)の所有側(OWNER)の役割は、利用側(MEMBER)のテナント(TENANT)を登録し、リソース(RESOURCE)へのアクセスを許可するだけです。
リソース(RESOURCE)の利用が許可されたテナント(TENANT)は、そのテナント(TENANT)内で自由にリソース(RESOURCE)にアクセスできるロール(ROLE)とそのメンバーを定義できます。

つまり、所有側(OWNER)は、提供するリソース(RESOURCE)の内容、アクセス方法を制御でき、アクセスする利用側(MEMBER)をテナント(TENANT)単位で管理できます。
利用側(MEMBER)は、提供されるリソース(RESOURCE)にアクセスするロール(ROLE)を管理し、ロール(ROLE)メンバーのホスト(HOST)を管理します。

IaaS(OpenStack)連携

K2HR3システムは、IaaS(OpenStack)と連携し、K2HR3システムでのユーザ(USER)、テナント(TENANT)を連携します。
この連携により、IaaS(OpenStack)のユーザ、テナント(もしくはプロジェクト)が対応することで、利用者への負担を軽減し、また簡単にシステム導入を可能とします。

また、K2HR3システムは、IaaS(OpenStack)と連携し、ロール(ROLE)メンバーの自動的な登録・削除ができます。
ロール(ROLE)メンバーの自動的な登録・削除の連携は以下に説明するように実行されます。

ロール(ROLE)メンバーの自動登録

K2HR3は、OpenStackで仮想コンピューティング(Virtual Machine)の作成に連動し、自動的にロール(ROLE)メンバーへ作成したホスト(HOST)を追加できます。
この自動登録を行うために、OpenStackで仮想コンピューティング(Virtual Machine)の作成時にUser Data Scriptを指定します。 ここで指定するUser Data Scriptは、K2HR3システム(Webアプリケーション)から取得した小さなテキストデータです。 User Data Scriptのテキストデータは、作成するホスト(HOST)を追加したいロール(ROLE)を指定して、取得することができます。 取得したUser Data Scriptのテキストデータを仮想コンピューティング(Virtual Machine)作成時に指定するのみです。

ロール(ROLE)メンバーの自動削除

K2HR3は、OpenStackで仮想コンピューティング(Virtual Machine)の削除に連動し、自動的にロール(ROLE)メンバーからそのホスト(HOST)を削除できます。
対象のホスト(HOST)がOpenStackで作成され、自動的にロール(ROLE)にメンバーとして登録されている場合、OpenStackからその仮想コンピューティング(Virtual Machine)を削除するだけで自動的にメンバーから削除できます。

この機能は、K2HR3の提供するK2HR3 OpenStack Notification Listenerで実装されています。
ユーザ(USER)はK2HR3 OpenStack Notification Listenerプログラムを予め設定・起動しておくことで、自動削除の機能を利用できます。
このプログラムの仕様・利用方法については、K2HR3 OpenStack Notification Listenerを参照してください。

ロール(ROLE)メンバーの定期確認と自動削除

K2HR3システムのK2HR3 OpenStack Notification Listenerを起動できない場合であっても、自動的にロール(ROLE)メンバーからそのホスト(HOST)を削除できます。
この削除は、K2HR3システムに内包されている Watcher プログラムを使って、実現されています。
Watcherプログラムは、IaaS(OpenStack)連携により自動的に登録されたロール(ROLE)メンバーのホスト(HOST)の実在確認を定期的にチェックし、削除されていた場合に自動的に登録を削除します。
K2HR3システムのK2HR3 OpenStack Notification Listenerを起動できない場合であっても、この Watcher プログラムを起動しておくことで、同等の自動削除が提供されます。

Watcherプログラムの仕様・利用方法については、ツールを参照してください。

OpenStackにおけるロール(ROLE)メンバーの自動登録・削除

OpenStackにおけるロール(ROLE)メンバーの自動登録・削除について、以下の図に概要を示します。

K2HR3 Detail - OpenStack Orchestration

K2HR3システム

K2HR3システムの全体概要図を以下に示します。

K2HR3 Detail - System overview

K2HR3システムは、上記の図に示すように、Webアプリケーション、Webサーバー、APIサーバー、データーサーバー(K2HDKC)、K2HR3 OpenStack Notification Listener、Watcherのサブシステムで構成されています。
各々のサブシステムの説明を以降に示します。

K2HR3 Webアプリケーション

Webアプリケーションは、K2HR3のユーザ(USER)がブラウザを通してアクセスし、K2HR3システムのコントロールパネルとして動作します。
JavaScriptベースで作成されたWebアプリケーションであり、ユーザ(USER)が必要とするK2HR3システムに登録された全てのデータの操作ができます。
ユーザ(USER)は、このWebアプリケーションを使い、ロール(ROLE)、ポリシー/ルール(POLICY)、リソース(RESOURCE)、サービス(SERVICE)を操作できます。

このWebアプリケーションの使い方については、K2HR3 Webアプリケーションの使い方を参照してください。
K2HR3 Webアプリケーションは、React.jsを使って、作成されています。

K2HR3 Webアプリケーションのソースコードは、k2hr3_app Githubリポジトリにあり、k2hr3 Githubリポジトリのサブモジュールとしても登録されています。

K2HR3 Webサーバー

Webサーバーは、ユーザ(USER)がWebアプリケーションを利用するためにアクセスするWebサーバーです。
このWebサーバーから、WebアプリケーションのJavaScriptがブラウザにロードされ、実行されます。
Webサーバーは、Server Side JavaScriptであり、Node.jsを使って動作します。

K2HR3 Webサーバーのソースコードは、k2hr3_app Githubリポジトリにあり、k2hr3 Githubリポジトリのサブモジュールとして登録されています。

K2HR3 APIサーバー

APIサーバーは、データーサーバー(K2HDKC)に存在するロール(ROLE)、ポリシー/ルール(POLICY)、リソース(RESOURCE)、サービス(SERVICE)などのデータを操作するためのREST APIを提供します。
このAPIサーバーを通して、Webアプリケーション/Webサーバーとデーターサーバー(K2HDKC)が通信を行います。
また、ユーザ(USER)やロール(ROLE)に登録されているホスト(HOST)が、このAPIサーバーのREST APIを直接呼出し、リソース(RESOURCE)などのデータを読み出し、書き込みを行います。
APIサーバーおよびREST APIについては、K2HR3 REST APIを参照してください。
REST APIおよびAPIサーバーは、Server Side JavaScriptであり、Node.jsを使って動作します。

K2HR3 APIサーバーのREST APIのソースコードは、k2hr3_api Githubリポジトリにあり、k2hr3 Githubリポジトリのサブモジュールとして登録されています。

K2HR3 データーサーバー(K2HDKC)

データーサーバー(K2HDKC)は、K2HR3システムで管理するロール(ROLE)、ポリシー/ルール(POLICY)、リソース(RESOURCE)、サービス(SERVICE)などを保管、管理するサーバーです。
このデーターサーバーは、AntPickaxが提供する分散KVSであるK2HDKCで構築されています。

K2HR3システムで利用している分散KVSについては、K2HDKCを参照してください。

K2HR3 OpenStack Notification Listener

これは、K2HR3システムで利用する K2HR3 OpenStack Notification Listener であるサーバー(プログラム)です。
IaaS(OpenStack)と連携し、仮想コンピューティング(Virtual Machine)削除の検出、およびロール(ROLE)へのメンバーから対象のホスト(HOST)の自動削除を行います。

このプログラムにの使い方については、K2HR3 OpenStack Notification Listenerを参照してください。
K2HR3 OpenStack Notification Listenerのソースコードは、k2hr3_osnl Githubリポジトリにあり、k2hr3 Githubリポジトリのサブモジュールとして登録されています。

K2HR3 Watcher

Watcherは、USERがK2HR3 OpenStack Notification Listenerを利用できない場合、仮想コンピューティング(Virtual Machine)削除の監視、およびロール(ROLE)メンバーから対象のホスト(HOST)の自動削除ができる代替プログラムです。

このプログラムの使い方については、Watcherを参照してください。
K2HR3 Watcherのソースコードは、k2hr3_api Githubリポジトリにあり、k2hr3 Githubリポジトリのサブモジュールとして登録されています。

詳細(その他)

上述以外のK2HR3システムの共通の仕様、その他の詳細について、詳細(その他)で説明します。

What's new TOP Usage