1. Tổng quan
Bạn có thể sử dụng Gemini CLI trong cả môi trường cục bộ và môi trường ảo. Gemini CLI là một tác nhân AI mã nguồn mở, mang sức mạnh của Gemini trực tiếp vào thiết bị đầu cuối của bạn. Về mặt kết nối mạng, khi bạn sử dụng Gemini CLI, công cụ này sẽ gọi đến Gemini API thông qua địa chỉ IP API có thể truy cập công khai.
Vậy điều gì sẽ xảy ra nếu bạn muốn sử dụng Gemini CLI trên một máy Google Compute Engine nhưng bạn muốn kết nối riêng tư với API? Trong lớp học lập trình này, bạn sẽ thấy cách định cấu hình điểm cuối Private Service Connect cho Google API để định tuyến lưu lượng truy cập đến một địa chỉ IP nội bộ mà bạn chỉ định.
Các cấu hình sẽ là sự kết hợp giữa Terraform, gcloud và bảng điều khiển.
Trong bài thực hành này, bạn sẽ tìm hiểu cách thực hiện nhiệm vụ sau:
- Thiết lập phiên bản máy ảo và Cloud NAT
- Cài đặt Gemini CLI và xác thực
- Định cấu hình điểm cuối Private Service Connect để kết nối với Googleapis
- Xác minh đường dẫn kết nối đến *.googleais
- Định cấu hình các mục nhập DNS theo cách thủ công
Trong lớp học lập trình này, bạn sẽ tạo mẫu sau.
Hình 1.

2. Thiết lập các dịch vụ của Google Cloud
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị cho những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là giá trị duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án. - Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Trên Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nền tảng này cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.
3. Nhiệm vụ 1. Thiết lập môi trường bằng terraform
Chúng ta sẽ tạo một VPC tuỳ chỉnh có các quy tắc về tường lửa và mạng con. Mở Cloud Console rồi chọn dự án mà bạn sẽ sử dụng.
- Mở Cloud Shell ở trên cùng bên phải của bảng điều khiển, đảm bảo bạn thấy mã dự án chính xác trong Cloud Shell, xác nhận mọi lời nhắc cho phép truy cập.

- Tạo thư mục có tên là terraform-build và di chuyển đến thư mục đó
mkdir terraform-build && cd terraform-build
- Tạo tệp main.tf và variable.tf.
touch main.tf variable.tf
- Chuyển sang chế độ xem trình chỉnh sửa Cloud Shell. Chọn trình chỉnh sửa, đảm bảo bạn cho phép mọi lời nhắc cần thiết để giao diện có thể tải.
- Sau khi tải, hãy chuyển đến File > Open Folder (Tệp > Mở thư mục) rồi chuyển đến /home/your-user-name/terraform-build và chọn Ok (Được) để mở thư mục trong trình chỉnh sửa.

