Nutanix Kubernetes Platform(NKP)v2.12 での Management Cluster への LDAP(AD)設定を、kubectl でのリソース作成で実施してみます。
今回の内容です。
- 今回の環境
- 1. LDAP Identity Provider の登録(AD)
- 2. NKP グループ(VirtualGroup)の作成
- 3. ロールの割り当て(VirtualGroupClusterRoleBinding)
- 4. ログイン確認
今回の環境
NKP の Management Cluster は、下記のように作成してあります。
下記の Management Cluster への LDAP(AD)設定を、kubectl でのリソース作成で実施してみます。AD/LDAPS サーバーも、下記投稿で構築したものを利用します。
今回の kubectl は、Linux マシンで実行します。このマシンでは、Management Cluster に接続できるようにしてあります。
$ kubectl get nodes NAME STATUS ROLES AGE VERSION nkpm01-md-0-g7fsx-h4r2t-hvd2c Ready <none> 5d4h v1.29.6 nkpm01-md-0-g7fsx-h4r2t-ll8zf Ready <none> 5d4h v1.29.6 nkpm01-qfxvt-9sq92 Ready control-plane 5d4h v1.29.6
1. LDAP Identity Provider の登録(AD)
LDAP 接続用のパスワードと CA ルート証明書を Kubernetes の Secret リソースとして登録してから、LDAP Identity Provider の Connector リソースを作成します。
1-1. LDAP パスワードの登録
LDAP のバインド DN(接続用ユーザー)のパスワードを登録します。今回は、ドメイン Administrator ユーザーでバインドしています。
パスワードは、Base64 でエンコードしておきます。
- パスワード:nutanix/4u
$ echo -n 'nutanix/4u' | base64 bnV0YW5peC80dQ==
YAML ファイルを作成します。
ldap_password_lab-nxad-01.yml
- L11: Base64 エンコードしたパスワード文字列は、data.password に指定します。
kubectl で YAML を適用して、Secret を作成します。
$ kubectl apply -f ldap_password_lab-nxad-01.yml secret/connector-ldap-bindsecret-nxad created
1-2. LDAPS サーバーの自己署名証明書の登録
LDAPS で接続する場合、本来は CA のルート証明書を登録します。しかし、今回は AD ドメイン コントローラーには、LDAPS 有効化のために自己署名証明書をインストールしてあるので、かわりにその証明書を登録します。
- 証明書ファイル:selfsigncert_base64.cer
※以前の投稿で作成したもの
Base64 形式の証明書のファイル内容を、さらに Base64 エンコードします。出力内容は長いので省略します。
$ cat selfsigncert_base64.cer | base64 -w0
Secret の YAML ファイルを作成します。
ldap_cacert_lab-nxad-01.yml
- L11: 証明書を Base64 エンコードした文字列を指定します。
kubectl で YAML ファイルを適用して、Secret を作成します。
$ kubectl apply -f ldap_cacert_lab-nxad-01.yml secret/connector-ldap-rootcasecret-nxad created
1-3. Identity Provider の登録
LDAP Identity Provider の設定を、Connector リソースとして作成します。
Connector の YAML ファイルでは、前の手順で作成した Secret を指定します。
ldap_provider_lab-nxad-01.yml
- L15: パスワードの Secret を指定します。
- L17: CA 証明書の Secret を指定します。
- L28: NKP ダッシュボード右上に表示する属性を指定
kubectl で YAML ファイルを適用して、Connector リソースを作成します。
$ kubectl apply -f ldap_provider_lab-nxad-01.yml connector.dex.mesosphere.io/ldap-identity-provider created
これで、LDAP として AD が登録されました。
NKP のダッシュボードの「Global」→「Administration」→「Identity Provider」を開くと、AD が LDAP として登録されています。「Identity Provider」タブで、LDAP Provider の行末にあるボタンの「View Details」を開きます。
LDAP の構成情報を確認できます。
LDAP 構成情報の続きです。
2. NKP グループ(VirtualGroup)の作成
AD のグループを指定した、NKP のグループ(VirtualGroup リソース)を作成します。
下記のように YAML ファイルを作成します。
nkp_group.yml
kubectl で YAML ファイルを適用して、VirtualGroup リソースを作成します。
$ kubectl apply -f nkp_group.yml virtualgroup.kommander.mesosphere.io/nkp-admins created
NKP のダッシュボードの「Global」→「Administration」→「Identity Provider」→「Group」タブを開くと、作成した NKP グループが表示されます。
グループは、「Access Control」→「Cluster Role Bindings」タブにも表示されます。こちらの画面では、ロールが未割り当て(空欄)になっていることも確認できます。
3. ロールの割り当て(VirtualGroupClusterRoleBinding)
NKP のグループとロールを紐づける、 VirtualGroupClusterRoleBinding リソースを作成します。
下記のように YAML ファイルを作成します。
kubectl で YAML ファイルを適用して、VirtualGroupClusterRoleBinding リソースを作成します。
$ kubectl apply -f nkp_group_crb.yml virtualgroupclusterrolebinding.kommander.mesosphere.io/clusterpolicy-nxad created
ダッシュボードでも、「Access Control」→「Cluster Role Bindings」タブのグループに、ロールが割り当てられたことが確認できます。
4. ログイン確認
Web ブラウザのシークレット モードなどで NKP のダッシュボードのログイン画面(URL のパスは、/dkp/kommander/dashboard)を表示すると、ID Provider の選択画面が表示されるので、「Log in with <Identity Provider>」を選択します。
今回は、「Log in with nxad.go-lab.jp」を選択します。
AD ユーザー(nkp-admin)でログインします。
画面右上を確認すると、AD ユーザー(NKP Admin)でログインできていることが確認できます。ちなみに、以前の投稿 とは LDAP 設定を変更してあり、メール アドレス(userPrincipalName)ではなく表示名(name)にしてあります。※displayName のほうがわかりやすかったかもしれない・・・
以上。