AWSにシングルノードのICP-CE 2.1.0.3をインストールしてみた作業メモ。
仮想マシンの準備
今回はデフォルトのVPCにEC2インスタンスを作成する。VPCを作成する場合は以下リンク先などを参照。
(参考)
0から始めるAWS入門①:VPC編
システム要件
ハードウェア要件を確認する。2.4GHzのCPUが8コア、32GB RAM、200GB HDDが必要。
Hardware requirements and recommendations
OSの要件を確認する。Ubuntu 16.04 LTSを使うことにする。
Supported operating systems and platforms
サポートされるDockerのバージョンを確認する。UbuntuではDocker CEの1.12〜17.12.1がサポートされる。
仮想マシンインスタンスの作成
Ubuntuのインスタンスを作成する。
ハードウェア要件を満たすためには、インスタンスタイプは
- t2.2xlarge
- m4.2xlarge
- m5.2xlarge
あたりが候補になりそう。m5.2xlargeを使うことにする。1時間あたり0.5ドルくらい。使わないときは停止することを忘れずに。
ストレージは200GBを割り当てておく。
Elastic IPの割り当て
仮想マシンを停止するとPublic IPアドレスが変わってしまうので、Elastic IPを1つ割り当て、インスタンスに関連づけておく。
セキュリティーグループの設定
セキュリティーグループを変更して外部からアクセスできるようにする。
- 22(SSH)
- 同じセキュリティーグループからの全てのトラフィックを許可
- 9443(?)
- 8500(プライベートレジストリ)
- 8443(ICPダッシュボード)
- 8001(APIサーバー)
- 80(HTTP)
- 443(HTTPS)
上記ポートにアクセスできるIPは適宜制限することが望ましい。
仮想マシンにログイン
SSHで仮想マシンにログインする。
$ ssh -i <秘密鍵> ubuntu@<Public DNS名>
ICPのインストール
OS更新
とりあえずパッケージを更新して再起動して、もう一度ログインする。
$ sudo apt update
$ sudo apt upgrade
$ sudo apt dist-upgrade
$ sudo apt autoremove
$ sudo shutdown -r now
hostname変更
ホスト名を変更する。
(参考)
https://aws.amazon.com/jp/premiumsupport/knowledge-center/linux-static-hostname/
$ sudo hostname myicp01
再起動後も反映されるようにする。
$ sudo vi /etc/hostname
myicp01
IPv6の無効化
(ここの手順は不要かも)
ICPはIPv6に未対応なため、/etc/sysctl.conf
に以下を追加する。
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
以下コマンドで反映する。
$ sudo sysctl -p
/etc/hosts
でIPv6の記載はコメントアウトする。
127.0.0.1 localhost
# 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
#ff02::3 ip6-allhosts
インストールの準備
以下の手順に従ってインストールの準備をする。
hosts設定
/etc/hosts
にプライベートIPとホスト名を書く。
127.0.0.1 localhost
172.30.1.224 myicp01
# 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
#ff02::3 ip6-allhosts
python
pythonをインストールする。2.6〜2.9のバージョンである必要がある。
$ sudo apt-get install python
$ python --version
Python 2.7.12
$
カーネルパラメータ
カーネルパラメータを設定する。
$ sudo sysctl -w vm.max_map_count=262144
vm.max_map_count = 262144
$ echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
vm.max_map_count=262144
$ sudo sysctl -w net.ipv4.ip_local_port_range="10240 60999"
net.ipv4.ip_local_port_range = 10240 60999
$ echo 'net.ipv4.ip_local_port_range="10240 60999"' | sudo tee -a /etc/sysctl.conf
net.ipv4.ip_local_port_range="10240 60999"
$
Docker CEのインストール
以下の手順にしたがってDokcer CEをインストールする。
aptがHTTPSを使うために必要なパッケージをインストールする。既にインストールされていたので何もインストールされなかった。
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
GPGキーを追加する。
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
リポジトリーを追加する。
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
パッケージリストを更新する。
$ sudo apt-get update
インストール可能なDockerのバージョンを確認する。
$ apt-cache madison docker-ce
docker-ce | 18.03.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.03.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.12.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.12.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.09.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.2~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.06.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.2~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
$
バージョン17.12.1を指定してインストールする。
$ sudo apt-get install docker-ce=17.12.1~ce-0~ubuntu
Dockerの設定の確認
以下の手順に従ってDockerの設定を確認する。
Setting up Docker for IBM® Cloud Private
$ sudo docker info|grep "Logging Driver"
Logging Driver: json-file
WARNING: No swap limit support
$ sudo docker info --format '{{json .SecurityOptions}}'
["name=apparmor","name=seccomp,profile=default"]
$
SSH鍵の用意
以下の手順に従ってSSH鍵を用意する。
Sharing SSH keys among cluster nodes
ここからはrootユーザーで作業する。鍵ペアを作成する。
ubuntu@myicp01:~$ sudo -i
root@myicp01:~# ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N ""
Generating public/private rsa key pair.
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:EuIp9VaD71GewodngPx1DVR1cq+d1YScwqLWUDzRs7g root@myicp01
The key's randomart image is:
+---[RSA 4096]----+
| oo=ooo+=|
| . o. + =o+++|
| o = ++o+.+. +|
| o + *oBoo. oo|
| . o +.S *. ...|
| . . o *E |
| . |
| |
| |
+----[SHA256]-----+
root@myicp01:~#
作成した鍵ペアの公開鍵をauthorized_keysに追加。
root@myicp01:~# cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC/fRVwMoDXvBPXayHGqnpgp/wgylE2ajw1prvwMtXZR+MkKp8/5BGIQRkbkFUQVRVWJu99255mEsZsr9DkkvOK0A2FlCNcWvmi36AKMh/dEyi0aaBiP7Q1Djr9NIYfzP+bRD14Ch3tgAnvLR1PL1o2MPqAP80a3oEAI2O8Tngzu9F/n+U2Any58kDNxjyS/HchZ8xysPwltAtVjM2XTR3xv6IbGncnyJ9sNU20ey/t0Ir5D/eEdCW8afBlR+75eO7S8Ted+AvnNyQTB0+6pK0fSguF9DVkRNUzskecMY9ERkVkEIaQz1jJutcrHdC6mPKZygtSPh+EGSMtsJEiocKV9c3Em5GGvjc/KNIBntqEuXnlQkRlEg+KZgSpfG/XBVQNjo6z0GZvKQcvtWmIG8dSsRVhEA6c3j4orE5B06SLPyl+ZjdrvF4BiUzIYxX9aKPq8NlF8w2jpWaGzm9110w3Trq1axcunXrNZ6lvpVJ8ecW+2Twqdl6quBr/3UtkpOj4G9Wpo2t00tA6nDWwIOXQLw2ykF+RxvjFD0pNRZNNf/pbgX1vO4Tk1/WDLmqY1w2zQ1T4J4UDUKoGjJV7sY3ynA81YXoGbAWSPL+PnfdXcv2QLG5d8Ytiq5C8U5jkNspMacx4Jv9IEJwMGdAgc6yTeQlusVmn2JcfO6MFpUkpZQ== root@myicp01
root@myicp01:~#
ICP-CEのインストール
Installing IBM® Cloud Private-CE
イメージをPullする。
root@myicp01:~# docker pull ibmcom/icp-inception:2.1.0.3
2.1.0.3: Pulling from ibmcom/icp-inception
605ce1bd3f31: Pull complete
507f244c4e1e: Pull complete
fc0d271abee8: Pull complete
8b23035b2408: Pull complete
000becf28498: Pull complete
51a505055ed0: Pull complete
eeac8b40b648: Pull complete
9257589649f9: Pull complete
57f69f251b87: Pull complete
b096af58451b: Pull complete
6469dffb1f1a: Pull complete
f887f375638f: Pull complete
ddb479dd83ff: Pull complete
d1e7cfd8e84c: Pull complete
3e60d99f31dc: Pull complete
6b902b94eae4: Pull complete
92ed637fa0c7: Pull complete
f8c98676d227: Pull complete
6a6e3d12c00d: Pull complete
f45d18f4da09: Pull complete
0cdf1b156f7a: Pull complete
7d93d9656bec: Pull complete
0e621a7f8ba3: Pull complete
4dc8ed5c7dc1: Pull complete
a897fe19c795: Pull complete
28a013f6fb84: Pull complete
9b54fec58347: Pull complete
4562f699b8e0: Pull complete
cf758d8c0c8f: Pull complete
9cb5171aaaf7: Pull complete
1819858aae84: Pull complete
7760333d7f17: Pull complete
2d38d82b6a1a: Pull complete
2409e1ab0c7f: Pull complete
c7867291111e: Pull complete
dbd46ec491d2: Pull complete
0d64eaf62bb7: Pull complete
ac6fbdf97ab0: Pull complete
ffa1c8223bdb: Pull complete
4beb6e290173: Pull complete
3d9f59693d5a: Pull complete
4cde2000d977: Pull complete
219907c91cd1: Pull complete
7c38bb6d16a0: Pull complete
Digest: sha256:b20e408164e020a8419cc54b37ee9c390722658ad44f4534ad3e71311e01868b
Status: Downloaded newer image for ibmcom/icp-inception:2.1.0.3
root@myicp01:~#
ディレクトリーを作成して移動。
root@myicp01:~# mkdir /opt/ibm-cloud-private-ce-2.1.0.3
root@myicp01:~# cd /opt/ibm-cloud-private-ce-2.1.0.3
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3#
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3#
以下のコマンドで構成ファイルを抽出する。
# docker run -e LICENSE=accept \
-v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3# docker run -e LICENSE=accept \
> -v "$(pwd)":/data ibmcom/icp-inception:2.1.0.3 cp -r cluster /data
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3#
先ほど作成した鍵をcluster/ssh_key
に上書きコピーする。
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3# cp ~/.ssh/id_rsa ./cluster/ssh_key
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3#
cluster/hosts
を編集する。プライベートIPを記載する。
[master]
172.30.1.224
[worker]
172.30.1.224
[proxy]
172.30.1.224
#[management]
#4.4.4.4
#[va]
#5.5.5.5
cluster/config.yaml
を編集し、外部からアクセスできるようにElastic IPを指定する。Kibanaのインストールも有効にしておく。
cluster_lb_address: 18.179.83.130
proxy_lb_address: 18.179.83.130
kibana_install: true
clusterディレクトリーに移動し、以下のコマンドでインストールを実行する。そこそこの時間がかかり、その途中でネットワークが切れたら困るので、screenコマンドを起動してからやるとよい。
# docker run --net=host -t -e LICENSE=accept \
-v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3# cd cluster
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3/cluster# docker run --net=host -t -e LICENSE=accept \
> -v "$(pwd)":/installer/cluster ibmcom/icp-inception:2.1.0.3 install
PLAY [Checking Python interpreter] ********************************************************************************************************************
TASK [Checking Python interpreter] ********************************************************************************************************************
changed: [172.30.1.224]
PLAY [Checking prerequisites] *************************************************************************************************************************
TASK [Gathering Facts] ********************************************************************************************************************************
ok: [172.30.1.224]
TASK [docker-engine-check : Getting Docker engine version] ********************************************************************************************
changed: [172.30.1.224]
・・・
(省略)
・・・
PLAY [Performing post deployment actions] *************************************************************************************************************
TASK [shell] ******************************************************************************************************************************************
changed: [localhost]
PLAY RECAP ********************************************************************************************************************************************
172.30.1.224 : ok=162 changed=80 unreachable=0 failed=0
localhost : ok=69 changed=47 unreachable=0 failed=0
POST DEPLOY MESSAGE ***********************************************************************************************************************************
The Dashboard URL: https://18.179.83.130:8443, default username/password is admin/admin
Playbook run took 0 days, 0 hours, 19 minutes, 52 seconds
root@myicp01:/opt/ibm-cloud-private-ce-2.1.0.3/cluster#
インストールが成功したら、ICPダッシュボードのURLが表示されるので、ブラウザでアクセスする。エラーになった場合、まだ完全に起動していない可能性もあるので気長に待つこと。
補足
インストールの途中で失敗したら、一度アンインストールして、おかしいところを直して再トライする。インストールコマンドに-vvv
オプションをつけると有益な情報が表示される、かもしれない。アンインストールのコマンドは以下。
# docker run -e LICENSE=accept --net=host \
-t -v "$(pwd)":/installer/cluster \
ibmcom/icp-inception:2.1.0.3 uninstall
# service docker restart
Uninstalling IBM® Cloud Private-CE
参考リンク
Installing IBM® Cloud Private-CE
IBM Cloud Private: Kubernetesをオンプレミス(IaaS)に導入してみる
Run IBM Cloud Private on Amazon Web Services (AWS) cloud platform
Installing IBM Cloud private (ICP) in an AWS EC2 Environment