Men-deploy Apache Guacamole di GKE dan Cloud SQL

Last reviewed 2025-01-09 UTC

Dokumen ini menjelaskan cara men-deploy Apache Guacamole di GKE dan Cloud SQL.

Petunjuk ini ditujukan untuk administrator dan engineer server yang ingin menghosting Guacamole di GKE dan Cloud SQL. Dokumen ini mengasumsikan bahwa Anda telah memahami cara men-deploy beban kerja ke Kubernetes dan Cloud SQL untuk MySQL. Sebaiknya, Anda juga memahami Identity and Access Management dan Google Compute Engine.

Arsitektur

Diagram berikut menunjukkan cara load balancer Google Cloud dikonfigurasi dengan IAP, untuk melindungi instance klien Guacamole yang berjalan di GKE:

Arsitektur untuk load balancer Google Cloud yang dikonfigurasi dengan IAP.

Klien Guacamole terhubung ke layanan backend guacd, yang memediasi koneksi desktop jarak jauh ke satu atau beberapa VM Compute Engine. Skrip ini juga men-deploy instance Cloud SQL untuk mengelola data konfigurasi Guacamole.

Untuk mengetahui detailnya, lihat Apache Guacamole di GKE dan Cloud SQL.

Tujuan

  • Deploy infrastruktur menggunakan Terraform.
  • Buat database Guacamole di Cloud SQL.
  • Deploy Guacamole ke Cluster GKE menggunakan Skaffold.
  • Uji koneksi ke VM melalui Guacamole.

Biaya

Dalam dokumen ini, Anda akan menggunakan komponen Google Cloudyang dapat ditagih berikut:

Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.

Pengguna Google Cloud baru mungkin memenuhi syarat untuk mendapatkan uji coba gratis.

Setelah menyelesaikan tugas yang dijelaskan dalam dokumen ini, Anda dapat menghindari penagihan berkelanjutan dengan menghapus resource yang Anda buat. Untuk mengetahui informasi selengkapnya, baca bagian Pembersihan.

Sebelum memulai

  1. Di konsol Google Cloud , pada halaman pemilih project, pilih atau buat project Google Cloud .

    Peran yang diperlukan untuk memilih atau membuat project

    • Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
    • Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project (roles/resourcemanager.projectCreator), yang berisi izin resourcemanager.projects.create. Pelajari cara memberikan peran.

    Buka pemilih project

  2. Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.

  3. Aktifkan Resource Manager, Service Usage, Artifact Registry, dan Compute Engine API.

    Peran yang diperlukan untuk mengaktifkan API

    Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

    Aktifkan API

  4. Di konsol Google Cloud , aktifkan Cloud Shell.

    Aktifkan Cloud Shell

Deploy infrastruktur

Di bagian ini, Anda akan menggunakan Terraform untuk men-deploy resource berikut:

  • Virtual Private Cloud
  • Aturan firewall
  • Cluster GKE
  • Repositori Artifact Registry
  • Cloud SQL untuk MySQL
  • VM untuk mengelola database MySQL
  • Akun layanan

Konfigurasi Terraform juga memungkinkan penggunaan IAP di project Anda.

  1. Di Cloud Shell, buat clone repositori GitHub:

    git clone https://github.com/GoogleCloudPlatform/guacamole-on-gcp.git
    
  2. Deploy infrastruktur yang diperlukan menggunakan Terraform:

    cd guacamole-on-gcp/tf-infra
    unset GOOGLE_CLOUD_QUOTA_PROJECT
    terraform init -upgrade
    terraform apply
    
  3. Ikuti petunjuk untuk memasukkan Google Cloud project ID Anda.

  4. Untuk menyetujui permintaan Terraform guna men-deploy resource ke project Anda, masukkan yes.

    Proses men-deploy semua resource memerlukan waktu beberapa menit hingga selesai.

Men-deploy database Guacamole

