NKP に、Nutanix Enterprise AI(NAI)2.4 を展開してみます。今回は、Kubernetes クラスタに NAI(nai-core チャート)をインストールします。
前回はこちら。
今回の内容です。
- 1. Nutanix Docker Hub トークンの入手
- 2. Helm Repo の登録
- 3. nai-core のインストール
- 4. SSL/TLS 証明書の発行
- 5. NAI UI への初回ログイン
- おまけ:UI 表示言語の変更(日本語)
1. Nutanix Docker Hub トークンの入手
NAI のコンテナ イメージをダウンロードするため、Nutanix Docker Hub のトークン(dckr_~)を生成しておきます。
2. Helm Repo の登録
NAI のパッケージが公開されている Helm Repo 登録します。
$ helm repo add ntnx-charts https://nutanix.github.io/helm-releases "ntnx-charts" has been added to your repositories
Repo が登録されました。
$ helm repo list NAME URL ntnx-charts https://nutanix.github.io/helm-releases
nai-core の v2.3.0 と v2.4.0 が公開されています。
$ helm search repo ntnx-charts/nai-core --versions NAME CHART VERSION APP VERSION DESCRIPTION ntnx-charts/nai-core 2.4.0 0.1.0 A Helm chart for NAI core components ntnx-charts/nai-core 2.3.0 0.1.0 A Helm chart for NAI core components
3. nai-core のインストール
nai-core のチャートをダウンロードします。
$ helm pull ntnx-charts/nai-core --version=2.4.0 --untar=true
チャートがダウンロードされました。ただ、今回はとくにファイル編集せずに作業を進めます。
$ ls -l nai-core/ 合計 36 -rw-r--r--. 1 root root 131 9月 28 19:00 Chart.yaml -rw-r--r--. 1 root root 176 9月 28 19:00 README.md -rw-r--r--. 1 root root 930 9月 28 19:00 aws-values.yaml -rw-r--r--. 1 root root 919 9月 28 19:00 gke-values.yaml -rw-r--r--. 1 root root 2818 9月 28 19:00 kind-values.yaml -rw-r--r--. 1 root root 1526 9月 28 19:00 nke-values.yaml -rw-r--r--. 1 root root 821 9月 28 19:00 nkp-values.yaml drwxr-xr-x. 4 root root 65 9月 28 19:00 templates -rw-r--r--. 1 root root 7823 9月 28 19:00 values.yaml
nai-core をインストールします。
- imagePullSecret.credentials.username の「ntnxsvcgpt」は固定値のようです
helm upgrade --install nai-core ntnx-charts/nai-core \ --version=2.4.0 \ -n nai-system \ --create-namespace \ --set imagePullSecret.credentials.username=ntnxsvcgpt \ --set imagePullSecret.credentials.password=<Nutanix Docker Hub トークン> \ --set imagePullSecret.credentials.email=<My Nutanix のメールアドレス> \ --insecure-skip-tls-verify \ --set naiApi.storageClassName=nai-nfs-storage \ --set defaultStorageClassName=nutanix-volume \ -f ./nai-core/values.yaml \ --wait
Pod がすべて起動されたこと(STATUS が Running または Completed)を確認します。
$ kubectl get pod -n nai-system NAME READY STATUS RESTARTS AGE nai-api-58cbd47f86-47fnm 1/1 Running 0 2m49s nai-api-db-migrate-huxqo-lp75p 0/1 Completed 0 2m49s nai-db-0 1/1 Running 0 2m49s nai-iep-model-controller-64d88cd94f-vm9df 1/1 Running 0 2m49s nai-ui-dd8fb65c-5bm59 1/1 Running 0 2m49s prometheus-nai-0 2/2 Running 0 2m49s
4. SSL/TLS 証明書の発行
cert-manager で、「nai-ingress-gateway」Gateway の証明書を発行します。Gateway に割り当てられた IP アドレスを確認しておきます。今回の例では「10.1.7.122」です。
$ kubectl get gateways.gateway.networking.k8s.io -n nai-system NAME CLASS ADDRESS PROGRAMMED AGE nai-ingress-gateway nai-gatewayclass 10.1.7.122 True 8m21s
この Gateway が HTTPS に対応していることも確認できます。
TLS 証明書は、「ntnx-system」Namespace の「ingress-certificate」を参照することがわかります。この証明書は、デフォルトでは作成されません。
$ kubectl get gateways.gateway.networking.k8s.io -n nai-system nai-ingress-gateway -o json | jq -r .spec
{
"gatewayClassName": "nai-gatewayclass",
"infrastructure": {
"labels": {
"serving.kserve.io/gateway": "nai-ingress-gateway"
}
},
"listeners": [
{
"allowedRoutes": {
"namespaces": {
"from": "All"
}
},
"name": "http",
"port": 80,
"protocol": "HTTP"
},
{
"allowedRoutes": {
"namespaces": {
"from": "All"
}
},
"name": "https",
"port": 443,
"protocol": "HTTPS",
"tls": {
"certificateRefs": [
{
"group": "",
"kind": "Secret",
"name": "ingress-certificate",
"namespace": "nai-system"
}
],
"mode": "Terminate"
}
}
]
}
証明書のを発行する、Certificate リソースの YAML を用意します。
ingress-certificate.yml
- CN(commonName)と、SAN(dnsNames)のホスト名には、今回は DNS サーバのレコード登録を省略しているので、nip.io のアドレスを指定します。
- nip.io は、「<なにか文字列>.<IPアドレス>.nip.io」といった命名規則のホスト名を、IP アドレスに名前解決する、ワイルドカード DNS サービスです。
kubectl で、Certificate リソースを作成します。
$ kubectl apply -f ingress-certificate.yml certificate.cert-manager.io/ingress-certificate created
証明書が発行されたことを確認しておきます。
$ kubectl get certificate -n nai-system NAME READY SECRET AGE ingress-certificate True ingress-certificate 7s
Envoy の Pod を再起動しておきます。(これは不要かも・・・)
$ kubectl rollout restart deployment -n envoy-gateway-system envoy-nai-system-nai-ingress-gateway-ff52ba1f deployment.apps/envoy-nai-system-nai-ingress-gateway-ff52ba1f restarted
5. NAI UI への初回ログイン
NAI UI にアクセスします。デフォルトのログイン情報は、nai-core のチャートに含まれる values.yaml に記載されています。
$ cat ./nai-core/values.yaml | grep superAdmin: -A5
superAdmin:
username: admin
password: Nutanix.123
email: admin@nutanix.com
firstName: admin
「nai-ingress-gateway」Gateway の IP アドレスに、Web ブラウザから HTTPS でアクセスします。
$ kubectl get gateways.gateway.networking.k8s.io -n nai-system nai-ingress-gateway NAME CLASS ADDRESS PROGRAMMED AGE nai-ingress-gateway nai-gatewayclass 10.1.7.122 True 40m
Web ブラウザで証明書の情報を確認すると、一般名(CN)が、さきほど発行した証明書のものになっています。Web ブラウザの証明書エラーは無視して進みます。

NAI UI に、初期パスワードでログインします。
- ユーザー:admin
- パスワード:Nutanix.123

パスワード変更画面が表示されるので、パスワードを変更します。

変更後のパスワードでログインします。

「Nutanix License and Services Agreement」を確認して、Name と Company を入力して「Accept」をクリックして進みます。

Pulse の On/Off を選択して「Save and Proceed」をクリックします。

これで、NAI UI にログインできました。

おまけ:UI 表示言語の変更(日本語)
NAI UI の「Settings」→「Language Settings」タブを開き、「Edit」をクリックします。

表示言語を選択して、「Update」をクリックします。
- Language:Japanese

画面が更新され、日本語表示になります。

つづく。
