Questo documento mostra come creare e utilizzare le credenziali per accedere Cloud Storage utilizzando il runtime VM su GDC. Un Cloud Storage il plug-in consente di utilizzare Importazione dati containerizzata (CDI) per importare immagini VM dai bucket Cloud Storage. Puoi quindi creare file virtuali i tuoi dischi da queste immagini in Cloud Storage e collegarli alle VM in esecuzione nel tuo cluster. CDI viene abilitato automaticamente in un cluster in esecuzione Runtime VM su GDC.
Prima di iniziare
Per completare questo documento, devi accedere alle seguenti risorse:
- Accesso a Google Distributed Cloud versione 1.12.0 (
anthosBareMetalVersion: 1.12.0
) o un cluster superiore. Puoi utilizzare qualsiasi tipo di cluster in grado di eseguire carichi di lavoro. Se necessario, prova Google Distributed Cloud su Compute Engine o consulta le Panoramica della creazione del cluster. - Un account di servizio e una chiave dell'account di servizio che vuoi utilizzare per Cloud Storage. l'accesso. Se necessario, configurare un account di servizio in grado di accedere a un bucket Cloud Storage.
Panoramica delle credenziali
Per accedere a Cloud Storage, utilizza un account di servizio che fornisce le credenziali al bucket di archiviazione. L'account di servizio richiede privilegi necessari per accedere correttamente a un bucket di archiviazione:
- Bucket di archiviazione pubblico: utilizzi un account di servizio per l'auto-identificazione, ma non sono necessarie autorizzazioni specifiche.
- Bucket di archiviazione privata: l'account di archiviazione richiede il visualizzatore o amministratore al bucket di archiviazione.
Esistono due modi per fornire le credenziali dell'account di servizio a CDI:
- Configura le credenziali predefinite dell'applicazione Google (ADC) sul nodi nel tuo cluster. Per ulteriori informazioni, vedi Autenticazione come account di servizio.
- Fornisci un secret che contenga la chiave dell'account di servizio per per accedere a Cloud Storage. Il resto di questo documento illustra come creare una chiave e un secret dell'account di servizio.
Crea un secret
Puoi passare la chiave dell'account di servizio a Kubernetes utilizzando un secret
del volume dei dati. La sezione data
del secret contiene una voce
per creds-gcp.json
. Il valore corrisponde ai dati codificati in base64 del servizio
della chiave dell'account. L'interfaccia a riga di comando crea automaticamente questi dati codificati in base64. Se utilizzi un
manifest YAML per creare il secret, crea prima un hash base64 dei contenuti
del file delle chiavi dell'account di servizio.
Interfaccia a riga di comando
Crea il secret utilizzando
kubectl
:kubectl create secret generic SECRET_NAME \ --from-file=creds-gcp.json=SERVICE_ACCOUNT_KEY_PATH \ --namespace NAMESPACE_NAME
Sostituisci i seguenti valori:
SECRET_NAME
: il nome del tuo secret.SERVICE_ACCOUNT_KEY_PATH
: il percorso e il file delle chiavi dell'account di servizio.NAMESPACE_NAME
: lo spazio dei nomi per il tuo secret.- Crea il tuo secret nel cluster in cui viene eseguito CDI e nello stesso dello spazio dei nomi come volume di dati. CDI viene abilitato automaticamente che esegue il runtime VM su GDC.
Manifest
Crea un manifest
Secret
, ad esempio my-secret.yaml, nell'editor del tuo scelta:nano my-secret.yaml
Copia e incolla il seguente manifest YAML:
apiVersion: v1 data: creds-gcp.json: BASE64_SERVICE_ACCOUNT_FILE kind: Secret metadata: name: SECRET_NAME namespace: NAMESPACE_NAME type: Opaque
Sostituisci i seguenti valori:
BASE64_SERVICE_ACCOUNT_FILE
: l'hash base64 di i contenuti del file delle chiavi dell'account di servizio.SECRET_NAME
: il nome del tuo secret.NAMESPACE_NAME
: lo spazio dei nomi per il tuo secret.- Crea il tuo secret nel cluster in cui viene eseguito CDI e nello stesso dello spazio dei nomi come volume di dati. CDI viene abilitato automaticamente che esegue il runtime VM su GDC.
Salva e chiudi il manifest del secret nell'editor.
Applica il manifest del secret utilizzando
kubectl
:kubectl apply -f my-secret.yaml
Inoltra un secret esistente
Anziché creare un secret, puoi creare un SecretForwarder
da inoltrare
da un secret esistente. SecretForwarder
supporta i secret di forwarding
all'interno dello stesso cluster o in più cluster, ad esempio dal cluster di amministrazione
nel cluster utente.
Per utilizzare il secret di destinazione per accedere a Cloud Storage, il secret di origine deve
presentano una chiave creds-gcp.json
nella sezione data
.
Stesso cluster
Il manifest SecretForwarder
di esempio seguente inoltra un secret nello stesso
cluster:
apiVersion: baremetal.cluster.gke.io/v1
kind: SecretForwarder
metadata:
name: cdi-gcs
namespace: default
spec:
inClusterTargetSecrets:
name: gcs-sa
namespaces:
- default
sourceSecret:
name: gke-connect
namespace: anthos-creds
In questo esempio si verifica quanto segue:
- Crea un elemento
SecretForwarder
denominatocdi-gcs
nello spazio dei nomidefault
. - Inoltra il secret denominato
gke-connect
nello spazio dei nomianthos-creds
a un nuovo secret denominatogcs-sa
nello spazio dei nomidefault
. - Crea il nuovo secret nello stesso cluster.
Per inoltrare un secret nello stesso cluster, completa questi passaggi:
Crea un manifest
SecretForwarder
, ad esempio my-forwarded-secret.yaml, in l'editore che preferisci:nano my-forwarded-secret.yaml
Copia e incolla il seguente manifest YAML:
apiVersion: baremetal.cluster.gke.io/v1 kind: SecretForwarder metadata: name: SECRET_FORWARDER_NAME namespace: NAMESPACE_NAME spec: inClusterTargetSecrets: name: TARGET_SECRET_NAME namespaces: - TARGET_NAMESPACE_NAME sourceSecret: name: SOURCE_SECRET_NAME namespace: SOURCE_NAMESPACE_NAME
Sostituisci i seguenti valori:
SECRET_FORWARDER_NAME
: il nome del tuo SecretForwarder.NAMESPACE_NAME
: lo spazio dei nomi per SecretForwarder.TARGET_SECRET_NAME
: il nome del nuovo secret.TARGET_NAMESPACE_NAME
: lo spazio dei nomi per il nuovo Secret.- Crea il tuo secret nel cluster in cui viene eseguito CDI e nello stesso dello spazio dei nomi come volume di dati. CDI viene abilitato automaticamente che esegue il runtime VM su GDC.
SOURCE_SECRET_NAME
: il nome del secret di origine in avanti.SOURCE_NAMESPACE_NAME
: lo spazio dei nomi dell'origine Secret da inoltrare.
Salva e chiudi il manifest
SecretForwarder
nell'editor.Applica il manifest
SecretForwarder
utilizzandokubectl
:kubectl apply -f my-forwarded-secret.yaml
Nei cluster
Il manifest SecretForwarder
di esempio seguente inoltra un secret
cluster:
apiVersion: baremetal.cluster.gke.io/v1
kind: SecretForwarder
metadata:
name: cdi-gcs
namespace: cluster-user1
spec:
RemoteClusterTargetSecrets:
name: gcs-sa
namespaces:
- default
sourceSecret:
name: gke-connect
namespace: anthos-creds
In questo esempio si verifica quanto segue:
- Crea un elemento
SecretForwarder
denominatocdi-gcs
nello spazio dei nomicluster-user1
. - Inoltra il secret denominato
gke-connect
nello spazio dei nomianthos-creds
a un nuovo secret denominatogcs-sa
nello spazio dei nomidefault
. - Crea il nuovo secret nel cluster denominato
user1
.
Per inoltrare un secret nello stesso cluster, completa questi passaggi:
Crea un manifest
SecretForwarder
, ad esempio my-forwarded-secret.yaml, in l'editore che preferisci:nano my-forwarded-secret.yaml
Copia e incolla il seguente manifest YAML:
apiVersion: baremetal.cluster.gke.io/v1 kind: SecretForwarder metadata: name: SECRET_FORWARDER_NAME namespace: NAMESPACE_NAME spec: RemoteClusterTargetSecrets: name: TARGET_SECRET_NAME namespaces: - TARGET_NAMESPACE_NAME sourceSecret: name: SOURCE_SECRET_NAME namespace: SOURCE_NAMESPACE_NAME
Sostituisci i seguenti valori:
SECRET_FORWARDER_NAME
: il nome del tuo SecretForwarder nel cluster remoto.NAMESPACE_NAME
: lo spazio dei nomi per SecretForwarder nel cluster remoto.TARGET_SECRET_NAME
: il nome del tuo nuovo secret in il cluster remoto.TARGET_NAMESPACE_NAME
: lo spazio dei nomi per il tuo nuovo secret nel cluster remoto.- Crea il tuo secret nel cluster in cui viene eseguito CDI e nello stesso dello spazio dei nomi come volume di dati. CDI viene abilitato automaticamente che esegue il runtime VM su GDC.
SOURCE_SECRET_NAME
: il nome del secret di origine in avanti.SOURCE_NAMESPACE_NAME
: lo spazio dei nomi dell'origine Secret da inoltrare.
Salva e chiudi il manifest
SecretForwarder
nell'editor.Applica il manifest
SecretForwarder
nel cluster di amministrazione utilizzandokubectl
con ilKUBECONFIG
del cluster di amministrazione:kubectl apply -f my-forwarded-secret.yaml
Utilizza un secret per importare un'immagine
Per utilizzare il secret per importare un'immagine da Cloud Storage quando crei un su disco virtuale e VM, completa i seguenti passaggi:
Crea un manifest che definisca
VirtualMachineDisk
eVirtualMachine
, ad esempio my-vm.yaml,,nell'editor che preferisci:nano my-vm.yaml
Copia e incolla la seguente definizione YAML:
apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachineDisk metadata: name: VM_NAME-boot-dv spec: size: 20Gi source: gcs: url: IMAGE_URL secretRef: SECRET_NAME --- apiVersion: vm.cluster.gke.io/v1 kind: VirtualMachine metadata: name: VM_NAME spec: interfaces: - name: eth0 networkName: pod-network default: true disks: - boot: true virtualMachineDiskName: VM_NAME-boot-dv
Sostituisci i seguenti valori:
VM_NAME
: il nome della VM.IMAGE_URL
: l'URL dell'immagine disco Cloud Storage, ad esempiogs://my-images-bucket/disk.qcow2
.SECRET_NAME
: il nome del tuo secret.
Salva e chiudi il manifest nell'editor.
Crea la VM e il disco utilizzando
kubectl
:kubectl apply -f my-vm.yaml