Rancher🐮をAlibaba Cloudで構築する - Single Node 構築編

# はじめに

Rancher 2.2 より Alibaba Cloud Container Service for Kubernetes へ対応したので遅ればせながら検証してみました。
:warning: 今回は環境構築までの記事です。

[Announcing Added Support for Leading Kubernetes Services in China](https://rancher.com/blog/2018/2018-11-14-rancher-announces-china-cloud-provider-support)

Alibaba Cloud に Rancher環境を作る必要は特にないのですが、一応検証のため構築してみました😁
構築は下記の公式手順に沿って行います。
今回はまず`Single Node Installation`で構築したいと思います。
[Rancher 2.X Installation](https://rancher.com/docs/rancher/v2.x/en/installation/)

# Alibaba Cloud ECSインスタンス作成

Alibaba Cloud では仮想サーバーのことをElastic Compute Service（ECS）と呼びます。
この略称は・・・とは思うのですが中国語でも云服务器（ECS）なので如何にもならない😅
[Elastic Compute Serviceプロダクトページ](https://jp.alibabacloud.com/product/ecs)

Alibaba Cloud のコンソールにログイン後に`Elastic Compute Service`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/7978158e-f817-8310-3ad3-7d018ba6ae3d.png)

「インスタンスを作成」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/8f3261d0-9be2-751b-f53a-2cc2c38563e8.png)

公式の[要件](https://rancher.com/docs/rancher/v2.x/en/installation/requirements/
)に沿ってインスタンスのスペックを決めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/3784b060-cd5b-4a97-8751-5ef7a9e18891.png)

価格モデルは`従量課金`リージョンは`東京`を選択してください。
今回はSmallで十分なので1vCPU,4GBメモリのインスタンスを選択します。

:information_source: リージョンはお好きなところで構いません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/6c7d2c52-da0a-b556-dce8-18bc96eefcd2.png)

OSは`CentOS7`、ストレージはとりあえず`50GiB`で作ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/0b3a252f-b763-097e-fc9e-fad35f0068ec.png)

ネットワーク設定の画面で`VPC`、`AZ`、`パブリックIPの割り当て`、`セキュリティグループの選択`を行います。

:warning: セキュリティグループは事前に作成して置いてください。`セキュリティグループの作成`から別タブで作成ページにも飛べます。
:warning: 検証目的のため`パブリックIPの割り当て`を行いますが、実環境では慎重にご検討ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/ca791b1b-537a-04c3-eebf-6172cb75cb72.png)

ログイン認証に`キーペア`を選択し使用するキーペアを選択します。キーペアは事前に作成しておいてください。
任意のインスタンス名やホスト名を設定してください。

:information_source: `インスタンス名`は管理コンソール上での識別用で`ホスト`は仮想サーバーのHostnameに設定されるものになります。
今回は使いませんが必要に応じて`削除保護`や`cloud-init`を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/11e36cb5-e143-fd16-59cb-5c0c05046fa9.png)

`利用規約`にチェックを入れて`インスタンスの作成`を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/0067ddc7-ff2e-3d59-9749-aad00241b910.png)

こんな感じのポップアップが出るので`コンソール`を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/d523a954-7b39-773d-c06a-59ddf5784983.png)

ここでインスタンスが表示されていれば作成完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/25510c39-5e4c-6dcc-7a6b-011a42edbcc4.png)

# Alibaba Cloud ECSへのsshアクセス

仮想サーバーが作成されたので環境にsshアクセスしてインストールを行います。

:warning: 検証目的のためダイレクトに仮想サーバーへアクセスしますが、実環境では踏み台やVPNアクセスをご検討ください。

管理コンソールのインスタンス情報からパブリックIPを取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/68b81f5f-bf95-11e1-5fd0-ac54405869c8.png)

Tera Termなどのターミナルソフトかコマンドラインからアクセスします。
:information_source: Alibaba Cloud のCentOSデフォルトユーザーは`root`になります。
:information_source: `-i`オプションでは作成済みのキーペアの秘密鍵を指定してください。

`ssh -i xxxxxxx_aliyun_key.pem root@aa.bb.cc.dd`

