Solusi Praktis: Pusat Informasi AI Generatif

Last reviewed 2024-03-01 UTC

Panduan ini membantu Anda memahami dan men-deploy solusi Pusat Informasi AI Generatif. Solusi ini menunjukkan cara membuat pipeline pemberian jawaban pertanyaan ekstraktif (EQA) untuk menghasilkan konten bagi pusat informasi internal.

Pipeline EQA memproses dokumen, mengekstrak pasangan pertanyaan dan jawaban dari dokumen, serta memberi Anda informasi terstruktur untuk menyesuaikan model bahasa besar (LLM). Misalnya, Anda dapat mengupload dokumen yang berisi banyak pertanyaan umum (FAQ), menyesuaikan LLM menggunakan FAQ tersebut, lalu menggunakan model terlatih untuk membantu agen dukungan pelanggan menemukan informasi saat menyelesaikan kasus.

Dokumen ini ditujukan bagi developer yang memiliki latar belakang terkait LLM. Anda dianggap sudah memahami konsep dasar cloud.

Tujuan

Panduan solusi ini membantu Anda melakukan hal berikut:

  • Deploy aplikasi yang mengekstrak pasangan pertanyaan dan jawaban dari dokumen Anda.
  • Men-deploy pipeline yang memicu aplikasi Anda saat dokumen diupload.
  • Latih model AI berbasis perintah menggunakan output dari aplikasi Anda.

Arsitektur

Solusi ini men-deploy aplikasi Pusat Informasi AI Generatif. Diagram berikut menunjukkan arsitektur infrastruktur aplikasi:

Diagram arsitektur aplikasi yang menggunakan Vertex AI Generative AI untuk mengekstrak pasangan pertanyaan dan jawaban dari dokumen

Alur permintaan

Langkah-langkah berikut menjelaskan alur pemrosesan permintaan aplikasi. Langkah-langkah dalam alur diberi nomor seperti yang ditunjukkan pada diagram arsitektur sebelumnya.

Anda memulai aplikasi Pustaka Pengetahuan AI Generatif dengan mengupload dokumen langsung ke bucket Cloud Storage, baik melalui konsol Google Cloud atau gcloud CLI.

  1. Saat diupload, dokumen akan memicu fungsi Cloud Run. Fungsi ini menjalankan proses Question Answering Ekstraktif.

  2. Fungsi ini menggunakan OCR Document AI untuk mengekstrak semua teks dari dokumen.

  3. Fungsi ini mengindeks dokumen ke dalam Vector Search. Indeks Vector Search memberikan konteks bagi LLM untuk mengekstrak pasangan pertanyaan dan jawaban hanya berdasarkan konten yang diekstrak langsung dari dokumen yang diupload.

  4. Fungsi ini menggunakan Vertex AI untuk mengekstrak dan membuat pertanyaan serta jawaban dari dokumen.

  5. Fungsi ini menyimpan pasangan pertanyaan dan jawaban yang diekstrak di Firestore.

  6. Set data penyesuaian halus JSONL dibuat dari database Firestore dan disimpan di Cloud Storage.

  7. Setelah memvalidasi secara manual bahwa Anda puas dengan set data, Anda dapat meluncurkan tugas penyesuaian di Vertex AI.

    Setelah tugas penyesuaian selesai, model yang disesuaikan akan di-deploy ke endpoint. Setelah di-deploy ke endpoint, Anda dapat mengirimkan kueri ke model yang telah disesuaikan di notebook Colab, dan membandingkannya dengan model dasar.

Produk yang digunakan

Bagian ini menjelaskan produk yang digunakan pada solusi tersebut.

Jika memahami bahasa konfigurasi Terraform, Anda dapat mengubah beberapa setelan untuk layanan.

