# HG changeset patch # User Ken Miyahira # Date 1596530206 -32400 # Node ID bf3c55a19edbc8229f786e0d55739f2f41b009b8 # Parent aa9a8f31b61d4422921403b28ab5b70ce4097d62 update tex diff -r aa9a8f31b61d -r bf3c55a19edb paper/mk-wm.pdf Binary file paper/mk-wm.pdf has changed diff -r aa9a8f31b61d -r bf3c55a19edb paper/mk-wm.tex --- a/paper/mk-wm.tex Tue Aug 04 16:41:57 2020 +0900 +++ b/paper/mk-wm.tex Tue Aug 04 17:36:46 2020 +0900 @@ -219,13 +219,13 @@ \end{figure} \subsection{Web コンソール} -Web コンソールは本コースの学生や教員が利用するため, 学科のアカウントでログインできる LDAP 認証が必須である。 -また, GUI で操作するため, 新しく GUI の操作に慣れる必要があることから, ユーザが操作しやすい必要がある。\par +Web コンソールは本コースの学生や教員が利用するため, 学科アカウントでログインできる必要がある。学科の LDAP サーバを利用して学科アカウントで LDAP 認証を実装する。\par Docker の操作や Kubernetes の操作を行う HTTP API はセッション管理を行わないため, Web コンソールで管理する必要がある。 そのため, ユーザのコンテナやイメージの情報をデータベースに格納して管理する。 -ユーザのアカウントID と コンテナに紐づけられたアカウントID が等しい場合のみ操作を行うことができる。そのため, 他のユーザのコンテナやイメージを操作できない。 -また, ユーザが作成する Docker イメージは他のユーザに共有や非共有ができる。共有されたイメージは共有イメージの一覧に表示され, 他のユーザがコンテナ作成時に利用することができる。 -コンテナ作成時にイメージの確認が行われることで, 非共有に設定したイメージを他のユーザが利用することはできない。 +ユーザが作成する Docker イメージの情報を取得しユーザのアカウントID と紐付けを行う。また, 作成した Docker イメージは共有することができ, 共有されたイメージはユーザのイメージ一覧とは別の一覧で確認することができる。 +ユーザはコンテナ作成時にイメージを入力することができる。この時, 他のユーザの作成したイメージの場合, そのイメージが共有されたイメージなのか確認を行うことで, 非共有に設定されたイメージではコンテナの作成はできない。 +コンテナの操作を行う時, コンテナに紐づけられたアカウントID との確認が行われることで, 他のユーザのコンテナを操作することはできない。 +同様にイメージの削除を行う時にもアカウントID の確認が行われる。 \subsection{Docker の操作} Docker は Docker Engine API を提供している。Docker デーモンは指定した IP アドレスと ポート を リッスンする。 IP アドレスと ポートの指定を行うことで外部から Docker の操作が可能になる。 @@ -242,12 +242,14 @@ \end{itemize} コンテナは, 表\ref{tb:wmcon} で入力した情報を下に作成を行う。コンテナ名は Web コンソールからリクエストを送るタイミングで補完される。 -また, コンテナが属するネットワーク名も補完される。リクエストからコンテナを作成後, 作成したコンテナID や ネットワークID を返却する。 +また, コンテナが属するネットワーク名も補完される。リクエストは JSON 形式で受け, JSON 形式でレスポンスを返す。 +リクエストからコンテナを作成後, 作成したコンテナID や ネットワークID , コンテナのステータスを返却する。 返却したコンテナID や ネットワークID を下にコンテナ削除やコマンドの実行, ファイルの送信を処理する。 +だが, ファイルの送信では JSON 形式ではなく multipart/form-data 形式でリクエストを受ける。\par Docker イメージは GitLab CI/CD を利用して作成するが, Build が成功したかを判断することはできない。 そのため, Web コンソール側から 5 分に一度イメージの更新リクエストが送られ, Docker イメージの一覧をリストにまとめ返却を行う。\par ユーザが作成するコンテナとは別に GitLab CI/CD で Docker イメージを Build するための GitLab Runner を立てる必要がある。 -立ち上げはユーザが Web コンソールで CI/CD トークンの設定時に行われる。GitLab Runner はユーザごとに立ち上げることで, 複数のユーザが同時に Build を行うことができる。 +立ち上げはユーザが Web コンソールで CI/CD トークンの設定時に行われる。GitLab Runner をユーザごとに立ち上げることで, 複数のユーザが同時に Build を行うことができる。 \subsection{Kubernetes の操作} 実装には Kubernetes の操作を行うためのライブラリである client-go \cite{kubecli} を使用する。