Ce document explique comment créer et utiliser des identifiants pour accéder à Cloud Storage à l'aide de l'environnement d'exécution des VM sur Google Distributed Cloud. Un plug-in Cloud Storage vous permet d'utiliser Containerized Data Importer (CDI) pour importer des images de VM à partir de buckets Cloud Storage. Vous pouvez ensuite créer des disques virtuels à partir de ces images dans Cloud Storage et les associer à des VM qui s'exécutent dans votre cluster. L'IDC est automatiquement activé dans un cluster qui exécute l'environnement d'exécution de VM sur Google Distributed Cloud.
Avant de commencer
Pour suivre les instructions de ce document, vous devez disposer des ressources suivantes :
- Un accès à GKE sur bare metal version 1.12.0 (
anthosBareMetalVersion: 1.12.0
) ou à un cluster supérieur. Vous pouvez utiliser n'importe quel type de cluster capable d'exécuter des charges de travail. Si nécessaire, essayez GKE sur Bare Metal sur Compute Engine ou consultez la présentation de la création de clusters. - Un compte de service et une clé de compte de service que vous souhaitez utiliser pour accéder à Cloud Storage. Si nécessaire, configurez un compte de service pouvant accéder à un bucket Cloud Storage.
Présentation des identifiants
Pour accéder à Cloud Storage, vous devez utiliser un compte de service qui fournit des identifiants au bucket de stockage. Le compte de service nécessite différents privilèges pour accéder à un bucket de stockage :
- Bucket de stockage public : vous utilisez un compte de service pour vous identifier automatiquement, mais aucune autorisation spécifique n'est requise.
- Bucket de stockage privé : le compte de stockage nécessite le droit de lecteur ou d'administrateur sur le bucket de stockage.
Il existe deux manières de fournir les identifiants du compte de service à CDI :
- Configurer les identifiants par défaut de l'application Google sur les nœuds de votre cluster. Pour en savoir plus, consultez la section Authentification en tant que compte de service.
- Fournir un secret contenant la clé du compte de service pour accéder à Cloud Storage. Le reste de ce document vous explique comment créer une clé de compte de service et un secret.
Créer un secret
Vous transmettez la clé de compte de service à Kubernetes à l'aide d'un secret créé dans l'espace de noms du volume de données. La section data
du secret contient une entrée pour creds-gcp.json
. Sa valeur correspond aux données encodées en base64 du fichier de clé du compte de service. La CLI crée ces données encodées en base64. Si vous utilisez un fichier manifeste YAML pour créer le secret, commencez par créer un hachage en base64 du contenu du fichier de clé de votre compte de service.
CLI
Créez le secret à l'aide de
kubectl
:kubectl create secret generic SECRET_NAME \ --from-file=creds-gcp.json=SERVICE_ACCOUNT_KEY_PATH \ --namespace NAMESPACE_NAME
Remplacez les valeurs suivantes :
SECRET_NAME
: nom de votre secret.SERVICE_ACCOUNT_KEY_PATH
: chemin d'accès au fichier de clé de votre compte de service.NAMESPACE_NAME
: espace de noms de votre secret.- Créez votre secret dans le cluster où CDI s'exécute et dans le même espace de noms que le volume de données. L'IDC est automatiquement activé dans un cluster qui exécute l'environnement d'exécution des VM sur Google Distributed Cloud.
Manifest
Créez un fichier manifeste
Secret
(my-secret.yaml par exemple) dans l'éditeur de votre choix :nano my-secret.yaml
Copiez et collez le fichier manifeste YAML suivant :
apiVersion: v1 data: creds-gcp.json: BASE64_SERVICE_ACCOUNT_FILE kind: Secret metadata: name: SECRET_NAME namespace: NAMESPACE_NAME type: Opaque
Remplacez les valeurs suivantes :
BASE64_SERVICE_ACCOUNT_FILE
: hachage en base64 du contenu du fichier de clé de votre compte de service.SECRET_NAME
: nom de votre secret.NAMESPACE_NAME
: espace de noms de votre secret.- Créez votre secret dans le cluster où CDI s'exécute et dans le même espace de noms que le volume de données. L'IDC est automatiquement activé dans un cluster qui exécute l'environnement d'exécution des VM sur Google Distributed Cloud.
Enregistrez et fermez le fichier manifeste de secret dans votre éditeur.
Appliquez le fichier manifeste de secret à l'aide de
kubectl
:kubectl apply -f my-secret.yaml
Transférer un secret existant
Au lieu de créer un secret, vous pouvez créer un SecretForwarder
pour transférer un secret existant à utiliser. L'objet SecretForwarder
accepte le transfert de secrets au sein du même cluster ou entre clusters, par exemple du cluster d'administrateur vers un cluster d'utilisateur.
Pour utiliser le secret cible afin d'accéder à Cloud Storage, celui-ci doit disposer d'une clé creds-gcp.json
dans sa section data
.
Dans le même cluster
L'exemple de fichier manifeste SecretForwarder
suivant transfère un secret dans le même 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
Cet exemple effectue les opérations suivantes :
- Il crée un
SecretForwarder
nommécdi-gcs
dans l'espace de nomsdefault
. - Il transfère le secret nommé
gke-connect
dans l'espace de nomsanthos-creds
vers un nouveau secret nommégcs-sa
dans l'espace de nomsdefault
. - Il crée le nouveau secret dans le même cluster.
Pour transférer un secret dans le même cluster, procédez comme suit :
Créez un fichier manifeste
SecretForwarder
, tel que my-forwarded-secret.yaml, dans l'éditeur de votre choix :nano my-forwarded-secret.yaml
Copiez et collez le fichier manifeste YAML suivant :
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
Remplacez les valeurs suivantes :
SECRET_FORWARDER_NAME
: nom de votre fichier SecretForwarder.NAMESPACE_NAME
: espace de noms de votre fichier SecretForwarder.TARGET_SECRET_NAME
: nom de votre nouveau secret.TARGET_NAMESPACE_NAME
: espace de noms de votre nouveau secret.- Créez votre secret dans le cluster où CDI s'exécute et dans le même espace de noms que le volume de données. L'IDC est automatiquement activé dans un cluster qui exécute l'environnement d'exécution des VM sur Google Distributed Cloud.
SOURCE_SECRET_NAME
: nom du secret source à transférer.SOURCE_NAMESPACE_NAME
: espace de noms du secret source à transférer.
Enregistrez et fermez le fichier manifeste
SecretForwarder
dans votre éditeur.Appliquez le fichier manifeste
SecretForwarder
à l'aide dekubectl
:kubectl apply -f my-forwarded-secret.yaml
Sur plusieurs clusters
L'exemple de fichier manifeste SecretForwarder
suivant transfère un secret sur plusieurs clusters :
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
Cet exemple effectue les opérations suivantes :
- Il crée un
SecretForwarder
nommécdi-gcs
dans l'espace de nomscluster-user1
. - Il transfère le secret nommé
gke-connect
dans l'espace de nomsanthos-creds
vers un nouveau secret nommégcs-sa
dans l'espace de nomsdefault
. - Il crée le nouveau secret dans le cluster nommé
user1
.
Pour transférer un secret dans le même cluster, procédez comme suit :
Créez un fichier manifeste
SecretForwarder
, tel que my-forwarded-secret.yaml, dans l'éditeur de votre choix :nano my-forwarded-secret.yaml
Copiez et collez le fichier manifeste YAML suivant :
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
Remplacez les valeurs suivantes :
SECRET_FORWARDER_NAME
: nom de votre fichier SecretForwarder dans le cluster distant.NAMESPACE_NAME
: espace de noms de votre fichier SecretForwarder dans le cluster distant.TARGET_SECRET_NAME
: nom de votre nouveau secret dans le cluster distant.TARGET_NAMESPACE_NAME
: espace(s) de noms de votre nouveau secret dans le cluster distant.- Créez votre secret dans le cluster où CDI s'exécute et dans le même espace de noms que le volume de données. L'IDC est automatiquement activé dans un cluster qui exécute l'environnement d'exécution des VM sur Google Distributed Cloud.
SOURCE_SECRET_NAME
: nom du secret source à transférer.SOURCE_NAMESPACE_NAME
: espace de noms du secret source à transférer.
Enregistrez et fermez le fichier manifeste
SecretForwarder
dans votre éditeur.Appliquez le fichier manifeste
SecretForwarder
dans le cluster d'administrateur à l'aide dekubectl
avec leKUBECONFIG
du cluster d'administrateur :kubectl apply -f my-forwarded-secret.yaml
Utiliser un secret pour importer une image
Pour utiliser le secret pour importer une image depuis Cloud Storage lorsque vous créez un disque virtuel et une VM, procédez comme suit :
Créez un fichier manifeste définissant des fichiers
VirtualMachineDisk
etVirtualMachine
(my-vm.yaml,, par exemple) dans l'éditeur de votre choix :nano my-vm.yaml
Copiez et collez la définition YAML suivante :
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
Remplacez les valeurs suivantes :
VM_NAME
: nom de votre VM.IMAGE_URL
: URL de votre image disque Cloud Storage, telle quegs://my-images-bucket/disk.qcow2
.SECRET_NAME
: nom de votre secret.
Enregistrez et fermez le fichier manifeste dans votre éditeur.
Créez la VM et le disque en utilisant
kubectl
:kubectl apply -f my-vm.yaml