Komponen Deskripsi produk Tujuan dalam solusi ini
Cloud Storage Layanan untuk perusahaan yang menyediakan penyimpanan objek berbiaya rendah tanpa batas untuk berbagai jenis data. Menyimpan dokumen PDF, teks yang diekstrak, set data penyesuaian, dan model yang disesuaikan.
Eventarc Layanan yang mengelola alur perubahan status (peristiwa) antara microservice yang dipisahkan, perutean peristiwa ke berbagai tujuan sambil mengelola pengiriman, keamanan, otorisasi, kemampuan observasi, dan penanganan error. Memantau dokumen baru di bucket Cloud Storage dan memicu peristiwa di fungsi Cloud Run.
Cloud Run Functions Layanan komputasi tanpa server yang ringan yang memungkinkan Anda membuat fungsi mandiri dan bertujuan tunggal yang merespons peristiwa Google Cloud tanpa perlu mengelola server atau lingkungan runtime. Mengorkestrasi langkah-langkah pemrosesan dokumen.
Document AI Platform pemahaman dokumen yang mengambil data tidak terstruktur dari dokumen dan mengubahnya menjadi data terstruktur. Anda dapat mengotomatiskan tugas yang membosankan, meningkatkan ekstraksi data, dan mendapatkan insight yang lebih mendalam dari data. Mengekstrak teks dari dokumen.
Vertex AI Platform machine learning yang memungkinkan Anda melatih, menguji, menyesuaikan, dan men-deploy LLM serta aplikasi AI generatif. Membuat pertanyaan dan jawaban dari dokumen.
Penelusuran Vektor Layanan yang memungkinkan Anda menggunakan infrastruktur yang sama dengan yang menyediakan fondasi untuk produk Google seperti Google Penelusuran, YouTube, dan Play. Memungkinkan Anda menelusuri embedding untuk menemukan entity yang serupa atau terkait secara semantik.
Firestore Sistem file dengan latensi rendah yang terkelola sepenuhnya untuk VM dan cluster yang menawarkan ketersediaan dan throughput tinggi. Menyimpan pertanyaan dan jawaban yang dihasilkan.

Biaya

Untuk mengetahui perkiraan biaya resource Google Cloud yang digunakan oleh solusi basis pengetahuan AI generatif, lihat perkiraan yang telah dihitung sebelumnya di Kalkulator Harga Google Cloud.

Gunakan perkiraan biaya tersebut sebagai titik awal untuk menghitung biaya deployment Anda. Anda dapat mengubah perkiraan biaya untuk mencerminkan setiap perubahan konfigurasi yang Anda rencanakan untuk memastikan resource yang digunakan dalam solusi.

Perkiraan yang telah dihitung sebelumnya didasarkan pada asumsi untuk faktor-faktor tertentu, termasuk hal-hal berikut:

  • Lokasi Google Cloud tempat resource di-deploy.
  • Jumlah waktu resource tersebut digunakan.

  • Jumlah data yang disimpan di Cloud Storage.

  • Frekuensi aplikasi pusat informasi dipanggil.

  • Resource komputasi yang digunakan untuk menyesuaikan model.

Sebelum memulai

Untuk men-deploy solusi ini, Anda memerlukan project Google Cloud dan beberapa izin IAM terlebih dahulu.

Membuat atau memilih project Google Cloud

Saat men-deploy solusi, Anda perlu menentukan di mana project Google Cloud resource akan di-deploy. Anda dapat membuat project baru atau menggunakan project yang ada untuk deployment.

Jika Anda ingin membuat project baru, lakukan sebelum memulai deployment. Menggunakan project dapat membantu menghindari konflik dengan resource yang telah disediakan sebelumnya, seperti resource yang digunakan untuk workload produksi.

Untuk membuat project, selesaikan langkah-langkah berikut ini:

  1. In the Google Cloud console, go to the project selector page.

    Go to project selector

  2. Click Create project.

  3. Name your project. Make a note of your generated project ID.

  4. Edit the other fields as needed.

  5. Click Create.

Mendapatkan izin IAM yang diperlukan

Untuk memulai proses deployment, Anda memerlukan izin Identity and Access Management (IAM) yang terdaftar dalam tabel berikut ini.

Jika Anda membuat project baru untuk solusi ini, Anda memiliki peran dasar roles/owner di project tersebut dan memiliki semua izin yang diperlukan. Jika Anda tidak memiliki peran roles/owner, minta administrator Anda untuk memberikan izin ini (atau peran yang menyertakan izin ini) kepada Anda.

Izin IAM diperlukan Peran bawaan yang mencakup izin yang diperlukan

serviceusage.services.enable

Service Usage Admin
(roles/serviceusage.serviceUsageAdmin)

iam.serviceAccounts.create

Service Account Admin
(roles/iam.serviceAccountAdmin)

resourcemanager.projects.setIamPolicy

Project IAM Admin
(roles/resourcemanager.projectIamAdmin)
config.deployments.create
config.deployments.list
Cloud Infrastructure Manager Admin
(roles/config.admin)
iam.serviceAccount.actAs Service Account User
(roles/iam.serviceAccountUser)

Tentang izin akun layanan sementara

Jika Anda memulai proses deployment melalui konsol, Google akan membuat akun layanan untuk men-deploy solusi atas nama Anda (dan akan menghapus deployment jika Anda memilihnya). Akun layanan ini diberi izin IAM tertentu untuk sementara; yaitu, izin tersebut akan otomatis dicabut setelah operasi deployment dan penghapusan solusi selesai. Google merekomendasikan agar setelah Anda menghapus deployment, Anda harus menghapus akun layanan, seperti yang akan dijelaskan dalam panduan ini.

