driver dell
This commit is contained in:
4
seagate/csidriver/kustomization.yaml
Normal file
4
seagate/csidriver/kustomization.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- csi-exos-x-csidriver.yaml
|
||||||
8
seagate/kustomization.yaml
Normal file
8
seagate/kustomization.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- csidriver/
|
||||||
|
- secrets/
|
||||||
|
- storageclass/
|
||||||
@@ -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:
|
||||||
|
|||||||
5
seagate/secrets/kustomization.yaml
Normal file
5
seagate/secrets/kustomization.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- secret-me5-site-a.yaml
|
||||||
|
- secret-me5-site-b.yaml
|
||||||
5
seagate/storageclass/kustomization.yaml
Normal file
5
seagate/storageclass/kustomization.yaml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- sc-me5-site-a.yaml
|
||||||
|
- sc-me5-site-b.yaml
|
||||||
0
seagate/storageclass/nano
Normal file
0
seagate/storageclass/nano
Normal 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"]
|
|
||||||
@@ -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"]
|
|
||||||
Reference in New Issue
Block a user