AWS
docker
kubernetes
rancher

RancherでKubernetes on AWS

概要

Rancherを使ってAWS上のKubernetes環境をつくります。

構成イメージ

こんな環境をつくります。
Untitled(3).png

Nodeは1台でも構いません。


IAMユーザの作成、キーの発行

Rancher UIからEC2インスタンスを起動するため、IAMキーが必要になりますので、ユーザーを作成し、発行します。

AWSマネージメントコンソールのサービスからIAMを選択します。
Kobito.XDYtdH.png


ユーザーを選択します。

Kobito.I2lRhg.png


ユーザーを追加 を選択します。

Kobito.0OpqP9.png


任意のユーザー名を入力し、アクセスの種類でプログラムによるアクセスにチェックを入れ、次に進みます。

Kobito.8Fd0id.png


既存のポリシーを直接アタッチを選択し、ポリシー名AmazonEC2FullAccessにチェックを入れ、次に進みます。
Kobito.DUlU26.png


ユーザーの作成をクリックします。

Kobito.ZyCCkT.png


.csvのダウンロードをクリックし、CSVファイルをローカルにダウンロードしておきます。
Kobito.MEgOpV.png


Rancherの起動

マネージメントコンソールのサービス一覧からEC2を選択します。

image.png


インスタンスインスタンスの作成を選択します。
image.png


AWS Marketplace を選択します。
image.png


Rancher on RancherOSのイメージを選択します。
image.png


Continueをクリックします。
image.png


インスタンスタイプを選択します。選択できる最安のものはt2.smallになります。
image.png

選択後、確認と作成をクリックします。
デフォルトVPCへの構築を前提としていますので、必要であれば、VPCの選択等の設定を実施してください。


作成をクリックします。

image.png


必要に応じて、キーペアを選択します。
今回のハンズオンではSSHログインしませんので、キーペアなしでも構いません。
image.png


インスタンスの表示をクリックし、インスタンス一覧を表示します。
image.png


作成したインスタンスのIPv4パブリックIPを確認します。
image.png

※ MarketplaceからRancherのAMIを起動すると、Rancher on RancherOS-v1-1-0-AutogenByAWSMP-というセキュリティグループが自動的に作成され、インスタンスに適用されます。SSHポートとTCP/8080がすべて許可される設定になっていますので、継続して利用する場合は、ソースの設定を適切に実施することを推奨します。TCP/8080はAPIの利用ポートにもなりますので、後ほど作成するノードからアクセスできるように構成する必要があります。
image.png


ブラウザで先程のパブリックIPの8080番ポートにアクセスします。
http://xx.xx.xx.xx:8080
Welcome to Rancher!と表示されることを確認してください。

image.png


Rancherのアクセス制限

デフォルトではRancherのUIに対して、アクセス制限がかかっていませんので、ユーザー名、パスワードによる認証を有効にします。
RancherUIの上段メニューからAdminAccess Controlを選択します。

image.png


Access Controlの一覧からLocal を選択し、ユーザー名、パスワードを入力し、`Enable Loacl Auth`をクリックします。
image.png


確認のため、一旦ログアウトします。
image.png


先程指定したユーザー名、パスワードでログインできることを確認します。
必要であれば、言語を日本語に変更することも可能です。

image.png


Kubernetesクラスタの作成

上段メニューの環境を管理を選択します。

image.png


環境を追加をクリックします。
image.png


名前を入力し、環境のテンプレートでKubernetesを選択し、作成をクリックします。
image.png


メニューの環境を作成したKubernetesに切り替えます。
image.png


メニューのインフラストラクチャホストを選択します。
image.png


ホストを追加をクリックします。
image.png


サイトのアドレスにチェックが入っていることを確認し、保存をクリックします。
image.png


AMAZON EC2を選択し、リージョンを指定、先に作ったIAMユーザのアクセスキー、秘密キーを入力し、次に進みます。

image.png


アベイラビリティゾーン、サブネットを指定し、次に進みます。

image.png


セキュリティグループを選択します。 rancher-machineを選択し、次に進みます。

image.png

rancher-machine を選択することにより、必要なポートが許可されたセキュリティグループが生成されますが、SSHポート等がすべて許可される設定になっていますので、継続して利用する場合は、ソースの設定を適切に実施することを推奨します。SSHはRancherからアクセスできるように構成する必要があります。


名前を指定し、その他のオプションを選択し(そのままでも構いません)、作成をクリックします。

image.png


同様にもう一方のアベイラビリティゾーンにもホストを作成します。(1台のみでも構いません。)
ホストが正常に起動し、rancher-agent-bootstrap以外が緑の◯になっていることを確認します。

image.png


作成したホストにSSHでログインしたい場合は、ホスト右上のメニューボタンをクリックし、マシン設定を選択すると、ZIPファイルがダウンロードできます。SSHの秘密鍵が、展開したディレクトリのmachines/ホスト名/id_rsaにありますので、このファイルを指定し、SSHログインが可能です。
image.png


メニューのKUBERNETESインフラストラクチャスタックを選択し、すべて緑になっていることを確認します。
image.png


メニューKUBERNETESダッシュボードを選択し、Kubernetes UIをクリックします。

image.png


別ウインドウでKubernetes UIが起動します。

image.png


ノードに適用するセキュリティグループに設定を追加します。
AWSマネージメントコンソールからセキュリティグループ一覧を表示し、rancher-machineを選択、インバウンドタブを選択、編集をクリックします。

image.png


下記の2つのルールを追加します。

タイプ プロトコル ポート範囲 ソース
HTTP TCP 80 任意の場所
カスタムTCP TCP 30000-32767 任意の場所

1行目はハンズオンの中で、Webサーバのコンテナを起動して、アクセスするためにHTTPを許可しています。
2行目はインスタンスのパブリックIPを送信元とした通信を許可するために設定します。(ポート番号の仕様はよく分かっていません。30000台が使われる?)
継続して利用する場合は、ソースの設定を適切に実施することを推奨します。

image.png


nginxコンテナの起動

Kubernetes UIから 作成をクリックします。

image.png


以下のように入力し、配備をクリックします。

  • アプリケーション名
    • nginx(任意)
  • コンテナイメージ
    • nginx
  • ポッド数
    • 1
  • サービス
    • 外部
  • ポート
    • 80
  • ターゲットポート
    • 80
  • プロトコル
    • TCP

image.png


左メニューのワークロードを選択し、すべて正常に起動していることを確認します。

image.png


左メニューのサービスを選択し、正常に起動していることを確認し、外部エンドポイントのリンクをクリックします。

image.png


nginxの画面が表示されることを確認します。

image.png


その他Kubernetesチュートリアル

kubectlはRancher UIメニューの KUBERNETESCLI から実行可能


削除

Rancher UIのメニューからインフラストラクチャホストを選択します。
表示されているホストの非アクティブ化ボタンをクリックします。
image.png


表示がINACTIVEになったことを確認した後、メニューボタンから削除を選択します。
image.png

ホストがないことを確認します。


AWSマネージメントコンソールから以下を削除します。

  • 作成したIAMユーザー
  • Marketplaceから起動したEC2インスタンス
  • セキュリティグループ
    • Rancher on RancherOS-v1-1-0-AutogenByAWSMP-
    • rancher-machine