Melihat peran yang ditetapkan ke akun layanan

Peran-peran tersebut tercantum di sini untuk mengantisipasi jika administrator project Google Cloud atau organisasi Anda memerlukan informasi ini.

  • roles/aiplatform.user
  • roles/artifactregistry.admin
  • roles/documentai.editor
  • roles/firebase.admin
  • roles/iam.serviceAccountUser
  • roles/serviceusage.serviceUsageAdmin
  • roles/iam.serviceAccountAdmin
  • roles/resourcemanager.projectIamAdmin
  • roles/config.agent

Men-deploy solusi

Untuk membantu Anda men-deploy solusi ini dengan upaya minimal, konfigurasi Terraform disediakan di GitHub. Konfigurasi Terraform menentukan semua resource Google Cloud yang diperlukan untuk solusi.

Anda dapat men-deploy solusi menggunakan salah satu dari metode berikut ini:

  • Melalui konsol: Gunakan metode ini jika Anda ingin mencoba solusi dengan konfigurasi default dan melihat cara kerjanya. Cloud Build men-deploy semua resource yang diperlukan untuk solusi. Jika Anda sudah tidak memerlukan solusi yang di-deploy, Anda dapat menghapusnya melalui konsol. Semua resource yang telah Anda buat setelah men-deploy solusi mungkin perlu dihapus secara terpisah.

    Untuk menggunakan metode deployment ini, ikuti petunjuknya di Deploy melalui konsol.

  • Menggunakan Terraform CLI: Gunakan metode ini jika Anda ingin menyesuaikan solusi atau mengotomatisasi penyediaan dan pengelolaan resource menggunakan pendekatan Infrastructure as Code (IaC). Download konfigurasi Terraform melalui GitHub, sesuaikan kode secara opsional sesuai kebutuhan, kemudian deploy solusi menggunakan Terraform CLI. Setelah men-deploy solusi, Anda dapat terus menggunakan Terraform untuk mengelola solusi tersebut.

    Untuk menggunakan metode deployment ini, ikuti instruksinya di Men-deploy menggunakan Terraform CLI.

Men-deploy melalui konsol

Selesaikan langkah-langkah berikut untuk men-deploy solusi yang telah terkonfigurasi.

  1. Di katalog Solusi Praktis Google Cloud, buka solusi Pusat Informasi AI Generatif.

    Buka solusi Pusat Informasi AI Generatif

  2. Tinjau informasi yang tersedia di halaman seperti perkiraan biaya solusi dan waktu deployment.

  3. Jika sudah siap untuk mulai men-deploy solusi, klik Deploy.

    Panel konfigurasi langkah demi langkah akan ditampilkan.

  4. Selesaikan langkah-langkah di panel konfigurasi.

    Catat nama yang Anda masukkan untuk deployment. Nama ini akan diperlukan saat Anda menghapus deployment.

    Saat Anda mengklik Deploy, halaman Deployment solusi akan ditampilkan. Kolom Status di halaman ini menampilkan Men-deploy.

  5. Tunggu hingga solusi berhasil di-deploy.

    Jika deployment gagal, kolom Status akan menampilkan Gagal. Anda dapat menggunakan log Cloud Build untuk mendiagnosis error. Untuk informasi selengkapnya, lihat Error ketika men-deploy melalui konsol.

    Setelah deployment selesai, kolom Status berubah menjadi Di-deploy.

  6. Untuk melihat resource Google Cloud yang di-deploy dan konfigurasinya, ikuti tur interaktif di konsol.

    Mulai tur

Untuk langkah berikutnya, lihat Menggunakan solusi.

Ketika Anda tidak lagi memerlukan solusi tersebut, Anda dapat menghapus deployment untuk menghindari penagihan berkelanjutan untuk resource Google Cloud tersebut. Untuk informasi selengkapnya, lihat Menghapus deployment.

Men-deploy menggunakan Terraform CLI

Bagian ini menjelaskan cara menyesuaikan solusi atau mengotomatiskan penyediaan dan pengelolaan solusi menggunakan Terraform CLI. Solusi yang Anda deploy menggunakan Terraform CLI tidak ditampilkan di halaman Deployment solusi pada Konsol Google Cloud.

Menyiapkan klien Terraform

Anda dapat menjalankan Terraform baik di Cloud Shell maupun host lokal Anda. Panduan ini menjelaskan cara menjalankan Terraform di Cloud Shell, yang telah menginstal Terraform di Cloud Shell dan dikonfigurasi untuk diautentikasi dengan Google Cloud.

