1. بررسی اجمالی
می توانید از Gemini CLI هم در محیط محلی و هم در محیط مجازی خود استفاده کنید. Gemini CLI یک عامل AI منبع باز است که قدرت Gemini را مستقیماً به ترمینال شما می آورد. از نقطه نظر شبکه، وقتی از Gemini CLI استفاده می کنید، از طریق آدرس IP API که برای عموم قابل دسترسی است، با Gemini APi تماس می گیرد.
حال اگر بخواهید از Gemini CLI در ماشین محاسباتی گوگل استفاده کنید اما بخواهید به طور خصوصی به API متصل شوید، چه اتفاقی می افتد؟ در این کد لبهها نحوه پیکربندی Private Service Connect endpoint به Google APIs را خواهید دید تا ترافیک را به یک آدرس IP داخلی که مشخص کردهاید هدایت کنید.
تنظیمات ترکیبی از Terraform، gcloud و کنسول خواهد بود.
در این آزمایشگاه شما یاد خواهید گرفت که چگونه وظایف زیر را انجام دهید:
- نمونه VM و Cloud NAT را تنظیم کنید
- Gemini CLI را نصب کرده و احراز هویت کنید
- نقطه پایانی Private Service Connect را برای اتصال به Googleapis پیکربندی کنید
- مسیر اتصال به *.googleais را تأیید کنید
- ورودی های DNS دستی را پیکربندی کنید
در این آزمایشگاه، شما قصد دارید الگوی زیر را ایجاد کنید.
شکل 1.
2. راه اندازی سرویس های Google Cloud
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.
3. وظیفه 1. راه اندازی محیط با terraform
ما یک VPC سفارشی با قوانین فایروال و زیرشبکه ایجاد خواهیم کرد. کنسول ابری را باز کنید و پروژه مورد استفاده خود را انتخاب کنید.
- Cloud Shell را که در بالای کنسول خود در سمت راست قرار دارد باز کنید، مطمئن شوید که شناسه پروژه صحیح را در Cloud Shell میبینید، هرگونه درخواستی را برای اجازه دسترسی تأیید کنید.
- یک پوشه به نام terraform-build ایجاد کنید و به پوشه بروید
mkdir terraform-build && cd terraform-build
- یک فایل main.tf و variable.tf ایجاد کنید.
touch main.tf variable.tf
- به نمای ویرایشگر Cloud Shell بروید. ویرایشگر را انتخاب کنید، اطمینان حاصل کنید که به هر گونه درخواست ضروری اجازه می دهید تا رابط بارگیری شود.
- پس از بارگیری به مسیر File > Open Folder بروید و به /home/your-user-name/terraform-build بروید و Ok را انتخاب کنید تا پوشه در ویرایشگر باز شود.
- فایل variable.tf را انتخاب کرده و موارد زیر را اضافه کنید. متن
your-project-id-here
را با شناسه پروژه واقعی خود در نقل قول جایگزین کنید
variable "project_id" { type = string default = "your-project-id-here" } variable "network_id" { type = string default = "gemini-vpc-net" }
- سپس فایل main.tf را باز کنید. ما قصد داریم تعدادی کد terraform برای انجام اقدامات مختلف همانطور که در زیر توضیح داده شده است اضافه کنیم.
API ها را فعال کنید | |
VPC به نام python-net ایجاد کنید | |
یک زیر شبکه اضافه کنید | |
دو قانون فایروال اضافه کنید | |
- موارد زیر را کپی کرده و در فایل 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"] }
- به ترمینال Cloud Shell برگردید مطمئن شوید که در دایرکتوری terraform-build
cd terraform-build
هستید و دستورات زیر را اجرا کنید.
terraform init
دایرکتوری کاری را مقدار دهی اولیه می کند. این مرحله ارائه دهندگان مورد نیاز برای پیکربندی داده شده را دانلود می کند.
terraform plan
یک برنامه اجرایی ایجاد می کند که نشان می دهد Terraform چه اقداماتی را برای استقرار زیرساخت شما انجام خواهد داد.
- اکنون برای ایجاد منابع، دستور
terraform apply
اجرا کرده وyes
را تایپ کنید تا اجرا شود.
4. وظیفه 2. ایجاد دروازه NAT و VM با Terraform
ما باید به اینترنت دسترسی خارجی اعطا کنیم، بنابراین اجازه می دهیم یک دروازه NAT Cloud ایجاد کنیم و آن را وصل کنیم.
- Cloud Shell را باز کنید، به پوشه terraform-build بروید و فایل های زیر را ایجاد کنید (در مجموع سه فایل). بعداً اینها را ویرایش خواهیم کرد.
touch nat-vm.tf psc.tf dns.tf
- به نمای ویرایشگر Cloud Shell بروید و فایل nat-vm.tf را انتخاب کنید و کد Terraform زیر را اضافه کنید. این یک دروازه NAT و دو 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
}
- به ترمینال Cloud Shell بروید، مطمئن شوید که در پوشه terraform-build هستید و
terraform plan
اجرا کنید، این به شما نشان می دهد که 4 مورد اضافه می شود، سپسterraform apply
اجرا کنید وyes
را تایپ کنید تا دروازه NAT و دو vm ایجاد شود.
5. وظیفه 3. پیکربندی ماشین های مجازی CLI و تست
- به نمونه های VM بروید. vm را که با cli-vm شروع می شود انتخاب کنید. SSH را انتخاب کنید.
- پس از SSH باید به vm دسترسی داشته باشید، بیایید یک پوشه برای زمانی که Gemini CLI را اجرا می کنیم ایجاد کنیم.
mkdir geminicli && cd geminicli
- برای نصب Gemini CLI به Node js نیاز داریم. Node JS را با استفاده از موارد زیر نصب کنید
curl -fsSL https://deb.nodesource.com/setup_24.x -o nodesource_setup.sh
اسکریپت را اجرا کنید
sudo -E bash nodesource_setup.sh
Node js را نصب کنید
sudo apt-get install -y nodejs
- بیایید چند متغیر تنظیم کنیم که به استفاده از گزینه Vertex AI auth برای احراز هویت برای انجام آزمایشات بعدی کمک می کند. ps
YOUR_PROJECT_ID
باproject ID
واقعی خود جایگزین کنید
cat <<EOF >> ~/.bashrc
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="us-east1"
export GOOGLE_GENAI_USE_VERTEXAI=true
EOF
بارگیری مجدد bash
source ~/.bashrc
- حالا بیایید احراز هویت کنیم. دستور زیر را در ماشین مجازی اجرا کنید، وقتی از شما خواسته شد y را فشار دهید.
gcloud auth application-default login
- سپس url را که در ابتدا با https:// ظاهر میشود کپی کنید، یک تب جدید در پنجره مرورگر آزمایشگاه خود باز کنید و url را جایگذاری کنید. درخواست ها را بپذیرید.
- هنگامی که گزینه کپی زیر را مشاهده کردید، به جلسه vm cli-vm برگردید و کد مجوز را وارد کنید: کدی را که کپی کردهاید جایگذاری کنید و برای احراز هویت اینتر را فشار دهید.
- اکنون اجازه میدهیم Gemini CLI را نصب کنیم و دستور را اجرا کنیم
sudo npm install -g @google/gemini-cli
پس از اتمام تایپ gemini
برای راه اندازی رابط، تم مورد علاقه خود را انتخاب کنید و تحت روش Select Auth Vertex AI
انتخاب کنید.
- پس از احراز هویت، می توانید از Gemini Cli استفاده کنید
مسیر ترافیک به جمینی را از طریق مانیتور vm نظارت کنید
- به نمونه های VM بروید. vm را که با monitor-vm شروع می شود انتخاب کنید. SSH را انتخاب کنید.
- هنگامی که SSH را به monitor-vm وارد کردید، باید دسترسی داشته باشید
- بیایید از دستور
dig
برای آزمایش مسیر اتصال به Gemini API استفاده کنیم. ما از us-east1-aiplatform.googleapis.com استفاده خواهیم کرد
dig us-east1-aiplatform.googleapis.com
شما باید چیزی مشابه ببینید (آدرس متفاوت خواهد بود). توجه داشته باشید که مسیر از طریق آدرس های IP عمومی است زیرا API یک API عمومی است.
کپی نکنید
; <<>> 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
- حالا بیایید یک تست
ping
سریع انجام دهیم تا ببینیم آیا می توانیم به Gemini API متصل شویم. این دستور از 4 پینگ به us-east1-aiplatform.googleapis.com استفاده می کند، بنابراین ما از آدرس عمومی API پاسخ دریافت می کنیم.
ping -c 4 us-east1-aiplatform.googleapis.com
- بعداً برای آزمایش این VM باز خواهیم گشت. جلسه SSH را ببندید و ادامه دهید.
6. وظیفه 4. نقطه پایانی PSC را برای googleapis با Terraform ایجاد کنید
برای فعال کردن اتصال خصوصی به نقطه پایانی Vertex API ما یک نقطه پایانی Private Service Connect برای Google API ایجاد خواهیم کرد. این به ما امکان می دهد از یک آدرس IP خصوصی که برای هدایت ترافیک به API های Google مورد نیاز خود اختصاص می دهیم، در این مورد Vertex استفاده کنیم.
- اگر قبلاً باز نشده است، Cloud Shell را در نمای ویرایشگر باز کنید. ما قصد داریم موارد زیر را ایجاد کنیم:
- یک IP برای نقطه پایانی PSC 10.10.100.250 ایجاد کنید (
resource "google_compute_global_address" "default")
- یک نقطه پایانی PSC برای APIهای Google ایجاد کنید (
resource "google_compute_global_forwarding_rule" "default")
فایل psc.tf را در پوشه terraform-build باز کنید. کد زیر را به فایل اضافه کنید.
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 = ""
}
- به ترمینال Cloud Shell بروید، مطمئن شوید که در پوشه
terraform-build
هستید. سپسterraform init
را اجرا کنید سپسterraform plan
اجرا کنید این به شما نشان می دهد که 2 مورد اضافه خواهد شد.
سپسterraform apply
اجرا کنید وyes
برای ایجاد IP و PSC Google APIs endpoint تایپ کنید. - بررسی وجود نقطه پایانی
gcloud compute addresses list --filter="name=( 'gemini-ip' ...)"
gcloud compute forwarding-rules describe pscgemini --global
7. وظیفه 5. ورود دستی DNS به googleapis با Terraform ایجاد کنید
شما می توانید یک ورودی DNS دستی برای اشاره به نقطه پایانی PSC با استفاده از DNS خصوصی ایجاد کنید. این بر تمام شبکه هایی که به آن اختصاص می دهید تأثیر می گذارد.
- به Network services بروید و Cloud DNS را انتخاب کنید.
- در مناطق باید یک منطقه به طور خودکار ایجاد شده برای Private Service Connect for Google APIs، با فهرست خدمات نوع منطقه را ببینید. این می تواند برای اتصال به نقطه پایانی PSC با فرمت ** SERVICE-ENDPOINT استفاده شود. p.googleapis.com مثال:
aiplatform-pscgemini.p.googleapis.com
- در این مورد می خواهیم به صورت دستی یک ورودی DNS خصوصی ایجاد کنیم. پیکربندی به صورت زیر خواهد بود
- یک منطقه DNS خصوصی به نام "googleapis-private" برای "googleapis.com" ایجاد کنید و آن را به شبکه "python-net" محدود کنید.
- یک رکورد A به نقشه "googleapis.com" به آدرس IP "10.10.100.250" اضافه کنید .
- یک رکورد CNAME اضافه کنید تا همه زیردامنه های "googleapis.com" (به عنوان مثال، www.googleapis.com) به "googleapis.com" هدایت شوند.
- اگر قبلاً باز نشده است، Cloud Shell را در نمای ویرایشگر باز کنید. فایل dns.tf را در پوشه terraform-build باز کنید. کد زیر را به فایل اضافه کنید.
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."]
}
- به ترمینال Cloud Shell بروید، مطمئن شوید که در پوشه
terraform-build
هستید. سپسterraform plan
اجرا کنید که به شما نشان می دهد چه مواردی اضافه می شود،
سپسterraform apply
اجرا کرده وyes
را تایپ کنید تا ورودی DNS خصوصی ایجاد شود. - شما باید تنظیماتی را با یک رکورد A و CNAME مانند این ببینید
- سپس اتصال را با این تغییرات در monitor-vm تأیید می کنیم
8. وظیفه 7. بررسی اتصال نقطه پایانی از طریق آدرس IP
بیایید با استفاده از نقطه پایانی خصوصی برای اتصال به جمینی وصل شویم.
- به VM Instance monitor-vm بروید. SSH و SSH را در VM انتخاب کنید
- مسیر اتصال به us-east1-aiplatform.googleapis.com را با استفاده از دستور
ping
بررسی کنید. با این کار آدرس IP در DNS خصوصی، رکوردی برای googleapis پینگ می شود. این IP یک نقطه پایانی PSC است و پینگ های شما ناموفق خواهد بود.
ping -c 2 us-east1-aiplatform.googleapis.com
- مسیر اتصال را با یک
ping
با استفاده از ورودی DNS ایجاد شده به طور خودکار برای PSC Google API باaiplatform-pscvertexgemini.p.googleapis.com
بررسی کنید. این به آدرس IP نقطه پایانی PSC اشاره می کند و پینگ شما ناموفق خواهد بود.
ping -c 2 aiplatform-pscgemini.p.googleapis.com
- مسیر اتصال به us-east1-aiplatform.googleapis.com را با استفاده از دستور
dig
بررسی کنید. این باید آدرس IP نقطه پایانی PSC (10.10.100.250) باشد.
dig us-east1-aiplatform.googleapis.com
- پس از اتمام می توانید جلسه SSH monitor-vm را ببندید.
- اکنون میتوانیم یک TCP dump در cli-vm اجرا کنیم. ما باید دو جلسه SSH را به همان vm باز کنیم. یک جلسه دستور tcpdump را اجرا می کند و دیگری از Gemini CLI استفاده می کنیم.
- SSH در اولین جلسه در cli-vm
- برای مشاهده اتصال در یک tcpdump دستور follow را تایپ کنید
sudo tcpdump -i any port 53 -n or host us-east1-aiplatform.googleapis.com
- اکنون SSH را وارد جلسه بعدی در cli-vm کنید
- Gemini CLI را با تایپ
gemini
فعال کنید - سوال زیر را بپرسید، آسمان برای ایجاد تماس با Gemini API چه رنگی است
- دکمه enter را بزنید تا اجرا شود و نتیجه را ببینید.
- به اولین جلسه در cli-vm برگردید. باید نتیجه tcpdump را ببینید. متوجه ورود و خروج خواهید شد و آدرس IP ماشین مجازی از آدرس IP نقطه پایانی PSC برای اتصال به gemini API استفاده می کند.
تمام جلسات SSH را به نمونه های VM ببندید
9. پاکسازی کنید
- به Cloud Shell بروید مطمئن شوید که در دایرکتوری terraform-build
cd terraform-build
هستید و دستور زیرterraform destroy
را اجرا کنید وyes
را تایپ کنید همه منابعی که در پروژه خود با Terraform ایجاد کرده اید حذف خواهند شد.
10. تبریک می گویم
تبریک میگوییم، شما با موفقیت به Gemini CLI با استفاده از آدرس API عمومی و خصوصی با استفاده از Private Service Connect Endpoint برای Google API متصل شدید. این قابلیت می تواند اتصال API خصوصی را به محیط ابری on-prem/دیگر فضای ابری شما که از طریق (Interconnect، Cross-Cloud Interconnect و VPC) متصل هستند، گسترش دهد.
مراحل بعدی / بیشتر بدانید
میتوانید درباره شبکههای هوش مصنوعی Vertex بیشتر بخوانید و مخزن Gemini CLI را بررسی کنید
آزمایشگاه بعدی خود را ببرید
تلاش خود را با Google Cloud ادامه دهید و این آزمایشگاههای دیگر Google Cloud را بررسی کنید: