NTNX>日記

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

Nutanix Enterprise AI 2.4 をデプロイしてみる。Part-05:NAI(nai-core)のインストール

NKP に、Nutanix Enterprise AI(NAI)2.4 を展開してみます。今回は、Kubernetes クラスタに NAI(nai-core チャート)をインストールします。

 

前回はこちら。

 

今回の内容です。

 

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 サービスです。

gist.github.com

 

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

 

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

 

つづく。

 

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