Kode Terraform untuk solusi ini tersedia di repositori GitHub.

  1. Lakukan clone repositori GitHub ke Cloud Shell.

    Buka di Cloud Shell

    Perintah akan ditampilkan untuk mengonfirmasi download repositori GitHub ke Cloud Shell.

  2. Klik Confirm.

    Cloud Shell diluncurkan di tab browser yang terpisah, lalu kode Terraform didownload ke direktori $HOME/cloudshell_open lingkungan Cloud Shell Anda.

  3. Dalam Cloud Shell, periksa apakah direktori yang sedang bekerja adalah $HOME/cloudshell_open/terraform-genai-knowledge-base/. Ini merupakan direktori yang berisi file konfigurasi Terraform untuk solusi. Jika Anda perlu mengubah ke direktori tersebut, jalankan perintah berikut:

    cd $HOME/cloudshell_open/terraform-genai-knowledge-base/
    
  4. Lakukan inisialisasi Terraform dengan menjalankan perintah berikut:

    terraform init
    

    Tunggu hingga Anda melihat pesan berikut:

    Terraform has been successfully initialized!
    

Mengonfigurasi variabel Terraform

Kode Terraform yang Anda download mencakup variabel yang dapat digunakan untuk menyesuaikan deployment berdasarkan persyaratan Anda. Misalnya, Anda dapat menentukan project Google Cloud dan region tempat Anda ingin men-deploy solusi.

  1. Pastikan direktori kerja saat ini adalah $HOME/cloudshell_open/terraform-genai-knowledge-base/. Jika bukan, buka direktori tersebut.

  2. Pada direktori yang sama, buatlah file teks dengan nama terraform.tfvars.

  3. Dalam file terraform.tfvars, salin cuplikan kode berikut dan tetapkan nilai untuk variabel yang diperlukan.

    • Ikuti petunjuk yang disediakan sebagai komentar dalam cuplikan kode.
    • Cuplikan kode ini hanya mencakup variabel yang harus Anda tetapkan nilainya. Konfigurasi Terraform mencakup variabel lain yang memiliki nilai default. Untuk meninjau semua variabel dan nilai default, lihat file variables.tf yang tersedia di direktori $HOME/cloudshell_open/terraform-genai-knowledge-base/.
    • Pastikan setiap nilai yang Anda tetapkan dalam file terraform.tfvars cocok dengan jenis variabel seperti yang dideklarasikan dalam file variables.tf. Misalnya, jika jenis yang ditentukan untuk variabel dalam file variables.tf adalah bool, Anda harus menentukan true atau false sebagai nilai variabel tersebut di file terraform.tfvars.
    # This is an example of the terraform.tfvars file.
    # The values in this file must match the variable types declared in variables.tf.
    # The values in this file override any defaults in variables.tf.
    
    # ID of the project in which you want to deploy the solution
    project_id = "PROJECT_ID"
    

Memvalidasi dan meninjau konfigurasi Terraform

  1. Pastikan direktori yang sedang bekerja adalah $HOME/cloudshell_open/terraform-genai-knowledge-base/. Jika bukan, buka direktori tersebut.

  2. Pastikan konfigurasi Terraform tidak terdapat error:

    terraform validate
    

    Jika perintah menunjukkan error, lakukan perbaikan yang diperlukan dalam konfigurasi kemudian jalankan kembali perintahterraform validate. Ulangi langkah ini hingga perintah menunjukkan pesan berikut:

    Success! The configuration is valid.
    
  3. Tinjau resource yang ditentukan dalam konfigurasi:

    terraform plan
    
  4. Jika Anda tidak membuat file terraform.tfvars seperti yang dijelaskan sebelumnya, Terraform akan meminta Anda memasukkan nilai untuk variabel yang tidak memiliki nilai default. Masukkan nilai yang diperlukan.

    Output perintah terraform plan adalah daftar resource yang disediakan Terraform ketika Anda menerapkan konfigurasi.

    Jika Anda ingin melakukan perubahan, edit konfigurasi, kemudian jalankan kembali perintah terraform validate dan terraform plan.

Menyediakan resource

Jika tidak ada perubahan lebih lanjut yang diperlukan dalam konfigurasi Terraform, deploy resource.

  1. Pastikan direktori yang sedang bekerja adalah $HOME/cloudshell_open/terraform-genai-knowledge-base/. Jika bukan, buka direktori tersebut.

  2. Terapkan konfigurasi Terraform:

    terraform apply
    
  3. Jika Anda tidak membuat file terraform.tfvars seperti yang dijelaskan sebelumnya, Terraform akan meminta Anda memasukkan nilai untuk variabel yang tidak memiliki nilai default. Masukkan nilai yang diperlukan.

    Terraform menampilkan daftar resource yang akan dibuat.

  4. Ketika Anda diminta untuk melakukan tindakan, masukkan yes.

    Terraform menampilkan pesan yang menunjukkan progres deployment.

    Jika deployment tidak dapat diselesaikan, Terraform akan menampilkan error yang menyebabkan kegagalan. Tinjau pesan error dan update konfigurasi untuk memperbaiki error. Kemudian jalankan kembali perintah terraform apply. Untuk bantuan terkait pemecahan masalah error Terraform, lihat Error ketika men-deploy solusi menggunakan Terraform CLI.

    Setelah semua resource dibuat, Terraform akan menampilkan pesan berikut:

    Apply complete!
    
  5. Untuk melihat resource Google Cloud yang di-deploy dan konfigurasinya, ikuti tur interaktif di konsol.

    Mulai tur

Selanjutnya, Anda dapat menggunakan solusi dan melihat cara kerjanya.

Ketika Anda tidak lagi memerlukan solusi tersebut, Anda dapat menghapus deployment untuk menghindari penagihan berkelanjutan untuk resource Google Cloud tersebut. Untuk informasi selengkapnya, lihat Menghapus deployment.

Menggunakan solusi

Setelah solusi di-deploy, Anda dapat mengupload dokumen untuk mengindeksnya dan mengajukan pertanyaan tentang dokumen tersebut. Selain itu, file set data penyesuaian baris JSON (JSONL) akan dihasilkan, yang dapat Anda gunakan untuk menyesuaikan LLM dengan perintah.

Mengupload dokumen dan membuat kueri model

Mulai gunakan solusi ini dengan mengupload dokumen, lalu ajukan pertanyaan tentang dokumen tersebut kepada LLM terlatih.

Untuk mengikuti panduan langkah demi langkah untuk tugas ini langsung di konsol Google Cloud, klik Pandu saya.

Pandu saya

Tugas ini membutuhkan waktu sekitar 10 menit untuk diselesaikan.

Menyesuaikan LLM

Setelah mengupload dokumen untuk solusi, Anda dapat menggunakan Vertex AI untuk menyesuaikan LLM dengan pasangan pertanyaan dan jawaban. Menyesuaikan LLM bukanlah proses otomatis. Sebelum menyesuaikan LLM, periksa data Anda dan pastikan data tersebut valid dan akurat. Setelah puas dengan data, Anda dapat meluncurkan tugas penyesuaian secara manual dan meluncurkan LLM dari Model Registry.

File penyesuaian JSONL berisi konten yang diekstrak dari pasangan pertanyaan dan jawaban Anda. Setiap baris dalam file adalah entri JSON dengan kolom input_text dan output_text. Kolom input_text berisi konten dari setiap pertanyaan, dan output_text berisi konten dari setiap jawaban.

Misalnya, file JSONL berikut berisi pertanyaan "Berapa banyak orang yang tinggal di Beijing" dan jawabannya:

{"input_text": "CONTEXT: With over 21 million residents, Beijing is the
 world's most populous national capital city and is China's second largest
 city after Shanghai. QUESTION: How many people live in Beijing?,
"output_text": "21 million people"}

Untuk mengikuti panduan langkah demi langkah guna menyesuaikan model Anda langsung di konsol Google Cloud, klik Pandu saya.

Pandu saya

Panduan ini memerlukan waktu sekitar 10 menit untuk diselesaikan, tetapi penyesuaian model dapat memerlukan waktu satu jam atau lebih untuk menyelesaikan pemrosesan.

Menghapus deployment

Jika Anda tidak lagi memerlukan solusi tersebut, hapus deployment. Jika Anda menghapus deployment, Anda tidak akan lagi ditagih untuk resource yang Anda buat.

Sebelum Anda menghapus

Sebelum Anda menghapus solusi ini, hapus deployment indeks Penelusuran Vektor:

  1. Buka halaman Vector Search.

    Buka Vector Search

  2. Klik knowledge-base-index.

  3. Di bagian Indeks yang di-deploy, klik more_vert Lainnya.

  4. Klik Batalkan deployment.

Anda tidak perlu menunggu proses penghapusan indeks selesai.

Menghapus melalui konsol