```
$ ssh -i xxxxxxx_aliyun_key.pem root@aa.bb.cc.dd

The authenticity of host 'aa.bb.cc.dd (aa.bb.cc.dd)' can't be established.
ECDSA key fingerprint is SHA256:JzAvlgdv19a7F17f1eGaRHmPZw2fMsu0kBy54MyaM08.
Are you sure you want to continue connecting (yes/no)? yes   
```

アクセスに成功すると以下のような画面が表示されると思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/ec242528-9820-9527-a4b6-0c244bad0c0b.png)

# Docker Install

Rancher自体はDocker上で動くようになっているので先にDockerをインストールします。
公式の手順に沿ってインストールします。
[Get Docker CE for CentOS](https://docs.docker.com/install/linux/docker-ce/centos/)

`sudo yum install -y yum-utils device-mapper-persistent-data lvm2`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/24269da6-28f7-3cb3-17fe-a8d127993d40.png)

`sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/6849fb3a-1111-6532-c4d9-bb6406084aa7.png)

`sudo yum install -y docker-ce docker-ce-cli containerd.io`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/dae68d5f-dc8c-e03a-2439-c9fcfd71ad7e.png)

`sudo systemctl start docker`
`sudo systemctl status docker`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/17d83095-4fc8-3968-8990-71a571d34bfc.png)

`sudo docker run hello-world`

以下のようなメッセージが出ていれば成功です。

```
Hello from Docker!
This message shows that your installation appears to be working correctly.
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/39f314ce-49c9-3f7b-a1c2-8f9e1217cb93.png)

ちなみにこの状態ではDockerは自動起動になっていないので、自動起動したい場合は以下のコマンドを実行します。
`sudo systemctl enable docker`

確認は以下のコマンドを実行します。
`systemctl list-unit-files  -t service |grep docker`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/a8c8b548-b191-b5b1-5cb8-3ae55354d262.png)


# Rancher Install

さて、ようやくRancherのインストールです。
SSL証明書をどうするかによってインストールコマンドが分岐します。

[Choose an SSL Option and Install Rancher](https://rancher.com/docs/rancher/v2.x/en/installation/single-node/#2-choose-an-ssl-option-and-install-rancher)

個人的には`OPTION D-LET'S ENCRYPT CERTIFICATE`がオススメですが、
~~ドメインの準備などが面倒なので~~今回は`OPTION A-DEFAULT SELF-SIGNED CERTIFICATE`で実施してみます。

:information_source: Alibaba Cloud でも`Let’s Encrypt`は問題なく利用できます。

下記のコマンドでインストールを実行してます。
`docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest`

以下のような画面が出ればインストール完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/91231b1a-bcf6-2856-52f1-8f09a25fcbdc.png)

以上、Rancherのインストールは終わりです。簡単ですね😊
事前準備の方が長いという😅

Rancherのコンテナが起動しているかは以下のコマンドで確認できます。
`docker ps`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/fd6e218d-6acf-a41c-0c6d-997e6fd6f7bf.png)

ちゃんと使うにはData Volumeの設定などが必要ですが、今回は検証なので省略します🙇‍♂️

# Rancherへのアクセス

ブラウザからインスタンスのパブリックIPにアクセスします。
セキュリティグループの設定で`80`,`443`が解放されていればアクセスが成功するはずです。

この画面まで出ていればインストールは成功しています。
初回アクセス時のパスワード設定画面なのでパスワードを設定し`Continue`を選択します。
:information_source: 左上の部分が「保護されていない通信」なのは自己署名証明書でインストールしたからです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/2e45124d-fd0e-e34e-182a-b72d31a6fe73.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/f980fe49-3dd0-f968-c836-09dabed19786.png)

次のような画面が出るので`Rancherの管理対象ノードがアクセスできるURL`を設定し`Save URL`を選択します。
今回はパブリックIPを設定しておきます。
:information_source: Rancherと管理対象ノード(Kubernetes)が通信する際にここで設定したURLを使用します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/860a96fb-788e-9b62-de95-1aff8049efb3.png)

この画面まで出ればあとはKubernetesクラスタをRancherから作成したり、作成済みのKubernetesクラスタをRancherに紐づけて管理するだけです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/11547/f6a887d3-8434-cfa7-9434-8a01112bee88.png)

というところで、構築編はここまで❗️
設定に関しては別の記事にしたいと思います。

# おわりに

どちらかというと Alibaba Cloud ECSの設定手順になってしまいました😅