IBM Cloud Private(ICP) 2.1.0.2 を Ubuntu 16.04 にインストールしてみた

この記事では IBM Cloud Private(ICP) v2.1.0.2 を 1台のUbuntu 16.04にインストールして動作を見るための手順です。
他のQiita記事でもICP導入手順はありますが、自分がやろうとしていたv2.1.0.2の手順が無かったことと、Ubuntu自体の設定の問題でうまく動かすことができなかったので、とりあえず動いた手順を共有したいと思います。
Ubuntuのインストール初期状態からICPを動かすことだけに専念しているので細かい解説はありませんのでご注意をお願いします。
UbuntuはMacのVM上で動かしてインストールしています。

# 動作環境
* MacBook Pro (15-inch,2016)
    * CPU:2.9 GHz Intel Core i7
    * メモリ:16GB
* Paralells Desktop v13.3.0 上のVMでUbuntuを稼働
    * VM1: Ubuntu 16.04.4 (ubuntu-16.04.4-desktop-amd64.iso)

# 参考情報
* [IBM Cloud Private v2.1.0.2 マニュアル](https://www.ibm.com/support/knowledgecenter/SSBS6K_2.1.0.2/kc_welcome_containers.html)
* [Ubuntu 16.04](http://releases.ubuntu.com/16.04/)

# Ubuntu導入
まずUbuntuを導入します。導入中の「あなたの名前」「コンピューターの名前」「ユーザー名の入力」は自由ですが、この手順ではこの設定の通り進めます。

## クリーンインストール
* 言語選択画面で「日本語」を選択
* 「Ubuntuをインストール」を選択
* ようこそ画面で「日本語」を選択
* Ubuntuのインストール準備画面でそのまま「続ける」
* インストールの種類画面で「ディスクを削除してUbuntuをインストール」を選択して「インストール」
* ディスクに変更を書き込みますか？のダイアログで「続ける」
* どこに住んでいますか？でそのまま「続ける」
* キーボードレイアウトでそのまま「続ける」
* あなたの情報を入力して下さいで以下内容を入力して「続ける」
    * あなたの名前：*icpusr*
    * コンピューターの名前：*icpmast*
    * ユーザー名の入力：*icpusr*
    * パスワードの入力：任意
    * パスワードの確認：任意
* （インストールが終わるまでしばらく待つ）
* インストールが完了しましたで「今すぐ再起動する」

## Ubuntu設定

### とりあえず root に変更
設定は面倒なので全部 root で行いました。

```
icpusr@icpmast:~$ sudo su -
[sudo] icpusr のパスワード: 
root@icpmast:~# 
```

### IPv6の無効化
これをやらないとネットワークアクセスの度にいちいち遅くなるので無効化しました。

`# vi /etc/sysctl.conf`
以下内容を追記

```sh:/etc/sysctl.conf
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
```

設定変更したら設定反映して確認。`cat` の実行結果で何も返ってこなければOK

```
root@icpmast:~# sudo sysctl -p
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
root@icpmast:~# cat /proc/net/if_inet6
root@icpmast:~# 
```

Ubuntuデスクトップのネットワーク設定を開き「IPv6設定」タブを選択し、方式を「無視する」に設定して「保存」（CLI上でできるかもですが画面からやってしまいました）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/67115/750baa73-ec22-29fc-f54b-3edb6562e46f.png)

### dnsmasqの無効化
無効化しなくてもインストールはできそうなのですが、設定手順が増えるので無効にしました。

`# vi /etc/NetworkManager/NetworkManager.conf`

```sh:/etc/NetworkManager/NetworkManager.conf
#dns=dnsmasq
```

### ここで一旦再起動
`# shutdown -r now`
再起動が終わったらrootになっておいて下さい
`$ sudo su -`

### Ubuntu をアップデートしておく

```
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
```
### SSHインストール
`# apt-get install openssh-server`

# ICPインストール

## 前準備

### Dockerインストール

```
# apt-get install apt-transport-https \
 ca-certificates \
 curl \
 software-properties-common
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
 sudo apt-key add -
# apt-key fingerprint 0EBFCD88
# add-apt-repository "deb [arch=amd64] \
 https://download.docker.com/linux/ubuntu \
 $(lsb_release -cs) stable"
# apt-get update
# apt-get install docker-ce=17.09.1~ce-0~ubuntu
```

### hosts設定変更
`vi /etc/hosts`

`127.0.1.1` と `::1` の頭に # を入れてコメントアウト
代わりに自分のIPアドレスとホスト名を追記（自分の環境は10.211.55.11）
`10.211.55.11 icpmast`

```sh:/etc/hosts
127.0.0.1       localhost
#127.0.1.1      icpmast
10.211.55.11    icpmast

# The following lines are desirable for IPv6 capable hosts
#::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
```

### システムパラメータ変更

```
# sysctl vm.max_map_count
# sysctl -w vm.max_map_count=262144
# echo "vm.max_map_count=262144" | \
 sudo tee -a /etc/sysctl.conf

# sysctl net.ipv4.ip_local_port_range
# sysctl -w net.ipv4.ip_local_port_range="10240 60999"
# echo 'net.ipv4.ip_local_port_range=10240 60999' | \
 tee -a /etc/sysctl.conf
```

### ICPのDockerイメージを取得して設定ファイルを抽出

```
# docker pull ibmcom/icp-inception:2.1.0.2
# mkdir /opt/ibm-cloud-private-ce-2.1.0.2
# cd /opt/ibm-cloud-private-ce-2.1.0.2
# docker run -e LICENSE=accept -v "$(pwd)":/data \
 ibmcom/icp-inception:2.1.0.2 cp -r cluster /data
```

```
root@icpmast:/opt/ibm-cloud-private-ce-2.1.0.2# ls
cluster
root@icpmast:/opt/ibm-cloud-private-ce-2.1.0.2# 
```

### SSH Keyセットアップ
```
# ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N ""
# cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys
# cp ~/.ssh/id_rsa ./cluster/ssh_key
```

### ICPインストール設定変更(hosts, config.yaml)
IPアドレスはご自身の環境のものに置き換えて下さい。ここでは、master, worker, proxy で同じIPを指定しています。

```
# cd cluster
# vi hosts
```

```sh:cluster/hosts
[master]
10.211.55.11

[worker]
10.211.55.11

[proxy]
10.211.55.11

#[management]
#4.4.4.4

#[va]
#5.5.5.5
```

ログイン時のパスワードを `default_admin_password` で指定して下さい。

```
# vi config.yaml
```

```sh:cluster/config.yaml
## Advanced Settings
default_admin_user: admin
default_admin_password: admin
```
## インストール実行

```
# docker run -e LICENSE=accept --net=host \
-t -v "$(pwd)":/installer/cluster \
ibmcom/icp-inception:2.1.0.2 install
```

インストール完了まで30分ぐらいかかりました。

```
 :
 :
PLAY RECAP *********************************************************************
10.211.55.11               : ok=225  changed=76   unreachable=0    failed=0   
localhost                  : ok=181  changed=113  unreachable=0    failed=0   


POST DEPLOY MESSAGE ************************************************************

The Dashboard URL: https://10.211.55.11:8443, default username/password is admin/adminin

Playbook run took 0 days, 0 hours, 52 minutes, 42 seconds

root@icpmast:/opt/ibm-cloud-private-ce-2.1.0.2/cluster# 
```

# ICP動作確認
インストール完了直後はまだ起動中の状態なのでしばらく待つ必要があります。
私の環境では、以下コマンドの結果が103になったときに Healthy 100% になります。

```
root@icpmast:/opt/ibm-cloud-private-ce-2.1.0.2/cluster# docker container ls | wc -l

103
```

起動が完了したらブラウザから`https://10.211.55.11:8443`にアクセス。
左上のハンバーガーリストから「Dashboard」を選択するとグラフが出てきます。
インストール完了直後は「Deployments」のグラフを見ると Unhealthy% が高い状況ですがしばらく経つと改善されていきます。

# ICPアンインストール

念のためアンインストール方法を書いておきます。

```
# cd /opt/ibm-cloud-private-ce-2.1.0.2/cluster
# docker run -e LICENSE=accept --net=host \
 -t -v "$(pwd)":/installer/cluster \
 ibmcom/icp-inception:2.1.0.2 uninstall
# service docker restart
```

おわりです頑張ってみて下さい。
最後に参考にさせて頂いたページをご紹介致します。お世話になりました。ありがとうございます。m(_ _)m

# 参考
* [IBM Cloud Private: Kubernetesをオンプレミス(IaaS)に導入してみる (v2.1.0.0)](https://qiita.com/capsmalt/items/d15055ab3cb423d2d7ae)
* [V2.1.0からV2.1.0.1にマイグレーションしてみた (Kubernetes / IBM Cloud Private)](https://qiita.com/capsmalt/items/b5ed3204f484b479cf39)
* [IBM Cloud Private CE 2.1.0.1 (Kubernetes)を自宅のサーバー１台にインストールしてみた(v2.1.0.1)](https://qiita.com/MahoTakara/items/5897ba8b2743001577c5#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E8%B5%B7%E5%8B%95%E3%81%A8%E5%81%9C%E6%AD%A2)