Configurazione della tua istanza IBM Cloud Object Storage

IBM Cloud Object Storage è un'archiviazione persistente e altamente disponibile che puoi montare sulle tue applicazioni. Il plugin è un plugin Kubernetes Flex-Volume che connette i bucket Object Storage cloud ai pod nel tuo cluster. Le informazioni archiviate su IBM Cloud Object Storage sono crittografate sia in transito che inattive, distribuite in diverse località geografiche e accessibili tramite HTTP utilizzando un'API REST.

Se vuoi utilizzare IBM Cloud Object Storage in un cluster privato senza l'accesso alla rete pubblica, devi configurare la tua istanza del servizio IBM Cloud Object Storage per l'autenticazione HMAC. Se non desideri utilizzare l'autenticazione HMAC, devi aprire tutto il traffico di rete in uscita sulla porta 443 perché il plugin funzioni correttamente in un cluster privato.

Creazione di un'istanza di IBM Cloud Object Storage

Prima di poter iniziare a utilizzare l'archiviazione oggetti nel tuo cluster, devi eseguire il provisioning di un'istanza del servizio IBM Cloud Object Storage nel tuo account.

Il plugin IBM Cloud Object Storage funziona con qualsiasi endpoint API s3. Ad esempio, potresti voler utilizzare un server locale Cloud Object Storage, come Minio, oppure collegarti a un endpoint API s3 che hai configurato presso un altro provider cloud, anziché a un'istanza del servizio IBM Cloud Object Storage.

Attieniti alla seguente procedura per creare un'istanza del servizio IBM Cloud Object Storage. Se intendi utilizzare un server locale Cloud Object Storage o un altro endpoint API s3, consulta la documentazione del provider per configurare la tua istanza Cloud Object Storage.

  1. Apri la pagina del catalogo IBM Cloud Object Storage.
  2. Immetti un nome per la tua istanza del servizio, come cos-backup, e seleziona lo stesso gruppo di risorse in cui si trova il tuo cluster. Per visualizzare il gruppo di risorse del proprio cluster, eseguire il comando ibmcloud ks cluster get --cluster CLUSTER_NAME_OR_ID``.
  3. Consulta le opzioni dei piani per informazioni sui prezzi e seleziona un piano.
  4. Fai clic su Crea. Viene visualizzata la pagina dei dettagli.
  5. Per continuare a configurare Object Storage da utilizzare con il cluster, vedi Creazione delle credenziali del servizio.

Creazione delle credenziali per il servizi IBM Cloud Object Storage

Prima di iniziare, Crea la tua istanza del servizio di archiviazione oggetti.

  1. Nella navigazione nella pagina dei dettagli del servizio della tua istanza Object Storage, fai clic su Service Credentials.
  2. Fai clic su New credential. Viene aperta una finestra di dialogo.
  3. Immetti un nome per le tue credenziali.
  4. Dall'elenco a discesa Ruolo, seleziona il ruolo di accessoObject Storage per le azioni a cui vuoi che gli utenti di archiviazione nel tuo cluster abbiano accesso. Devi selezionare almeno il ruolo di accesso al servizio Scrittore per utilizzare la funzione di provisioning dinamico auto-create-bucket. Se selezioni " Reader", non potrai utilizzare le credenziali per creare bucket su IBM Cloud Object Storage e scriverci dei dati.
  5. Facoltativo: fare clic su "Opzioni avanzate " e impostare il pulsante di attivazione/disattivazione "Includi credenziali HMAC " su "On " per creare le credenziali HMAC per il servizio IBM Cloud Object Storage. L'autenticazione HMAC aggiunge un ulteriore livello di sicurezza all'autenticazione OAuth2 prevenendo l'uso improprio di token OAuth2 scaduti o creati casualmente. Importante: se hai un cluster solo privato senza accesso pubblico, devi utilizzare l'autenticazione HMAC in modo da poter accedere al servizio IBM Cloud Object Storage sulla rete privata.
  6. Fai clic su Aggiungi. Le tue nuove credenziali si trovano nella tabella " Service Credentials ".
  7. Fai clic su Visualizza credenziali.
  8. Prendi nota del apikey utilizzare i token OAuth2 per l'autenticazione con il servizio IBM Cloud Object Storage. Per l'autenticazione HMAC, nella cos_hmac_keys sezione, prendere nota del access_key_id e il secret_access_key.
  9. Archivia le tue credenziali del servizio in un segreto Kubernetes all'interno del cluster per abilitare l'accesso alla tua istanza del servizio IBM Cloud Object Storage.

Creazione di un segreto per le credenziali del servizio di archiviazione oggetti

Per accedere alla tua istanza del servizio IBM Cloud Object Storage per leggere e scrivere dati, devi archiviare in modo protetto le credenziali del servizio in un segreto Kubernetes. Il plugin IBM Cloud Object Storage utilizza queste credenziali per ogni operazione di lettura o scrittura nel tuo bucket.

Attieniti alla seguente procedura per creare un segreto Kubernetes per le credenziali di un'istanza del servizio IBM Cloud Object Storage. Se intendi utilizzare un server Cloud Object Storage locale su un endpoint API s3 differente, crea un segreto Kubernetes con le credenziali appropriate.

