Jika Anda menggunakan volume agen Filestore dengan platform orkestrasi, sandbox berbasis VM, atau lingkungan container non-Google Kubernetes Engine (GKE) Anda sendiri, Anda dapat menyediakan dan mengelola setiap volume di dalam kumpulan volume secara langsung menggunakan Filestore REST API.
Sebelum memulai
- Selesaikan penyiapan jaringan project awal dan Private Service Connect (PSC) di Menyiapkan volume agen Filestore.
- Buat kumpulan volume regional di Membuat dan mengelola kumpulan volume.
Membuat volume
REST API
Untuk menyediakan volume individual di dalam kumpulan volume, kirim permintaan POST HTTP ke endpoint volumes.create:
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes?volumeId=VOLUME_ID" \
-d '{
"description": "Dynamic tool scratchpad for Agent Worker 12",
"labels": {
"agent_id": "worker-12",
"workflow": "code_eval"
}
}'
Ganti kode berikut:
PROJECT_ID: Google Cloud Project IDLOCATION: region yang berisi kumpulan volume induk, sepertius-central1.VOLUME_POOL_ID: ID kumpulan volume induk.VOLUME_ID: ID untuk volume, yang cocok dengan^[a-z]([a-z0-9-]{0,61}[a-z0-9])?$.
Penyediaan volume selesai dalam waktu kurang dari satu hingga dua detik. API menampilkan resource Volume secara langsung. Anda juga dapat menentukan kuota volume kustom
(quotaMib) dan opsi ekspor NFS dinamis (ipAcls) selama pembuatan volume:
{
"name": "projects/my-project/locations/us-central1/volumePools/my-volume-pool/volumes/my-volume",
"description": "Dynamic tool scratchpad for Agent Worker 12",
"mountPoint": {
"ipAddress": "10.128.0.45",
"mountName": "my_volume"
}
}
Perhatikan nilai yang ditampilkan di dalam mountPoint:
ipAddress: alamat IP internal endpoint pemasangan NFS dalam jaringan VPC Anda.mountName: komponen jalur ekspor NFS yang akan dipasang.
Memasang volume
Setelah menyediakan volume, orchestrator Anda dapat memasang ekspor NFSv3 volume langsung ke VM klien atau host container yang terhubung ke jaringan VPC yang sama:
- Pastikan utilitas klien NFS diinstal di host (misalnya,
nfs-commondi Debian atau Ubuntu). Buat direktori pemasangan dan pasang volume menggunakan
ipAddressdanmountNameyang ditampilkan dalammountPointvolume:sudo mkdir -p MOUNT_DIR sudo mount -t nfs -o vers=3,proto=tcp,mountproto=tcp,port=2049,mountport=2050 \ IP_ADDRESS:/MOUNT_NAME MOUNT_DIRGanti kode berikut:
MOUNT_DIR: jalur direktori lokal tempat volume dipasang, seperti/workspace.IP_ADDRESS: nilaimountPoint.ipAddressyang ditampilkan saat membuat atau mengambil volume.MOUNT_NAME: nilaimountPoint.mountNameyang ditampilkan saat membuat atau mengambil volume.
Mengelola volume
REST API
Dalam setiap permintaan berikut, ganti:
PROJECT_ID: Google Cloud Project IDLOCATION: region yang berisi kumpulan volume induk.VOLUME_POOL_ID: ID kumpulan volume induk.VOLUME_ID: ID volume.
Mendapatkan detail volume
Untuk melihat detail volume yang ada, termasuk mountPoint dan state siklus proses saat ini:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID"
Mencantumkan volume dalam pool
Untuk mencantumkan semua volume yang disediakan dalam kumpulan volume:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes"
Memperbarui kuota volume
Untuk meningkatkan kuota penyimpanan untuk volume aktif, kirim permintaan PATCH
HTTP yang menentukan updateMask=quotaMib. Kuota volume hanya dapat ditingkatkan;
pengurangan kuota volume tidak didukung:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"quotaMib": 4096
}' \
"https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID?updateMask=quotaMib"
Memperbarui ACL IP volume
Untuk membatasi akses NFS ke alamat IP klien sandbox tertentu atau memperbarui aturan ekspor IP, kirim permintaan HTTP PATCH yang menentukan updateMask=ipAcls:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"ipAcls": [
{
"ipRanges": ["10.128.0.50/32"],
"accessMode": "READ_WRITE"
}
]
}' \
"https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID?updateMask=ipAcls"
Menghapus volume
Saat sesi agen berakhir atau sandbox sementara dihentikan, hapus volume untuk mengklaim kembali kuota dalam pool:
curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID"
Meng-clone ruang kerja dengan snapshot volume
Jika Anda sudah memiliki volume pool dalam status READY dan volume sumber yang ada dalam status HOT, Anda dapat membuat snapshot volume untuk mengambil status point-in-time dari agent volume sehingga Anda dapat meng-clone atau membuat cabang ruang kerja nanti.
REST API
Membuat snapshot volume
Kirim permintaan
POSTHTTP ke endpointbackups.create, dengan menentukan nama resource lengkap volume di kolomsourceVolumedan menggantiSNAPSHOT_IDdengan ID unik untuk snapshot:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "sourceVolume": "projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID", "description": "Baseline workspace snapshot" }' \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/backups?backupId=SNAPSHOT_ID"Permintaan ini menampilkan operasi yang berjalan lama (LRO). Lakukan polling pada operasi atau buat kueri resource snapshot hingga
state-nya menjadiREADYsebelum meng-clone volume darinya:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/backups/SNAPSHOT_ID"
Meng-clone volume dari snapshot
Untuk meng-clone volume dari snapshot, snapshot sumber harus berasal dari volume di kumpulan volume yang sama.
Kirim permintaan
POSTHTTP ke endpointvolumes:createFromSource. TeruskanipAclsdalam isi permintaan untuk mengonfigurasi izin ekspor dan mengaktifkan volume yang di-clone di paketHOT:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "backup": "projects/PROJECT_ID/locations/LOCATION/backups/SNAPSHOT_ID", "volumeId": "CLONED_VOLUME_ID", "ipAcls": [ { "ipRanges": ["10.128.0.0/24"], "accessMode": "READ_WRITE", "squashMode": "NO_ROOT_SQUASH" } ] }' \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes:createFromSource"Ganti kode berikut:
SNAPSHOT_ID: ID snapshot sumber di pool volume yang sama.CLONED_VOLUME_ID: ID untuk volume baru yang di-clone.
Permintaan ini akan menampilkan operasi yang berjalan lama. Lakukan polling pada operasi hingga
donemenjaditrue:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
Setelah operasi selesai, panggil
volumes.get(atau periksa respons operasi yang selesai) untuk mengambilmountPointvolume baru (ipAddressdanmountName) sebelum memasang:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/CLONED_VOLUME_ID"
Cloning volume dari snapshot selesai dalam 3 detik per GB atau 1,5 detik per 10.000 file.
Memindahkan volume ke tingkat COLD
REST API
Untuk memindahkan ruang kerja yang tidak ada aktivitas ke cold storage, kirim permintaan HTTP PATCH
yang mengupdate status volume ke COLD dan menghapus ipAcls:
curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"state": "COLD",
"ipAcls": []
}' \
"https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID?updateMask=state,ipAcls"
Untuk memulihkan volume dari tingkat COLD ke tingkat HOT saat sesi agen
dilanjutkan:
Panggil metode kustom
unfreeze, dengan meneruskanipAclsdalam isi permintaan untuk mengonfigurasi akses klien dan mengaktifkan direktori pemasangan volume di tingkatHOT:curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "ipAcls": [ { "ipRanges": ["10.128.0.0/24"], "accessMode": "READ_WRITE", "squashMode": "NO_ROOT_SQUASH" } ] }' \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID:unfreeze"Permintaan ini akan menampilkan operasi yang berjalan lama. Lakukan polling pada operasi hingga
donemenjaditrue:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID"
Saat volume dipulihkan dari tingkat
COLD, Filestore menetapkan endpoint pemasangan NFS baru dari kumpulan volume, sehinggamountPoint.ipAddressdanmountPoint.mountNameberubah. AmbilmountPointyang diperbarui dari respons operasi yang telah selesai atau dengan memanggilvolumes.getsebelum memasang ulang volume:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://file.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/volumePools/VOLUME_POOL_ID/volumes/VOLUME_ID"
Langkah berikutnya
- Mengelola dan memantau kumpulan volume.
- Konfigurasikan lingkungan GKE untuk volume agen Filestore.