TECHSTEP

ITインフラ関連の記事を公開してます。

Rook-Cephのコンフィグ設定方法と設定例

はじめに

Rook-Cephのクラスターや各リソースを作成したのち、Cephの設定を変更する方法が公式ドキュメントで紹介されています。設定の変更方法・及び変更例が紹介されていたので、ここにまとめておきます。

Rook-Cephコンフィグ設定変更方法

そもそもRook-Cephの設定を変更する方法として、公式ドキュメントでは3通りの方法を紹介しています。

Toolbox + Ceph CLI

一つ目の方法は、toolbox Podからcephコマンドを実行するものです。これは公式ドキュメントで推奨されている方法であり、Quick-Start等のドキュメント内でも紹介されているポピュラーな方法です。

使い方はシンプルで、toolbox.yamlを利用してtoolbox Podをデプロイすれば、そのPodを経由して各種コマンドを実行できます。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rook-ceph-tools
  namespace: rook-ceph
  labels:
    app: rook-ceph-tools
spec:
  replicas: 1
  selector:
    matchLabels:
      app: rook-ceph-tools
  template:
    metadata:
      labels:
        app: rook-ceph-tools
    spec:
      dnsPolicy: ClusterFirstWithHostNet
      containers:
      - name: rook-ceph-tools
        image: rook/ceph:v1.2.4
        command: ["/tini"]
        args: ["-g", "--", "/usr/local/bin/toolbox.sh"]
        imagePullPolicy: IfNotPresent
        env:
          - name: ROOK_ADMIN_SECRET
            valueFrom:
              secretKeyRef:
                name: rook-ceph-mon
                key: admin-secret
        volumeMounts:
          - mountPath: /etc/ceph
            name: ceph-config
          - name: mon-endpoint-volume
            mountPath: /etc/rook
      volumes:
        - name: mon-endpoint-volume
          configMap:
            name: rook-ceph-mon-endpoints
            items:
            - key: data
              path: mon-endpoints
        - name: ceph-config
          emptyDir: {}
      tolerations:
        - key: "node.kubernetes.io/unreachable"
          operator: "Exists"
          effect: "NoExecute"
          tolerationSeconds: 5