- Chọn tệp variable.tf rồi thêm nội dung sau. Thay thế văn bản
your-project-id-herebằng mã dự án thực tế của bạn trong dấu ngoặc kép
variable "project_id" {
type = string
default = "your-project-id-here"
}
variable "network_id" {
type = string
default = "gemini-vpc-net"
}
- Tiếp theo, hãy mở tệp main.tf. Chúng ta sẽ thêm một số mã terraform để thực hiện nhiều thao tác như giải thích bên dưới.
Bật API |
|
Tạo VPC có tên là python-net |
|
Thêm mạng con |
|
Thêm 2 quy tắc tường lửa |
|
- Sao chép và dán nội dung sau vào tệp 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"]
}
- Chuyển về cửa sổ dòng lệnh Cloud Shell, đảm bảo bạn đang ở trong thư mục terraform-build
cd terraform-buildrồi chạy các lệnh sau
terraform init
Khởi chạy thư mục đang hoạt động. Bước này sẽ tải các nhà cung cấp cần thiết cho cấu hình đã cho xuống.
terraform plan
Tạo một kế hoạch thực thi, cho biết những hành động mà Terraform sẽ thực hiện để triển khai cơ sở hạ tầng của bạn.
- Bây giờ, để tạo tài nguyên, hãy chạy lệnh
terraform applyvà nhậpyesđể chạy.
4. Nhiệm vụ 2. Tạo cổng NAT và máy ảo bằng Terraform
Chúng ta cần cấp quyền truy cập từ bên ngoài vào Internet, vì vậy, hãy tạo một cổng Cloud NAT và đính kèm cổng đó.
- Mở Cloud Shell, chuyển đến thư mục terraform-build và tạo các tệp sau (tổng cộng 3 tệp). Chúng ta sẽ chỉnh sửa các thông tin này sau.
touch nat-vm.tf psc.tf dns.tf
- Chuyển sang chế độ xem Cloud Shell editor (Trình chỉnh sửa Cloud Shell), chọn tệp nat-vm.tf rồi thêm đoạn mã Terraform sau. Thao tác này sẽ tạo một cổng NAT và 2 máy ảo.
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
}
- Chuyển sang thiết bị đầu cuối Cloud Shell, đảm bảo bạn đang ở trong thư mục terraform-build và chạy
terraform plan. Thao tác này sẽ cho bạn thấy rằng 4 mục sẽ được thêm vào, sau đó chạyterraform applyvà nhậpyesđể tạo cổng NAT và 2 máy ảo.
5. Nhiệm vụ 3. Định cấu hình máy ảo CLI và kiểm thử
- Chuyển đến phần phiên bản máy ảo. Chọn vm bắt đầu bằng cli-vm. Chọn SSH.
- Sau khi SSH, bạn sẽ có quyền truy cập vào máy ảo. Hãy tạo một thư mục để chạy Gemini CLI
mkdir geminicli && cd geminicli
- Để cài đặt Gemini CLI, chúng ta cần Node.js. Cài đặt Node.js bằng cách làm theo các bước sau
curl -fsSL https://deb.nodesource.com/setup_24.x -o nodesource_setup.sh
Chạy tập lệnh
sudo -E bash nodesource_setup.sh
Cài đặt Node.js
sudo apt-get install -y nodejs
- Hãy thiết lập một số biến để giúp bạn sử dụng lựa chọn xác thực Vertex AI nhằm xác thực biến này để thực hiện một số kiểm thử sau này. Lưu ý: Thay thế
YOUR_PROJECT_IDbằngproject IDthực tế của bạn
cat <<EOF >> ~/.bashrc
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="us-east1"
export GOOGLE_GENAI_USE_VERTEXAI=true
EOF
Tải lại bash
source ~/.bashrc
- Bây giờ, hãy xác thực. Chạy lệnh sau trong máy ảo, nhấn y khi được nhắc.
gcloud auth application-default login
- Tiếp theo, hãy sao chép URL xuất hiện ở phần bắt đầu bằng https://, mở một thẻ mới trong cửa sổ trình duyệt phòng thí nghiệm rồi dán URL đó. Chấp nhận lời nhắc.
- Khi bạn thấy lựa chọn sao chép sau đây, hãy chuyển về phiên cli-vm của máy ảo và đối với Nhập mã uỷ quyền:, hãy dán mã bạn đã sao chép rồi nhấn phím Enter để xác thực.

- Bây giờ, hãy cài đặt Gemini CLI bằng cách chạy lệnh
sudo npm install -g @google/gemini-cli
Sau khi hoàn tất, hãy nhập gemini để khởi chạy giao diện, chọn một giao diện bạn muốn và trong mục Chọn phương thức xác thực, hãy chọn Vertex AI


- Sau khi xác thực, bạn có thể bắt đầu sử dụng Gemini Cli

