Les applications Terraform Kubernetes dans Google Cloud Marketplace permettent à vos clients d'utiliser Terraform pour déployer vos applications conteneurisées sur Google Kubernetes Engine. Vos utilisateurs ne sont pas facturés pour leur utilisation de vos applications Terraform Kubernetes, mais ils le sont pour leur utilisation des Google Cloud ressources. Vous pouvez proposer des applications Terraform Kubernetes publiquement à tous les utilisateurs de Cloud Marketplace ou de manière privée à l'aide d'offres privées.
Les applications Terraform Kubernetes que vous proposez via Cloud Marketplace définissent leurs configurations à l'aide de charts Helm, que vous hébergez dans Artifact Registry. Une fois cette configuration effectuée, vous intégrez votre application à Cloud Marketplace via Producer Portal.
Avant de commencer
- Si vous n'avez jamais proposé de logiciel sur Cloud Marketplace, inscrivez-vous pour devenir un fournisseur.
- Pour votre première fiche (et toutes les suivantes), vous devez remplir le formulaire de validation de l'intégration à Cloud Marketplace.
- Pour accéder à Producer Portal, remplissez le formulaire d'informations sur le projet Cloud Marketplace fourni par l'équipe Cloud Marketplace.
- Consultez les recommandations et les restrictions concernant la conformité Open Source.
Présentation de l'intégration d'une application Terraform Kubernetes
Proposer une application Terraform Kubernetes via Cloud Marketplace implique les étapes suivantes :
Préparez votre application Terraform Kubernetes pour Cloud Marketplace. Cela inclut la configuration d'Artifact Registry et le transfert des images de votre application vers celui-ci.
Ajoutez des informations sur les prix de votre application dans Producer Portal.
Configurez le déploiement de votre application dans Producer Portal, y compris son module Terraform, son chart Helm et ses images de conteneur.
Ajoutez un libellé pour suivre la consommation associée de ressources Google Cloud par votre application.
Publiez votre application sur Cloud Marketplace. Lorsque vous intégrez votre application, vous envoyez différentes parties de celle-ci pour examen. L'équipe Cloud Marketplace examine chaque envoi et collabore avec vous pour résoudre les problèmes avant de l'approuver. Une fois tous vos envois approuvés, vous pouvez publier et lancer le produit en quelques minutes.
Exigences spécifiques aux produits
Tous les produits que vous proposez via Cloud Marketplace doivent respecter les exigences concernant les fiches Cloud Marketplace.
Votre application Terraform Kubernetes doit répondre aux exigences supplémentaires suivantes :
- Votre application doit s'exécuter sur des nœuds GKE qui utilisent des processeurs x86.
- Tous les charts Helm et toutes les images de conteneur de votre application doivent être importés dans votre registre Artifact Registry, dans le même dépôt et le même projet que ceux que vous utilisez pour votre application Terraform Kubernetes.
- Votre registre Artifact Registry doit inclure un chart Helm.
- Vous devez ajouter un libellé aux charts Helm de votre application pour suivre la consommation associée de vos ressources. Google Cloud Pour en savoir plus, consultez Suivre la consommation associée de vos applications Kubernetes avec des libellés.
- Votre module Terraform doit être hébergé sous forme de fichier ZIP dans un bucket Cloud Storage situé dans le même projet que celui que vous utilisez pour votre application Terraform Kubernetes.
- Vous devez activer la gestion des versions pour le bucket Cloud Storage que vous utilisez pour héberger votre module Terraform.
- Vous devez inclure un guide de l'utilisateur expliquant la procédure de déploiement à partir de la ligne de commande, la configuration et l'utilisation de l'application. Pour en savoir plus, consultez Exigences relatives au guide utilisateur dans ce document.
- Pour protéger les utilisateurs contre les API instables, n'utilisez que les ressources bêta ou Kubernetes généralement disponibles.
Exigences concernant les images de votre application
Les images de votre application doivent répondre aux exigences suivantes :
- Toutes les images de votre application doivent comporter le tag du canal de publication et de la version actuelle. Par exemple, si vous publiez la version
2.0.5sur le2.0canal de publication, toutes les images correspondantes doivent comporter les tags2.0et2.0.5. Pour en savoir plus, consultez Organiser vos versions. Toutes les images de votre application doivent contenir l'annotation suivante dans leur fichier manifeste d'image :
com.googleapis.cloudmarketplace.product.service.name=services/SERVICE_NAMERemplacez SERVICE_NAME par le nom de votre service (par exemple,
example.endpoints.example-project.cloud.goog). Vous trouverez le nom du service de votre produit sur la page Présentation de Producer Portal, dans la colonne Nom du service. Pour en savoir plus sur les annotations, consultez la documentation sur les annotations de l'Open Container Initiative sur GitHub.
Exigences concernant votre dépôt Artifact Registry
Le chart Helm et les images de conteneur de votre application doivent faire partie d'un seul dépôt Artifact Registry.
Par exemple, si votre dépôt Artifact Registry est us-docker.pkg.dev/exampleproject, le chart Helm et les images de conteneur de votre application doivent ressembler à ce qui suit :
us-docker.pkg.dev/exampleproject/exampleapp/chartus-docker.pkg.dev/exampleproject/exampleapp/image1us-docker.pkg.dev/exampleproject/exampleapp/image2
Exigences concernant le module Terraform
Les clients utilisent le module Terraform pour déployer votre produit à partir de Cloud Marketplace via Infrastructure Manager. Le module Terraform empaquète la configuration Kubernetes de votre application.
Utilisez l' exemple de module comme point de départ et suivez le guide du partenaire pour créer un module Terraform compatible avec votre application.
Paramètres transmis à votre application
Votre module Terraform doit déclarer les paramètres qui doivent être collectés auprès des clients lorsqu'ils sélectionnent votre application. Ces paramètres sont ensuite fournis au conteneur de chart Helm lorsque les utilisateurs déploient l'application.
Pour configurer ces paramètres, votre module Terraform doit inclure un
schema.yaml fichier.
Pour savoir comment créer un schema.yaml, consultez le
guide de création d'un schéma
sur GitHub.
Demandes de cluster GPU
Si votre application a des besoins spécifiques ou élevés en matière de GPU, vous pouvez spécifier le type et le nombre de GPU dans le cluster à l'aide de votre schéma de déploiement. Si vous spécifiez vos besoins en GPU, vous désactivez la création assistée de cluster.
Votre application peut demander un GPU Nvidia générique ou une plate-forme Nvidia spécifique.
Exigences concernant le guide utilisateur de votre application
Le guide utilisateur de votre application doit inclure les informations suivantes :
- Présentation : présentation générale de votre application, couvrant les fonctions de base et les options de configuration. Cette section doit également contenir un lien vers votre application publiée sur Cloud Marketplace.
- Configuration unique : inclut les étapes de configuration de Helm et d'installation
de l'application
CustomResourceDefinition(CRD) afin que votre cluster puisse gérer la ressource Application. - Installation : inclut les éléments suivants :
- Commandes permettant de déployer votre application
- Paramètres de transfert disponibles dans la configuration de l'interface utilisateur
- Épinglage des références d'images à des condensés immuables
- Informations sur les champs de saisie personnalisés que vous avez ajoutés à votre module Terraform, le cas échéant. Consultez les instructions pour ajouter des champs de saisie à votre module Terraform
- Utilisation de base : guides pour les tâches suivantes :
- Modification des noms d'utilisateur et des mots de passe
- Connexion à une console d'administration, le cas échéant
- Connexion d'un outil client et exécution d'un exemple de commande, le cas échéant
- Activation de l'entrée et installation des certificats TLS, le cas échéant
- Sauvegarde et restauration : informations sur la sauvegarde de l'état de l'application et la restauration de l'état de l'application à partir d'une sauvegarde.
- Mises à jour des images : informations sur la mise à jour des images d'application pour les correctifs ou les mises à jour mineures.
- Scaling : informations sur le scaling de l'application, le cas échéant.
- Suppression : guides pour supprimer l'application et nettoyer les ressources qui pourraient rester, telles que PersistentVolumeClaims.
Modèles de tarification pour les applications Terraform Kubernetes
Vous pouvez choisir l'un des modèles de tarification suivants pour votre application :
- Sans frais : les clients ne paient que les Google Cloud ressources qu'ils utilisent.
- En fonction de l'utilisation : les clients paient votre application en fonction des mesures, appelées métriques, que vous choisissez (le nombre de conteneurs ou la durée de stockage, par exemple). Si vous choisissez un modèle de tarification en fonction de l'utilisation, votre application doit mesurer et transmettre les informations d'utilisation à Google.
Une fois que vous avez publié une application Terraform Kubernetes avec une tarification en fonction de l'utilisation, vous pouvez modifier les prix de votre application. Pour modifier les prix de votre application, vous devez attendre au moins 30 jours après sa publication ou la dernière modification de ses prix.
Tarification en fonction de l'utilisation
Google Cloud Marketplace utilise des annotations de pod Kubernetes pour suivre l'utilisation et facturer les clients pour leurs déploiements de vos applications Cloud Marketplace. Cloud Marketplace suit la facturation et la mesure au niveau du pod, et les agrège au niveau de la fiche produit.
Si vous déployez plusieurs pods sur la même machine (vCPU, GPU, TPU ou mémoire), le système attribue l'utilisation cumulative de tous les pods déployés sur la machine à chacun des pods. Par exemple, si vous avez trois pods qui partagent le même GPU, Cloud Marketplace compte cela comme trois GPU.
Cloud Marketplace traite les différentes références GKE au sein de chaque famille de références de vCPU, de TPU, de GPU ou de mémoire comme identiques. Par exemple, si le GPU est configuré comme métrique, le prix configuré s'applique, que votre client utilise GKE Autopilot T4 GPU Premium, GKE Autopilot L4GKE Autopilot H100 GPU Premium, GKE Autopilot A100 40 GiB GPU, GKE Autopilot A100 80 GiB GPU ou GKE Autopilot H100 GPU Premium.
Nous vous recommandons vivement d'intégrer une logique métier pour garantir une facturation précise des clients dans vos applications Cloud Marketplace. Pour atténuer l'impact de la suppression accidentelle des annotations de libellé, nous vous recommandons de concevoir votre application de manière à vérifier régulièrement que les annotations de libellé sont toujours présentes. Si une annotation est manquante, votre application doit limiter ses fonctionnalités jusqu'à ce que le libellé soit rétabli. Pour obtenir un exemple en Python, consultez l'exemple suivant :
pod_name = os.environ.get("HOSTNAME")
namespace = open(
"/var/run/secrets/kubernetes.io/serviceaccount/namespace"
).read()
# Load in-cluster config
config.load_incluster_config()
v1 = client.CoreV1Api()
# Get the Pod object
pod = v1.read_namespaced_pod(name=pod_name, namespace=namespace)
annotations = pod.metadata.annotations
if annotations:
print("Annotations for this pod:")
for key, value in annotations.items():
print(f" {key}: {value}")
else:
print("No annotations found on this pod.")
Étape suivante
- Consultez les exigences concernant les fiches Cloud Marketplace.
- Préparez votre application Terraform Kubernetes pour Cloud Marketplace.
- Ajoutez votre application Terraform Kubernetes à Cloud Marketplace à l'aide de Producer Portal.