Gunakan prosedur ini jika Anda men-deploy solusi melalui konsol.

  1. Pada Konsol Google Cloud, buka halaman Deployment solusi.

    Buka Deployment solusi

  2. Pilih project berisi deployment yang ingin Anda hapus.

  3. Cari deployment yang ingin Anda hapus.

  4. Di baris untuk deployment, klik Tindakan, lalu pilih Hapus.

    Anda mungkin perlu men-scroll untuk melihat Tindakan di baris.

  5. Masukkan nama deployment, lalu klik Konfirmasi.

    Kolom Status menampilkan Menghapus.

    Jika penghapusan gagal, lihat panduan pemecahan masalah pada bagian Error saat menghapus deployment.

Jika tidak lagi memerlukan project Google Cloud yang digunakan untuk solusi, Anda dapat menghapus project tersebut. Untuk informasi selengkapnya, lihat Opsional: Menghapus project

Menghapus menggunakan Terraform CLI

Gunakan prosedur ini jika Anda men-deploy solusi menggunakan Terraform CLI.

  1. Di Cloud Shell, pastikan direktori kerja saat ini adalah $HOME/cloudshell_open/terraform-genai-knowledge-base/. Jika bukan, buka direktori tersebut.

  2. Hapus resource yang disediakan oleh Terraform:

    terraform destroy
    

    Terraform menampilkan daftar resource yang akan dimusnahkan.

  3. Ketika Anda diminta untuk melakukan tindakan, masukkan yes.

    Terraform menampilkan pesan yang menunjukkan progres. Setelah semua resource dihapus, Terraform akan menampilkan pesan berikut:

    Destroy complete!
    

    Jika penghapusan gagal, lihat panduan pemecahan masalah pada bagian Error saat menghapus deployment.

Jika tidak lagi memerlukan project Google Cloud yang digunakan untuk solusi, Anda dapat menghapus project tersebut. Untuk informasi selengkapnya, lihat Opsional: Menghapus project

Menghapus model yang disesuaikan

Anda harus menghapus model yang dioptimalkan secara manual.

Untuk menghapus mode yang dioptimalkan, lihat Menghapus model dari Vertex AI Model Registry.

Opsional: Menghapus project

Jika Anda men-deploy solusi di project Google Cloud baru, dan tidak lagi memerlukan project tersebut, hapus dengan melakukan langkah-langkah berikut:

  1. Pada Konsol Google Cloud, buka halaman Kelola resource

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Hapus.
  3. Pada layar perintah, ketik project ID, lalu klik Matikan.

Jika Anda memutuskan untuk mempertahankan project, hapus akun layanan yang dibuat untuk solusi ini, seperti yang akan dijelaskan pada bagian selanjutnya.

Opsional: Menghapus akun layanan

Jika Anda menghapus project yang digunakan untuk solusi tersebut, lewati bagian ini.

Seperti yang telah disebutkan dalam panduan ini, ketika men-deploy solusi, akun layanan akan dibuat atas nama Anda. Akun layanan telah diberi izin IAM tertentu untuk sementara; yaitu, izin yang otomatis dicabut setelah operasi deployment dan penghapusan solusi selesai, tetapi akun layanan tidak dihapus. Google merekomendasikan agar Anda menghapus akun layanan ini.

  • Jika Anda men-deploy solusi melalui Konsol Google Cloud, buka halaman Deployment solusi. (Jika Anda sudah berada di halaman tersebut, muat ulang browser.) Proses terpicu di latar belakang untuk menghapus akun layanan. Tidak ada tindakan lebih lanjut yang diperlukan.

  • Jika Anda men-deploy solusi menggunakan Terraform CLI, lakukan langkah-langkah berikut:

    1. Di Konsol Google Cloud, buka halaman Service accounts.

      Buka halaman Service accounts

    2. Pilih project yang Anda gunakan untuk solusi tersebut.

    3. Pilih akun layanan yang ingin Anda hapus.

      ID email akun layanan yang digunakan untuk membuat solusi menggunakan format berikut:

      goog-sc-DEPLOYMENT_NAME-NNN@PROJECT_ID.
      

      ID email berisi nilai-nilai berikut:

      • DEPLOYMENT_NAME: nama deployment.
      • NNN: 3 digit angka acak.
      • PROJECT_ID: ID project tempat Anda men-deploy solusi.
    4. Klik Delete.

Mengatasi error

Tindakan yang dapat Anda lakukan untuk mendiagnosis dan mengatasi error bergantung pada metode deployment dan kompleksitas error.

Error ketika men-deploy melalui konsol

