詳細
K2HR3 の仕様およびシステム構成について説明します。
K2HR3 の概要は、概要、特徴を参照してください。
ユーザ(USER)とテナント(TENANT)
K2HR3システムは、ユーザ(USER)とテナント(TENANT)の管理はせず、K2HR3システムと連携させたユーザ管理システムを使います。
例えば、OpenStackと連携させている場合、Openstackのユーザとテナント(もくはプロジェクト)をK2HR3のユーザ(USER)とテナント(TENANT)として利用します。
OpenStack以外のユーザ管理システムの場合、個々のユーザ管理システムに対応させた追加プログラムを準備し、K2HR3システムに設定し、K2HR3のユーザ(USER)とテナント(TENANT)として定義します。
OpenStackと連携する場合
ユーザ(USER)とテナント(TENANT)および連携するOpenStackのイメージを以下に示します。
ユーザ(USER)とログイン
K2HR3 の利用者をユーザ(USER)と定義します。
K2HR3 のユーザは、K2HR3と連携する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のテナント(もしくはプロジェクト)に自動的に紐付けされます。
OpenStack以外の場合
OpenStack以外の場合、お使いのユーザ認証システムと連携するためのコードを準備し、K2HR3システムに設定します。
kubernetesの場合(OpenStackを利用していない場合)には、この項目を参照してください。
準備
お使いのユーザ認証システムと連携するためのコードを準備する必要があります。
コードの内容は、k2hr3_app/routes/lib/userValidateCredential.jsや、k2hr3_app/routes/lib/userValidateDebug.jsを参考にして作成できます。
設定
専用のコードをK2HR3 Web Application (k2hr3_app)を展開している routes/libディレクトリに配置します。
次に、このファイル名(拡張子.jsなし)をconfigディレクトリのconfファイルに記述する‘validator’に設定してください。
動作
上記の設定により、K2HR3 Web Appilicationのログイン(Siginin)ダイアログからログインができるようになります。
詳細については、今後ドキュメントを拡充していきます。
ロール(ROLE)・ポリシー/ルール(POLICY)・リソース(RESOURCE)
ロール(ROLE)、ポリシー/ルール(POLICY)およびリソース(RESOURCE)の関係を以下の図に示します。
ロール(ROLE)
K2HR3のロール(ROLE)とは、リソース(RESOURCE)へのアクセスをするグループを定義したものです。
ユーザ(USER)が、リソース(RESOURCE)へのアクセスの種類別、グループ別にロール(ROLE)を登録します。
ロール(ROLE)は、テナント(TENANT)に紐付き、テナント(TENANT)別に定義します。
ロール(ROLE)は、リソース(RESOURCE)にアクセスするメンバーの入れ物(グルーピングされたもの)です。
このメンバーとは、K2HR3のREST APIサーバーにアクセスするホスト(HOST)であり、オンプレミスおよびIaaS(OpenStackやkubernetes)で管理される仮想コンピューティング(Virtual Machine)、ポッド/コンテナー(Pods/Containers)です。
ロール(ROLE)のメンバーは、ホスト(HOST)のIPアドレス他が登録されます。
ロール(ROLE)のメンバー登録は、K2HR3の連携するOpenStackの仮想コンピューティング(Virtual Machine)もしくはkubernetesのポッド/コンテナー(Pods/Containers)の作成に連動して、自動的に登録できます。
自動的に登録したメンバーは、OpenStackからの仮想コンピューティング(Virtual Machine)もしくはkubernetesのポッド/コンテナー(Pods/Containers)の削除に連動して、自動的に登録が抹消されます。
また、K2HR3のWebアプリケーションからロール(ROLE)のメンバーをユーザ(USER)の手動入力で登録/削除することもできます。
ポリシー/ルール(POLICY)
ポリシー/ルール(POLICY)とは、リソース(RESOURCE)へのアクセス方法を定義したものです。
ポリシー/ルール(POLICY)は、テナント(TENANT)に紐付き、テナント(TENANT)別に定義します。
リソース(RESOURCE)へのアクセス方法には、以下の3つの種別があらかじめ定義されています。
- 読み出し(READ)
- 書き込み(WRITE)
- 実行(EXECUTE)
現在まだ提供されていません。
ユーザ(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)の連携のイメージを以下に示します。
サービス(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、kubernetes)連携
K2HR3システムは、IaaS(OpenStackおよびkubernetes)と連携し、K2HR3システムでのユーザ(USER)、テナント(TENANT)を連携します。
kubernetesの場合には、kubernetesに提供されているユーザ認証システムとの連携が必要です。
この連携により、OpenStackのユーザ、テナント(もしくはプロジェクト)が対応することで、利用者への負担を軽減し、また簡単にシステム導入を可能とします。
また、K2HR3システムは、IaaS(OpenStackおよびkubernetes)と連携し、ロール(ROLE)メンバーの自動的な登録・削除ができます。
ロール(ROLE)メンバーの自動的な登録・削除の連携は以下に説明するように実行されます。
ロール(ROLE)メンバーの自動登録
K2HR3は、OpenStackの仮想コンピューティング(Virtual Machine)もしくはkubernetesのポッド/コンテナー(Pods/Containers)の作成に連動し、自動的にロール(ROLE)メンバーへ作成したホスト(HOST)を追加できます。
OpenStackの場合
OpenStackの場合、自動登録を行うために仮想コンピューティング(Virtual Machine)の作成時にUser Data Scriptを指定します。
ここで指定するUser Data Scriptは、K2HR3システム(Webアプリケーション)から取得した小さなテキストデータです。
User Data Scriptのテキストデータは、作成するホスト(HOST)を追加したいロール(ROLE)を指定して、取得することができます。
取得したUser Data Scriptのテキストデータを仮想コンピューティング(Virtual Machine)作成時に指定するのみです。
kubernetesの場合
kubernetesの場合は、ポッド(Pods)起動時に、Secret の設定とPodsにSidecarを指定し、起動します。
SecretおよびSidecarのためのyamlサンプルコードは、K2HR3 Web Applicationから取得することができます。
取得したyamlサンプルコードを、起動時のyamlへ反映させ、ポッド(Pods)を起動してください。
ロール(ROLE)メンバーの自動削除
OpenStackの場合
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を参照してください。
kubernetesの場合
kubernetesの場合もOpensStackと同様に、ポッド/コンテナー(Pods/Containers)の削除に連動し、自動的にロール(ROLE)メンバーからそのポッド/コンテナー(Pods/Containers)を削除できます。
対象のポッド/コンテナー(Pods/Containers)がK2HR3システムと連動し、自動的に登録されていれば、ポッド/コンテナー(Pods/Containers)を削除するだけで自動的にメンバーから削除されます。
OpenStackにおけるロール(ROLE)メンバーの定期確認と自動削除
OpenStackとの連携において、K2HR3システムのK2HR3 OpenStack Notification Listenerを起動できない場合であっても、自動的にロール(ROLE)メンバーからそのホスト(HOST)を削除できます。
この削除は、K2HR3システムに内包されている Watcher プログラムを使って、実現されています。
Watcherプログラムは、IaaS(OpenStack)連携により自動的に登録されたロール(ROLE)メンバーのホスト(HOST)の実在確認を定期的にチェックし、削除されていた場合に自動的に登録を削除します。
K2HR3システムのK2HR3 OpenStack Notification Listenerを起動できない場合であっても、この Watcher プログラムを起動しておくことで、同等の自動削除が提供されます。
Watcherプログラムの仕様・利用方法については、ツールを参照してください。
ロール(ROLE)メンバーの自動登録・削除
OpenStackの場合
OpenStackにおけるロール(ROLE)メンバーの自動登録・削除について、以下の図に概要を示します。
kubernetesの場合
kubernetesにおけるロール(ROLE)メンバーの自動登録・削除について、以下の図に概要を示します。
OpenStackにおける自動登録・削除時のその他の処理
OpenStackの場合、ロール(ROLE)メンバーの自動登録・削除するために、User Data Scriptを指定します。
このUser Data Scriptは、自動登録のときに、パッケージのインストールとSystemdサービスの起動を行うことができます。
また、削除するときに、Systemdサービスの停止を行うことができます。
この設定は、リソース(RESOURCE)データで指定することができます。
詳しくは、その他の使い方 を参照してください。
K2HR3システム
K2HR3システムの全体概要図を以下に示します。
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 であるサーバー(プログラム)です。
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 Get Resource
K2HR3 Get Resourceは、K2HR3システムにアクセスするホスト(HOST)で動作させるSystemdサービスです。
このプログラムはユーティリティであり、ホスト(HOST)の登録されているロール(ROLE)に対応したリソース(RESOURCE)データを定期的に取得できます。
K2HR3 Get Resourceのソースコードは、k2hr3_get_resource Githubリポジトリにあり、k2hr3 Githubリポジトリのサブモジュールとして登録されています。
K2HR3 Command Line Interface(CLI)
K2HR3 Command Line Interface(CLI)は、K2HR3 REST APIを操作するCommand Line Interface(CLI)です。
これは、K2HR3 REST APIにアクセス可能な任意のホスト(HOST)で動作できます。
ユーザが、K2HR3 Web Applicationから操作することと同じ操作がコマンドラインで実行きます。
K2HR3 Command Line Interface(CLI)のソースコードは、k2hr3_cli Githubリポジトリにあり、k2hr3 Githubリポジトリのサブモジュールとして登録されています。
K2HR3 Helm Chart
K2HR3 Helm Chartは、kubernetes環境に Helm(Kubernetes用パッケージマネージャー) を使ってK2HR3システムを構築するための Helm Chart です。
この Helm Chart を使うことで、kubernetes環境に簡単にK2HR3システムの構築ができます。
kubernetes環境にK2HDKC DBaaS を構築をする K2HDKC Helm Chartを使う前に、K2HR3システムを構築するために使用できます。
K2HR3 Helm Chartのソースコードは、k2hr3_helm_chart Githubリポジトリにあり、Artifact HubでHelmリポジトリが公開されています。
RANCHERへの対応
K2HR3 Helm Chartは、RANCHERに対応しています。
RANCHER に K2HR3 Helm Chart を リポジトリとして登録することで、RANCHERから利用できます。
詳細(その他)
上述以外のK2HR3システムの共通の仕様、その他の詳細について、詳細(その他)で説明します。
What's new TOP Usage