Rancher2.0 Tech Preview2について

2018年1月24日に[Rancher Labs](https://rancher.com/)よりRancher2.0 Tech Preview2がリリースされました。
Tech Preview1のリリースから約4ヶ月の短期間ですが、大幅に変わっています。
一つずつ見ていきましょう。

# Rancher2.0 Tech Preview2の主な特徴

1. Rancher Serverは100%Go言語で書かれて、MySQLデータベースがなくなりました。
2. Rancher Serverを従来のDockerホストや既存のKubernetesクラスタに展開できます。
3. Rancher Kubernetes Engine（RKE）やGoogle Kubernetes Engine（GKE）などのマネージドKubernetesサービスを使用して、新しいKubernetesクラスタを作成できます。 Rancherは、RKEとGKEの両方のクラスタプロビジョニングを自動化します。将来的には、EKSやAKSなどのマネージドKubernetesサービスのサポートも追加します。
4. 統一されたクラスタ管理インターフェイスから、すべてのKubernetesクラスタを管理できます。 Rancherは、これらのKubernetesクラスターがホストされている場所に関係なく、すべてのKubernetesクラスター間で集中管理された認証と認可を実装します。
5. Rancherは、すべてのKubernetesクラスタに簡単なワークロード管理インターフェースを提供します。これはまだ進行中の作業です。直感的なRancher 1.0スタイルのコンテナ中心のインターフェイスを引き続き提供しています。アプリケーションカタログ、CI/CDやモニタリングの統合、洗練された統計、ログ集中管理など、多くの先進的なワークロード管理機能を追加しています。

# Compare Tech Preview1 Architecture & Tech Preview2 Architecture

Tech Preview1まであったMySQLが無くなったり、コンポーネントも変わりました。Tech Preview 1と2のアーキテクチャを比較して見ていきましょう。

## Tech Preview1 Architecture
![tp1.png](https://qiita-image-store.s3.amazonaws.com/0/61606/1c80ba4e-9fa8-5a40-06cb-2a49cc4f843e.png)

| コンポーネント | 概要 |
|:-----------------|:-----------------|
|Rancher Server|Rancher Serverは、Rancher2.0からDockerからKubernetesの仕組みとなり、クライアント、ホスト、インポートしたKubernetesクラスタを管理します。ステートレスなコンポーネントです。|
|Rancher Controller|Rancher Controllerは、Embedded Kubernetesクラスタの生成とGKEのような既存のKubernetesクラスタをインポートします。そして、以下のコンポーネントで構成されています。<br>・Websocketプロキシ：RancherエージェントまたはRancher UIからコアコントローラへの要求を出す<br>・Compose executor：composeファイルを解釈して実行します。<br>・Core controller：サービス、ロードバランサ、DNSなどのRancher constructsを実装して、Kubernetes Podsに登録する<br>・Core controllerはRancherにおいてJavaで書かれた唯一のコンポーネントです。他のすべてのコンポーネントはGoで書かれています。|
|Rancher Database(MySQL)|Rancher Database(MySQL)は、Rancher1.0系と同様Rancher Server用のデータベースとなります。|
|Netes-agent|Netes-agentは、Rancherコンテナー群の定義を取得してKubernetes Podとして実装して、管理下にあるすべてのKubernetesクラスタに接続します。|
|Auth Proxy|Auth Proxyは、クライアントからのKubectlコマンドやkubernetes APIの窓口となります。|
|Embedded Kubernetes Master|Embedded Kubernetes Masterは、マルチテナントAPIサーバ、コントローラマネージャ、スケジューラで構成されています。全てがステートレスで、障害に強いコンポーネントです。|
|Rancher agent|Rancher agentはWebsocketプロキシ経由でRancher Serverに接続します。Websocketプロキシはポート8080でリッスンしてポート8081でRancher Serverに接続します。Websocket接続により、エージェントは全二重通信を実行できます。さらに、コンソールセッション、統計情報、およびログエントリもまた、ホストからRancher Serverに配信されます。エージェントは1分ごとにステータスパケットをRancher Serverに送信します。ステータスパケットには、すべてのコンテナとそのステータスのリストを含んでいます。多数の欠落したステータスパケットにより、ホストは、「再接続」状態となります。|
|Kubelet|Kubeletは、kubernetesのコンポートです。Podの起動や管理を行います。|
|Docker Daemon|Docker Daemonは、Kubeletと連携してコンテナーの起動、実行を行います。|

## Tech Preview2 Architecture
![Rancher2tp2archi.png](https://qiita-image-store.s3.amazonaws.com/0/61606/baeca9c2-36d5-36c5-5ac2-350cba1d2d2b.png)

| コンポーネント | 概要 |
|:-----------------|:-----------------|
|Rancher API Server|Embedded Kubernetes APIサーバとetcdデーターベース上に構築されています。次の機能を装備しています。<br>1.ユーザ管理機能。Rancher API Serverは、Active DirectoryやGitHubのような外部の認証プロバイダに対応するユーザIDを管理します。<br>2.認可。Rancher API Serverは、アクセス制御とセキュリティポリシーを管理します。<br>3.プロジェクト。プロジェクトは、クラスタ内の複数のnamespaceをグループ化したものです。<br>4.ノード。Rancher API Serverは、全クラスタ内の全ノードのIDを追跡します。|
|Cluster Controller and  Cluster Agents|Cluster ControllerとCluster Agentsは、Kubernetesを管理するために必要なビジネスロジックを実装します。Rancherインストール全体に対するグローバルな全ロジックは、Cluster Controllerによって実装されます。別のCluster Agentインスタンスは、対応するクラスタに必要なロジックを実装します。<br>Cluster Agentは、次のアクティビティを実行します。<br>1.ワークロード管理。例えば、各クラスタにPodを作成したり、デプロイします。<br>2.グローバルポリシーで定義されているロールとバインディングをすべてのクラスタに適用する。<br>3.クラスタからRancher Serverにイベント、統計、ノード情報や状態を伝播します。<br>Cluster Controllerは、次のアクティビティを実行します。<br>1.クラスタおよびプロジェクトへのアクセス制御ポリシーを構成します。<br>2.必要となるDockerマシンドライバとRKEやGKEのようなKubernetesエンジンを起動して、クラスタのセットアップを行います。|
|Auth Proxy|Auth Proxyは、全てのKubernetes API呼び出しをプロキシして、ローカル認証、Active DirectoryやGitHubのような認証サービスと統合します。Kubernetes APIを呼び出すたびに、Auth Proxyは、呼び出し元を認証し、Kubernetes Masterへ呼び出しを転送する前に適切なKubernetesの偽装ヘッダーを設定します。Rancherは、サービスアカウントを使用してKubernetesクラスタと通信します。|
|RKE/GKE Kubernetes Master|Kubernetes Masterはkubernetesのコンポーネントで、API Server、Scheduler、Controller、etcd等の機能を有しています。図では、RKEとGKEですが、将来的にはEKS、AKS等も利用できる予定です。|
|Kubelet|Kubeletは、kubernetesのコンポートです。Podの起動や管理を行います。|

# Get Started with Rancher 2.0

下表にあるLinuxホストを準備します。

| 項目 | スペック |
|:----|:---------|
| OS |64-bit Ubuntu 16.04|
| Mem |at least 4GB of memory|
| Disk |80GB +|
| Docker|Install the latest stable version of Docker on the host.|

1.最新版Dockerのインストール

```lang:コマンド
$ wget -qO- https://get.docker.com/ | sh
```

2.Rancher2.0 Tech Preview2のインストール

```lang:コマンド
$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/server:preview
```

3.ブラウザアクセス

https://hostIP/

※初期Username「admin」初期Password「admin」

![rancher2.0tp2.png](https://qiita-image-store.s3.amazonaws.com/0/61606/139dc2de-130d-e69f-ea32-84ca0001341a.png)

# Rancher2.0 Tech Preview2の主要機能

![rancher2tp2_02.png](https://qiita-image-store.s3.amazonaws.com/0/61606/6813d2b2-c6aa-641d-cb98-265ae4da3dc3.png)

「Create a Cloud Cluster」については、Rancher2.0 ServerからGKE、EKS、AKSにkubernetesクラスタを作成できます。
※2018年2月現在では、GKEのみ可能。

「Create a RKE Cluster」については、RKE(Rancher Kubernetes Engine)を利用してAWS、Azure、DigitalOcean、Packet、VMware（※2018年2月現在）と連携してKubernetesクラスタを作成できます。

「Import an Existing Cluster」については、Tech Preview1からの機能で、既存のKubernetesクラスタをRancher2.0 Serverにインポートして管理することができます。

上記主要機能については、別途検証結果を投稿したいと思います。

- [Rancher2.0 Tech Preview2 ～Create a Cloud Cluster～](https://qiita.com/cyberblack28/items/c5d49bd6717dbf7719ee)
- [Rancher2.0 Tech Preview2 ～Create a RKE Cluster～](https://qiita.com/cyberblack28/items/f88fbbef1b6fd461be00)

# 参考資料

## Rancher2.0 Tech Preview2
- [Announcing Rancher 2.0 Tech Preview 2](https://rancher.com/announcing-rancher-2-0-tech-preview-2/)
- [Updated Rancher 2.0 Architecture Document](https://cdn2.hubspot.net/hubfs/468859/Whitepapers/Rancher-2.0-Architecture-v0.6-jan-2018.pdf)
- [The Quick Start Guide](https://rancher.com/docs/rancher/v2.0/en/quick-start-guide/)
- [Technical Release 2 page](https://github.com/rancher/rancher/releases)
- [Hands-on with the Rancher2.0 Beta](https://www.youtube.com/watch?v=ld7ctOg3waM)

## RKE(Rancher Kubernetes Engine)
- [Announcing RKE, a Lightweight Kubernetes Installer](http://rancher.com/announcing-rke-lightweight-kubernetes-installer/)
- [An Introduction to Rancher Kubernetes Engine (RKE)](http://rancher.com/an-introduction-to-rke/)
- [軽量KubernetesインストーラRKEを発表](https://goo.gl/XdRZxr)
- [Rancher Kubernetes Engine（RKE）の紹介](https://goo.gl/CjRB4K)
- [RKEってなんじゃ？](http://tsukaman.hateblo.jp/entry/2017/12/01/111604)
- [RKEでオンプレKubernetesクラスタを作り、その上でOpenFaaSを動かす - その１](https://techlog.supersoftware.co.jp/2017/12/13/rke-k8s-openfaas-part1/)
- [RKE & Rancher2.0](https://www.slideshare.net/cyberblackvoom/rke-rancher-20)
- [Rancher Kubernetes Engine(RKE) & Rancher 2.0 Technical Preview on Fujitsu K5](https://qiita.com/cyberblack28/items/8f14436a0dd92d8d87f9)