はじめに
前回構築したKubernetesクラスタをRancherにて管理するため、環境を構築していきます。
前回の記事は下記です。
環境は、オンプレ、Ubuntuの前提です。
1. Rancherコンテナの構築
まずはRancherを稼働させたいマシンにてRancherコンテナを起動します。
sudo docker run -d --name=rancher --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.2.7
このコマンドだけでコンテナイメージのpullおよびコンテナのrunが実行されます。docker ps
は下記のようになります。
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b970f4fed7ca rancher/rancher:v2.2.7 "entrypoint.sh" 4 seconds ago Up 1 second 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp rancher
問題なく起動していたら、
http://xxx.xxx.xxx.xxx:80
にアクセスしてみてください。(IPアドレスは自分の環境に合わせて、適宜変更してください)
初回アクセス時には下記のような表示がでる場合があります。
httpsではなくhttpでのアクセスのため「この先のwebページが安全かどうか分かりませんよ」と警告してくれている画面になります。
今回の場合は、自分で立ち上げたRancherのページなので、詳細設定を押して「〜にアクセスをする」を押して先に進んでください。(ブラウザによって少しだけ文言や操作方法が異なります)
なお、KubernetesやRancherを本格的に利用していく場合はhttps化し、セキュアな状態を保つ方が安全に利用できます。
さて続いて、初回アクセス時には、下記のようにadminユーザのパスワードを設定する画面が表示されます。
任意のパスワードを設定して「Continue」を押すと、次はRancherUIのURLを設定する画面になります。
こちらはデフォルトでマシンのIPアドレスが表示されています。DNSで名前解決できるホスト名などがある場合はその名前を、特に用意していないのであれば、そのままIPアドレスを保存します。
これでようやくRancherのメニュー画面が表示されます。
ひとまずRancher自身の設定は完了です。
次にすでに構築済みのKubernetesクラスタをRancher管理下に置く設定をしていきます。
2.既存Kubernetesクラスタの追加
先ほどのメニュー画面から
Add Cluster > import existing cluster > Create
を選択します。
すると、追加するクラスタの種類を選択する画面になるので、「Import existing cluster」を選びます。
また、cluster name を 「test-cluster」に設定しています。
なおここでは、オンプレ環境のKubernetesクラスタを追加するために、「Import existing cluster」を選びましたが、EKSやGKEを利用している場合は、それに沿ったものを選ぶことで、オンプレにあるRancherからでもクラウドのKubernetesリソースを管理することができるようになります。
クラスタの種類を選択し、名前を入力したら、「Create」を押してください。Masterで実行してほしいコマンドが記載されている画面が表示されます。
簡単に要約すると、
1:GCPのGoogle Kubernetes Engine(GKE)もしくはcluster_role_bindingを作成していないkubernetes環境をimportする場合は下記のコマンドを実行してClusterRoleを作成してください。
kubectl create clusterrolebinding cluster-admin-binding --clusterrole cluster-admin --user [USER_ACCOUNT]
2:以下のコマンドを既存のクラスタで実行してください。
kubectl apply -f https://xxx.xxx.xxx.xxx/v3/import/jbn7rpx8j72m47fnt95tvxxxxxxxxxxxxxxxxxxxxxxxglnww88.yaml
3:もし上記のコマンドでcertificate signed by unknown authority
というエラーが出たら、代わりに下記のコマンドを実行してください。
curl --insecure -sfL https://xxx.xxx.xxx.xxx/v3/import/jbn7rpx8j72m47fnt95tvxxxxxxxxxxxxxxxxxxxxxxxglnww88.yaml | kubectl apply -f -
と記載されています。(xxxにはご自身の環境に合わせたIPアドレスなどの情報が入ります。以下同様です。)
今回の環境は、Cluster Role Bindingをまだ作成していないため、1番のコマンドから実施していきます。
なお、Cluster Role Bindingがあるかどうかは下記のコマンドで確認できます。
kubectl get clusterrolebinding |grep cluster-admin
1番のコマンドを実行後は下記のように作成されたことを確認できます。
cluster-admin 15m
cluster-admin-binding 15m
次に、2番のコマンドを実行すると、下記のようなエラーが発生します。
Unable to connect to the server: x509: certificate signed by unknown authority
これは3番に記載がある通りのエラーメッセージですので、そのまま3番のコマンドを実行します。
curl --insecure -sfL https://xxx.xxx.xxx.xxx/v3/import/jbn7rpx8j72m47fnt95tvxxxxxxxxxxxxxxxxxxxxxxxglnww88.yaml | kubectl apply -f -
もし、さらに下記のエラーが出た場合は、KubernetesとRancherのバージョンのミスマッチによるものです。
clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created
clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created
namespace/cattle-system created
serviceaccount/cattle created
clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created
secret/cattle-credentials-5b6980e created
clusterrole.rbac.authorization.k8s.io/cattle-admin created
unable to recognize "STDIN": no matches for kind "Deployment" in version "extensions/v1beta1"
unable to recognize "STDIN": no matches for kind "DaemonSet" in version "extensions/v1beta1"
下記のページから対応しているKubernetesのバージョンを確認して、入れ直す必要があります。
3番のコマンドがエラーにならずに完了したら、Rancherの画面にてクラスタが”Active”になります。
これでKubernetes環境をRancherにて管理できるようになりました。
最後に、RancherからKubernetesのリソースを使ってアプリを起動できるか検証します。
3. アプリケーションの起動検証
ここでは、Rancherのカタログ機能(Kubernetesのmanifestファイルを書くことなくGUIだけでアプリを起動できる機能)を使ってwordpressを立ち上げます。
左上のGlobalから、test-clusterのDefaultに移動します。
その後、Appsに移動します。ここからRancherで起動させたアプリを確認できます。
今はまだ何も起動していないため、「Launch」のボタンがあるだけになっています。
この「Launch」ボタンを押すと提供されているカタログ一覧が表示されます。
右上の検索ボックスに「word」と打てばwordpressだけ表示されるので「View Defaults」を押して、詳細設定に入っていきます。
詳細ページでは、冒頭にアプリの説明があり、その後にパラメタ設定ができるようになっています。
ここでは各パスワードのみ入力し、他はデフォルトの値のまま、Launchします。
Launchすると下のように作成したアプリのステータスが表示されます。バーが緑になれば、問題なく起動が完了したということです。
このステータス画面の「wordpress」部分からアプリの詳細状況(各設定やPod、コンテナのステータスなど)を確認できます。
また、「32171/tcp」 もしくは 「32399/tcp」 のどちらかのリンクから、WordPressの初期画面を確認できると思います。
上記のような画面が表示されたら、OKです。
これで、RancherからKubernetesのリソースを使ってアプリを構築することができました。
Rancherを使うことで、すごく簡単にKubernetes上にアプリケーションを立ち上げることができることが分かったかと思います!
なお、今回はIngressを設定していないため、詳細ページのIngress部分は ”Active” になりません。あくまでIPアドレスとポート番号を指定しないとWordPressのページにアクセスできないので、ご注意ください。
アプリが稼働しているネットワークの外部(インターネット)からアクセスしたい場合は、別途Ingressを設定する必要があります。ここでは割愛します。
まとめ
以上がオンプレ環境のUbuntuマシンに構築されているKubernetesクラスタをRancher管理下に置く方法です。
今回はアプリ構築にカタログを使いましたが、そのほかの方法として「Workloads」から「Deploy」を選び、コンテナイメージを指定することでアプリを起動させることも可能です。
コンテナイメージはDockerRegistryやGitLabのRegistryを指定できます。
次は、このGitLabRegistryを指定してアプリを起動する方法を書き残そうと思います。