前回の記事で、Rancher Serverの構築を話しました。今回の記事では、Rancher UIでKubernetesクラスタを構築することを記述したいと思う。
Rancherアカウント管理
Rancher Serverを立ち上げたあとで、Rancher UIを初めてアクセスする際に、アカウント管理を設定していないので、ログインとか一切なしで、パブリックにしたら非常に危険の状態だ。そのため、まずアカウント管理を追加する。
- 操作の前に、画面の右下のところに、言語を「日本語」にする。
- 画面上のバーの「管理者」→「アクセスコントロール」→「Local」をクリックする。
- 弊社の環境はすでに立ち上げているので、この操作は再現できないため、画面キャプチャはこの記事を参考してください。
- RancherのアカウントはGithub, OpenLDAP, Localなどの認証をサポートしている。
- アカウント追加完了したら、一度ログアウトしてから再ログインする。
Rancher環境管理
1. Kubernetes環境
Kubernetesクラスタを立ち上げる前に、まず簡単にRancherの「環境」という概念を詳解させていただく。
Rancherによって「Rancher は複数の環境に対してリソースのグループ化をサポートします。 それぞれ、個別に複数サービスやインフラストラクチャのリソースを持ち、1人もしくは複数のユーザーやグループにより管理されます。
例えば、 それぞれの環境を隔離するために "dev", "test" もしくは "production" といった分離された環境を作成し、 "dev" に対しては組織の全員がアクセスできるが、 "production" に対しては小さなチームのみに制限するといったことが可能です。」の説明を参考になればと思う。
AWSで実行すれば、簡単に理解すれば、各環境は自分のEC2インスタンス資源を持っていて、お互いに影響がないようにしている。しかも、環境の公開範囲はアカウントと連携できるため、社内にアカウントの権限によって対応の環境しかアクセスできないことを実現できる。
画面の左上に「環境を管理」をクリックしたら、環境管理画面へ遷移できる。
2. Kubernetes環境テンプレート追加
環境を追加するために、まずテンプレートを用意しないといけない。テンプレートは環境の設定を管理している。
環境管理と同じ画面で、環境テンプレートを管理できる。
-
テンプレート追加
-
Kubernetes設定編集
今回に記事でKubernetesクラスタを立ち上げるのを試す目的で、本番環境を構築ではないので、ここの設定はあまり変更する必要がない。
一つの設定オプションを覚えたら助かります。「Plane Isolation」のところは本番環境を構築する際に、変更するので、今後の記事で詳細説明する。
- Rancher Application追加
3. Kubernetes環境追加
環境テンプレートを作成したあとで、環境管理画面で「環境を追加」をクリックすれば、環境テンプレートを選択することが可能だ。
しかも、環境へアクセスをアカウントでコントロールすることも可能。
Kubernetesクラスタ構築
1. ホスト追加
Kubernetesの環境を作成したら、ホストを追加するだけでKubernetesクラスタをRancherが自動的に立ち上げてくれる。
ホストを追加する前に、クラスタの操作は何もできていない。
- KubernetesクラスタはAWSに実行するから、ホストを追加する前に、EC2インスタンスへ操作できる権限を持つアクススキーを発行してください。
- 「インフラストラクチャ」→「ホスト」→「ホスト追加」→「Amazon EC2」
-
EC2を追加設定完了すると、Racher Serverが自動的にEC2インスタンスを立ち上げ、インスタンスにクラスタ構築をする用のDocker containerをインストールして実行させる。
-
しかし、実際の作業中で、EC2インスタンスを一気に追加すると、エラーが出てくる場合は結構ある。そのため、個人的に、ホストを一個ずつ追加するのをおすすめ。
-
そういう場合は、ホストの右上のところにクリックして、まずホストを「非アクティブ」として、ホストを削除する。もう一度ホストを追加する。
-
結局、今回にEC2を追加は何回にも失敗しました。
-
クラスタを立ち上げると、Kubernetesの画面で、Kubernetes UI、Kubernetes CLIなどの機能が表示される。
-
Kubernetes UI。Kubernetesが提供しているUI管理ツールでは、クラスタの状況、デプロイ状況などの情報。
2. kubectl設定
kubectlコマンドツールでKubernetesクラスタを管理、アプリデプロイすることが可能で、非常に便利なツール。
RancherがKubernetesクラスタを立ち上げると、Rancher UIでkubectl実行する画面を提供している。しかし、クラスタの状態を取得などの簡単の機能だけ、アプリデプロイすることができない。そのため、ローカル環境で、kubectlコマンドツールをインスタールしてセットアップする必要がある。
-
kubectlインストール(Linux環境)参考資料
- ドウンロード
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.8.4/bin/linux/amd64/kubectl
- chmod +x ./kubectl
- mv kubectl /usr/local/bin/kubectl
- mkdir ~/.kube
- cd ~/.kube
- touch config
- Rancher CLIの設定ファイル内容をconfigにコピーする
- kubectlをインストール完了。「kubectl get all」を実行して確認する。
- Rancherで複数のKubernetesクラスタを立ち上げると、ローカルでクラスタをkubectlコマンドクラスタを管理したい場合、「kubectl --config=config_file」を実行したら対応できる。
- ここまで、kubectlの設定完了、ここからローカルでKubernetesクラスタを操作することが可能。
3. EC2インスタンス設定
EC2インスタンスをデバッグとか、実際のホストの環境をSSHで入ってみたい場合、Racherで提供した設定ファイルでアクセスすることが可能。
-
EC2へSSHで接続するときに、ダウンロードしたファイルの中に「ファイル名/machines/k8s-node-test1/id_rsa」を利用すれば、アクセスできる。
まとめ
今回はRancher UIからkubernetesクラスタを立ち上げ、管理ツール設定を紹介した。次回には、実際にKubernetesクラスタにDocker imageをデプロイすることを説明しながら、Rancherが提供している便利なアプリケーションも紹介する。