share facebook facebook twitter menu hatena pocket slack

2017.12.04 MON

RancherでKubernetes on AWS

概要

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

構成イメージ

こんな環境をつくります。

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

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

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

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

ユーザーを選択します。

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

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

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

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

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

Rancherの起動

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

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

AWS Marketplace を選択します。

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

Continueをクリックします。

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

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

作成をクリックします。

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

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

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

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

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

Rancherのアクセス制限

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

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

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

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

Kubernetesクラスタの作成

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

nginxコンテナの起動

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

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

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

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

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

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

その他Kubernetesチュートリアル

削除

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

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

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

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

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

元記事はこちら

RancherでKubernetes on AWS

佐々木真也

佐々木真也

2016年cloudpack join。 前職では構築・設計・PMを担当。 その経験を生かし、案件対応だけでなく検証環境の構築も行います。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。