[root@vm0 ceph]# kubectl apply -f toolbox.yaml
deployment.apps/rook-ceph-tools created
[root@vm0 ceph]#
[root@vm0 ceph]# kubectl get pods -n rook-ceph -l app=rook-ceph-tools
NAME                              READY   STATUS    RESTARTS   AGE
rook-ceph-tools-9b7b66bbb-64hqj   1/1     Running   0          15s
[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-64hqj -n rook-ceph -- ceph status
  cluster:
    id:     efefd629-64b6-4b82-8fb9-95c610dd67af
    health: HEALTH_WARN
            Degraded data redundancy: 1 pg undersized

  services:
    mon: 3 daemons, quorum a,b,c (age 3h)
    mgr: a(active, since 3h)
    osd: 3 osds: 3 up (since 3h), 3 in (since 6h)

  data:
    pools:   1 pools, 128 pgs
    objects: 0 objects, 0 B
    usage:   3.1 GiB used, 294 GiB / 297 GiB avail
    pgs:     127 active+clean
             1   active+undersized

[root@vm0 ceph]#

※参考リンク:

Rook Doc - Rook Toolbox

Ceph Dashboard

2つ目の方法は、Ceph Dashboard経由で設定変更を行うものです。これはCephClusterを作成した時点で利用できるCeph Dashboardにアクセスして利用します。

こちらも使い方はシンプルで、外部からアクセスするためのdashboard-external-https.yamlをデプロイし、Kubernetesクラスター外からMGR Podにアクセスできるようにします。その後、Dashboardにアクセスするときに必要なパスワード情報をrook-ceph-dashboard-password Secretから取得します(ユーザー名はadmin)。

# Serviceの確認
[root@vm0 ceph]# kubectl get svc -n rook-ceph
NAME                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
csi-cephfsplugin-metrics   ClusterIP   10.103.25.55     <none>        8080/TCP,8081/TCP   6h21m
csi-rbdplugin-metrics      ClusterIP   10.101.244.90    <none>        8080/TCP,8081/TCP   6h21m
rook-ceph-mgr              ClusterIP   10.104.76.71     <none>        9283/TCP            6h17m
rook-ceph-mgr-dashboard    ClusterIP   10.105.171.229   <none>        8443/TCP            6h18m
rook-ceph-mon-a            ClusterIP   10.109.65.39     <none>        6789/TCP,3300/TCP   6h18m
rook-ceph-mon-b            ClusterIP   10.96.217.189    <none>        6789/TCP,3300/TCP   6h18m
rook-ceph-mon-c            ClusterIP   10.111.148.158   <none>        6789/TCP,3300/TCP   6h18m


# Dashboardへのアクセスに必要なServiceをデプロイ

[root@vm0 ceph]# kubectl apply -f dashboard-external-https.yaml
service/rook-ceph-mgr-dashboard-external-https created

[root@vm0 ceph]# kubectl get svc -n rook-ceph
NAME                                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
csi-cephfsplugin-metrics                 ClusterIP   10.103.25.55     <none>        8080/TCP,8081/TCP   6h27m
csi-rbdplugin-metrics                    ClusterIP   10.101.244.90    <none>        8080/TCP,8081/TCP   6h27m
rook-ceph-mgr                            ClusterIP   10.104.76.71     <none>        9283/TCP            6h23m
rook-ceph-mgr-dashboard                  ClusterIP   10.105.171.229   <none>        8443/TCP            6h23m
rook-ceph-mgr-dashboard-external-https   NodePort    10.106.165.56    <none>        8443:31630/TCP      7s
rook-ceph-mon-a                          ClusterIP   10.109.65.39     <none>        6789/TCP,3300/TCP   6h24m
rook-ceph-mon-b                          ClusterIP   10.96.217.189    <none>        6789/TCP,3300/TCP   6h24m
rook-ceph-mon-c                          ClusterIP   10.111.148.158   <none>        6789/TCP,3300/TCP   6h24m
[root@vm0 ceph]#


# Dashboardへのアクセス時に必要なパスワード情報の確認

[root@vm0 ceph]# kubectl get secret -n rook-ceph
NAME                                         TYPE                                  DATA   AGE
default-token-8bfpk                          kubernetes.io/service-account-token   3      6h28m
rook-ceph-admin-keyring                      kubernetes.io/rook                    1      6h23m
rook-ceph-cmd-reporter-token-wwlqd           kubernetes.io/service-account-token   3      6h28m
rook-ceph-config                             kubernetes.io/rook                    2      6h23m
rook-ceph-crash-collector-keyring            kubernetes.io/rook                    1      6h21m
rook-ceph-dashboard-password                 kubernetes.io/rook                    1      6h20m
rook-ceph-mgr-a-keyring                      kubernetes.io/rook                    1      6h20m
rook-ceph-mgr-token-wszxk                    kubernetes.io/service-account-token   3      6h28m
rook-ceph-mon                                kubernetes.io/rook                    4      6h23m
rook-ceph-mons-keyring                       kubernetes.io/rook                    1      6h23m
rook-ceph-osd-0-keyring                      kubernetes.io/rook                    1      6h20m
rook-ceph-osd-1-keyring                      kubernetes.io/rook                    1      6h20m
rook-ceph-osd-2-keyring                      kubernetes.io/rook                    1      6h20m
rook-ceph-osd-token-rh5bq                    kubernetes.io/service-account-token   3      6h28m
rook-ceph-system-token-7bm8p                 kubernetes.io/service-account-token   3      6h28m
rook-csi-cephfs-node                         kubernetes.io/rook                    2      6h21m
rook-csi-cephfs-plugin-sa-token-mc8m5        kubernetes.io/service-account-token   3      6h28m
rook-csi-cephfs-provisioner                  kubernetes.io/rook                    2      6h21m
rook-csi-cephfs-provisioner-sa-token-twhbt   kubernetes.io/service-account-token   3      6h28m
rook-csi-rbd-node                            kubernetes.io/rook                    2      6h21m
rook-csi-rbd-plugin-sa-token-v9ps5           kubernetes.io/service-account-token   3      6h28m
rook-csi-rbd-provisioner                     kubernetes.io/rook                    2      6h21m
rook-csi-rbd-provisioner-sa-token-69t7j      kubernetes.io/service-account-token   3      6h28m

[root@vm0 ceph]# kubectl get secret -n rook-ceph rook-ceph-dashboard-password -o yaml
apiVersion: v1
data:
  password: WTdmUDJxU0RZMA==
kind: Secret
metadata:
  creationTimestamp: "2020-02-09T02:19:54Z"
  name: rook-ceph-dashboard-password
  namespace: rook-ceph
  ownerReferences:
  - apiVersion: ceph.rook.io/v1
    blockOwnerDeletion: true
    kind: CephCluster
    name: rook-ceph
    uid: 8f363b40-0671-497e-8d82-3afd76b56ea7
  resourceVersion: "4070"
  selfLink: /api/v1/namespaces/rook-ceph/secrets/rook-ceph-dashboard-password
  uid: f418571c-c6a9-4615-b4aa-aae28c2b897c
type: kubernetes.io/rook

[root@vm0 ceph]# kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o jsonpath="{['data']['password']}" | base64 --decode && echo
Y7fP2qSDY0
[root@vm0 ceph]#

f:id:FY0323:20200209174906p:plain
ログイン画面

f:id:FY0323:20200209174958p:plain
Dashboardトップ画面

f:id:FY0323:20200209175114p:plain
OSD設定画面

f:id:FY0323:20200209175136p:plain
OSD設定変更内容

f:id:FY0323:20200209175226p:plain
Configuration設定画面

f:id:FY0323:20200209175335p:plain
MGR module設定画面

f:id:FY0323:20200209175424p:plain
Pool設定画面

f:id:FY0323:20200209175527p:plain
User Management設定画面

※参考リンク:

Rook Doc - Ceph Dashboard

Advanced configuration via ceph.conf override ConfigMap

3つ目の方法は、ConfigMap経由でceph.confの内容を変更するものです。これは、上述の2つの方法がとれないときに実施することが想定されており、最も推奨されていない方法です。推奨されない理由としては、設定内容によってはCeph CLIDashboard経由では設定変更が難しく、将来的な設定変更やデバッグが難しくなる場合があるからです。

利用方法としては、CephClusterをデプロイしたときに同時に作成されるrook-config-override ConfigMapを編集することで利用します。

# ConfigMap確認
[root@vm0 ceph]# kubectl get cm -n rook-ceph
NAME                      DATA   AGE
local-device-vm1          1      7m22s
local-device-vm2          1      8m33s
local-device-vm3          1      7m20s
rook-ceph-csi-config      1      6m6s
rook-ceph-mon-endpoints   4      4m26s
rook-config-override      1      4m26s

[root@vm0 ceph]# kubectl describe cm -n rook-ceph rook-config-override
Name:         rook-config-override
Namespace:    rook-ceph
Labels:       <none>
Annotations:  <none>

Data
====
config:
----

Events:  <none>
[root@vm0 ceph]#

Rook-Cephコンフィグ設定変更例

Pool Configuration

Poolの設定変更をする際、Ceph CLIDashboard経由でも実行できますが、Kubernetesを利用しているので、基本的にはyamlファイルでリソースを定義し、作成・変更・削除を行うのが良いかと思います。ただ、一部設定変更はそれでは実行できないため、以降ではそれに該当するものを紹介します。

PG数/PGP数の変更

PG(Placement Group)及びPGP(Placement Group for Placement)の数は、yamlファイル上で定義することはできません。Rook v1.2以降では、PG数はデフォルトで8に設定されていますが、デフォルト値を変更するにはConfigMap経由で設定をする必要があります。

# ConfigMapの編集
[root@vm0 ceph]# kubectl edit cm rook-config-override -n rook-ceph
configmap/rook-config-override edited

[root@vm0 ceph]# kubectl get cm -n rook-ceph rook-config-override -o yaml
apiVersion: v1
data:
  config: |
    [global]
    osd pool default pg num = 128  ★
    osd pool default pgp num = 128  ★
kind: ConfigMap
metadata:
  creationTimestamp: "2020-02-09T02:17:43Z"
  name: rook-config-override
  namespace: rook-ceph
  ownerReferences:
  - apiVersion: ceph.rook.io/v1
    blockOwnerDeletion: true
    kind: CephCluster
    name: rook-ceph
    uid: 8f363b40-0671-497e-8d82-3afd76b56ea7
  resourceVersion: "47466"
  selfLink: /api/v1/namespaces/rook-ceph/configmaps/rook-config-override
  uid: b626c5c3-acdc-43bc-b09f-2e48f25b63c9
[root@vm0 ceph]#

上記のようにConfigMapを修正したのち、関連するPodを再起動し、Config内容を更新します。

# Podを削除(自動的に再起動する)
[root@vm0 ceph]# kubectl delete pods -n rook-ceph -l app=rook-ceph-mgr
pod "rook-ceph-mgr-a-54cb4b8f74-8g5z4" deleted

[root@vm0 ceph]# kubectl delete pods -n rook-ceph -l app=rook-ceph-mon
pod "rook-ceph-mon-a-f94b8546c-zpwzl" deleted
pod "rook-ceph-mon-b-85d794d955-b4fpf" deleted
pod "rook-ceph-mon-c-fcfb7755-ffj89" deleted

[root@vm0 ceph]# kubectl delete pods -n rook-ceph -l app=rook-ceph-osd
pod "rook-ceph-osd-0-654bcf85f-xfcfp" deleted
pod "rook-ceph-osd-1-c94f89bc5-tlc6g" deleted
pod "rook-ceph-osd-2-6dff9cfd6b-6cvnq" deleted
[root@vm0 ceph]# 

関連するPodを削除・再起動したのち、改めてCephBlockPoolリソースをデプロイすると、以下のようにデフォルト値が変更されたことがわかります。

[root@vm0 ceph]# kubectl apply -f pool.yaml 
cephblockpool.ceph.rook.io/replicapool created
[root@vm0 ceph]# kubectl get cephblockpool.ceph.rook.io/replicapool -n rook-ceph
NAME          AGE
replicapool   13s


[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-8n27c -n rook-ceph -- ceph -s
  cluster:
    id:     efefd629-64b6-4b82-8fb9-95c610dd67af
    health: HEALTH_OK

  services:
    mon: 3 daemons, quorum a,b,c (age 50s)
    mgr: a(active, since 92s)
    osd: 3 osds: 3 up (since 38s), 3 in (since 2h)

  data:
    pools:   1 pools, 128 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 294 GiB / 297 GiB avail
    pgs:     128 active+clean

[root@vm0 ceph]#

[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-8n27c -n rook-ceph -- ceph osd pool ls detail
pool 12 'replicapool' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 128 pgp_num 128 autoscale_mode warn last_change 92 flags hashpspool stripe_width 0 application rbd

[root@vm0 ceph]#

※参考リンク:

Ceph Doc - Placement Groups #A Preselection of PG_NUM

また、デフォルト値でなく、Poolごとに値を変更する場合は、Ceph CLIDashboard経由で変更します。

[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-8n27c -n rook-ceph -- ceph osd pool ls
replicapool
[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-8n27c -n rook-ceph -- ceph osd pool set replicapool pg_num 64
set pool 12 pg_num to 64

[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-8n27c -n rook-ceph -- ceph osd pool ls detail
pool 12 'replicapool' replicated size 3 min_size 2 crush_rule 1 object_hash rjenkins pg_num 128 pgp_num 122 pg_num_target 64 pgp_num_target 64 pg_num_pending 127 autoscale_mode warn last_change 96 lfor 0/96/96 flags hashpspool stripe_width 0 application rbd

[root@vm0 ceph]#

さらに、MGR moduleのひとつであるpg_autoscalerを利用すると、PG・PGP数を自動的に管理することができます。デフォルトではRook-Cephは有効化されていないので、CephClusterリソース上、あるいはCeph CLIDashboard経由で有効化します。

spec:
  mgr:
    modules:
    - name: pg_autoscaler
      enabled: true
# pg_autoscale有効化
[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-64hqj -n rook-ceph -- ceph mgr module enable pg_autoscaler

[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-64hqj -n rook-ceph -- ceph osd pool autoscale-status
POOL          SIZE TARGET SIZE RATE RAW CAPACITY  RATIO TARGET RATIO BIAS PG_NUM NEW PG_NUM AUTOSCALE
replicapool     0               3.0       297.0G 0.0000               1.0    128          4 warn


# Poolごとに個別に有効化
[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-64hqj -n rook-ceph -- ceph osd pool set replicapool pg_autoscale_mode on
set pool 13 pg_autoscale_mode to on

[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-64hqj -n rook-ceph -- ceph osd pool autoscale-status
POOL          SIZE TARGET SIZE RATE RAW CAPACITY  RATIO TARGET RATIO BIAS PG_NUM NEW PG_NUM AUTOSCALE
replicapool     0               3.0       297.0G 0.0000               1.0    128          4 on
[root@vm0 ceph]#

※参考リンク:

Ceph Doc - New in Nautilus: PG merging and autotuning

OSD CRUSH setting

CephのCRUSH Mapを設定することができるのは、CephCluster作成時にspec.placementの設定を行うことで、CRUSH MapにPodAffinity等の設定を反映することができますが、それ以外の設定はデフォルト値が反映されます。その他の値を変更するには、リソース作成後にCeph CLI等から操作をする必要があります。

現状のCRUSH Mapについて確認するには、ceph osd treeコマンド等で確認します。

[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-8n27c -n rook-ceph -- ceph osd tree
ID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF 
-1       0.99338 root default                          
-7       0.09669     host vm1                          
 2   hdd 0.09669         osd.2     up  1.00000 1.00000 
-3       0.79999     host vm2                          
 0   hdd 0.79999         osd.0     up  1.00000 1.00000 
-5       0.09669     host vm3                          
 1   hdd 0.09669         osd.1     up  1.00000 1.00000 

OSD Weight

OSD Weightの値は、各OSDにデータが分散すべき比率を示しています。デフォルトではすべてのOSDが同じ比率で設定されますが、一部ユースケースではそれが適さない場合もあります。

  • あるOSDやノードが低スペックであるため、そのOSD・ノードのWeightを下げることで、クラスター全体のボトルネックとなることを防ぐ
  • Rook v0.3.1以前のバージョンでbluestoreを利用する場合、適切なWeightが設定されていない場合がある

これらに該当する場合は、以下のようにceph osd crush reweightコマンドを実行することで、特定のOSDの設定を変更することができます。

[root@vm0 ceph]# kubectl exec -it rook-ceph-tools-9b7b66bbb-8n27c -n rook-ceph -- ceph osd crush reweight osd.0 .800
reweighted item id 0 name 'osd.0' to 0.8 in crush map
[root@vm0 ceph]# 

OSD primary affinity

Poolサイズを1以上にした場合、データはノード・OSD間で複製されます。複製する場合、まずPrimary OSDを選択し、Primary OSDからSecondary OSDに複製データを送ります。どのOSDをPrimary OSDにするかについてはPrimary Affinityの設定によって決まり、この値もceph osd primary-affinityコマンドによってOSDごとに設定することができます。

[root@vm0 ceph]# kubectl exec -it -n rook-ceph rook-ceph-tools-9b7b66bbb-64hqj -- ceph osd primary-affinity osd.0 0
set osd.0 primary-affinity to 0 (802)

[root@vm0 ceph]# kubectl exec -it -n rook-ceph rook-ceph-tools-9b7b66bbb-64hqj -- ceph osd tree
ID CLASS WEIGHT  TYPE NAME     STATUS REWEIGHT PRI-AFF
-1       0.99338 root default
-7       0.09669     host vm1
 2   hdd 0.09669         osd.2     up  1.00000 1.00000
-3       0.79999     host vm2
 0   hdd 0.79999         osd.0     up  1.00000       0
-5       0.09669     host vm3
 1   hdd 0.09669         osd.1     up  1.00000 1.00000
[root@vm0 ceph]#

OSD Dedicated Network

OSDの利用するネットワークは変更することができます。例えばCephClusterの定義の中でspec.network.hostNetworktrueにすることで、コンテナの利用するネットワーク(CNI)でなく、ホストのネットワークを利用することができます。

また、rook-config-overrideConfigMapにネットワークの設定を追加することもできます。

apiVersion: v1
data:
  config: |
    [global]
    public network =  10.0.7.0/24
    cluster network = 10.0.10.0/24
    public addr = ""
    cluster addr = ""

※参考リンク:

Rook Doc - Ceph Cluster CRD# Cluster Settings

Ceph Doc - Network Configuration Reference

Phantom OSD Removal

ディスク情報で表示されないOSD、いわゆる「Phantom OSD」を除く場合も、Ceph CLI等から削除を行います。

ceph osd treeコマンドを実行した際、以下のnode2.example.comのようにディスク情報が表示されないようなものがPhantom OSDにあたります。

ID  CLASS WEIGHT  TYPE NAME STATUS REWEIGHT PRI-AFF
 -1       57.38062 root default
-13        7.17258     host node1.example.com
  2   hdd  3.61859         osd.2                up  1.00000 1.00000
 -7              0     host node2.example.com   down    0    1.00000

この場合、node2.example.comを削除するため、以下のようにコマンドを実行します。

# クラスターから指定したOSDを取り出す
ceph osd out <ID>

# CRUSH MapからOSDを除く
ceph osd crush remove osd.<ID>

# ユーザーを削除
ceph auth del osd.<ID>

# OSDを削除
ceph osd rm <ID>

※参考リンク:

Ceph Doc - Adding/Removing OSDs

Change Failure Domain

CephBlockPoolなどのリソースではspec.failureDomainを設定することができます。設定した値(host osd rackなど)に応じて、複製したデータの保存場所を分散させることができます。

Failure Domainの値を後から変更するにはCeph CLIから設定する必要があります。CephBlockPoolyamlファイルを編集することで、デプロイ済みのspec.failureDomainの値を変更することも可能でしたが、それが反映されることが現状ではないように見えます。また公式ドキュメントでも「現状ではyamlファイルを直接編集することで変更することができない」と記載があります。

# 現状で紐づいているCRUSH Ruleを確認
$ ceph osd pool get replicapool crush_rule
crush_rule: replicapool

# Failure Domain: hostのCRUSH Ruleを作成
$ ceph osd crush rule create-replicated replicapool_host_rule default host

# 作成したCRUSH Ruleを紐づける
$ ceph osd pool set replicapool crush_rule replicapool_host_rule

# 確認
$ ceph osd pool get replicapool crush_rule
crush_rule: replicapool_host_rule

※参考リンク:

Ceph Doc - CRUSH Maps

その他

Separate Storage Group

Rook-Ceph利用時、デフォルトでは、利用するクラスター内のすべてのストレージがCRUSH Map内の一つのReplication Rule内で利用しようとします。これを変更し、複数のルールに分けてストレージを利用する場合、手動で変更することもできますが、今はCephBlockPooldeviceClassを変更することで対応するのが推奨されています。

公式ドキュメントにも記載はありますが、こちらの記事に詳細に記載されているので、おススメです。

Ceph User

Ceph Userを作成し、それを利用する手順も紹介されています。作成はCeph CLIから実行し、またそれを利用するためにSecretリソースの作成も必要になります。

# Ceph User作成
# Ceph Secret Keyが出力される
sh-4.2# ceph auth get-or-create-key client.user1 mon 'allow r' osd 'allow rw tag cephfs pool=replicapool' mds 'allow r, allow rw path=/bar'
AQCgbz9ekFANDBAApI8bVCbnKeKiRjlaWfWpdw==

# Ceph User確認
sh-4.2# ceph auth ls
installed auth entries:

osd.0
        key: AQBebD9eNVWlMxAA0h6HA0GpqC5+NRZr8P8Ykg==
        caps: [mgr] allow profile osd
        caps: [mon] allow profile osd
        caps: [osd] allow *
osd.1
        key: AQBfbD9eamlZBBAAG6c5lbfywtTqNHT9TCIDPQ==
        caps: [mgr] allow profile osd
        caps: [mon] allow profile osd
        caps: [osd] allow *
osd.2
        key: AQBgbD9el2UTEhAAUV0kMjvLsHm3XG47RuYqmA==
        caps: [mgr] allow profile osd
        caps: [mon] allow profile osd
        caps: [osd] allow *
client.admin
        key: AQDHaz9etj/gJRAAagN93rl98Gv8IgldiRKtFQ==
        caps: [mds] allow *
        caps: [mgr] allow *
        caps: [mon] allow *
        caps: [osd] allow *
client.bootstrap-mds
        key: AQAfbD9eqZNBIxAAFh53Z39RvxGPiG9KlhQRtg==
        caps: [mon] allow profile bootstrap-mds
client.bootstrap-mgr
        key: AQAfbD9eraNBIxAASHXrOrDbzM/KSWmXvtnvlA==
        caps: [mon] allow profile bootstrap-mgr
client.bootstrap-osd
        key: AQAfbD9eTbNBIxAArf4kDjk4pP0OEa3Vz1LwTA==
        caps: [mon] allow profile bootstrap-osd
client.bootstrap-rbd
        key: AQAfbD9e7cJBIxAAo8PwWX102isDsBI/HaO7YA==
        caps: [mon] allow profile bootstrap-rbd
client.bootstrap-rbd-mirror
        key: AQAfbD9exdFBIxAAmNsRuhBqocC4oBJU5OMrfw==
        caps: [mon] allow profile bootstrap-rbd-mirror
client.bootstrap-rgw
        key: AQAfbD9eZeFBIxAAIt+mkfuYWxQu9/rBYsLRdQ==
        caps: [mon] allow profile bootstrap-rgw
client.crash
        key: AQBBbD9e9Qr8LxAAIeZcyhwelaYIt5qAMoH3hQ==
        caps: [mgr] allow profile crash
        caps: [mon] allow profile crash
client.csi-cephfs-node
        key: AQBBbD9e63BmGBAAAr75LA1GVVBpcbaQM++BlQ==
        caps: [mds] allow rw
        caps: [mgr] allow rw
        caps: [mon] allow r
        caps: [osd] allow rw tag cephfs *=*
client.csi-cephfs-provisioner
        key: AQBBbD9ewzaBAhAAAieiJL0h+98A74cknmcyTA==
        caps: [mgr] allow rw
        caps: [mon] allow r
        caps: [osd] allow rw tag cephfs metadata=*
client.csi-rbd-node
        key: AQBAbD9eG75fKBAANT2j00ZDG15sSwjcxczvMw==
        caps: [mon] profile rbd
        caps: [osd] profile rbd
client.csi-rbd-provisioner
        key: AQBAbD9exQdrDhAARexI3bzxRyZSVCMAZWXx6w==
        caps: [mgr] allow rw
        caps: [mon] profile rbd
        caps: [osd] profile rbd
client.user1  ★
        key: AQCgbz9ekFANDBAApI8bVCbnKeKiRjlaWfWpdw==
        caps: [mds] allow r, allow rw path=/bar
        caps: [mon] allow r
        caps: [osd] allow rw tag cephfs pool=replicapool
mgr.a
        key: AQBDbD9eN1pGDBAA6F9pIm4kFcKGh+LgX5jC4Q==
        caps: [mds] allow *
        caps: [mon] allow *
        caps: [osd] allow *
sh-4.2#


# Secret作成
[root@vm0 ceph]# kubectl create secret generic ceph-user1-secret --from-literal=key=AQCgbz9ekFANDBAApI8bVCbnKeKiRjlaWfWpdw==
secret/ceph-user1-secret created

# Secret確認
[root@vm0 ceph]# kubectl get secret
NAME                  TYPE                                  DATA   AGE
ceph-user1-secret     Opaque                                1      21s
default-token-84g5x   kubernetes.io/service-account-token   3      30m
[root@vm0 ceph]#

参考ドキュメント

Rook Doc - Configuration

Rook Doc - Advanced Configuration