Migrazione da Hyper Protect Crypto Services a Key Protect per COS
Migrare la crittografia di Hyper Protect Crypto Services (HPCS) per il plugin IBM Cloud Object Storage s3fs per utilizzare invece Key Protect (KP).
Prima di iniziare
Prima di iniziare, seguire questi passaggi per determinare se è necessario migrare il plugin COS per utilizzare Key Protect invece di HPCS.
-
Ottenere il CRN delle istanze HPCS e KP. Eseguire il seguente comando per ogni istanza.
ibmcloud resource service-instance <instance-name>Output di esempio.
Name: my-hpcs-instance ID: crn:v1:bluemix:public:kms:us-south:a/1ab234cd5e678fgh9a0123bc4de567:f89gh01a-bcd2-3456-e789-f0g1234h5ab6:: -
Elencare tutti i segreti del cluster di tipo
ibm/ibmc-s3fs.kubectl get secrets --field-selector type=ibm/ibmc-s3fs -
Per ogni segreto
ibm/ibmc-s3fs, esaminare il contenuto del segreto e trovare la chiave principalekp-root-key-crnnella sezionedata. Si noti qualsiasi segreto con un valorekp-root-key-crnche includa la stringahs-crypto, che indica che si tratta di una chiave radice HPCS e che deve essere migrata. Salvare l'elenco dei segreti da migrare. Se non ci sono valorikp-root-key-crnche contengonohs-crypto, non è necessario seguire i passaggi della migrazione.
Prerequisiti per la migrazione
Completate questi passaggi prima di iniziare.
- Se sul cluster è installato un diagramma COS helm, assicurarsi che esegua la versione più recente.
- Se non ne avete già una, create una nuova istanza di Key Protect e un nuovo set di chiavi Key Protect per la crittografia. Assicurarsi che l'istanza Key Protect sia creata nella stessa regione del cluster. Questo è necessario affinché l'istanza Key Protect possa accedere alle risorse COS.
- Creare un'autorizzazione da servizio a servizio per Key Protect per accedere alle risorse COS. Impostare il servizio di origine come Key Protect e il servizio di destinazione come COS e impostare il livello di accesso almeno su Reader.
Passi di migrazione
Seguite questi passaggi per migrare il vostro plugin COS a Key Protect.
Se tutti i segreti COS e i PVC si trovano in uno specifico spazio dei nomi, è possibile applicare i passaggi seguenti a tale spazio dei nomi. Altrimenti, cercare tra tutti i namespace del cluster.
Passo 1. Elenco dei PVC da migrare
Determinare quali PVC devono essere migrati.
- Elencare tutti i PVC presenti nel cluster o nel namespace pertinente.
oc get pvc [-n <namespace>] - Descrivete ogni PVC.
oc describe pvc <pvc-name> - Nell'output del PVC, trovare la sezione Annotazioni e verificare se
volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fsè elencato. - Se l'annotazione è elencata, cercare l'annotazione
ibm.io/secret-name. - Se l'annotazione
volume.kubernetes.io/storage-provisioner: ibm.io/ibmc-s3fsè elencata e il valoreibm.io/secret-namecorrisponde a uno qualsiasi dei segreti trovati che hanno una chiave radice HPCS, il PVC deve essere migrato. Osservare il nome del PVC. - Ripetere questi passaggi per ogni PVC. Salvare l'elenco dei PVC da migrare.
Passo 2. Elenco dei pod da migrare
Determinare quali pod devono essere migrati.
- Elenca tutti i pod nel cluster o nel relativo spazio dei nomi.
oc get pods [-n <namespace>] - Descrivete ogni capsula.
oc describe pod <pod-name> - Nell'output, trovare la sezione Volumi e controllare il nome di ciascuno di essi PersistentVolumeClaim. Se uno qualsiasi dei PVC nell'output è incluso nell'elenco dei PVC da migrare, il pod deve essere migrato. Osservare il nome del baccello.
- Ripetere questi passaggi per ogni baccello. Salvare l'elenco dei pod da migrare.
Passo 3. Creare nuovi segreti
Creare nuovi segreti che utilizzino la chiave principale Key Protect invece della chiave principale HPCS.
-
Ottenere il CRN dell'istanza Key Protect e codificarlo in base64.
ibmcloud resource service-instance <kp-instance-name>echo -n "<root_key_CRN>" | base64 -
Per ogni segreto da migrare, ottenere lo yaml del segreto.
oc get secret <secret-name> -o yaml -
Copiare lo yaml in un file per creare un nuovo segreto. Modificare
kp-root-key-crnin modo che punti al CRN codificato base64 dell'istanza Key Protect. Aggiungere una stringa alla fine del nome del segreto per distinguere il nuovo segreto da quello vecchio.Quando si ricreano i PVC, è necessario specificare la nuova copia del segreto utilizzato dal PVC. Assicuratevi che il nome del nuovo segreto corrisponda a quello del vecchio segreto, ma che permetta di distinguere i due.
-
Applicare il segreto.
kubectl apply -f <secret-file-name> -
Ripetere questi passaggi per ogni segreto da migrare.
Passo 4. Ricreare i PVC
Ricreare i PVC in modo che puntino ai nuovi segreti.
-
Per ogni PVC da migrare, ottenere il PVC yaml.
oc get PVC <pvc-name> -o yaml -
Copiare lo yaml in un file per creare un nuovo PVC. Modificare le annotazioni
ibm.io/secret-nameeibm.io/secret-namespaceper puntare al nuovo segreto che corrisponde al segreto precedentemente elencato. Aggiungere una stringa alla fine del nome del PVC per differenziarlo dal vecchio PVC. -
Applicare il nuovo PVC.
oc apply -f <pvc-file-name> -
Ottenere i dettagli del PVC e verificare che sia nello stato Bound.
oc get PVC <pvc> -
Ripetete questi passaggi per ogni PVC da migrare.
Passo 5. Aggiornamento dei baccelli
Aggiornare i pod in modo che puntino ai nuovi PVC.
- Determinare il tipo di risorsa utilizzata. Nell'output, trovare la sezione ownerReferences e annotare il tipo di risorsa e il nome della risorsa elencata.
oc describe pod <pod-name> - Seguire le strategie di aggiornamento basate sulla risorsa elencata nella sezione ownerReferences sezione.
DaemonSet: Aggiornamento continuo su un DaemonSetDeployment: Aggiornamento di un'installazione clientStatefulSet: Strategie di aggiornamento per StatefulSets- Nessuna risorsa elencata: Se non è elencata alcuna risorsa, il pod è un pod autonomo e deve essere ricreato manualmente con il nuovo nome del PVC. Seguire la procedura descritta in Ricreazione manuale del pod.
Ricreare manualmente il pod
-
Ottenere il pod yaml.
oc describe <resource-type> <resource-name> -o yaml -
Copiare lo yaml in un file per creare un nuovo pod. Nella sezione volumi dello yaml, modificare il parametro PersistentVolumeClaim per puntare al nuovo PVC che corrisponde al PVC precedentemente elencato. Aggiungere una stringa alla fine del nome della nuova risorsa per differenziarla da quella precedente.
-
Applicare il nuovo file yaml.
oc apply -f <pod-yaml-file> -
Verifica che il pod è in esecuzione.
oc get pods -
Ripetete questi passaggi per ogni pod che deve essere migrato manualmente.