Les clusters Dataproc peuvent être provisionnés avec une image personnalisée incluant les packages pré-installés de l'utilisateur. Cette page vous explique comment créer et l'installer sur un cluster Dataproc.
Remarques et limites concernant l'utilisation
Durée de vie de l'image personnalisée : pour que les clusters reçoivent les dernières mises à jour de service et corrections de bugs, la création de clusters avec une image personnalisée est limitée à 365 jours à compter de la date de création de l'image personnalisée. Notez que les clusters existants créés avec une image personnalisée peuvent s'exécuter indéfiniment.
Vous devrez peut-être utiliser l'automatisation si vous souhaitez créer des clusters avec une image personnalisée spécifique pendant une période de plus de 365 jours. Pour en savoir plus, consultez Comment créer un cluster avec une image personnalisée arrivée à expiration.
Linux uniquement:les instructions contenues dans ce document s'appliquent aux systèmes d'exploitation Linux uniquement. D'autres systèmes d'exploitation pourraient être compatibles dans les prochaines releases de Dataproc.
Images de base compatibles:les images personnalisées nécessitent à partir d'un Image de base Dataproc. Les images de base suivantes sont prises en charge: Debian, Rocky Linux et Ubuntu
- Disponibilité des images de base:de nouvelles images sont annoncées dans le Notes de version de Dataproc ne peuvent servir de base pour des images personnalisées semaine à compter de la date d'annonce.
Utilisation de composants facultatifs:par défaut, les images personnalisées héritent de toutes les Composants Dataproc facultatifs (packages OS et configurations) à partir de leurs images de base, vous pouvez personnaliser les versions et les configurations par défaut du système d'exploitation, mais vous devez spécifier le nom du composant facultatif lors de la création du cluster.
Exemple de commande de création de cluster:
gcloud dataproc clusters create --optional-components=COMPONENT_NAME \ --image=CUSTOM_IMAGE_URI \ ... other flags
Si le nom du composant n'est pas spécifié lors de la création du cluster, un composant facultatif, y compris tous les packages et configurations de l'OS personnalisés, seront supprimés.
Utiliser des images personnalisées hébergées : si vous utilisez une image personnalisée hébergée dans un autre projet, le compte de service de l'agent de service Dataproc dans votre projet doit disposer de l'autorisation
compute.images.get
sur l'image du projet hôte. Vous pouvez accorder cette autorisation en accordantroles/compute.imageUser
sur l'image hébergée au niveau d'accès Compte de service d'agent de service Dataproc (consultez Partager des images personnalisées au sein d'une organisation).Utiliser les codes secrets MOK (clé de propriétaire de machine) avec démarrage sécurisé: Pour activer démarrage sécurisé avec votre image personnalisée Dataproc, procédez comme suit:
Activez le l'API Secret Manager (
secretmanager.googleapis.com
). Dataproc génère et gère une paire de clés ; à l'aide du service Secret Manager.Ajoutez l'option
--service-account="SERVICE_ACCOUNT"
à la commandegenerate_custom_image.py
lorsque vous générez une image personnalisée. Remarque : Vous devez attribuer au compte de service le rôle "Lecteur de Secret Manager" (roles/secretmanager.viewer
) sur le projet et le rôle "Accesseur de Secret Manager" (roles/secretmanager.secretAccessor
) sur les secrets publics et privés.
Pour en savoir plus et obtenir des exemples, consultez le fichier
README.md
et d'autres dans la examples/secure-boot du dépôtGoogleCloudDataproc/custom-images
sur GitHub.Pour désactiver le démarrage sécurisé : par défaut, les scripts d'image personnalisée Dataproc génèrent et gèrent une paire de clés à l'aide de Secret Manager lorsqu'ils sont exécutés à partir d'un cluster Dataproc. Si vous ne souhaitez pas utiliser avec votre image personnalisée, incluez le
--trusted-cert=""
(valeur d'indicateur vide) à la commandegenerate_custom_image.py
lorsque vous générer une image personnalisée.
Avant de commencer
Veillez à configurer votre projet avant de générer votre image personnalisée.
Configurer votre projet
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Dataproc API, Compute Engine API, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Installez Python 3.11 ou version ultérieure
- Préparez un script de personnalisation qui installe des packages personnalisés et/ou met à jour les configurations, par exemple :
#! /usr/bin/bash apt-get -y update apt-get install python-dev apt-get install python-pip pip install numpy
Créer un bucket Cloud Storage dans votre projet
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
- For Name your bucket, enter a name that meets the bucket naming requirements.
-
For Choose where to store your data, do the following:
- Select a Location type option.
- Select a Location option.
- For Choose a default storage class for your data, select a storage class.
- For Choose how to control access to objects, select an Access control option.
- For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
- Click Create.
Générer une image personnalisée
Pour créer une image personnalisée Dataproc, vous allez utiliser generate_custom_image.py, un programme Python.
Fonctionnement
Le programme generate_custom_image.py
lance une
Instance de VM Compute Engine avec l'instance Dataproc
de base, puis exécute le script de personnalisation dans l'instance de VM pour installer
des packages personnalisés
et/ou mettre à jour des configurations. Après l'exécution du script de personnalisation
se termine, il arrête l'instance de VM et crée une instance Dataproc personnalisée
à partir du disque de l'instance de VM. La VM temporaire est supprimée après la création de l'image personnalisée. L'image personnalisée est enregistrée et peut être utilisée pour créer des clusters Dataproc.
Le programme generate_custom_image.py
utilise gcloud CLI
pour exécuter des workflows en plusieurs étapes sur Compute Engine.
Exécuter le code
Dupliquez ou clonez les fichiers sur GitHub à l'adresse Images personnalisées Dataproc.
Exécutez ensuite le script generate_custom_image.py
pour obtenir Dataproc
générer et enregistrer votre image personnalisée.
python3 generate_custom_image.py \ --image-name=CUSTOM_IMAGE_NAME \ [--family=CUSTOM_IMAGE_FAMILY_NAME] \ --dataproc-version=IMAGE_VERSION \ --customization-script=LOCAL_PATH \ --zone=ZONE \ --gcs-bucket=gs://BUCKET_NAME \ [--no-smoke-test]
Indicateurs requis
--image-name
: nom de sortie de votre image personnalisée. Remarque : Le nom de l'image doit correspondre à l'expression régulière[a-z](?:[-a-z0-9]{0,61}[a-z0-9])
, sans traits de soulignement ni espaces, et comporter moins de 64 caractères.--dataproc-version
: version de l'image Dataproc à utiliser dans votre image personnalisée. Spécifiez la version au formatx.y.z-os
oux.y.z-rc-os
. par exemple, "2.0.69-debian10".--customization-script
: chemin d'accès local au script que l'outil exécutera pour installer vos packages personnalisés ou effectuer d'autres personnalisations. Ce script est que sur la VM temporaire utilisée pour créer l'image personnalisée. Vous pouvez spécifier un script d'initialisation différent pour les autres actions d'initialisation que vous effectuer lorsque vous créez un cluster avec votre image personnalisée.--zone
: zone Compute Engine oùgenerate_custom_image.py
créera une VM temporaire à utiliser pour créer votre image personnalisée.--gcs-bucket
: URI, au formatgs://BUCKET_NAME
, qui pointe vers votre bucket Cloud Storage.generate_custom_image.py
écrit les fichiers journaux dans ce bucket.
Indicateurs facultatifs
--family
: famille d'images de l'image personnalisée. Les familles d'images permettent de regrouper des images similaires et peuvent être utilisées lors de la création d'un cluster en tant que pointeur vers l'image la plus récente de la famille. Exemple :custom-2-2-debian12
--no-smoke-test
: option facultative qui désactive le test de confiance de l'image personnalisée nouvellement créée. Le test de confiance crée un cluster de test Dataproc avec l'image nouvellement créée, exécute une petite tâche, puis supprime le cluster à la fin du test. Le test de confiance s'exécute par défaut pour vérifier que l'image personnalisée nouvellement créée est en mesure de créer un cluster Dataproc fonctionnel. La désactivation de cette étape à l'aide de l'indicateur--no-smoke-test
accélère le processus de création d'une image personnalisée, mais son utilisation n'est pas recommandée.--subnet
: sous-réseau à utiliser pour créer la VM qui crée l'image Dataproc personnalisée. Si votre projet fait partie un VPC partagé, vous devez spécifier l'URL complète du sous-réseau au format suivant:projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
.
Pour obtenir la liste des options facultatives supplémentaires, consultez la section Arguments facultatifs sur GitHub.
Si generate_custom_image.py
aboutit, le imageURI
de l'image personnalisée s'affiche dans le résultat de la fenêtre du terminal (le imageUri
complet est affiché en gras ci-dessous) :
... managedCluster: clusterName: verify-image-20180614213641-8308a4cd config: gceClusterConfig: zoneUri: ZONE masterConfig: imageUri: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ... INFO:__main__:Successfully built Dataproc custom image: CUSTOM_IMAGE_NAME INFO:__main__: ##################################################################### WARNING: DATAPROC CUSTOM IMAGE 'CUSTOM_IMAGE_NAME' WILL EXPIRE ON 2018-07-14 21:35:44.133000. #####################################################################
Libellés de version d'image personnalisés (utilisation avancée)
Lorsque vous utilisez l'outil standard de création d'image personnalisée de Dataproc, un libellé goog-dataproc-version
est défini sur l'image personnalisée créée. Le libellé reflète les fonctionnalités et les protocoles de la caractéristique utilisés par Dataproc pour gérer le logiciel sur l'image.
Utilisation avancée : si vous utilisez votre propre processus pour créer une image Dataproc personnalisée, vous devez ajouter manuellement le libellé goog-dataproc-version
à votre image personnalisée, comme suit :
Extrayez le libellé
goog-dataproc-version
de l'image Dataproc de base utilisée pour créer l'image personnalisée.gcloud compute images describe ${BASE_DATAPROC_IMAGE} \ --project cloud-dataproc \ --format="value(labels.goog-dataproc-version)"
Définissez le libellé sur l'image personnalisée.
gcloud compute images add-labels IMAGE_NAME --labels=[KEY=VALUE,...]
Utiliser une image personnalisée
Vous spécifiez l'image personnalisée lorsque vous créez un cluster Dataproc. Une image personnalisée est enregistrée dans Images Cloud Compute est valide pour créer un cluster Dataproc pendant 365 jours à compter de date de création (consultez Comment créer un cluster avec une image personnalisée arrivée à expiration pour utiliser une image personnalisée passée sa date d'expiration de 365 jours).
URI de l'image personnalisée
Vous transmettez l'URI de l'image personnalisée imageUri
à l'opération de création de cluster.
Cet URI peut être spécifié de l'une des trois manières suivantes :
- URI complet :
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/`gs://`BUCKET_NAME`
- URI partiel :
projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME
- Nom abrégé : CUSTOM_IMAGE_NAME
Les images personnalisées peuvent également être spécifiées par leur URI de famille, qui choisit toujours l'image la plus récente de la famille d'images.
- URI complet :
https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME/var>
- URI partiel :
projects/PROJECT_ID/global/images/family/CUSTOM_IMAGE_FAMILY_NAME
Pour trouver l'URI de l'image personnalisée, procédez comme suit :
Google Cloud CLI
Exécutez la commande suivante pour lister les noms de vos images personnalisées.
gcloud compute images list
Transmettez le nom de votre image personnalisée à la commande suivante pour répertorier l'URI (selfLink
) de votre image personnalisée.
gcloud compute images describe custom-image-name
Extrait de sortie :
... name: CUSTOM_IMAGE_NAME selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME ...
Console
- Ouvrez la page Compute Engine → Images dans la console Google Cloud, puis cliquez sur le nom de l'image.
Vous pouvez insérer une requête dans le champ
filter images
pour limiter le nombre d'images affichées. - La page Détails des images s'ouvre. Cliquez sur Équivalent REST.
- La réponse REST répertorie des informations supplémentaires sur l'image, y compris
selfLink
, qui est l'URI de l'image.{ ... "name": "my-custom-image", "selfLink": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME", "sourceDisk": ..., ... }
Créer un cluster avec une image personnalisée
créez un cluster avec les nœuds maîtres et les nœuds de calcul qui utilisent une image personnalisée à l'aide de gcloud CLI, l'API Dataproc ou la console Google Cloud.
CLI gcloud
Créez un cluster Dataproc avec une image personnalisée à l'aide de la méthode
Commande dataproc clusters create
avec l'indicateur --image
.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM_IMAGE_URI \ --region=REGION \ ... other flags ...
API REST
Créez un cluster avec une image personnalisée en spécifiant un URI d'image personnalisée dans le champ InstanceGroupConfig.imageUri des objets masterConfig
, workerConfig
et, le cas échéant, secondaryWorkerConfig
inclus dans une requête d'API cluster.create.
Exemple : requête REST pour créer un cluster Dataproc standard (un maître, deux nœuds de calcul) avec une image personnalisée.
POST /v1/projects/PROJECT_ID/regions/REGION/clusters/ { "clusterName": "CLUSTER_NAME", "config": { "masterConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" }, "workerConfig": { "imageUri": "projects/PROJECT_ID/global/images/CUSTOM_IMAGE_NAME" } } }
Console
- Ouvrir Dataproc Créer un cluster . Le panneau Configurer le cluster est sélectionné.
- Dans la section Gestion des versions, cliquez sur Modifier. Sélectionnez l'onglet Image personnalisée, puis choisissez l'image personnalisée à utiliser. pour votre cluster Dataproc, puis cliquez sur Sélectionner. Les VM du cluster seront provisionnées avec l'image personnalisée sélectionnée.
Remplacer les propriétés de cluster Dataproc par une image personnalisée
Vous pouvez utiliser des images personnalisées pour écraser Propriétés du cluster définies lors de la création du cluster. Si vous créez un cluster avec une image personnalisée et que l'opération de création de cluster définit des propriétés avec des valeurs différentes de celles définies par votre image personnalisée, les valeurs de propriété définies par votre image personnalisée sont prioritaires.
Pour définir les propriétés de cluster avec votre image personnalisée :
Dans votre script de personnalisation d'image personnalisée, créez un fichier
dataproc.custom.properties
dans/etc/google-dataproc
, puis définissez les valeurs de propriété du cluster dans le fichier.- Exemple de fichier
dataproc.custom.properties
:
dataproc.conscrypt.provider.enable=VALUE dataproc.logging.stackdriver.enable=VALUE
- Exemple d'extrait de fichier de création de script de personnalisation pour remplacer deux propriétés de cluster :
cat <<EOF >/etc/google-dataproc/dataproc.custom.properties dataproc.conscrypt.provider.enable=true dataproc.logging.stackdriver.enable=false EOF
- Exemple de fichier
Créer un cluster avec une image personnalisée arrivée à expiration
Par défaut, les images personnalisées expirent 365 jours après leur date de création. Pour créer un cluster utilisant une image personnalisée arrivée à expiration, procédez comme suit :
Essayer de créer un cluster Dataproc avec un domaine personnalisé expiré ou une image personnalisée qui expirera dans 10 jours.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --region=REGION \ ... other flags ...
La gcloud CLI génère un message d'erreur incluant le paramètre nom de la propriété du cluster
dataproc:dataproc.custom.image.expiration.token
et la valeur du jeton.
dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE
Copiez la chaîne TOKEN_VALUE dans le presse-papiers.
Utilisez la CLI gcloud pour recréer le cluster Dataproc, en ajoutant le TOKEN_VALUE copié en tant que propriété de cluster.
gcloud dataproc clusters create CLUSTER-NAME \ --image=CUSTOM-IMAGE-NAME \ --properties=dataproc:dataproc.custom.image.expiration.token=TOKEN_VALUE \ --region=REGION \ ... other flags ...
La création du cluster avec l'image personnalisée devrait réussir.