OpenShift Localへユーザー登録をする最も簡単な方法
はじめに
OpenShift管理者タスクの学習目的、あるいは、EX280のようなレッドハット認定試験対策の演習環境として、OpenShift Localを使うことができます。
管理者がOpenShiftをインストールした後にする重要なタスクのひとつとしてユーザー登録があります。ユーザーが登録されていないとOpenShiftに利用者がログインすることができないからです。この記事ではOpenShiftに新規ユーザー登録をする簡単な方法について紹介します。
この記事を書くにあたり、OpenShift Local v4.17.1 を使いました。OpenShift Localの概要とインストール、起動・停止の方法については以下の記事をご覧ください。
OpenShift Localにユーザーを登録する意義
OpenShift Localには、開発者としてdeveloper、管理者としてkubeadminというの2つの初期ユーザーが事前登録されていますのでインストール後にすぐに使い始めることができます。
ところが、OpenShiftの管理者タスクを学習するという目的でOpenShift Localを使おうとすると、developerが1つだけでは、グループを作ったり、ユーザーの権限を変更したり、といった検証が難しいです(OpenShift Localは開発者用のOpenShiftなので当然ですけどね)。
OpenShirtにユーザー登録をするには
製品ドキュメントには、htpasswdを使ったアイデンティティプロバイダーを登録する方法が記載されています。OpenShift Webコンソールを使えば、比較的簡単にOpenShiftにユーザー登録をすることができます。
OpenShiftにユーザー登録をする手順
パスワードファイルの作成
htpasswdコマンドを使って、パスワードファイル htpasswd.txt にユーザーを登録します。htpasswdコマンドがなければ、httpd-tools パッケージをインストールしてください。
$ htpasswd -c -B -b /home/student/htpasswd.txt admin redhat
Adding password for user admin
$ htpasswd -B -b /home/student/htpasswd.txt developer1 developer1
Adding password for user developer1
$ htpasswd -B -b /home/student/htpasswd.txt developer2 developer2
Adding password for user developer2
$ cat /home/student/htpasswd.txt
admin:$2y$05$MQIky766yZpTgUnKNmBd/un8puWwapeD1x5WBuwPrTef5sB4DsVmq
developer1:$2y$05$R5oV0dBkF9qeyjICGCNhP.Xr0edegIvbDSPfH2vDYsMA9x1GdHhNi
developer2:$2y$05$.WYMj9WW.tt5VLPjpnt7POMtw6sgxSlDu6cZDhbXAC.Rl2PE0VVy2
WebコンソールでOAuthの設定
Webコンソールにkubeadminでログインし、ナビゲーションメニューから [管理] > [クラスター設定] をクリックし、[設定] タブを開きます。
クラスター設定のページをスクロールして OAuth のリンクを探してクリックします。
OAuthの詳細画面が開いたら、画面の下の方にあるアイデンティティープロバイダーの表示を探します。
アイデンティティープロバイダーの [追加] のメニューを開いて HTPasswd を選択します。
HtPaawdファイルの [参照] ボタンを押して、作成済みのパスワードファイルhtpasswd.txtを読み込ませます。ここでは、[名前] はデフォルトのhtpasswdのままにしておきますが、別の名前に変更することもできます。
パスワードファイルが読み込まれたら [追加] ボタンを押します。
追加した後は、アイデンティティプロバイダーとして developer の行の下にhtpasswdという設定が追加されていることが確認できます。
ログインの確認
kubeadminでログインしていたWebコンソールをログアウトし、adminという名前でログインし直します。ログイン画面に、htpasswdという表示が新たに追加されました。[htpasswd]の方をを押して、ログイン画面を表示します。
ログイン画面で、ユーザー名 admin、パスワード redhat でログインします。ログインに失敗した場合は、少し時間を空けて再度ログインしてみてください。
ログインに成功すると、画面右上のユーザー名に admin と表示されていることがわかります。
同様に、developer1、developer2でもログインできるはずです。こちらはCLIコマンドで確認してみましょう。
$ oc login -u developer1 -p developer1
Login successful.
You don't have any projects. You can try to create a new project, by running
oc new-project <projectname>
$ oc whoami
developer1
$ oc login -u developer2 -p developer2
Login successful.
You don't have any projects. You can try to create a new project, by running
oc new-project <projectname>
$ oc whoami
developer2
クラスター管理者の権限設定
ユーザーadminは、名前は管理者ですが、実際にはまだ管理者の権限をもっていません。oc loginでkubeadminでログインし、以下のコマンドを実行してadminにcluster-adminを権限を付与してください。
$ oc adm policy add-cluster-role-to-user cluster-admin admin
その後、oc loginでadminとしてログインし直します。管理者しか実行できない oc get nodeを実行できることを確認します。
$ oc login -u admin -p redhat
Login successful.
You have access to 66 projects, the list has been suppressed. You can list all projects with 'oc projects'
Using project "default".
$ oc get node
NAME STATUS ROLES AGE VERSION
crc Ready control-plane,master,worker 31d v1.30.4
adminがクラスター管理者になったので、Webコンソールからadminでログインすると、kubeadminと同様に、すべての種類のリソースにアクセスできるようになっていることがわかります。
おわりに
いかがでしょうか。Webの画面スナップショットの枚数が多いので一見、複雑に見えるかもしれませんが、htpasswd.txtファイルさえ手元に準備してあれば、非常に簡単にユーザー登録ができますので、ぜひ試してみてください。
この記事の手順で登録したユーザーは、crc deleteでcrcインスタンスを消してしまうと一緒に消えてしまいます。crc startして再起動した後にhtpasswd.txtを読み込ませて再度ユーザーを登録してください。