この連載が書籍になりました!『RancherによるKubernetes活用完全ガイド

Rancherってどんなもの?

2019年2月27日(水)
市川 豊
連載の初回となる今回は、Rancherの基本的な知識と一般的なインストールの方法などを紹介する。

3. Single Node Installation(単一ノードインストール)

Single Node Installation(単一ノードインストール)は簡単に始めることができます。本連載では、Single Node Installation(単一ノードインストール)を中心に話を進めていきたいと思います。実際にGoogle Cloud Platform(GCP)を利用して、インストールを実施してみましょう。

Google Cloud Platformは、Googleが提供するパブリッククラウドサービスです。無料トライアルとして1年間で300ドル分試すことができます(https://cloud.google.com/)。

Step 1. Linuxホストの準備

前述の「1. Rancherインストール」の表1を参照して、オンプレミスまたは仮想マシンを準備します。

例として、表3にあるGoogle Compute Engine(GCE)のインスタンスを準備します。

表3. 使用したGCEのインスタンスのスペック

項目入力概要
名前rancher-server
リージョンasia-northeast1(東京)
ゾーンasia-northeast1-b
マシンタイプvCPUx1
ブートディスクUbuntu 16.04 LTS ディスクサイズ10GB
ファイアウォール「HTTPトラフィックを許可する」「HTTPSトラフィックを許可する」の
両方にチェックを入れます

Step 2. Dockerインストール

準備したLinuxホストにSSHクライアントからログインして、Dockerをインストールします。Dockerのバージョンについては「1. Rancherインストール」の表2を参照してください。

リスト1:Dockerのインストール

$ curl https://releases.rancher.com/install-docker/18.09.sh | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 15225  100 15225    0     0  21881      0 --:--:-- --:--:-- --:--:-- 21875
+ sudo -E sh -c apt-get update
・
・途中省略
・
 Git commit:        6247962
 Built:             Sun Feb 10 04:13:50 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.2
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.6
  Git commit:       6247962
  Built:            Sun Feb 10 03:42:13 2019
  OS/Arch:          linux/amd64
  Experimental:     false

If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:

  sudo usermod -aG docker iyutaka2018

Remember that you will have to log out and back in for this to take effect!

WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.

Step 3. SSL/TLSオプション

セキュリティ上の理由から、RancherはSSL(Secure Sockets Layer)/TLS(Transport Layer Security)が必要となります。インストールの際に使用する証明書には、以下の4つのオプションがあります。

  1. Rancherデフォルトの自己署名証明書利用
  2. 自己署名証明書利用
  3. 認証局に認定された証明書利用
  4. Let's Encrypt※3証明書利用

※3:Let's Encrypt(レッツ・エンクリプト)は、SSL/TLSの暗号化通信に用いる証明書の認証局(CA:Certificate Authority)。安全ではない平文のHTTP通信を、すべて暗号化したHTTPSに変えようという試みで、自由かつオープンに利用できる自動証明発行機関。

(1)デフォルトの自己署名証明書利用

Rancherのインストール時に生成される自己署名証明書を利用するので、証明書を別途準備する必要はありません。個人の開発環境やテスト環境での利用に適しています。

(2)自己署名証明書利用

OpenSSHを利用して自己署名証明書を作成して、Rancherのインストール時に指定することで反映されます。

(3)認証局に認定された証明書利用

正式な認証局に認定された証明書をRancherのインストール時に指定することで反映されます。

(4)Let's Encrypt証明書利用

以下の前提条件を満すことで、取得したLet's Encrypt証明書を利用してRancherをインストールできます。

  • Let's Encryptは、インターネットサービスです。したがって、このオプションはインターナル/エアギャップネットワークでは使用不可。
  • DNSに、LinuxホストのIPアドレスをRancherへのアクセスに使用するホスト名(例えば、rancher.mydomain.com)に紐づけるレコードを登録。
  • LinuxホストでTCP/80ポートを開放。Let's Encrypt http-01チャレンジタイプはどの送信元IPアドレスからでもアクセスする可能性があるので、ポートTCP/80はすべてのIPアドレスに対して開放。

Step 4. Rancherインストール

本連載では、Rancherデフォルトの自己署名証明書を利用したインストールを実行します。

リスト2:Rancherのインストール(Rancherデフォルトの自己署名証明書を利用)

$ sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.1.5
Unable to find image 'rancher/rancher:latest' locally
latest: Pulling from rancher/rancher
84ed7d2f608f: Pull complete
be2bf1c4a48d: Pull complete
a5bdc6303093: Pull complete
e9055237d68d: Pull complete
eaddf133ba2d: Pull complete
1aa56187fc29: Pull complete
1253c9d24915: Pull complete
bf77b269856e: Pull complete
a8fea8f1f733: Pull complete
400d7955b7f5: Pull complete
f0f204912ecb: Pull complete
01c9232cc45b: Pull complete
Digest: sha256:71980cad338aa1630f7401cda3298dc7f579ade71a22b99dff5800291282e669
Status: Downloaded newer image for rancher/rancher:latest
a57621d5304a7c45ead1cfc21611dd77b7691d1794397636a933d161384a5421

Webブラウザを起動して、「https://LinuxホストのIPアドレス/」にアクセスして、「詳細設定」ボタンをクリックします(図2)。

図2:Linuxホストにアクセスした際の画面

図2:Linuxホストにアクセスした際の画面

「<LinuxホストIPアドレス>にアクセスする(安全ではありません)」を選択します(図3)。

図3:「<LinuxホストIPアドレス>にアクセスする(安全ではありません)」をクリック

図3:「<LinuxホストIPアドレス>にアクセスする(安全ではありません)」をクリック

以下の画像のようにRancherのログイン画面が表示されたら、インストールは完了です(図4)。

図4:ログイン画面が表示される

図4:ログイン画面が表示される

Step 5. Rancher初期セットアップ

初回インストール直後は、上の「Welcome to Rancher」画面が表示されます。最初に、初期adminユーザのパスワードを設定します。ここでは、adminpasswordとします。

「New Password」と「Confirm Password」にadminpasswordと入力して、「Continue」ボタンをクリックします(図5)。

Rancherの初期セットアップ。パスワードの設定

図5:Rancherの初期セットアップ。パスワードの設定

Rancher Server URL画面では、インスタンスの外部IPが表示されます。そのまま「Save URL」ボタンをクリックします(図6)。

URL(IPアドレス)の設定

図6:URL(IPアドレス)の設定

以下の「Clusters」画面が表示されます。これでRancher初期セットアップは完了となります(図7)。

Clustersの画面が表示されれば初期セットアップ完了

図7:Clustersの画面が表示されれば初期セットアップ完了

Step 6. Single Node Installationの仕組み

Rancherはバージョン1.0のDockerベースから、バージョン2.0ではKubernetesベースの仕組みに変わりました。High Availability Installationの場合は、Kubernetesクラスタ上での稼働となるので理解できますが、Single Node Installationの場合は、Dockerコマンドでイメージが展開されるため、どこがKubernetesベースとなるのか疑問が生じます。その仕組みについて説明します。

Rancherは自身のKubeconfigファイルを生成する際に、外部からKubeconfigファイルが渡されていれば外部Kubernetesを、すでに内部のKubeconfigファイルがあれば内部Kubernetesを、そのどちらでもない場合は、新たに内部Kubernetesを構築するという仕組みになっています。

外部Kubernetesというのは、高可用性インストールでRancherが稼働する外部のKubernetesクラスタのパターンとなります。一方内部Kubernetesとは、Embedded kubernetes※4と呼ばれるもので、インストール時の「docker run」コマンド実行後、Rancherが稼働するためのKubernetesがないと判断された場合に、Rancher自身がKubernetesとしてふるまう組込Kubernetesのことになります。

※4:Embedded Kubernetesの構築ロジック詳細は、こちらを参照(https://github.com/rancher/rancher/blob/v2.1.5/pkg/embedded/embedded.go#L36)。

この仕組みの詳細については、本連載の後半でピックアップ予定です。

第一回は、Rancherの紹介と単一ノードインストールまでの流れを紹介しました。次回は、もう一台ノードを追加して、Kubernetesクラスタ構築、カタログ機能からアプリケーションデプロイ、Ingressの追加をRancher UIから行う流れを紹介します。

日本オラクル株式会社

Oracle Groundbreaker Advocate
Principal Cloud Solution Engineer

これまで、インフラエンジニア、フロントエンドエンジニアとして官公庁のシステム基盤を中心としたサーバの設計構築、運用保守、Webシステム開発を担当。技術教育者として専門学校でクラウド技術やOSS(Linux、Docker、Kubernetes)の授業を担当し、企業様向けプライベートトレーニング講師も担当。 アドボケート/エバンジェリストとしてミートアップ、カンファレンスで登壇。現在は、クラウドネイティブ技術を中心とするソリューションエンジニアとして活動。クラウドネイティブ技術に関連するコミュニティの運営にも積極的に参加。

Community:
Oracle Cloud Hangout Cafe メンバー (#ochacafe)
CloudNative Days Tokyo 実行委員会メンバー (#CNDT)

Book:
著書「Dockerコンテナ開発・環境構築の基本」(インプレス)
共著「RancherによるKubernetes活用完全ガイド」(インプレス)、「コンテナ・ベース・オーケストレーション Docker/Kubernetesで作るクラウド時代のシステム基盤」(翔泳社)

連載バックナンバー

クラウド技術解説
第11回

Rancherコードリーディング入門(3/3)

2020/2/19
前回に続き、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。
クラウド技術解説
第10回

Rancherコードリーディング入門(2/3)

2019/12/25
前回に続き、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。
クラウド技術解説
第9回

Rancherコードリーディング入門(1/3)

2019/11/5
今回からは、紙面の都合で「RancherによるKubernetes活用完全ガイド」に掲載されなかったパートをご紹介します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています