1. Présentation
Vous pouvez utiliser la CLI Antigravity dans vos environnements locaux et virtuels. Antigravity vous permet d'exploiter la puissance de Gemini directement dans votre terminal. D'un point de vue réseau, lorsque vous utilisez l'interface de ligne de commande Antigravity, elle effectue un appel à l'API Gemini via l'adresse IP de l'API, qui est accessible publiquement.
Que se passe-t-il si vous souhaitez utiliser Antigravity CLI sur une machine Google Compute Engine, mais que vous voulez vous connecter à l'API de manière privée ? Dans cet atelier de programmation, vous allez découvrir comment configurer un point de terminaison Private Service Connect pour les API Google, afin de router le trafic vers une adresse IP interne que vous spécifiez.
Les configurations seront une combinaison de Terraform, gcloud et de la console.
Dans cet atelier, vous allez apprendre à effectuer la tâche suivante :
- Configurer une instance de VM et Cloud NAT
- Installer Antigravity CLI et s'authentifier
- Configurer un point de terminaison Private Service Connect pour se connecter à Googleapis
- Vérifier le chemin de connectivité vers *.googleapis
- Configurer des entrées DNS manuelles
Dans cet atelier, vous allez créer le modèle suivant.
Figure 1.

2. Configurer les services Google Cloud
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)



- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pourrez toujours le modifier.
- L'ID du projet est unique parmi tous les projets Google Cloud et non modifiable une fois défini. La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID de votre projet (généralement identifié par
PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet. - Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300 $.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Dans la console Google Cloud, cliquez sur l'icône Cloud Shell dans la barre d'outils supérieure :

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez effectuer toutes les tâches de cet atelier de programmation dans un navigateur. Vous n'avez rien à installer.
3. Configurer l'environnement avec Terraform
Nous allons créer un VPC personnalisé avec des règles de pare-feu et un sous-réseau. Ouvrez la console Cloud et sélectionnez le projet que vous allez utiliser.
- Ouvrez Cloud Shell en haut à droite de la console. Assurez-vous que le bon ID de projet s'affiche dans Cloud Shell, puis confirmez les éventuelles invites pour autoriser l'accès.

- Créez un dossier appelé "terraform-build" et accédez-y.
mkdir terraform-build && cd terraform-build
- Créez un fichier main.tf et variable.tf.
touch main.tf variable.tf
- Passez à la vue Éditeur Cloud Shell. Sélectionnez éditeur et assurez-vous d'autoriser toutes les invites nécessaires pour que l'interface puisse se charger.
- Une fois le fichier chargé, accédez à File > Open Folder (Fichier > Ouvrir le dossier), puis accédez à /home/your-user-name/terraform-build et sélectionnez OK pour ouvrir le dossier dans l'éditeur.

- Sélectionnez le fichier variable.tf et ajoutez-y le code suivant. Remplacez le texte
your-project-id-herepar l'ID de votre projet entre guillemets.
variable "project_id" {
type = string
default = "your-project-id-here"
}
variable "network_id" {
type = string
default = "antigravity-vpc-net"
}
- Ouvrez ensuite le fichier main.tf. Nous allons ajouter du code Terraform pour effectuer différentes actions, comme expliqué ci-dessous.
Activer les API |
|
Créer un VPC appelé python-net |
|
Ajouter un sous-réseau |
|
Ajouter deux règles de pare-feu |
|
- Copiez et collez le texte suivant dans le fichier main .tf.
resource "google_project_service" "default" {
for_each = toset([
"dns.googleapis.com",
"aiplatform.googleapis.com",
"servicedirectory.googleapis.com"
])
service = each.value
disable_on_destroy = false
}
resource "google_compute_network" "default" {
project = var.project_id
name = var.network_id
auto_create_subnetworks = false
mtu = 1460
routing_mode = "GLOBAL"
}
resource "google_compute_subnetwork" "default" {
name = "vm1-subnet"
ip_cidr_range = "192.168.100.0/24"
region = "us-east1"
stack_type = "IPV4_ONLY"
network = google_compute_network.default.id
}
resource "google_compute_firewall" "allow_icmp" {
name = "allow-icmp-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "icmp"
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-icmp"]
}
resource "google_compute_firewall" "allow_ssh" {
name = "allow-ssh-${google_compute_network.default.name}"
network = google_compute_network.default.id
project = var.project_id
allow {
protocol = "tcp"
ports = ["22"]
}
source_ranges = ["0.0.0.0/0"]
target_tags = ["allow-ssh"]
}
- Revenez au terminal Cloud Shell, assurez-vous d'être dans le répertoire terraform-build
cd terraform-build, puis exécutez les commandes suivantes :
terraform init
Initialise le répertoire de travail. Cette étape télécharge les fournisseurs requis pour la configuration donnée.
terraform plan
Génère un plan d'exécution, qui indique les actions que Terraform effectuera pour déployer votre infrastructure.
- Pour créer les ressources, exécutez la commande
terraform applyet saisissezyespour l'exécuter.
4. Tâche 2 : Créer une passerelle NAT et des VM avec Terraform
Nous devons accorder un accès externe sortant à Internet. Créons donc une passerelle Cloud NAT et associons-la.
- Ouvrez Cloud Shell, accédez au dossier terraform-build et créez les fichiers suivants (trois fichiers au total). Nous les modifierons plus tard.
touch nat-vm.tf psc.tf dns.tf
- Passez à la vue Éditeur Cloud Shell, sélectionnez le fichier nat-vm.tf, puis ajoutez le code Terraform suivant. Cela créera une passerelle NAT et deux VM.
Terraform nat-vm.tf
resource "google_compute_router" "default" {
name = "outbound-nat"
region = "us-east1"
network = google_compute_network.default.id
bgp {
asn = 64514
}
}
resource "google_compute_router_nat" "default" {
name = "outbound-gw"
router = google_compute_router.default.name
region = google_compute_router.default.region
nat_ip_allocate_option = "AUTO_ONLY"
source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
log_config {
enable = true
filter = "ERRORS_ONLY"
}
}
resource "google_compute_instance" "vm1" {
name = "cli-vm"
zone = "us-east1-b"
machine_type = "n2-standard-2"
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
network_interface {
subnetwork = google_compute_subnetwork.default.id
stack_type = "IPV4_ONLY"
}
tags = ["allow-ssh", "allow-icmp"]
metadata_startup_script = <<-EOF
sudo apt-get update
EOF
}
resource "google_compute_instance" "vm2" {
name = "monitor-vm"
zone = "us-east1-b"
machine_type = "n2-standard-2"
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
network_interface {
subnetwork = google_compute_subnetwork.default.id
stack_type = "IPV4_ONLY"
}
tags = ["allow-ssh", "allow-icmp"]
metadata_startup_script = <<-EOF
sudo apt-get update
sudo apt-get install python3 python3-dev python3-venv -y
sudo apt-get install tcpdump dnsutils -y
EOF
}
- Passez au terminal Cloud Shell, assurez-vous d'être dans le dossier terraform-build, puis exécutez
terraform plan. Vous verrez que quatre éléments seront ajoutés. Ensuite, exécutezterraform applyet saisissezyespour créer la passerelle NAT et deux VM.
5. Tâche 3 : Configurer et tester les VM de l'interface de ligne de commande
- Accédez à "Instances de VM". Sélectionnez la VM commençant par cli-vm. Sélectionnez SSH.
- Une fois que vous avez établi une connexion SSH, vous devriez avoir accès à la VM. Créons un dossier pour exécuter Gemini CLI.
mkdir antigravitycli && cd antigravitycli
- Pour installer Antigravity CLI, utilisez la commande suivante :
curl -fsSL https://antigravity.google/cli/install.sh | bash && source ~/.bashrc
Vérifier la version
agy --version
- Connectons-nous et authentifions-nous pour effectuer des tests plus tard.
agy
- Sélectionnez l'option 1
Google OAuth. Maintenant, authentifions-nous.
- Copiez ensuite l'URL qui commence par https://, ouvrez un nouvel onglet dans la fenêtre du navigateur de l'atelier et collez l'URL. Acceptez les invites.

- Lorsque le message suivant s'affiche, sélectionnez "Copier dans le presse-papiers", revenez à la session cli-vm de la VM, puis collez le code copié dans l'invite Saisissez le code d'autorisation et appuyez sur Entrée pour vous authentifier.

- Revenez à la session de la VM cli-vm, puis collez le code que vous avez copié à l'invite Enter authorization code: (Saisissez le code d'autorisation) et appuyez sur Entrée pour vous authentifier.

- L'écran permettant de personnaliser et d'accepter le contrat, puis d'accéder à votre répertoire personnel devrait s'afficher. Sélectionnez les options appropriées pour terminer.


- Une fois cette étape terminée, vous pouvez commencer à utiliser l'interface de ligne de commande Antigravity.

Surveiller le trafic vers Gemini via la VM de surveillance
- Accédez à "Instances de VM". Sélectionnez la VM commençant par monitor-vm. Sélectionnez SSH.
- Une fois que vous vous êtes connecté en SSH à monitor-vm, vous devriez avoir accès
- Utilisons la commande
digpour tester le chemin de connexion à l'API Gemini. Nous allons utiliser le
dig us-east1-aiplatform.googleapis.com
Le résultat doit ressembler à ceci (l'adresse sera différente). Notez que le chemin d'accès se fait via des adresses IP publiques, car l'API est une API publique.
NE COPIEZ PAS
; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> us-east1-aiplatform.googleapis.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58905 ;; flags: qr rd ra; QUERY: 1, ANSWER: 14, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;us-east1-aiplatform.googleapis.com. IN A ;; ANSWER SECTION: us-east1-aiplatform.googleapis.com. 300 IN A 216.239.38.223 us-east1-aiplatform.googleapis.com. 300 IN A 216.239.34.223 us-east1-aiplatform.googleapis.com. 300 IN A 216.239.36.223 us-east1-aiplatform.googleapis.com. 300 IN A 216.239.32.223
- Effectuons maintenant un test
pingrapide pour voir si nous pouvons nous connecter à l'API Gemini. Cette commande utilisera quatre pings pour us-east1-aiplatform.googleapis.com. Nous recevrons ainsi une réponse de l'adresse publique de l'API.
ping -c 4 us-east1-aiplatform.googleapis.com
- Nous reviendrons tester cette VM plus tard. Fermez la session SSH et poursuivons.
6. Tâche 4 : Créer le point de terminaison PSC vers googleapis avec Terraform
Pour activer la connectivité privée à notre point de terminaison de l'API Vertex, nous allons créer un point de terminaison Private Service Connect pour les API Google. Cela nous permettra d'utiliser une adresse IP privée que nous attribuons pour acheminer le trafic vers les Google APIs dont nous avons besoin, en l'occurrence Vertex.
- Ouvrez Cloud Shell en mode Éditeur si ce n'est pas déjà fait. Nous allons créer les éléments suivants :
- Créez une adresse IP pour le point de terminaison PSC 10.10.100.250 (
resource "google_compute_global_address" "default") - Créer un point de terminaison PSC pour les API Google (
resource "google_compute_global_forwarding_rule" "default")
Ouvrez le fichier psc.tf dans le dossier terraform-build. Ajoutez le code suivant au fichier.
Terraform psc.tf
resource "google_compute_global_address" "default" {
name = "gemini-ip"
purpose = "PRIVATE_SERVICE_CONNECT"
network = google_compute_network.default.id
address_type = "INTERNAL"
address = "10.10.100.250"
}
resource "google_compute_global_forwarding_rule" "default" {
name = "pscgemini"
target = "all-apis"
network = google_compute_network.default.id
ip_address = google_compute_global_address.default.id
load_balancing_scheme = ""
service_directory_registrations {
namespace = "googleapis"
service_directory_region = "us-east1"
}
}
- Passez au terminal Cloud Shell et assurez-vous d'être dans le dossier
terraform-build. Exécutez ensuiteterraform init. Vous verrez que deux éléments seront ajoutés.
Exécutez ensuiteterraform applyet saisissezyespour créer le point de terminaison IP et PSC des API Google.terraform plan - Vérifier l'existence du point de terminaison
gcloud compute addresses list --filter="name=( 'gemini-ip' ...)"
gcloud compute forwarding-rules describe pscgemini --global
7. Tâche 5 : Créer une entrée DNS manuelle vers googleapis avec Terraform
Vous pouvez créer une entrée DNS manuelle pour pointer vers le point de terminaison PSC à l'aide du DNS privé. Cela affecterait tous les réseaux que vous lui attribuez.
- Accédez à "Services réseau", puis sélectionnez "Cloud DNS".
- Dans les zones, vous devriez voir une zone créée automatiquement pour Private Service Connect pour les API Google, avec le type de zone "Annuaire de services". Vous pouvez l'utiliser pour vous connecter au point de terminaison PSC au format **SERVICE-ENDPOINT.p.googleapis.com. Exemple :
aiplatform-pscgemini.p.googleapis.com - Dans ce cas, nous souhaitons créer manuellement une entrée DNS privée. La configuration sera la suivante :
- Créez une zone DNS privée nommée "googleapis-private" pour "googleapis.com" et limitez-la au réseau "antigravity-vpc-net".
- Ajoutez un enregistrement A pour mapper "googleapis.com" à l'adresse IP "10.10.100.250".
- Ajoutez un enregistrement CNAME pour rediriger tous les sous-domaines de "googleapis.com" (par exemple, www.googleapis.com) vers "googleapis.com".
- Ouvrez Cloud Shell en mode Éditeur si ce n'est pas déjà fait. Ouvrez le fichier dns.tf dans le dossier terraform-build. Ajoutez le code suivant au fichier.
Terraform dns.tf
resource "google_dns_managed_zone" "private_zone" {
name = "googleapis-private"
dns_name = "googleapis.com."
visibility = "private"
project = var.project_id
private_visibility_config {
networks {
network_url = google_compute_network.default.id
}
}
}
resource "google_dns_record_set" "a_record" {
name = "googleapis.com."
type = "A"
ttl = 300
managed_zone = google_dns_managed_zone.private_zone.name
project = var.project_id
rrdatas = ["10.10.100.250"]
}
resource "google_dns_record_set" "cname_record" {
name = "*.googleapis.com."
type = "CNAME"
ttl = 300
managed_zone = google_dns_managed_zone.private_zone.name
project = var.project_id
rrdatas = ["googleapis.com."]
}
- Passez au terminal Cloud Shell et assurez-vous d'être dans le dossier
terraform-build. Exécutez ensuiteterraform planpour afficher les éléments qui seront ajoutés,
puis exécutezterraform applyet saisissezyespour créer l'entrée DNS privée. - Vous devriez voir une configuration avec un enregistrement A et un CNAME comme celui-ci :

- Nous vérifions ensuite la connectivité avec ces modifications sur monitor-vm.
8. Tâche 7 : Vérifier la connectivité du point de terminaison via l'adresse IP
Connectons-nous à Gemini à l'aide du point de terminaison privé.
- Accédez à l'instance de VM monitor-vm. Sélectionnez SSH, puis connectez-vous en SSH à la VM.
- Vérifiez le chemin de connectivité vers us-east1-aiplatform.googleapis.com à l'aide de la commande
ping. Cela ping l'adresse IP dans le DNS privé, enregistrement A pour googleapis. Cette adresse IP est un point de terminaison PSC et vos pings échoueront.
ping -c 2 us-east1-aiplatform.googleapis.com
- Vérifiez le chemin de connectivité vers us-east1-aiplatform.googleapis.com à l'aide de la commande
dig. Il doit s'agir de l'adresse IP du point de terminaison PSC (10.10.100.250).
dig us-east1-aiplatform.googleapis.com

- Une fois l'opération terminée, vous pouvez fermer la session SSH monitor-vm.
- Accédez à l'instance de VM cli-vm. Sélectionnez SSH, puis connectez-vous en SSH à la VM.
- Nous pouvons maintenant exécuter un TCP dump sur la cli-vm. Nous devons ouvrir deux sessions SSH sur la même VM. Une session exécutera la commande tcpdump, tandis que l'autre utilisera Gemini CLI.
- Saisissez la commande suivante pour afficher la connectivité dans un tcpdump.
sudo tcpdump -i any port 53 -n or host us-east1-aiplatform.googleapis.com
- Connectez-vous en SSH à la session suivante sur cli-vm.
- Accédez au dossier antigravitycli
cd antigravitycli. - Activez la CLI Antigravity en saisissant
agy. - Posez la question suivante :
what color is the sky?pour générer un appel à l'API Gemini.

- Appuyez sur Entrée pour exécuter la requête et afficher le résultat.
- Rebasculez vers la première session sur cli-vm. Le résultat de tcpdump devrait s'afficher. Vous remarquerez que l'adresse IP de la VM utilise l'adresse IP du point de terminaison PSC pour se connecter à l'API Gemini.

Fermer toutes les sessions SSH aux instances de VM
9. Effectuer un nettoyage
- Accédez à Cloud Shell, assurez-vous d'être dans le répertoire terraform-build
cd terraform-build, puis exécutez la commande suivanteterraform destroyet saisissezyes. Toutes les ressources que vous avez créées dans votre projet avec Terraform seront supprimées.
10. Félicitations
Félicitations ! Vous vous êtes connecté à l'interface de ligne de commande Antigravity à l'aide de l'adresse de l'API publique et de manière privée à l'aide du point de terminaison Private Service Connect pour les API Google. Cette fonctionnalité peut étendre la connectivité des API privées à votre environnement sur site/autre cloud connecté via (Interconnect, Cross-Cloud Interconnect et VPC).
Étapes suivantes et informations supplémentaires
Pour en savoir plus, consultez la documentation sur la CLI Antigravity.
Atelier suivant
Continuez sur votre lancée avec Google Cloud et découvrez ces autres ateliers Google Cloud :