Prerequisiti

  • Assicurati di disporre del ruolo di accesso “Manager ” per il cluster.
  • Impostare il provider KMS.
  • Recupera il apikey, oppure il access_key_id e le secret_access_key delle tue credenziali del servizio IBM Cloud Object Storage. Tieni presente che le credenziali del servizio devono essere sufficienti per le operazioni bucket che la tua applicazione deve eseguire. Ad esempio, se la tua applicazione legge i dati da un bucket, le credenziali del servizio che vedi nel tuo segreto devono avere almeno le autorizzazioni di Lettore.

Creazione di un segreto di archiviazione oggetti nel tuo cluster

Completa la seguente procedura per creare una parola segreta nel tuo cluster per IBM Cloud Object Storage.

Se vuoi integrare la crittografia Key Protect quando crei nuovi bucket da PVC nel tuo cluster, devi includere il CRN della chiave root quando crei il tuo segreto IBM Cloud Object Storage. Nota che la crittografia Key Protect non può essere aggiunta ai bucket esistenti. La crittografia può essere utilizzata solo quando si creano nuovi bucket. Se la chiave root utilizzata per la crittografia viene eliminata, tutti i file nei bucket associati sono inaccessibili.

  1. Ottieni il GUID della tua istanza del servizio IBM Cloud Object Storage.

    ibmcloud resource service-instance <service_name> | grep GUID
    
  2. Crea un segreto Kubernetes per archiviare le tue credenziali del servizio. Scegli uno dei seguenti esempi per creare il segreto.

    • Esempio di comando create secret che utilizza una chiave API.
        kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=api-key=<api_key> --from-literal=service-instance-id=<service_instance_guid>
        ```
    * Esempio di comando `create secret` che utilizza autenticazione HMAC.
    ```sh {: pre}
        kubectl create secret generic cos-write-access --type=ibm/ibmc-s3fs --from-literal=access-key=<access_key_ID> --from-literal=secret-key=<secret_access_key>    
        ```
    * File di configurazione segreto di esempio per abilitare la cifratura con il provider KMS.
        1. Salva il seguente codice YAML in un file.
            ```yaml {: codeblock}
            apiVersion: v1
            data:
                access-key: xxx
                secret-key: xxx
                kp-root-key-crn: <CRN> # Key Protect or HPCS root key crn in base64 encoded format
            kind: Secret
            metadata:
                name: cos-write-access
            type: ibm/ibmc-s3fs
            ```
            `api-key`
            :   Immetti la chiave API che hai richiamato dalle tue credenziali del servizio IBM Cloud Object Storage precedentemente. Se si desidera utilizzare l'autenticazione HMAC, specificare invece `access-key` e `secret-key`.
    
            `access-key`
            :   Immetti l'ID chiave di accesso che hai richiamato dalle tue credenziali del servizio IBM Cloud Object Storage precedentemente. Se si desidera utilizzare l'autenticazione " OAuth2 ", specificare invece l' `api-key`.
    
            `secret-key`
            :   Immetti la chiave di accesso segreta che hai richiamato dalle tue credenziali del servizio IBM Cloud Object Storage precedentemente. Se si desidera utilizzare l'autenticazione " OAuth2 ", specificare invece l' `api-key`.
    
            `service-instance-id`
            :   Immetti il GUID della tua istanza del servizio IBM Cloud Object Storage che hai richiamato precedentemente.
    
            `kp-root-key-crn`
            :   Immetti il CRN della chiave base64 codificato Key Protect per utilizzare la crittografia Key Protect.
    
        1. Applica il segreto al tuo cluster.
            ```sh {: pre}
            kubectl apply -f <secret_name>
            ```
    
    
  3. Ottieni i segreti nel tuo cluster e verifica l'output.

    kubectl get secret
    

    Output di esempio

    NAME                  TYPE                                  DATA   AGE
    cos-write-access      ibm/ibmc-s3fs                         2      7d19h
    default-au-icr-io     kubernetes.io/dockerconfigjson        1      55d
    default-de-icr-io     kubernetes.io/dockerconfigjson        1      55d
    ...
    
  4. Installa il plugin IBM Cloud Object Storage o, se lo hai già installato, decidi in merito alla configurazione per il tuo bucket IBM Cloud Object Storage.

  5. Facoltativo: aggiungi il segreto alle classi di archiviazione predefinite. Riferimento delle classi di archiviazione

Assegnazione di profili di fiducia all'archiviazione COS

È possibile utilizzare i profili di fiducia per concedere a diverse identità di IBM Cloud l'accesso alle risorse dell'account, comprese le soluzioni di archiviazione. I profili di fiducia centralizzano il controllo degli accessi, eliminano la necessità di chiavi API a lunga durata e consentono di limitare le autorizzazioni al minimo indispensabile per un'attività specifica. Per ulteriori informazioni, vedere Configurazione di un profilo di fiducia per i componenti di archiviazione.

Limitazioni

  • IBM Cloud Object Storage è basato sul file system s3fs-fuse. È possibile consultare un elenco delle limitazioni nel repository s3fs-fuse.
  • Per accedere a un file in IBM Cloud Object Storage con un utente non root, devi impostare i valori runAsUser e fsGroup nella tua distribuzione sullo stesso valore.