diff --git a/cephrook.md b/cephrook.md index 9885e2b..78cdf8a 100644 --- a/cephrook.md +++ b/cephrook.md @@ -1,6 +1,6 @@ # Despliegue de Rook-Ceph en clúster K3s (SUSE) con discos locales (Bluestore) -Esta guía describe cómo desplegar un clúster Rook-Ceph sobre K3s en servidores SUSE con **discos locales** estándar (sin iSCSI). Se adapta a la arquitectura de 4 servidores: `srvfkvm1`, `srvfkvm2`, `srvfkvm3`, `srvfkvm4`, cada uno con 6 discos de \~900GB. +Esta guía describe cómo desplegar un clúster Rook-Ceph sobre K3s en servidores SUSE con **discos locales** estándar (sin iSCSI). Se adapta a la arquitectura de 4 servidores: `srvfkvm1`, `srvfkvm2`, `srvfkvm3`, `srvfkvm4`, cada uno con 6 discos de \~900GB y una red de almacenamiento dedicada en la VLAN 30 (`192.168.3.0/24`). --- @@ -10,6 +10,7 @@ Esta guía describe cómo desplegar un clúster Rook-Ceph sobre K3s en servidore * Cada nodo con 6 discos locales dedicados para Ceph (`/dev/sdj` a `/dev/sdo` en cada servidor) * K3s y `kubectl` funcionando y configurado * Acceso completo a Internet desde todos los nodos +* Cada nodo debe tener una IP fija en `192.168.3.0/24` (VLAN 30) usada exclusivamente para almacenamiento --- @@ -25,7 +26,26 @@ lsblk | grep sd[j-o] --- -## 3. Crear namespace y CRDs de Rook-Ceph +## 3. Configurar el firewall para red de almacenamiento (VLAN 30) + +Asumiendo que tu interfaz de red para la VLAN 30 se llama `vlan30`, añádela a la zona `trusted` para permitir el tráfico de Ceph: + +```bash +sudo firewall-cmd --zone=trusted --add-interface=vlan30 --permanent +sudo firewall-cmd --reload +``` + +Puedes verificar: + +```bash +sudo firewall-cmd --list-all --zone=trusted +``` + +Deberías ver `interfaces: vlan30` listada. + +--- + +## 4. Crear namespace y CRDs de Rook-Ceph ```bash kubectl create namespace rook-ceph @@ -41,7 +61,7 @@ kubectl apply -f common.yaml --- -## 4. Desplegar el operador Rook-Ceph +## 5. Desplegar el operador Rook-Ceph ```bash kubectl apply -f operator.yaml @@ -49,7 +69,7 @@ kubectl apply -f operator.yaml --- -## 5. Crear el clúster Ceph con discos locales +## 6. Crear el clúster Ceph con discos locales Crea un archivo `ceph-cluster.yaml` con el siguiente contenido (ajusta nombres/discos según corresponda): @@ -63,6 +83,10 @@ spec: cephVersion: image: quay.io/ceph/ceph:v18 dataDirHostPath: /var/lib/rook + network: + connections: + clusterNetwork: "192.168.3.0/24" + publicNetwork: "192.168.3.0/24" mon: count: 3 allowMultiplePerNode: false @@ -116,7 +140,7 @@ kubectl apply -f ceph-cluster.yaml --- -## 6. Verifica el despliegue de Ceph +## 7. Verifica el despliegue de Ceph ```bash kubectl -n rook-ceph get pods @@ -133,7 +157,7 @@ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status --- -## 7. Crear CephBlockPool y StorageClass (replica:2) +## 8. Crear CephBlockPool y StorageClass (replica:4) **ceph-blockpool.yaml:** @@ -141,12 +165,12 @@ kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- ceph status apiVersion: ceph.rook.io/v1 kind: CephBlockPool metadata: - name: replicado-2x + name: replicado-4x namespace: rook-ceph spec: failureDomain: host replicated: - size: 2 + size: 4 ``` **ceph-storageclass.yaml:** @@ -155,11 +179,11 @@ spec: apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: - name: ceph-rbd-replica2 + name: ceph-rbd-replica4 provisioner: rook-ceph.rbd.csi.ceph.com parameters: clusterID: rook-ceph - pool: replicado-2x + pool: replicado-4x imageFormat: "2" imageFeatures: layering csi.storage.k8s.io/fstype: ext4 @@ -178,7 +202,34 @@ kubectl apply -f ceph-storageclass.yaml --- -## 8. Accede al Ceph Dashboard +## 9. Exponer el dashboard de Ceph + +Crea el siguiente servicio `dashboard-service.yaml` para exponer el Dashboard vía `NodePort`: + +```yaml +apiVersion: v1 +kind: Service +metadata: + name: rook-ceph-mgr-dashboard + namespace: rook-ceph +spec: + type: NodePort + ports: + - port: 8443 + targetPort: 8443 + protocol: TCP + name: https-dashboard + selector: + app: rook-ceph-mgr +``` + +Aplica el manifiesto: + +```bash +kubectl apply -f dashboard-service.yaml +``` + +> Cuando esté disponible una capa de ingress con TLS (por ejemplo cert-manager + ingress-nginx), se recomienda eliminar este `NodePort` y crear un `Ingress` con dominio y certificado TLS. Obtén el puerto del dashboard: @@ -203,4 +254,3 @@ Contraseña: (la anterior) --- -# Clúster Rook-Ceph listo para producción con discos locales y réplica cruzada en 4 nodos. diff --git a/cephrook.pdf b/cephrook.pdf index df63dd3..fba107a 100644 Binary files a/cephrook.pdf and b/cephrook.pdf differ