Rancher on Oracle Cloud & AWS

## 初めに

この記事は [ウィルゲート Advent Calendar 2019](https://qiita.com/advent-calendar/2019/willgate) の7日目の記事です。

Oracle Cloud 上に無料で作った Kubernetes 環境を、AWS 上に作成した Rancher から管理してみます。

## 概要

* やりたい事の構成図
* Oracle Cloud の [Always Free](https://www.oracle.com/jp/cloud/free/) で Kubernetes 最小構成クラスタ作成
* AWS に Rancher サーバ作成
* 作成した Kubernetes クラスタを Rancher に Import
* ポエム

## やりたい事の構成図

![](https://i.imgur.com/ZPEpUnv.png)

> 私は　どれほどまでに
> 私の頭上を飛ぶツルの翼をかりて
> あのはかりしれぬ海のかなたの岸へ行くことをねがったろう
> 無限の泡立つさかずきから
> あふれる人生のよろこびを得ることを　熱望したろう
> 
> ─『若きウェルテルの悩み』（ゲーテ）─

**『自宅に Kubernetes クラスタが欲しい』** と、いくら願っても予算、部屋の広さ、家庭の事情などで叶わぬ場合があります。

しかしなんと今回紹介する Oracle Cloud の [Always Free](https://www.oracle.com/jp/cloud/free/) では、一部のリソースを **いつまでも無償で利用できます** 。　

今回はその中から

* 1/8 CPU、1GB MEM の VM2つ
* 10TB/Month まで外部通信

を使って、Oracle Cloud 上に Kubernetes を作成し、さらに AWS の無料枠である

* 1年間、特定の EC2 インスタンスを 750h/Month まで無償

を使って EC2 インスタンスに Rancher Server を構築し、 Oracle Cloud に作成した Kubernetes クラスタを管理してみます。

## Always Free で最小構成 Kubernetes クラスタ 作成

Oracle Cloud 上に Kubernetes クラスタを作るわけですが、実は [inajob さんの素晴らしい記事](https://inajob.hatenablog.jp/entry/always-free-kubernetes) が既にありまして、この通りにやれば間違いないです。

変な色気を出して『俺はCentOSで行くぜ』とかやらない限りは確実に作れます。

あと元記事にもありますが、自分で作った環境をインターネットに晒す事になりますし、操作を誤ると Oracle Cloud への課金が生じる場合もあります。

気を付けて自己責任で作業を行ってください。


## Rancher サーバ作成

###  Rancher てなに？

Rancher は [Rancher Lab 社](https://rancher.com/)が開発を主導している、OSS の Kubernetes 管理ツールです。

『Run Kubernetes Everywhere』 を謳っており、オンプレ/クラウドを問わず Kubernetes をグラフィカルな UI で統合管理できるのが強みです。

### AWS に Rancher サーバ構築

Ranhcer サーバはコンテナで動きます。本番環境で使うには HA 構成などの設計が必要ですが、今回はお試しなのでシングルノード構成で作ります。

今回はの Ubuntu 18.04 を入れた t2.micro インスタンスに Rancher サーバを構築します。

まずは Docker のインストールです。以下のコマンドでインストールできます。

```
apt-get update && apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

apt-get update
apt-get install -y docker-ce
```

そして Rancher サーバコンテナを起動します


```
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
rancher/rancher:latest
```

セキュリティグループの設定で、80/tcp と 443/tcp を解放してください。

あとは https://EC2のパブリックIP にアクセスすればコンソール画面にアクセスできます。

![](https://i.imgur.com/qUdvD6X.png)

Docker で動くので、Docker for Win/Mac といった手元でも動作します。
ただ、Kubernetes 管理ノードとしてパブリック IP アドレスを固定する必要があるので今回は EC2 インスタンスに作りました。

## Kubernetes を Rancher に Import

次は作成した Kubernetes を Rancher に　Import します。

『Add Cluster』を押してください

![](https://i.imgur.com/ow9FgwP.png)

『Import an existing cluster』を押してください

![](https://i.imgur.com/O8wW9Sr.png)

Import するためのコマンドが出てきます。上から順に

* GKE 用の Import コマンド
* それ以外の Import コマンド
* 自己証明書等でエラーが出る場合の Import コマンド

となっています。今回は一番下のコマンドを、先ほど作ったマスタにコピペします。

![](https://i.imgur.com/JFv183L.png)

コピペが終わったらしばらく待ちます。

![](https://i.imgur.com/4Y2vvZq.png)

成功するとこのように、クラスタ全体のリソースが確認できるようになります。

![](https://i.imgur.com/XUfC3z9.png)


## 感想

Oracle Cloud と AWS の無償枠を利用して 0円で Kubernetes クラスタと、その管理環境ができました。

全て小さい VM なので、重いアプリケーションのデプロイは正直辛いですが、チョットした動作検証には十分かと思います。

今回は、導入部分しか紹介できませんでしたが、今後は Oracle Cloud の Always Free を使って、様々な検証をしていきたいと思います。

Oracle Cloud には Managed Kubernetes サービスの OKE(Oracle Container Engine for Kubernete) があるので、それの構築や Rancher への Import なんかやってみたいですね。


明日のアドベントカレンダーは @parco の「新卒総合職の私がGAS入門してみた」です。乞うご期待！