STEP 1 — Préparer Ceph (sur INFRA-CEPH-01) 1.1 Créer un pool RBD dédié K8s
Créer le pool
ceph osd pool create kubernetes 64 64
Initialiser pour RBD
rbd pool init kubernetes
Vérifier
ceph osd pool ls
1.2 Créer un utilisateur Ceph pour K8s
ceph auth get-or-create client.kubernetes \ mon 'profile rbd' \ osd 'profile rbd pool=kubernetes' \ mgr 'profile rbd pool=kubernetes'
1.3 Récupérer les infos nécessaires
Clé du user kubernetes (à copier)
ceph auth get-key client.kubernetes
Clé admin (pour les secrets K8s)
ceph auth get-key client.admin
Récupérer le cluster ID (fsid)
ceph fsid
→ d08e3e42-115e-11f0-a5ad-005056b31542 (déjà connu)
IPs des monitors
ceph mon dump | grep "^[0-9]"
Format attendu : 192.168.1.231:6789, 192.168.1.232:6789, 192.168.1.233:6789
STEP 2 — Installer le driver Ceph-CSI sur K8s
2.1 Ajouter le repo Helm helm repo add ceph-csi https://ceph.github.io/csi-charts
helm repo update
2.2 Créer le namespace kubectl create namespace ceph-csi-rbd
2.3 Créer le fichier values-ceph-csi.yaml
values-ceph-csi.yaml
values-ceph-csi.yaml
csiConfig: - clusterID: "d08e3e42-115e-11f0-a5ad-005056b31542" monitors: - "192.168.1.231:6789" - "192.168.1.232:6789" - "192.168.1.233:6789"
provisioner: replicaCount: 2
storageClass: create: false
secret: create: false
2.4 Installer via Helm
helm install ceph-csi-rbd ceph-csi/ceph-csi-rbd \ --namespace ceph-csi-rbd \ --values values-ceph-csi.yaml
Vérifier les pods
kubectl get pods -n ceph-csi-rbd
STEP 3 — Créer les Secrets K8s
ceph-secret.yaml
apiVersion: v1 kind: Secret metadata: name: csi-rbd-secret-prd namespace: ceph-csi-rbd stringData: userID: prd-k8S userKey: AQBc8a5pqH70DhAAysOtN/D1WV0bF48uhl2nNw==
kubectl apply -f ceph-secret.yaml
Vérifier
kubectl get secret -n ceph-csi-rbd
STEP 4 — Créer la StorageClass
storageclass-ceph-rbd.yaml
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ceph-rbd-prd annotations: storageclass.kubernetes.io/is-default-class: "false" provisioner: rbd.csi.ceph.com parameters: clusterID: "d08e3e42-115e-11f0-a5ad-005056b31542" pool: prd-k8S imageFormat: "2" imageFeatures: layering csi.storage.k8s.io/provisioner-secret-name: csi-rbd-secret-prd csi.storage.k8s.io/provisioner-secret-namespace: ceph-csi-rbd csi.storage.k8s.io/controller-expand-secret-name: csi-rbd-secret-prd csi.storage.k8s.io/controller-expand-secret-namespace: ceph-csi-rbd csi.storage.k8s.io/node-stage-secret-name: csi-rbd-secret-prd csi.storage.k8s.io/node-stage-secret-namespace: ceph-csi-rbd reclaimPolicy: Delete allowVolumeExpansion: true mountOptions: - discard
kubectl apply -f storageclass-ceph-rbd.yaml
Vérifier
kubectl get storageclass