# Stockage Persistant

## Introduction <a href="#kubernetespersistentstorage-introduction" id="kubernetespersistentstorage-introduction"></a>

**cegedim.cloud** propose désormais une plateforme de stockage Ceph multi-locataires en tant que fournisseur de CSI avec les spécifications suivantes :

* Les données sont répliquées 4 fois et réparties uniformément (à l'aide de Ceph Crush Map) sur 2 centres de données afin de garantir que, dans les scénarios de catastrophe, 2 répliques de données sont toujours disponibles.
* Chaque cluster Kubernetes, en tant que client Ceph, dispose de son propre pool de données sur le serveur Ceph et consomme des services avec ses propres identifiants.
* Seul le RBD Ceph CSI est fourni pour le moment.

De plus amples informations sur le Ceph CSI sont disponibles via le lien ci-dessous [:](https://docs.ceph.com/)

{% embed url="<https://docs.ceph.com/>" %}

### Versions <a href="#kubernetespersistentstorage-versions" id="kubernetespersistentstorage-versions"></a>

<table><thead><tr><th width="177">Composant</th><th>Version</th></tr></thead><tbody><tr><td>Ceph Cluster</td><td>19.2.2</td></tr><tr><td>CSI Ceph</td><td>3.14</td></tr></tbody></table>

{% hint style="info" %}
**cegedim.cloud** effectue annuellement des RFC (Request for Change) pour maintenir à jour le serveur Ceph et le client (CSI) avec les dernières versions stables.
{% endhint %}

### Classe de stockage <a href="#kubernetespersistentstorage-storageclass" id="kubernetespersistentstorage-storageclass"></a>

<table><thead><tr><th width="176">Nom</th><th>Description</th></tr></thead><tbody><tr><td>cgdm-rwo</td><td>Utiliser <strong>CSI Ceph rbd</strong> pour provisioner des volumes persistants <code>ReadWriteOnce</code></td></tr></tbody></table>

### Haute disponibilité <a href="#kubernetespersistentstorage-highavailability" id="kubernetespersistentstorage-highavailability"></a>

<table><thead><tr><th width="380.3333333333333"></th><th width="143">EB</th><th>ET</th></tr></thead><tbody><tr><td>Réplication</td><td>x4</td><td>x4</td></tr><tr><td>Tolérance de panne : Une AZ indisponible</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Tolérance de panne : Un DC indisponible</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr></tbody></table>

### Caractéristiques du CSI <a href="#kubernetespersistentstorage-caracteristiquesdelisc" id="kubernetespersistentstorage-caracteristiquesdelisc"></a>

<table><thead><tr><th width="395.3333333333333"></th><th>CSI Ceph-rbd</th></tr></thead><tbody><tr><td>Approvisionnement de nouveaux PV</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Remonter le PV existant</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Compatible avec toutes les applications K8S</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Montage multiple (RWX)</td><td><span data-gb-custom-inline data-tag="emoji" data-code="274c">❌</span></td></tr><tr><td>Redimensionnable</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Aperçu</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Tolérance de panne : perte de 1 AZ</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Tolérance de panne : perte de 1 DC</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Compatible avec K8S 1.22+</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr><tr><td>Compatible avec K8S 1.22-</td><td><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></td></tr></tbody></table>

## Activation du stockage Ceph <a href="#kubernetespersistentstorage-activationdustokceph" id="kubernetespersistentstorage-activationdustokceph"></a>

{% hint style="warning" %}
Le stockage persistant CSI Ceph **n'est pas activé par défaut** sur les clusters Kubernetes. Pour activer cette fonctionnalité, veuillez soumettre un ticket de requête ITCare en spécifiant le nom du cluster et vos besoins en stockage.
{% endhint %}

## Recommandations d'utilisation <a href="#kubernetespersistentstorage-recommandationsdutilisation" id="kubernetespersistentstorage-recommandationsdutilisation"></a>

{% hint style="info" %}
**cegedim.cloud** recommande une réflexion approfondie lors de la planification de l'utilisation de CSI Ceph pour vos besoins de stockage :

* **Charges de travail de bases de données** : Pour les exigences de bases de données en production, nous recommandons d'utiliser les offres PaaS de bases de données gérées officielles de **cegedim.cloud** (PostgreSQL, MariaDB, Redis, etc.) au lieu de CSI Ceph. Ces services gérés sont spécifiquement optimisés, surveillés et pris en charge pour les charges de travail de bases de données.
* **Applications critiques** : Pour les données d'applications critiques, des tests approfondis dans des environnements de pré-production sont essentiels avant le déploiement en production avec le stockage CSI Ceph.
* **Meilleurs cas d'usage** : CSI Ceph est bien adapté pour :
  * Stockage de l'état des applications
  * Données de configuration et de cache
  * Stockage de fichiers pour les charges de travail non critiques
  * Environnements de développement et de test

Tester votre charge de travail spécifique avec CSI Ceph dans un environnement de non-production vous aidera à vous assurer qu'elle répond à vos exigences de performance et de fiabilité avant le déploiement en production.
{% endhint %}

## Snapshot et restauration de PVC dans Kubernetes <a href="#kubernetespersistentstorage-snapshotetrestaurationdepvcdanskubernetes" id="kubernetespersistentstorage-snapshotetrestaurationdepvcdanskubernetes"></a>

**cegedim.cloud** utilise External Snapshotter pour prendre des clichés et restaurer le PVC de vos clusters Kubernetes.

Toutes les informations relatives à cette application sont disponibles à l'adresse suivante :

{% embed url="<https://github.com/kubernetes-csi/external-snapshotter>" %}

### Comment savoir si j'ai un snapshotclass actif sur mon cluster ? <a href="#kubernetespersistentstorage-commentsavoirsijaiunsnapshotclassactifsurmoncluster" id="kubernetespersistentstorage-commentsavoirsijaiunsnapshotclassactifsurmoncluster"></a>

Il est recommandé de nommer la classe d'instantanés d'après la classe de stockage. Il suffit d'exécuter la commande ci-dessous pour vérifier :

{% code lineNumbers="true" fullWidth="true" %}

```bash
$ kubectl get sc
NAME                 PROVISIONER           RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
cgdm-rwo (default)   rbd.csi.ceph.com      Delete          Immediate           true                   57d
$ kubectl get  volumesnapshotclass
NAME       DRIVER                DELETIONPOLICY   AGE
cgdm-rwo   rbd.csi.ceph.com      Delete           36d
```

{% endcode %}

## Comment lister les CSI disponibles dans mon cluster ? <a href="#kubernetespersistentstorage-commentlisterlescsidisponiblesdansmoncluster" id="kubernetespersistentstorage-commentlisterlescsidisponiblesdansmoncluster"></a>

Pour répertorier tous les CSI disponibles dans un cluster Kubernetes, procédez comme suit :

{% code lineNumbers="true" fullWidth="true" %}

```bash
kubectl get sc
NAME               PROVISIONER      RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
cgdm-rwo (default) rbd.csi.ceph.com Delete        Immediate         true                 42d
```

{% endcode %}

Voici une correspondance entre la classe de stockage et le CSI :

<table><thead><tr><th width="234">Classes de stockage</th><th>CSI</th></tr></thead><tbody><tr><td>cgdm-rwo</td><td>Ceph RBD</td></tr></tbody></table>
