Enterprise File Storage - Primi passi con Trident CSI

Database di conoscenze

Enterprise File Storage - Primi passi con Trident CSI


Icons/System/eye-open Created with Sketch. 18 viste 18.02.2026 Cloud / Enterprise File Storage
Informazioni sulla traduzione

Questa traduzione è stata generata automaticamente dal nostro partner SYSTRAN. I contenuti potrebbero presentare imprecisioni, ad esempio la nomenclatura dei pulsanti o alcuni dettagli tecnici. In caso di dubbi consigliamo di fare riferimento alla versione inglese o francese della guida. Per aiutarci a migliorare questa traduzione, utilizza il pulsante "Contribuisci" di questa pagina.

Obiettivo

Questa guida ha l'obiettivo di fornire un riferimento chiaro e passo dopo passo per distribuire e configurare NetApp Trident CSI su OVHcloud Managed Kubernetes (MKS), permettendo un accesso fluido a Enterprise File Storage tramite il vRack. Questa guida raccoglie le best practice, i prerequisiti, la configurazione IAM, l'implementazione del backend, nonché le funzionalità avanzate come la gestione degli snapshot e dei volumi.

Prerequisiti

Prima di iniziare, assicurati che il tuo ambiente rispetti i seguenti criteri:

vRack

  • Progetto Public Cloud e vRack Services appartengono allo stesso vRack

Regione

  • vRack Services e EFS si trovano nella stessa regione

Rete

  • Lo stesso ID VLAN è utilizzato per la sottorete di vRack Services e la rete privata MKS
  • Lo stesso CIDR è utilizzato per la sottorete di vRack Services e la sottorete della rete privata MKS
  • Gli IP del pool di allocazione della rete privata MKS non si sovrappongono con il range di servizio di vRack Services

Connettività

  • Un gateway è necessario affinché i nodi MKS possano raggiungere l'API OVHcloud

Schema dei prerequisiti Trident

Nota: Le regioni EFS e MKS possono essere diverse; tieni presente che la latenza tra regioni diverse può influire sulle prestazioni dei tuoi carichi di lavoro di storage.

Si raccomanda fortemente di mantenere le risorse di storage e di calcolo il più vicino possibile.

Procedura

Configurazione IAM (Identity and Access Management)

Trident necessita di un account di servizio dedicato per interagire con l'API OVHcloud e gestire i volumi Enterprise File Storage. Segui le fasi seguenti per configurare correttamente l'IAM.

1. Creazione dell'account di servizio (OAuth2)

Crea un client OAuth2 con l'API o la CLI OVHcloud utilizzando il flusso CLIENT_CREDENTIALS.

Utilizza la seguente chiamata API:

Con il seguente corpo della richiesta:

{
  "description": "Service Account for Trident CSI",
  "flow": "CLIENT_CREDENTIALS",
  "name": "TRIDENT-CSI"
}

L'API risponderà con:

{
  "clientId": "EU.xxxxxxxxxxxxxxxx",
  "clientSecret": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
}

L'account di servizio può essere creato con la CLI OVHcloud e il seguente comando (completalo con i tuoi valori):

ovhcloud account api oauth2 client create --name "TRIDENT-CSI" --description "Service Account for Trident CSI" --flow "CLIENT_CREDENTIALS"

La CLI risponderà con i valori client ID e client secret:

✅ OAuth2 client created successfully (client ID: EU.xxxxxxxxxxxxxxxx, client secret: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)

Nota: Conserva con cura il clientId e il clientSecret. Saranno necessari durante la configurazione del backend Trident.

2. Creazione della policy IAM

Configura una policy IAM che deve contenere i seguenti elementi: l'account di servizio da autorizzare, il o i servizi Enterprise File Storage da includere, nonché le azioni da concedere, riassunte nella tabella seguente:

AzioneDescrizione
storageNetApp:apiovh:getElenca i servizi
storageNetApp:apiovh:serviceInfos/getRecupera le informazioni su un servizio
storageNetApp:apiovh:share/accessPath/getOttieni il punto di montaggio di un share
storageNetApp:apiovh:share/acl/createCrea un ACL
storageNetApp:apiovh:share/acl/deleteElimina un ACL
storageNetApp:apiovh:share/acl/getElenca gli ACL
storageNetApp:apiovh:share/createCrea un share
storageNetApp:apiovh:share/deleteElimina un share
storageNetApp:apiovh:share/editModifica un share
storageNetApp:apiovh:share/extendEstendi un share
storageNetApp:apiovh:share/getElenca gli share
storageNetApp:apiovh:share/revertToSnapshotRipristina uno snapshot
storageNetApp:apiovh:share/snapshot/createCrea uno snapshot
storageNetApp:apiovh:share/snapshot/deleteElimina uno snapshot
storageNetApp:apiovh:share/snapshot/editModifica uno snapshot
storageNetApp:apiovh:share/snapshot/getElenca gli snapshot

Utilizza la seguente chiamata API per creare la policy IAM:

Con il seguente corpo della richiesta:

Nel campo identities, sostituisci xx11111-ovh con il tuo identificativo account OVHcloud (NIC handle) e EU.xxxxxxxxxxxxxxxx con il clientId ottenuto al passo 1.

{
  "description": "Trident CSI",
  "identities": [
    "urn:v1:eu:identity:credential:xx11111-ovh/oauth2-EU.xxxxxxxxxxxxxxxx"
  ],
  "name": "trident-policy",
  "permissions": {
    "allow": [
      {
        "action": "storageNetApp:apiovh:get"
      },
      {
        "action": "storageNetApp:apiovh:serviceInfos/get"
      },
      {
        "action": "storageNetApp:apiovh:share/accessPath/get"
      },
      {
        "action": "storageNetApp:apiovh:share/acl/create"
      },
      {
        "action": "storageNetApp:apiovh:share/acl/delete"
      },
      {
        "action": "storageNetApp:apiovh:share/acl/get"
      },
      {
        "action": "storageNetApp:apiovh:share/create"
      },
      {
        "action": "storageNetApp:apiovh:share/delete"
      },
      {
        "action": "storageNetApp:apiovh:share/edit"
      },
      {
        "action": "storageNetApp:apiovh:share/extend"
      },
      {
        "action": "storageNetApp:apiovh:share/get"
      },
      {
        "action": "storageNetApp:apiovh:share/revertToSnapshot"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/create"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/delete"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/edit"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/get"
      }
    ]
  },
  "resources": [
    {
      "urn": "urn:v1:eu:resource:storageNetApp:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
  ]
}

L'API risponderà con i dettagli della policy creata:

{
  "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "name": "trident-policy",
  "description": "Trident CSI",
  ...
}

La policy IAM può essere creata con la CLI OVHcloud e il seguente comando (completalo con i tuoi valori):

Nel campo identities, sostituisci xx11111-ovh con il tuo identificativo account OVHcloud (NIC handle) e EU.xxxxxxxxxxxxxxxx con il clientId ottenuto al passo 1.

cat <<EOF | ovhcloud iam policy create --from-file -
{
  "description": "Trident CSI",
  "identities": [
    "urn:v1:eu:identity:credential:xx11111-ovh/oauth2-EU.xxxxxxxxxxxxxxxx"
  ],
  "name": "trident-policy",
  "permissions": {
    "allow": [
      {
        "action": "storageNetApp:apiovh:get"
      },
      {
        "action": "storageNetApp:apiovh:serviceInfos/get"
      },
      {
        "action": "storageNetApp:apiovh:share/accessPath/get"
      },
      {
        "action": "storageNetApp:apiovh:share/acl/create"
      },
      {
        "action": "storageNetApp:apiovh:share/acl/delete"
      },
      {
        "action": "storageNetApp:apiovh:share/acl/get"
      },
      {
        "action": "storageNetApp:apiovh:share/create"
      },
      {
        "action": "storageNetApp:apiovh:share/delete"
      },
      {
        "action": "storageNetApp:apiovh:share/edit"
      },
      {
        "action": "storageNetApp:apiovh:share/extend"
      },
      {
        "action": "storageNetApp:apiovh:share/get"
      },
      {
        "action": "storageNetApp:apiovh:share/revertToSnapshot"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/create"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/delete"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/edit"
      },
      {
        "action": "storageNetApp:apiovh:share/snapshot/get"
      }
    ]
  },
  "resources": [
    {
      "urn": "urn:v1:eu:resource:storageNetApp:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
    }
  ]
}
EOF

La CLI risponderà con il seguente messaggio:

✅ IAM policy xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx created successfully

Installazione di Trident CSI

L'installazione utilizza Helm con immagini personalizzate ospitate su Docker Hub. Queste immagini includono un driver aggiuntivo fornito da OVHcloud che permette l'utilizzo di storage persistente tramite l'offerta OVHcloud Enterprise File Storage.

Crea un file trident-values.yaml per fare riferimento alle immagini ospitate da OVHcloud:

cat <<EOF > trident-values.yaml
tridentSilenceAutosupport: true
operatorImage: "ovhcom/trident-operator:25.02.1-linux-amd64"
tridentImage: "ovhcom/trident:25.02.1-linux-amd64"
EOF

Avvia l'installazione:

helm repo add netapp-trident https://netapp.github.io/trident-helm-chart
helm install trident-operator netapp-trident/trident-operator \
  --version 100.2502.1 \
  --create-namespace \
  --namespace trident \
  -f trident-values.yaml

L'output dovrebbe mostrare che il chart Helm è stato distribuito:

NAME: trident-operator
LAST DEPLOYED: Tue Feb 17 13:51:15 2026
NAMESPACE: trident
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing trident-operator, which will deploy and manage NetApp's Trident CSI
storage provisioner for Kubernetes.

Your release is named 'trident-operator' and is installed into the 'trident' namespace.
Please note that there must be only one instance of Trident (and trident-operator) in a Kubernetes cluster.

To configure Trident to manage storage resources, you will need a copy of tridentctl, which is
available in pre-packaged Trident releases.  You may find all Trident releases and source code
online at https://github.com/NetApp/trident.

To learn more about the release, try:

  $ helm status trident-operator
  $ helm get all trident-operator

Una volta completata l'installazione, verifica che tutti i pod Trident siano in stato Running nel namespace trident prima di procedere:

kubectl get pods -n trident

L'output dovrebbe mostrare tutti i pod in stato Running:

NAME                                  READY   STATUS    RESTARTS        AGE
trident-controller-75869d7499-ffmkt   6/6     Running   0               4m25s
trident-node-linux-4gv6w              2/2     Running   1 (4m24s ago)   4m25s
trident-node-linux-g942s              2/2     Running   1 (4m24s ago)   4m24s
trident-node-linux-tfjc2              2/2     Running   0               4m25s
trident-operator-787b98cb7c-sgtdh     1/1     Running   0               4m26s

Creazione del backend Trident

Il backend Trident permette di collegare NetApp Trident al servizio OVHcloud Enterprise File Storage utilizzando le credenziali IAM create in precedenza.

1. Creazione di un secret

Crea un secret contenente le informazioni di connessione che consentono a Trident di accedere all'API OVHcloud.

Sostituisci i valori clientID e clientSecret con le credenziali ottenute al passo 1.

cat <<EOF | kubectl create -n trident -f -
apiVersion: v1
kind: Secret
metadata:
  name: tbc-ovh-efs-secret
type: Opaque
stringData:
  clientID: "EU.xxxxxxxxxxxxxxxx"         # Sostituisci con il tuo clientId
  clientSecret: "aaaaaaaaaaaaaaaaaaaaaa"  # Sostituisci con il tuo clientSecret
EOF

L'output confermerà la creazione del secret:

secret/tbc-ovh-efs-secret created

2. Creazione del backend Trident

Crea il tuo backend con il seguente comando:

Il driver di storage ovh-efs deve essere obbligatoriamente utilizzato. Sostituisci exportRule, location e gli altri parametri con i valori corrispondenti al tuo ambiente.

cat <<EOF | kubectl create -n trident -f -
apiVersion: trident.netapp.io/v1
kind: TridentBackendConfig
metadata:
  name: tbc-ovh-efs-gra
spec:
  version: 1
  backendName: backend-ovh-efs
  defaults:
    exportRule: 10.0.32.0/24    # CIDR della tua rete per le ACL NFS
  storageDriverName: ovh-efs
  clientLocation: ovh-eu
  location: eu-west-gra         # Localizzazione del tuo servizio EFS
  serviceLevel: premium
  nfsMountOptions: rw,hard,rsize=65536,wsize=65536,nfsvers=3,tcp
  credentials:
    name: tbc-ovh-efs-secret
EOF

L'output confermerà la creazione del backend:

tridentbackendconfig.trident.netapp.io/tbc-ovh-efs-gra created

Verifica che il backend sia stato creato correttamente con il seguente comando:

kubectl get tridentbackendconfig -n trident

L'output dovrebbe mostrare il backend in stato Bound:

NAME                  BACKEND NAME      BACKEND UUID                           PHASE   STATUS
tbc-ovh-efs-gra       backend-ovh-efs   xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   Bound   Success

StorageClass e utilizzo dei volumi

Questa sezione spiega come rendere disponibile Enterprise File Storage ai carichi di lavoro Kubernetes tramite Trident.

1. StorageClass

Definisci una StorageClass per abilitare il provisioning dinamico tramite il driver Trident CSI:

cat <<EOF | kubectl create -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ovh-efs-gra-premium
provisioner: csi.trident.netapp.io
parameters:
  backendType: "ovh-efs"
  fsType: "nfs"
allowVolumeExpansion: true
EOF

L'output confermerà la creazione della StorageClass:

storageclass.storage.k8s.io/ovh-efs-gra-premium created

Questa StorageClass permette di effettuare il provisioning dei volumi su richiesta e di espanderli dinamicamente.

2. Creazione di un volume (PVC)

Crea un PersistentVolumeClaim con accesso ReadWriteMany (RWX):

cat <<EOF | kubectl create -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: premium-pvc
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 100Gi
  storageClassName: ovh-efs-gra-premium
EOF

L'output confermerà la creazione del PVC:

persistentvolumeclaim/premium-pvc created

Verifica che il PVC sia stato creato con il seguente comando:

kubectl get pvc

L'output dovrebbe mostrare il PVC in stato Bound:

NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS          VOLUMEATTRIBUTESCLASS   AGE
premium-pvc  Bound    pvc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   100Gi      RWX            ovh-efs-gra-premium   <unset>                 5m34s

Una volta che un Pod utilizza questo PVC, il volume sarà automaticamente montato tramite il protocollo NFS.

Funzionalità avanzate

Gestione degli snapshot

NetApp Trident permette di creare snapshot dei volumi su richiesta su Enterprise File Storage.

  • Definire una VolumeSnapshotClass per gestire il ciclo di vita degli snapshot:
cat <<EOF | kubectl create -f -
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: csi-snapclass
driver: csi.trident.netapp.io
deletionPolicy: Delete
EOF

L'output confermerà la creazione della VolumeSnapshotClass:

volumesnapshotclass.snapshot.storage.k8s.io/csi-snapclass created
  • Creare un VolumeSnapshot nello stesso namespace del PersistentVolumeClaim sorgente:
cat <<EOF | kubectl create -f -
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: my-snapshot
spec:
  volumeSnapshotClassName: csi-snapclass
  source:
    persistentVolumeClaimName: premium-pvc
EOF

L'output confermerà la creazione del VolumeSnapshot:

volumesnapshot.snapshot.storage.k8s.io/my-snapshot created

Verifica che il VolumeSnapshot sia stato creato con il seguente comando:

kubectl get volumesnapshot

L'output dovrebbe mostrare il VolumeSnapshot in stato READYTOUSE=true:

NAME          READYTOUSE   SOURCEPVC     SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS   SNAPSHOTCONTENT                                    CREATIONTIME   AGE
my-snapshot   true         premium-pvc                           100Gi         csi-snapclass   snapcontent-0274f0ec-e8ab-48f4-8d89-4422c3875d92   27s            30s

Lo snapshot viene creato sul servizio Enterprise File Storage e può essere utilizzato per workflow di backup o ripristino.

Risoluzione dei problemi

  • Backend non associato: Verifica che le credenziali IAM (clientId/clientSecret) siano corrette e che la policy IAM conceda tutti i permessi necessari.
  • PVC bloccato in stato Pending: Verifica che tutti i pod Trident siano in stato Running, che il backend sia in stato Bound e che la StorageClass faccia riferimento al tipo di backend corretto. Consulta gli errori nei log dei pod Trident con kubectl logs -n trident <nome-del-pod>.
  • Problemi di connettività di rete: Verifica che il cluster MKS possa raggiungere il servizio Enterprise File Storage tramite il vRack.

Per saperne di più

Enterprise File Storage - Configurazione della rete privata

Enterprise File Storage - Connettere un'istanza Public Cloud a un volume EFS tramite la rete privata vRack

Gestione degli account di servizio OVHcloud tramite l'API

Enterprise File Storage - FAQ

Se avete bisogno di formazione o di assistenza tecnica per implementare le nostre soluzioni, contattate il vostro rappresentante o cliccate su questo link per ottenere un preventivo e richiedere un'analisi personalizzata del vostro progetto da parte dei nostri esperti del team Professional Services.

Contatta la nostra Community di utenti.

Articoli correlati