Di bagian ini, Anda akan membuat database dan tabel Guacamole di Cloud SQL untuk MySQL, serta mengisi database dengan informasi pengguna administrator.

  1. Di Cloud Shell, tetapkan variabel lingkungan dan temukan sandi root database:

    cd ..
    source bin/read-tf-output.sh
    

    Catat sandi root database; Anda akan memerlukannya di langkah-langkah berikutnya.

    Skrip ini membaca variabel output dari eksekusi Terraform dan menetapkan variabel lingkungan berikut, yang digunakan selama prosedur ini:

    CLOUD_SQL_INSTANCE
    ZONE
    REGION
    DB_MGMT_VM
    PROJECT_ID
    GKE_CLUSTER
    GUACAMOLE_URL
    SUBNET
    
  2. Salin file skrip create-schema.sql dan insert-admin-user.sql ke VM pengelolaan database, lalu hubungkan ke VM:

    gcloud compute scp \
        --tunnel-through-iap \
        --zone=$ZONE \
        create-schema.sql \
        insert-admin-user.sql \
        $DB_MGMT_VM:
    
    gcloud compute ssh $DB_MGMT_VM \
        --zone=$ZONE \
        --tunnel-through-iap
    

    Sesi konsol ke VM Database Management melalui Cloud Shell kini telah dibuat.

  3. Instal alat klien MySQL:

    sudo apt-get update
    sudo apt-get install -y mariadb-client
    
  4. Hubungkan ke Cloud SQL dan buat database. Saat diminta memasukkan sandi, gunakan sandi root yang Anda catat sebelumnya di bagian ini.

    export CLOUD_SQL_PRIVATE_IP=$(curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/cloud_sql_ip -H "Metadata-Flavor: Google")
    mysql -h $CLOUD_SQL_PRIVATE_IP -u root -p
    
  5. Berikan izin pengguna database atas database yang baru dibuat:

    CREATE DATABASE guacamole;
    USE guacamole;
    GRANT SELECT,INSERT,UPDATE,DELETE ON guacamole.* TO 'guac-db-user';
    FLUSH PRIVILEGES;
    SOURCE create-schema.sql;
    SOURCE insert-admin-user.sql;
    quit
    
  6. Setelah perintah MySQL selesai dijalankan, keluar dari sesi SSH VM:

    exit
    

Men-deploy Guacamole ke GKE menggunakan Skaffold

Di bagian ini, Anda akan men-deploy aplikasi Guacamole ke cluster GKE menggunakan Skaffold. Skaffold menangani alur kerja untuk membangun, mengirim, dan men-deploy image Guacamole ke cluster GKE.

  1. Di Cloud Shell, deploy konfigurasi GKE menggunakan terraform:

    cd tf-k8s
    terraform init -upgrade
    terraform apply -parallelism=1
    
  2. Dapatkan kredensial untuk cluster GKE:

    gcloud container clusters get-credentials \
        --region $REGION $GKE_CLUSTER
    
  3. Jalankan Skaffold dari root repositori git yang di-clone:

    cd ..
    skaffold --default-repo $REGION-docker.pkg.dev/$PROJECT_ID/guac-repo run
    

    Alat Skaffold membangun image container untuk Guacamole melalui Google Cloud Build (command line mencakup flag yang menentukan repositori tempat image akan dikirim). Alat ini juga menjalankan langkah kustomize untuk membuat ConfigMaps dan Secret Kubernetes berdasarkan output dari eksekusi Terraform.

  4. Pastikan bahwa sertifikat telah disediakan:

    kubectl get -w managedcertificates/guacamole-client-cert \
    -n guacamole \
    -o jsonpath="{.spec.domains[0]} is {.status.domainStatus[0].status}"
    

    Penyediaan sertifikat dapat memerlukan waktu hingga 60 menit untuk selesai.

  5. Setelah sertifikat disediakan, Anda dapat membuka URL di browser.

    1. Lihat URL dari output terraform:

      echo $GUACAMOLE_URL
      
    2. Di jendela browser, masukkan URL yang Anda dapatkan di langkah sebelumnya.

    3. Saat IAP meminta Anda, login dengan kredensial Google Anda.

      Setelah login, Anda akan login ke Guacamole dengan hak istimewa administratif, berdasarkan skrip insert-admin-user.sql yang Anda jalankan sebelumnya dalam prosedur ini.

