NTNX>日記

個人的な趣味による Nutanix Community Edition 日記。Japanese のみですみません。

Nutanix Kubernetes Platform(NKP)の AD / LDAP 認証を kubectl で設定してみる。

Nutanix Kubernetes Platform(NKP)v2.12 での Management Cluster への LDAP(AD)設定を、kubectl でのリソース作成で実施してみます。

今回の内容です。

今回の環境

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 に指定します。

gist.github.com

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 エンコードした文字列を指定します。

gist.github.com

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 ダッシュボード右上に表示する属性を指定

gist.github.com

 

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

gist.github.com

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 ファイルを作成します。

gist.github.com

 

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 のほうがわかりやすかったかもしれない・・・

以上。

©2024 gowatana
クリエイティブ・コモンズ・ライセンスこの 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。