Jika deployment gagal saat Anda menggunakan konsol, lakukan hal-hal berikut:

  1. Buka halaman Deployment solusi.

    Jika deployment gagal, kolom Status akan menampilkan Gagal.

  2. Lihat detail error yang menyebabkan kegagalan:

    1. Di baris untuk deployment, klik Tindakan.

      Anda mungkin perlu men-scroll untuk melihat Tindakan di baris.

    2. Pilih Lihat log Cloud Build.

  3. Tinjau log Cloud Build dan ambil tindakan yang sesuai untuk menyelesaikan masalah yang menyebabkan kegagalan.

Error ketika men-deploy menggunakan Terraform CLI

Jika deployment gagal saat Anda menggunakan Terraform, output perintah terraform apply akan menyertakan pesan error yang dapat Anda tinjau untuk mendiagnosis masalah.

Pada bagian berikut ditunjukkan contoh error deployment yang mungkin Anda alami saat menggunakan Terraform.

Error API dinonaktifkan

Jika Anda membuat project dan segera mencoba men-deploy solusi di project baru, deployment mungkin akan gagal dengan error seperti berikut:

Error: Error creating Network: googleapi: Error 403: Compute Engine API has not
been used in project PROJECT_ID before or it is disabled. Enable it by visiting
https://console.developers.google.com/apis/api/compute.googleapis.com/overview?project=PROJECT_ID
then retry. If you enabled this API recently, wait a few minutes for the action
to propagate to our systems and retry.

Jika error ini terjadi, tunggu beberapa menit, lalu jalankan terraform apply kembali perintah.

Error tidak dapat menetapkan alamat yang diminta

Ketika Anda menjalankan perintah terraform apply, error cannot assign requested address mungkin saja terjadi, dengan pesan seperti berikut:

Error: Error creating service account:
 Post "https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts:
 dial tcp [2001:db8:ffff:ffff::5f]:443:
 connect: cannot assign requested address

Jika terjadi error ini, jalankan kembali perintah terraform apply.

Error konfigurasi

Jika Anda memodifikasi argumen resource dalam filemain.tf menggunakan nilai yang tidak didukung error seperti berikut akan terjadi:

Error: Error creating Instance: googleapi: Error 400: Provided Redis version is
not supported: REDIS_5_X
│ com.google.apps.framework.request.StatusException:
  <eye3 title='INVALID_ARGUMENT'/>
  generic::INVALID_ARGUMENT: Provided Redis version is not supported: REDIS_5_X
Details:
│ [>
│   {
│     "@type": "type.googleapis.com/google.rpc.BadRequest",
│     "fieldViolations": [
│       {
│         "description": "Invalid value: REDIS_5_X",
│         "field": "instance.redis_version"
│       }
│     ]
│   }
│ ]
│
│   with google_redis_instance.main,
│   on main.tf line 96, in resource "google_redis_instance" "main":
│   96: resource "google_redis_instance" "main" {

Dalam hal ini, tujuannya adalah menggunakan Redis versi 5, tetapi nilai yang ditentukan untuk argumen instance.redis_version (REDIS_5_X) dalam file main.tf tidak valid. Nilai yang benar adalah REDIS_5_0, seperti yang disebutkan dalam dokumentasi REST API Memorystore.

Error ketika menghapus deployment

Dalam kasus tertentu, upaya untuk menghapus deployment mungkin akan gagal:

  • Jika Anda mengubah resource yang disediakan oleh solusi setelah men-deploy solusi melalui konsol, lalu Anda mencoba menghapus deployment, penghapusan mungkin akan gagal. Kolom Status pada halaman Deployment solusi akan menampilkan Gagal, dan log Cloud Build akan menunjukkan penyebab error.
  • Jika Anda mengubah resource dengan menggunakan antarmuka non-Terraform (misalnya, konsol) setelah men-deploy solusi menggunakan Terraform CLI, kemudian Anda mencoba menghapus deployment, penghapusan mungkin akan gagal. Pesan dalam output perintah terraform destroy menunjukkan penyebab error.

Tinjau log dan pesan error serta identifikasi dan hapus resource yang menyebabkan error tersebut. Setelah itu, coba hapus kembali deployment.

Jika deployment berbasis konsol tidak dapat dihapus dan Anda tidak dapat mendiagnosis error menggunakan log Cloud Build, Anda dapat menghapus deployment tersebut menggunakan Terraform CLI yang akan dijelaskan pada bagian berikutnya.

Menghapus deployment berbasis konsol menggunakan Terraform CLI

Bagian ini menjelaskan cara menghapus deployment berbasis konsol jika terjadi error saat Anda mencoba menghapusnya melalui konsol. Dalam pendekatan ini, Anda perlu mendownload konfigurasi Terraform untuk deployment yang ingin dihapus, lalu gunakan Terraform CLI untuk menghapus deployment tersebut.

  1. Identifikasi region tempat kode Terraform, log, dan data deployment lainnya disimpan. Region ini mungkin berbeda dari region yang Anda pilih ketika men-deploy solusi.

    1. Pada Konsol Google Cloud, buka halaman Deployment solusi.

      Buka Deployment solusi

    2. Pilih project berisi deployment yang ingin Anda hapus.

    3. Dalam daftar deployment, identifikasi baris deployment yang ingin Anda hapus.

    4. Klik Lihat semua konten baris.

    5. Pada kolom Lokasi, catat lokasi kedua seperti yang ditandai dalam contoh berikut:

      Lokasi kode deployment, log, dan artefak lainnya.

  2. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  3. Membuat variabel lingkungan untuk project ID, region, dan nama deployment yang ingin Anda hapus:

    export REGION="REGION"
    export PROJECT_ID="PROJECT_ID"
    export DEPLOYMENT_NAME="DEPLOYMENT_NAME"
    

    Dalam perintah ini, ganti kode berikut:

    • REGION: lokasi yang Anda catat sebelumnya dalam prosedur ini.
    • PROJECT_ID: ID project tempat Anda men-deploy solusi.
    • DEPLOYMENT_NAME: nama deployment yang ingin Anda hapus.
  4. Dapatkan ID revisi deployment terbaru yang ingin Anda hapus:

    export REVISION_ID=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .latestRevision -r)
        echo $REVISION_ID
    

    Outputnya mirip dengan yang berikut ini:

    projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME/revisions/r-0
    
  5. Dapatkan lokasi Cloud Storage dari konfigurasi Terraform untuk deployment:

    export CONTENT_PATH=$(curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/${REVISION_ID}" \
        | jq .applyResults.content -r)
        echo $CONTENT_PATH
    

    Berikut adalah contoh output dari perintah ini:

    gs://PROJECT_ID-REGION-blueprint-config/DEPLOYMENT_NAME/r-0/apply_results/content
    
  6. Download konfigurasi Terraform dari Cloud Storage ke Cloud Shell:

    gcloud storage cp $CONTENT_PATH $HOME --recursive
    cd $HOME/content/
    

    Tunggu hingga pesan Operation completed ditampilkan, seperti yang ditunjukkan dalam contoh berikut:

    Operation completed over 45 objects/268.5 KiB
    
  7. Lakukan inisialisasi Terraform:

    terraform init
    

    Tunggu hingga Anda melihat pesan berikut:

    Terraform has been successfully initialized!
    
  8. Menghapus resource yang di-deploy:

    terraform destroy
    

    Terraform menampilkan daftar resource yang akan dimusnahkan.

    Jika muncul peringatan tentang variabel yang tidak dideklarasikan, abaikan peringatan tersebut.

  9. Ketika Anda diminta untuk melakukan tindakan, masukkan yes.

    Terraform menampilkan pesan yang menunjukkan progres. Setelah semua resource dihapus, Terraform akan menampilkan pesan berikut:

    Destroy complete!
    
  10. Menghapus artefak deployment:

    curl -X DELETE \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}?force=true&delete_policy=abandon"
    
  11. Tunggu beberapa detik, lalu verifikasi bahwa artefak deployment telah dihapus:

    curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json" \
        "https://config.googleapis.com/v1alpha2/projects/${PROJECT_ID}/locations/${REGION}/deployments/${DEPLOYMENT_NAME}" \
        | jq .error.message
    

    Jika output menampilkan null, tunggu beberapa detik, lalu jalankan kembali perintah.

    Setelah artefak deployment dihapus, pesan seperti yang ditunjukkan pada contoh yang ditampilkan berikut ini:

    Resource 'projects/PROJECT_ID/locations/REGION/deployments/DEPLOYMENT_NAME' was not found
    

Mengirim masukan

Solusi Praktis hanya untuk keperluan informasi dan bukan produk yang didukung secara resmi. Google dapat mengubah atau menghapus solusi tanpa pemberitahuan.

Untuk mengatasi error, tinjau log Cloud Build dan output Terraform.

Untuk mengirim masukan, lakukan hal-hal berikut:

  • Untuk dokumentasi, tutorial dalam konsol, atau solusi, gunakan tombol Kirim Masukan pada halaman tersebut.
  • Untuk kode Terraform yang tidak dimodifikasi, buat laporan masalah di Repositori GitHub. Laporan masalah pada GitHub ditinjau berdasarkan upaya terbaik dan tidak ditujukan untuk pertanyaan umum.

Langkah selanjutnya