driver dell

This commit is contained in:
2025-08-30 13:35:31 +02:00
parent 55c23dda1d
commit 2eff32d251
11 changed files with 59 additions and 64 deletions

View File

@@ -0,0 +1,4 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- csi-exos-x-csidriver.yaml

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- csidriver/
- secrets/
- storageclass/

View File

@@ -175,20 +175,7 @@ kubectl label nodes <nodo-del-site-b> topology.kubernetes.io/zone=site-b --overw
## 3) Despliegue del Driver con Helm ## 3) Despliegue del Driver con Helm
### 3.1. Namespace y valores ### 3.1. Instalación
```bash
kubectl apply -f namespace.yaml # namespace: seagate
```
**values.yaml** (resumen de lo usado):
* Imagen del driver: `ghcr.io/seagate/seagate-exos-x-csi:v1.10.0`
* Sidecars: provisioner, attacher, resizer, snapshotter, registrar
* `controller.extraArgs: ["-v=2"]`
* `node.extraArgs: ["-v=2"]`
### 3.2. Instalación
```bash ```bash
helm upgrade --install exos-x-csi \ helm upgrade --install exos-x-csi \
@@ -199,36 +186,37 @@ helm upgrade --install exos-x-csi \
*(Si hay residuos RBAC, eliminarlos antes de reintentar)* *(Si hay residuos RBAC, eliminarlos antes de reintentar)*
---
## 4) Secret por cabina (A y B) ### 3.2. Namespace y valores
Crear un `Secret` por sitio con `apiAddress`, `username`, `password` en Base64.
```bash ```bash
kubectl apply -f secret-me5-site-a.yaml kubectl apply -k .
kubectl apply -f secret-me5-site-b.yaml
``` ```
Esto asegura que se creen en el orden correcto:
1. `namespace.yaml` → crea el namespace seagate.
2. `csidriver/` → instala el recurso CSIDriver (cluster-scoped).
3. `secrets/` → instala los secrets de conexión en el namespace seagate.
4. `storageclass/` → instala los dos StorageClass (sc-me5-site-a y sc-me5-site-b).
>Notas sobre recursos cluster-scoped:
En Kubernetes hay recursos que pertenecen a un namespace (ej: Pod, Secret, ConfigMap) y otros que son globales para todo el clúster (ej: CSIDriver, StorageClass, Node, Namespace). Los resources namespaced se pueden repetir en distintos namespaces. Los cluster-scoped solo existen una vez en todo el clúster y no tienen campo namespace.
En este repositorio:
* CSIDriver y StorageClass son cluster-scoped → no tienen namespace.
* Los Secret sí son namespaced → se instalan en seagate.
Por eso el kustomization.yaml está separado en subcarpetas:
* secrets/kustomization.yaml tiene namespace: seagate porque aplica solo a objetos namespaced.
* csidriver/ y storageclass/ no tienen namespace porque son cluster-scoped.
Esto evita errores y mantiene la instalación GitOps-friendly.
--- ---
## 5) StorageClass por zona ## 4) Prueba de extremo a extremo
Definir **dos** `StorageClass` con:
* Secret (A o B)
* `pool` y `volPrefix`
* `allowedTopologies` por zona
* `volumeBindingMode: WaitForFirstConsumer`
```bash
kubectl apply -f sc-me5-site-a.yaml
kubectl apply -f sc-me5-site-b.yaml
```
---
## 6) Prueba de extremo a extremo
PVC + Pod en site-a: PVC + Pod en site-a:
@@ -242,7 +230,7 @@ Verificar `iscsiadm`, `multipath`, eventos del PVC y logs del controller.
--- ---
## 7) Medición de tiempos de *NodePublish* ## 5) Medición de tiempos de *NodePublish*
```bash ```bash
kubectl -n seagate logs -l name=seagate-exos-x-csi-node-server \ kubectl -n seagate logs -l name=seagate-exos-x-csi-node-server \
@@ -252,7 +240,7 @@ kubectl -n seagate logs -l name=seagate-exos-x-csi-node-server \
--- ---
## 8) Solución de problemas ## 6) Solución de problemas
* `missing API credentials` → revisar claves CSI en el StorageClass. * `missing API credentials` → revisar claves CSI en el StorageClass.
* `DeadlineExceeded` → revisar multipath, etiquetas de zona y topología. * `DeadlineExceeded` → revisar multipath, etiquetas de zona y topología.
@@ -260,7 +248,7 @@ kubectl -n seagate logs -l name=seagate-exos-x-csi-node-server \
--- ---
## 9) Limpieza ## 7) Limpieza
```bash ```bash
kubectl delete -f pod-a.yaml kubectl delete -f pod-a.yaml
@@ -275,17 +263,7 @@ helm uninstall exos-x-csi -n seagate
--- ---
## 10) Resumen en repo (`seagate/`) ## 8) Anexos — Comandos útiles
* `namespace.yaml`
* `secret-me5-site-a.yaml`, `secret-me5-site-b.yaml`
* `values.yaml`
* `sc-me5-site-a.yaml`, `sc-me5-site-b.yaml`
* `pvc-pod-a.yaml`, `pod-a.yaml`
---
## 11) Anexos — Comandos útiles
* Reinicio multipath/kubelet * Reinicio multipath/kubelet
* Limpieza iSCSI/multipath: * Limpieza iSCSI/multipath:

View File

@@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- secret-me5-site-a.yaml
- secret-me5-site-b.yaml

View File

@@ -0,0 +1,5 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- sc-me5-site-a.yaml
- sc-me5-site-b.yaml

View File

View File

@@ -3,7 +3,8 @@ kind: StorageClass
metadata: metadata:
name: sc-me5-site-a name: sc-me5-site-a
provisioner: csi-exos-x.seagate.com provisioner: csi-exos-x.seagate.com
volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true allowVolumeExpansion: true
parameters: parameters:
csi.storage.k8s.io/provisioner-secret-name: seagate-me5-site-a csi.storage.k8s.io/provisioner-secret-name: seagate-me5-site-a
@@ -13,10 +14,7 @@ parameters:
csi.storage.k8s.io/controller-expand-secret-name: seagate-me5-site-a csi.storage.k8s.io/controller-expand-secret-name: seagate-me5-site-a
csi.storage.k8s.io/controller-expand-secret-namespace: seagate csi.storage.k8s.io/controller-expand-secret-namespace: seagate
csi.storage.k8s.io/fstype: ext4 csi.storage.k8s.io/fstype: ext4
pool: dg01 # pool de la ME5 del Site A pool: pool
volPrefix: sza # prefijo corto para identificar Site A volPrefix: sza
storageProtocol: iscsi storageProtocol: iscsi
allowedTopologies:
- matchLabelExpressions:
- key: topology.kubernetes.io/zone
values: ["site-a"]

View File

@@ -3,7 +3,8 @@ kind: StorageClass
metadata: metadata:
name: sc-me5-site-b name: sc-me5-site-b
provisioner: csi-exos-x.seagate.com provisioner: csi-exos-x.seagate.com
volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true allowVolumeExpansion: true
parameters: parameters:
csi.storage.k8s.io/provisioner-secret-name: seagate-me5-site-b csi.storage.k8s.io/provisioner-secret-name: seagate-me5-site-b
@@ -13,10 +14,6 @@ parameters:
csi.storage.k8s.io/controller-expand-secret-name: seagate-me5-site-b csi.storage.k8s.io/controller-expand-secret-name: seagate-me5-site-b
csi.storage.k8s.io/controller-expand-secret-namespace: seagate csi.storage.k8s.io/controller-expand-secret-namespace: seagate
csi.storage.k8s.io/fstype: ext4 csi.storage.k8s.io/fstype: ext4
pool: dg02 pool: pool
volPrefix: szb volPrefix: szb
storageProtocol: iscsi storageProtocol: iscsi
allowedTopologies:
- matchLabelExpressions:
- key: topology.kubernetes.io/zone
values: ["site-b"]