Theo dõi tuyến lưu lượng truy cập đến Gemini thông qua VM giám sát
- Chuyển đến phần phiên bản máy ảo. Chọn vm bắt đầu bằng monitor-vm. Chọn SSH.
- Sau khi SSH vào monitor-vm, bạn sẽ có quyền truy cập
- Hãy dùng lệnh
digđể kiểm thử đường kết nối đến Gemini API. Chúng ta sẽ sử dụng us-east1-aiplatform.googleapis.com
dig us-east1-aiplatform.googleapis.com
Bạn sẽ thấy nội dung tương tự (địa chỉ sẽ khác). Xin lưu ý rằng đường dẫn này là thông qua địa chỉ IP công khai vì API này là một API công khai.
KHÔNG SAO CHÉP
; <<>> 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 173.194.217.95
us-east1-aiplatform.googleapis.com. 300 IN A 172.217.204.95
us-east1-aiplatform.googleapis.com. 300 IN A 172.217.203.95
us-east1-aiplatform.googleapis.com. 300 IN A 142.250.98.95
us-east1-aiplatform.googleapis.com. 300 IN A 142.251.107.95
us-east1-aiplatform.googleapis.com. 300 IN A 74.125.196.95
us-east1-aiplatform.googleapis.com. 300 IN A 173.194.216.95
us-east1-aiplatform.googleapis.com. 300 IN A 108.177.11.95
us-east1-aiplatform.googleapis.com. 300 IN A 192.178.219.95
us-east1-aiplatform.googleapis.com. 300 IN A 173.194.210.95
us-east1-aiplatform.googleapis.com. 300 IN A 173.194.212.95
us-east1-aiplatform.googleapis.com. 300 IN A 173.194.215.95
us-east1-aiplatform.googleapis.com. 300 IN A 108.177.12.95
us-east1-aiplatform.googleapis.com. 300 IN A 74.125.26.95
- Bây giờ, hãy thực hiện một bài kiểm thử
pingnhanh để xem chúng ta có thể kết nối với Gemini API hay không. Lệnh này sẽ sử dụng 4 lệnh ping đến us-east1-aiplatform.googleapis.com để chúng ta nhận được phản hồi từ địa chỉ công khai của API.
ping -c 4 us-east1-aiplatform.googleapis.com
- Chúng ta sẽ quay lại kiểm thử VM này sau. Đóng phiên SSH và tiếp tục.
6. Nhiệm vụ 4. Tạo điểm cuối PSC cho googleapis bằng Terraform
Để bật chế độ kết nối riêng tư với điểm cuối Vertex API, chúng ta sẽ tạo một điểm cuối Kết nối dịch vụ riêng tư cho các API của Google. Điều này sẽ cho phép chúng ta sử dụng một địa chỉ IP riêng tư mà chúng ta chỉ định để định tuyến lưu lượng truy cập đến các API của Google mà chúng ta cần, trong trường hợp này là Vertex.
- Mở Cloud Shell ở chế độ xem trình chỉnh sửa nếu chưa mở. Chúng ta sẽ tạo những nội dung sau:
- Tạo một IP cho điểm cuối PSC 10.10.100.250 (
resource "google_compute_global_address" "default") - Tạo một điểm cuối PSC cho các API của Google (
resource "google_compute_global_forwarding_rule" "default")
Mở tệp psc.tf trong thư mục terraform-build. Thêm đoạn mã sau vào tệp.
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 = ""
}
- Chuyển sang thiết bị đầu cuối Cloud Shell, đảm bảo bạn đang ở trong thư mục
terraform-build. Sau đó, hãy chạyterraform initSau đó, hãy chạyterraform plan. Thao tác này sẽ cho bạn biết rằng 2 mục sẽ được thêm,
sau đó chạyterraform applyvà nhậpyesđể tạo điểm cuối API IP và PSC của Google. - Xác minh điểm cuối tồn tại
gcloud compute addresses list --filter="name=( 'gemini-ip' ...)"
gcloud compute forwarding-rules describe pscgemini --global
7. Nhiệm vụ 5. Tạo mục DNS thủ công cho googleapis bằng Terraform
Bạn có thể tạo một mục nhập DNS theo cách thủ công để trỏ đến điểm cuối PSC bằng DNS riêng tư. Điều này sẽ ảnh hưởng đến tất cả các mạng mà bạn chỉ định cho chiến dịch đó.
- Chuyển đến mục Dịch vụ mạng rồi chọn Cloud DNS.
- Trong các vùng, bạn sẽ thấy một vùng được tạo tự động cho Private Service Connect cho Google API, với thư mục dịch vụ loại vùng. Bạn có thể dùng thông tin này để kết nối với điểm cuối PSC theo định dạng **SERVICE-ENDPOINT.p.googleapis.com Ví dụ:
aiplatform-pscgemini.p.googleapis.com - Trong trường hợp này, chúng ta muốn tạo một mục DNS riêng theo cách thủ công. Cấu hình sẽ có dạng như sau
- Tạo một vùng DNS riêng tư có tên là "googleapis-private" cho "googleapis.com" và hạn chế vùng này đối với mạng "python-net".
- Thêm một bản ghi A để liên kết "googleapis.com" với địa chỉ IP "10.10.100.250".
- Thêm một bản ghi CNAME để chuyển hướng tất cả miền phụ của "googleapis.com" (ví dụ: www.googleapis.com) đến "googleapis.com".
- Mở Cloud Shell ở chế độ xem trình chỉnh sửa nếu chưa mở. Mở tệp dns.tf trong thư mục terraform-build. Thêm đoạn mã sau vào tệp.
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."]
}
- Chuyển sang thiết bị đầu cuối Cloud Shell, đảm bảo bạn đang ở trong thư mục
terraform-build. Sau đó, hãy chạyterraform plan. Lệnh này sẽ cho bạn biết những mục sẽ được thêm,
Sau đó, hãy chạyterraform applyvà nhậpyesđể tạo mục DNS riêng tư. - Bạn sẽ thấy một chế độ thiết lập có bản ghi A và CNAME như thế này

- Tiếp theo, chúng ta sẽ xác minh khả năng kết nối với những thay đổi này trên monitor-vm
8. Nhiệm vụ 7. Xác minh khả năng kết nối điểm cuối thông qua địa chỉ IP
Hãy kết nối bằng điểm cuối riêng tư để kết nối với Gemini.
- Chuyển đến phiên bản máy ảo monitor-vm. Chọn SSH và SSH vào máy ảo
- Kiểm tra đường dẫn kết nối đến us-east1-aiplatform.googleapis.com bằng lệnh
ping. Lệnh này sẽ ping địa chỉ IP trong DNS riêng, bản ghi A cho googleapis. IP này là một điểm cuối PSC và các lệnh ping của bạn sẽ không thành công.
ping -c 2 us-east1-aiplatform.googleapis.com
- Kiểm tra đường kết nối bằng
pingbằng cách sử dụng mục DNS được tạo tự động cho các API của Google PSC bằngaiplatform-pscvertexgemini.p.googleapis.com. Điều này chỉ đến địa chỉ IP của điểm cuối PSC và ping của bạn sẽ không thành công.
ping -c 2 aiplatform-pscgemini.p.googleapis.com
- Kiểm tra đường dẫn kết nối đến us-east1-aiplatform.googleapis.com bằng lệnh
dig. Đây phải là địa chỉ IP của điểm cuối PSC (10.10.100.250).
dig us-east1-aiplatform.googleapis.com

- Sau khi hoàn tất, bạn có thể đóng phiên SSH monitor-vm.
- Giờ đây, chúng ta có thể chạy một bản kết xuất TCP trên cli-vm. Chúng ta cần mở hai phiên SSH cho cùng một máy ảo. Một phiên sẽ chạy lệnh tcpdump, phiên còn lại sẽ sử dụng Gemini CLI.
- SSH vào phiên đầu tiên trên cli-vm
- Nhập lệnh sau để xem khả năng kết nối trong tcpdump
sudo tcpdump -i any port 53 -n or host us-east1-aiplatform.googleapis.com
- Bây giờ, hãy SSH vào phiên tiếp theo trên cli-vm
- Kích hoạt Gemini CLI bằng cách nhập
gemini - Đặt câu hỏi sau: bầu trời có màu gì để tạo một lệnh gọi đến Gemini API

- Nhấn enter để chạy và xem kết quả.
- Chuyển lại sang phiên đầu tiên trên cli-vm. Bạn sẽ thấy kết quả của tcpdump. Bạn sẽ thấy lưu lượng truy cập vào và ra, đồng thời địa chỉ IP của VM đang sử dụng địa chỉ IP điểm cuối PSC để kết nối với gemini API

Đóng tất cả các phiên SSH đến các phiên bản máy ảo
9. Dọn dẹp
- Chuyển đến Cloud Shell, đảm bảo bạn đang ở trong thư mục terraform-build
cd terraform-buildrồi chạy lệnh sauterraform destroyvà nhậpyestất cả tài nguyên bạn đã tạo trong dự án bằng Terraform sẽ bị xoá.
10. Xin chúc mừng
Chúc mừng bạn đã kết nối thành công với Gemini CLI bằng cả địa chỉ API công khai và riêng tư bằng Điểm cuối Kết nối dịch vụ riêng tư cho API của Google. Chức năng này có thể mở rộng khả năng kết nối API riêng tư vào môi trường tại chỗ/môi trường đám mây khác được kết nối thông qua (Interconnect, Cross-Cloud Interconnect và VPC).
Các bước tiếp theo / Tìm hiểu thêm
Bạn có thể đọc thêm về hoạt động kết nối mạng của Vertex AI và xem kho lưu trữ Gemini CLI
Tham gia phòng thí nghiệm tiếp theo
Tiếp tục hành trình khám phá của bạn với Google Cloud và xem các phòng thí nghiệm khác của Google Cloud: