AWS EC2のインスタンスにPrimeHub CEをインストール


## はじめ

PrimeHub CEは環境によって様々なインストール方法がありますので、今回はAWS EC2のインスタンスにシングルノードMicroK8Sでインストールをします。

## AWS EC2インスタンスの準備

+ インスタンス：`t3a.xlarge (4vCPU/16 GiB)` (これ以上を推奨します)
  ![t3a-xlarge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/e634a104-b691-5824-f66a-ed2732f6f005.png)


+ AMI：`Ubuntu Server 18.04 LTS` (Ubuntu 20.04 LTSのサポートはしません)
  ![ami-ubuntu-1804.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/c4499a84-9ecb-6acb-b8c8-87d48e7ac624.png)


+ Security Groupの設定
  ![security-group-singlenode.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/615176c6-fb02-db0a-1984-988cd5010e2d.png)


  
+ Storage：50GB (これ以上を推奨します)




## インスタンスにPrimeHub CEをインストール

>本文記載時点はPrimeHub CE v3.6を参考にしています。


### インスタンスにSSHでログインする

```
ssh -i xxxx ubuntu@ec2-ww-xx-yy-zz.ap-northeast-1.compute.amazonaws.com
```

![ssh-ec2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/002c7b2f-5f21-a278-6b63-09cb0a534b12.png)


最初にパッケージ管理リストを更新する

```
sudo apt-get update
```

### PrimeHubリポジトリをクローンする

```
git clone https://github.com/InfuseAI/primehub
```

### インスタンスにMicroK8sでシングルノードを築く

```
cd primehub/install
./primehub-install create singlenode
```

このメッセージが出たら、一回SSHからexitをする
>[Require Action] Please relogin this session and run create singlenode again

![relogin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/abcbf061-60a7-7203-e20b-c96e14a02998.png)


exitをしたら、再度SSHでログインする

```
exit
ssh -i xxxx ubuntu@ec2-ww-xx-yy-zz.ap-northeast-1.compute.amazonaws.com
```

![ssh-ec2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/27c64e2b-7446-40e7-c9e8-d9a40839c615.png)


もう一度同じコマンドをする

```
cd primehub/install
./primehub-install create singlenode
```

少し待つとシングルノードが完成する

![singlenode-k8s-completed.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/6a69bf9a-6ebb-2955-f733-93047a9ff118.png)


#### nginx-ingressの動きを確認する

```
curl ec2-ww-xx-yy-zz.ap-northeast-1.compute.amazonaws.com
```

`default backend - 404`が表示されたら正常。

![curl.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/8ca7cf2d-19d5-39b2-fbad-a58a052fcaa8.png)


MicroK8sクラスタの情報を確認する

```
kubectl cluster-info
```

![cluster-info.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/4fce1b84-6978-8c6b-2075-ccbfcc8910b3.png)


### PrimeHub CEをインストール

```
./primehub-install create primehub --primehub-version v3.6.0 --primehub-ce --helm-timeout 2000
```

![primehub-install-domain.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/f177288e-e8c3-1df2-216b-78c4193a09b1.png)


インストールの途中で三箇所の入力の必要あり

+ `PRIMEHUB_DOMAIN`： インスタンスのPublic IPv4 DNSを設定する。 e.g.`ec2-ww-xx-yy-zz.ap-northeast-1.compute.amazonaws.com`
+ `KC_PASSWORD`：Keycloak web consoleのパスワードを設定する。
+ `PH_PASSWORD`：PrimeHub web consoleのパスワードを設定する。

>ユーザー名は`phadmin`に固定されており、KeycloakとPrimeHubも同じユーザー名です。

![primehub-installing.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/2adc8717-fbff-8cac-0b18-9f1ec2c36f76.png)


インストールをしながら、別のterminalでSSHでログインして、インストールの状態を観察する。

```
watch "kubectl -n hub get pod"
```

最初
![hub-installing-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/260e908e-4871-132c-a541-fa18cf2084c2.png)


インストールの途中
![hub-installing-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/f4882a61-05e6-4c4b-ff72-75b06124e1a8.png)


インストール完了のステータス

>インスタンスによって完了までにかかる時間は異なる

`primehub-bootstrap-xxx`は**Completed**のステータスになり、全て他のポッドは**Running**のステータスになる。

![hub-installing-final.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/1f8e20db-aa58-e9d0-8137-19b6a427b721.png)


### PrimeHubウェブサイトにログインする

+ ウェブサイト：`ec2-ww-xx-yy-zz.ap-northeast-1.compute.amazonaws.com`
+ ユーザー名：`phadmin`
+ パスワード：設定したパスワード

![Kapture-login.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/d1c8a6a1-e397-e32d-7aba-049f000dce48.gif)



#### Notebookを起動する

![Kapture-notebook.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/60a2e679-1e7d-0548-31d9-2795b5045bd3.gif)

#### MLflow Appを設置して起動する

![Kapture-mlflow.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1623438/066728bf-084b-0264-56f6-d92c66bb4923.gif)



🎉 PrimeHub CEを試してみましょう🙌 

## PrimeHub について

+ [PrimeHubリポジトリ](https://github.com/InfuseAI/primehub)
+ [PrimeHub CE 紹介〜チーム向け機械学習プロジェクトとリソース管理が楽になる](https://qiita.com/GabxInfuseAI/items/b0a24c058f3d31f66a6f)
+ [PrimeHub ドキュメント](https://docs.primehub.io/)