概要
Rancherを使ってAWS上のKubernetes環境をつくります。
構成イメージ
Nodeは1台でも構いません。
IAMユーザの作成、キーの発行
Rancher UIからEC2インスタンスを起動するため、IAMキーが必要になりますので、ユーザーを作成し、発行します。
AWSマネージメントコンソールのサービスからIAM
を選択します。
ユーザー
を選択します。
ユーザーを追加
を選択します。
任意のユーザー名
を入力し、アクセスの種類でプログラムによるアクセス
にチェックを入れ、次に進みます。
既存のポリシーを直接アタッチ
を選択し、ポリシー名AmazonEC2FullAccess
にチェックを入れ、次に進みます。
ユーザーの作成
をクリックします。
.csvのダウンロード
をクリックし、CSVファイルをローカルにダウンロードしておきます。
Rancherの起動
マネージメントコンソールのサービス一覧からEC2
を選択します。
Rancher on RancherOS
のイメージを選択します。
インスタンスタイプを選択します。選択できる最安のものはt2.small
になります。
選択後、確認と作成
をクリックします。
デフォルトVPCへの構築を前提としていますので、必要であれば、VPCの選択等の設定を実施してください。
作成
をクリックします。
必要に応じて、キーペアを選択します。
今回のハンズオンではSSHログインしませんので、キーペアなしでも構いません。
インスタンスの表示
をクリックし、インスタンス一覧を表示します。
※ 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の上段メニューからAdmin
→ Access 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チュートリアル
- GKEのサイト
- Kubernetes本家
kubectl
はRancher UIメニューの KUBERNETES
→ CLI
から実行可能
削除
Rancher UIのメニューからインフラストラクチャ
→ ホスト
を選択します。
表示されているホストの非アクティブ化
ボタンをクリックします。
表示がINACTIVE
になったことを確認した後、メニューボタンから削除
を選択します。
ホストがないことを確認します。
AWSマネージメントコンソールから以下を削除します。
- 作成したIAMユーザー
- Marketplaceから起動したEC2インスタンス
- セキュリティグループ
- Rancher on RancherOS-v1-1-0-AutogenByAWSMP-
- rancher-machine