ども。レッドハットでストレージを中心にクラウドインフラを生業にしている宇都宮です。
この業界の恒例となった12月のアドベントカレンダーですが、なんとRookもアドベントカレンダーをやります!Special thanks to tzkobaさん!
Rook勢では知らない人は居ないであろう tzkoba さん、makotowさんががっつり書きますよ!
僭越ながら宇都宮も12/1から8連投で投げさせていただきます!肩ちぎれるまで根性で投げますよ!12月はRook MeetupもあるしOpenShift.RUNもあるしなんかすごいぞ!アハハ!
引き続き、RookとOpenShift Japan CommunityのTwitterアカウント、@japan_rookと@openshiftjpのフォローお願いしまーす!
Ceph Dashboard
はい、てなわけで前回はCephFSを使ってみました。今回はCeph Dashboardを使ってみましょう。
CephはKraken(v11)から"ceph-mgr"というdaemonが登場しました。ceph-mgrはceph-monを補助するように、監視機能を提供したり外部の監視ツール/ソフトウェアのサービスと連携したりする役割を担います。ceph-mgrはLuminous(v12)からceph-monとセットでデプロイされるようになっていて、標準でCephクラスタの利用状況をGUIで表示するDashboardが搭載されています。
もちろんRook-Cephでもceph-mgrはデプロイされるのでDashboardは利用できます。今日はそれをちょっと使ってみましょう。
Dashboardを有効にする
Kubernetesの環境は前回と同じものをそのまま使います。
kubectl create -f operator.yaml
までは前回と同じでいいですが、kubectl create -f cluster.yaml
のところ、つまりCephクラスタを作るところで一回止まりましょう。
Ceph Dashboardを使うためには、まずCephクラスタのマニフェストファイル(cluster.yaml)の中で、dashboardをenableに設定する必要があります。デフォルトでenabled: true
になっているので、意図的にfalseにしてない限り変更する必要はないでしょう。
ちなみにコメントアウトされてるパラメータを設定することでポートやURLを編集できます。
[utubo@tutsunom ceph]$ grep -A 7 "dashboard:" cluster.yaml dashboard: enabled: true # serve the dashboard under a subpath (useful when you are accessing the dashboard via a reverse proxy) # urlPrefix: /ceph-dashboard # serve the dashboard at the given port. # port: 8443 # serve the dashboard using SSL ssl: true
念の為CephClusterリソースでもチェックして、Serviceも確認しておきましょう。
[utubo@tutsunom ceph]$ kubectl describe cephcluster|grep -A 2 Dashboard Dashboard: Enabled: true Ssl: true [utubo@tutsunom ceph]$ kubectl get svc rook-ceph-mgr-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rook-ceph-mgr-dashboard ClusterIP 100.70.46.106 <none> 8443/TCP 3d10h
はい、大丈夫ですね。
Dashboardを外部に公開する
Ceph Dashboardのサービスを外部に公開します。方法はNodePortでもLoadBalancerでもIngressでも、全て設定するyamlがあるので好きなのでいいと思います。ここでは一番楽チンなLoadBalancerでいきます。
[utubo@tutsunom ceph]$ ls -l dashboard-* -rw-rw-r-- 1 utubo utubo 362 11月 21 21:14 dashboard-external-http.yaml -rw-rw-r-- 1 utubo utubo 363 11月 21 21:14 dashboard-external-https.yaml -rw-rw-r-- 1 utubo utubo 839 11月 21 21:14 dashboard-ingress-https.yaml -rw-rw-r-- 1 utubo utubo 365 11月 21 21:14 dashboard-loadbalancer.yaml [utubo@tutsunom ceph]$ [utubo@tutsunom ceph]$ cat dashboard-loadbalancer.yaml apiVersion: v1 kind: Service metadata: name: rook-ceph-mgr-dashboard-loadbalancer namespace: rook-ceph labels: app: rook-ceph-mgr rook_cluster: rook-ceph spec: ports: - name: dashboard port: 8443 protocol: TCP targetPort: 8443 selector: app: rook-ceph-mgr rook_cluster: rook-ceph sessionAffinity: None type: LoadBalancer [utubo@tutsunom ceph]$ [utubo@tutsunom ceph]$ kubectl create -f dashboard-loadbalancer.yaml service/rook-ceph-mgr-dashboard-loadbalancer created [utubo@tutsunom ceph]$ [utubo@tutsunom ceph]$ kubectl get svc -l app=rook-ceph-mgr NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE rook-ceph-mgr ClusterIP 100.70.230.202 <none> 9283/TCP 3d10h rook-ceph-mgr-dashboard ClusterIP 100.70.46.106 <none> 8443/TCP 3d10h rook-ceph-mgr-dashboard-loadbalancer LoadBalancer 100.65.39.6 xxxx7c64cbfaa4e71949f59d4c10687c-1467982743.us-east-1.elb.amazonaws.com 8443:31564/TCP 39s
できた。あとはWebブラウザからEXTERNAL-IPに表示されてるURLに8443番ポートでアクセスすると見られます。
Dashboardに接続する
そしたら公開されたDashboardに接続してみましょう。
イエーイ。
さっそくログインしたいところですが、usernameとpasswordは何を使えばいいんでしょうか。
DashboardをenableにしてCephクラスタを作ると、Rookはデフォルトのdashboardユーザーであるadmin
と、そのSecretであるrook-ceph-dashboard-admin-password
を作成します。このSecretからadminのパスワードを調べればいいです。パスワードは普通にkubectl get
で見えますが、表示される文字列はbase64でエンコードされてるのでデコードするように注意しましょう。
[utubo@tutsunom ceph]$ kubectl get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo XXXXXXXXXX
10文字のpasswordが出てくるので、これを使ってDashboardにログインします。
ログインしたらこんな感じでステータスやらCephクラスタの構成やらの一覧がバンと表示されます。上の方のメニュー選んでいくとクラスタのパラメータ値とか割と事細かく情報が見ることができて、結構使えると思います。
Cephクラスタを視認性高くモニタリングすることができるのが、Ceph Dashboardです。
まとめ
今回はサクッとCeph Dashboardの紹介をしてみました。
今回はデフォルトのadminユーザーを使いましたが、もちろん他のユーザーを作れます。Dashboardのユーザーアクセス制御はRBACで、情報ごとにCRUDの権限を設定してRoleを作成できるので、一般ユーザーさんに公開することもできます。
はい、というわけで今日はここまで。