Sekarang, Anda dapat menambahkan pengguna tambahan berdasarkan alamat email mereka melalui antarmuka pengguna Guacamole. Untuk mengetahui detailnya, lihat Administrasi dalam dokumentasi Guacamole. Pengguna tambahan ini juga memerlukan izin melalui Google IAM, dengan peran IAP-secured Web App User.

Menguji koneksi ke VM

Setelah men-deploy, mengonfigurasi, dan berhasil login ke Guacamole, Anda dapat membuat VM Windows dan terhubung ke VM yang baru dibuat melalui Guacamole.

Membuat VM

  1. Di Cloud Shell, buat VM Windows untuk menguji koneksi ke:

    export TEST_VM=windows-vm
    gcloud compute instances create $TEST_VM \
        --project=$PROJECT_ID \
        --zone=$ZONE \
        --machine-type=n1-standard-1 \
        --subnet=$SUBNET \
        --no-address \
        --image-family=windows-2019 \
        --image-project=windows-cloud \
        --boot-disk-size=50GB \
        --boot-disk-type=pd-standard \
        —-shielded-secure-boot
    

    Setelah menjalankan perintah, Anda mungkin perlu menunggu beberapa menit hingga Windows selesai melakukan inisialisasi, sebelum melanjutkan ke langkah berikutnya.

  2. Reset sandi Windows untuk VM yang baru saja Anda buat:

    gcloud compute reset-windows-password $TEST_VM \
        --user=admin \
        --zone=$ZONE
    

Menambahkan koneksi baru ke VM

  1. Di jendela browser, masukkan URL instance Guacamole dari Men-deploy Guacamole ke GKE menggunakan Skaffold, lalu login melalui IAP.
  2. Di UI Guacamole, klik nama pengguna Anda, lalu klik Settings.
  3. Di tab Connections, klik New (Baru) Connection (Koneksi).
    1. Di kolom Nama, masukkan nama untuk koneksi.
    2. Di kolom Location (Lokasi), masukkan lokasi untuk koneksi.
    3. Dari daftar drop-down Protocol, pilih RDP.
  4. Di kolom Network (Jaringan), di kolom Hostname, masukkan nama VM yang Anda buat, windows-vm.

    DNS project Anda akan me-resolve nama host ini ke alamat IP internal instance.

  5. Di bagian Authentication (Autentikasi), tetapkan kolom berikut:

    1. Username: admin
    2. Sandi: sandi yang Anda dapatkan saat mereset sandi untuk VM
    3. Mode keamanan: NLA (Autentikasi Tingkat Jaringan)
    4. Abaikan sertifikat server: centang kotak

      VM Windows Compute Engine disediakan dengan sertifikat yang ditandatangani sendiri untuk Layanan Desktop Jarak Jauh, jadi Anda harus menginstruksikan Guacamole untuk mengabaikan masalah validasi sertifikat.

  6. Klik Simpan.

  7. Klik nama pengguna Anda, lalu pilih Beranda.

  8. Klik koneksi yang baru saja Anda buat untuk menguji konektivitas. Setelah beberapa detik, Anda akan melihat desktop instance VM.

Untuk mengetahui detail selengkapnya tentang cara mengonfigurasi Guacamole, lihat Manual Apache Guacamole.

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan dalam prosedur ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Menghapus project

  1. Di konsol Google Cloud , buka halaman Manage resources.

    Buka Kelola resource

  2. Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  3. Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.

Menghapus resource baru

Selain menghapus seluruh project, Anda dapat menghapus setiap resource yang dibuat selama prosedur ini. Perhatikan bahwa konfigurasi Layar Izin OAuth tidak dapat dihapus dari project, hanya dapat diubah.

  • Di Cloud Shell, gunakan terraform untuk menghapus resource:

    cd ~/guacamole-on-gcp/tf-k8s
    terraform destroy
    
    cd ~/guacamole-on-gcp/tf-infra
    terraform destroy
    
    gcloud compute instances delete $TEST_VM –-zone=$ZONE
    

Langkah berikutnya

Kontributor

Penulis: Richard Grime | Principal Architect, UK Public Sector

Kontributor lainnya: