arrow_back

Menggunakan Cloud SQL dengan Google Kubernetes Engine

Login Gabung
Dapatkan akses ke 700+ lab dan kursus

Menggunakan Cloud SQL dengan Google Kubernetes Engine

Lab 1 jam universal_currency_alt 5 Kredit show_chart Pengantar
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Dapatkan akses ke 700+ lab dan kursus

Ringkasan

Di lab ini, Anda akan menyiapkan Deployment WordPress di Kubernetes yang terhubung ke Cloud SQL melalui Proxy SQL. Proxy SQL memungkinkan Anda berinteraksi dengan instance Cloud SQL seolah-olah instance tersebut diinstal secara lokal (localhost:3306), dan meskipun Anda berada di port yang tidak aman secara lokal, Proxy SQL memastikan Anda aman melalui kabel ke Instance Cloud SQL Anda.

Untuk menyelesaikan lab ini, Anda akan membuat beberapa komponen. Pertama, Anda akan membuat cluster GKE, selanjutnya Anda akan membuat Instance Cloud SQL yang akan dihubungkan, dan Akun Layanan untuk memberikan izin bagi Pod Anda guna mengakses Instance Cloud SQL tersebut. Autentikasi dilakukan menggunakan Workload Identity. Terakhir, Anda akan men-deploy WordPress di cluster GKE, dengan Proxy SQL sebagai Sidecar (container bantuan), yang terhubung ke Instance Cloud SQL Anda.

Tujuan

Di lab ini, Anda akan mempelajari cara melakukan tugas-tugas berikut:

  • Membuat database dan instance Cloud SQL untuk Wordpress.
  • Membuat kredensial dan Secret Kubernetes untuk autentikasi aplikasi.
  • Mengonfigurasi Workload Identity.
  • Mengonfigurasi Deployment dengan image Wordpress untuk menggunakan Proxy SQL.
  • Menginstal Proxy SQL sebagai container sidecar dan menggunakannya untuk menyediakan akses SSL ke instance CloudSQL di luar Cluster GKE.

Penyiapan lab

Mengakses Qwiklabs

Untuk setiap lab, Anda akan memperoleh project Google Cloud baru serta serangkaian resource selama jangka waktu tertentu, tanpa biaya.

  1. Login ke Qwiklabs menggunakan jendela samaran.

  2. Perhatikan waktu akses lab (misalnya, 1:15:00), dan pastikan Anda dapat menyelesaikannya dalam waktu tersebut.
    Tidak ada fitur jeda. Bila perlu, Anda dapat memulai ulang lab, tetapi Anda harus memulai dari awal.

  3. Jika sudah siap, klik Start lab.

  4. Catat kredensial lab (Nama pengguna dan Sandi) Anda. Anda akan menggunakannya untuk login ke Google Cloud Console.

  5. Klik Open Google Console.

  6. Klik Use another account, lalu salin/tempel kredensial lab ini ke perintah yang muncul.
    Jika menggunakan kredensial lain, Anda akan menerima pesan error atau dikenai biaya.

  7. Setujui ketentuan dan lewati halaman resource pemulihan.

Setelah Anda menyelesaikan langkah login awal, dasbor project akan muncul.

Mengaktifkan Google Cloud Shell

Google Cloud Shell adalah virtual machine yang dilengkapi dengan berbagai fitur pengembangan. Virtual machine ini menawarkan direktori beranda persisten berkapasitas 5 GB dan berjalan di Google Cloud.

Google Cloud Shell menyediakan akses command line untuk resource Google Cloud Anda.

  1. Di Cloud Console, pada toolbar di kanan atas, klik tombol Open Cloud Shell.

    Ikon Cloud Shell yang diperjelas

  2. Klik Continue.

Proses menyediakan dan menghubungkan ke lingkungan memerlukan waktu beberapa saat. Setelah terhubung, Anda sudah diautentikasi, dan project ditetapkan ke PROJECT_ID Anda. Contoh:

Project ID yang diperjelas di Terminal Cloud Shell

gcloud adalah alat command line untuk Google Cloud. Alat ini sudah terinstal di Cloud Shell dan mendukung pelengkapan command line.

  • Anda dapat menampilkan daftar nama akun yang aktif dengan perintah ini:
gcloud auth list

Output:

Akun berkredensial: - @.com (aktif)

Contoh output:

Akun berkredensial: - google1623327_student@qwiklabs.net
  • Anda dapat menampilkan daftar project ID dengan perintah ini:
gcloud config list project

Output:

[core] project =

Contoh output:

[core] project = qwiklabs-gcp-44776a13dea667a6 Catatan: Dokumentasi lengkap gcloud tersedia dalam panduan ringkasan gcloud CLI .

Tugas 1. Menghubungkan ke cluster GKE lab

  1. Di Cloud Shell, ketik perintah berikut guna menetapkan variabel lingkungan untuk nama cluster dan zona Google Cloud:
export my_cluster=autopilot-cluster-1 export my_project=$(gcloud config get-value project) export my_region={{{ project_0.default_region | "" }}}
  1. Konfigurasi pelengkapan command line untuk alat command line kubectl:
source <(kubectl completion bash)
  1. Konfigurasi akses ke cluster Anda untuk kubectl:
gcloud container clusters get-credentials $my_cluster --region $my_region

Tugas 2. Mengaktifkan Cloud SQL API

  1. Pada Konsol Google Cloud, di Navigation menu (Ikon Navigation menu), klik APIs & Services.

  2. Klik + Enable APIs and Services.

  3. Pada bagian Search for APIs & Services, ketik SQL lalu klik kotak Cloud SQL API.

  4. Klik Enable untuk mengaktifkan Cloud SQL API.

Jika API sudah diaktifkan, tombol Manage akan muncul, dengan pesan API enabled. Dalam kasus ini, Anda tidak perlu melakukan tindakan apa pun.

  1. Ulangi langkah di atas untuk mengaktifkan sqladmin API.

Tugas 3. Membuat instance Cloud SQL

  1. Di Cloud Shell, jalankan perintah berikut untuk membuat instance:
gcloud sql instances create sql-instance --tier=db-n1-standard-2 --region=$my_region
  1. Di konsol Google Cloud, buka SQL.
  2. Anda akan melihat sql-instance, klik nama tersebut, lalu klik menu Users.
Catatan: Anda harus menunggu beberapa menit hingga instance Cloud SQL disediakan.

Ketika Anda melihat pengguna root yang ada tercantum dalam daftar, Anda dapat melanjutkan ke langkah berikutnya.

  1. Klik Add User Account, lalu buat akun. Gunakan sqluser sebagai nama pengguna dan sqlpassword sebagai sandi.

  2. Biarkan opsi Host name tetap Allow any host (%)., lalu klik ADD.

  3. Kembali ke menu Overview, tetap di instance Anda (sql-instance), dan salin nama koneksi Instance Anda.

Anda mungkin perlu men-scroll sedikit ke bawah untuk melihatnya.

  1. Buat variabel lingkungan untuk menyimpan nama instance Cloud SQL Anda, dengan mengganti placeholder dengan nama yang Anda salin di langkah sebelumnya:
export SQL_NAME=[Nama Instance Cloud SQL]
  1. Perintah Anda akan terlihat seperti berikut:
$ export SQL_NAME=qwiklabs-gcp-d03ee58ad9ad507e:us-central1:sql-instance
  1. Hubungkan ke instance Cloud SQL Anda:
gcloud sql connect sql-instance
  1. Saat diminta untuk memasukkan sandi root, tekan enter. Sandi pengguna SQL root kosong secara default.

Perintah mysql> muncul, yang menunjukkan bahwa Anda sekarang terhubung ke instance Cloud SQL menggunakan klien MySQL.

  1. Buat database yang diperlukan untuk Wordpress. Database ini bernama wordpress secara default:
create database wordpress;
  1. Pilih database wordpress:
use wordpress;
  1. Pilih database wordpress:
show tables;

Tindakan ini akan menampilkan Empty set karena Anda belum membuat tabel apa pun.

  1. Keluar dari klien MySQL:
exit;

Klik Check my progress untuk memverifikasi tujuan.

Membuat Instance Cloud SQL

Tugas 4. Menyiapkan Akun Layanan dengan izin untuk mengakses Cloud SQL

  1. Untuk membuat Akun Layanan, di konsol Google Cloud, buka IAM & Admin> Service Accounts.

  2. Klik + Create Service Account.

  3. Tentukan Service account name sebagai sql-access, lalu klik Create and Continue.

  4. Klik Select a role.

  5. Telusuri Cloud SQL, pilih Cloud SQL Client lalu klik Continue.

  6. Klik Done.

  7. Temukan akun layanan sql-access, lalu klik ikon tiga titik di kolom Actions.

  8. Pilih Manage keys.

  9. Selanjutnya, klik ADD KEY, lalu pilih Create new key.

  10. Pastikan jenis kunci JSON dipilih, lalu klik CREATE.

Tindakan ini akan membuat pasangan kunci umum/pribadi, dan mendownload file kunci pribadi secara otomatis ke komputer Anda. Anda akan membutuhkan file JSON ini nanti.

  1. Klik Close untuk menutup dialog notifikasi.
  2. Temukan file kredensial JSON yang Anda download dan ganti namanya menjadi credentials.json

Tugas 5. Membuat Akun Layanan Kubernetes dan mengonfigurasi Workload Identity

  1. Di Cloud Shell, jalankan perintah berikut untuk membuat Akun Layanan Kubernetes:
kubectl create serviceaccount gkesqlsa
  1. Di Cloud Shell, jalankan perintah berikut untuk mengikat akun layanan Google Cloud dengan Akun Layanan Kubernetes yang baru saja Anda buat:
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:$my_project.svc.id.goog[default/gkesqlsa]" \ sql-access@$my_project.iam.gserviceaccount.com
  1. Di Cloud Shell, jalankan perintah berikut untuk menganotasi Akun Layanan Kubernetes dengan detail akun layanan Google Cloud:
kubectl annotate serviceaccount \ gkesqlsa \ iam.gke.io/gcp-service-account=sql-access@$my_project.iam.gserviceaccount.com

Klik Check my progress untuk memverifikasi tujuan.

Membuat Akun Layanan

Tugas 6. Membuat Secret

Anda akan membuat dua Secret Kubernetes: satu untuk kredensial MySQL dan satu lagi untuk kredensial Google (akun layanan).

  1. Untuk membuat Secret bagi kredensial MySQL Anda, masukkan kode berikut di Cloud Shell:
kubectl create secret generic sql-credentials \ --from-literal=username=sqluser\ --from-literal=password=sqlpassword

Jika Anda menggunakan nama pengguna dan sandi yang berbeda saat membuat akun pengguna Cloud SQL, ganti dengan nama pengguna dan sandi yang ada di sini.

  1. Di Cloud Shell, klik More (Ikon More) di ujung kanan panel menu Cloud Shell.

  2. Pilih Upload, tetap pilih File, lalu klik Choose Files dan upload file kredensial credentials.json yang Anda download di tugas sebelumnya ke Cloud Shell.

  3. Di Cloud Shell, pindahkan file kredensial ke direktori kerja saat ini:

mv ~/credentials.json .

File yang diupload ke Cloud Shell diupload ke direktori beranda pengguna. Bekerja dengan file di direktori kerja saat ini lebih mudah dengan kubectl, sehingga memindahkannya akan menyederhanakan langkah selanjutnya.

  1. Buat Secret untuk kredensial Akun Layanan Google Cloud Anda menggunakan perintah berikut:
kubectl create secret generic google-credentials\ --from-file=key.json=credentials.json

Klik Check my progress untuk memverifikasi tujuan.

Membuat Secret

Tugas 7. Men-deploy agen Proxy SQL sebagai container sidecar

Mari kita buat file manifes deployment bernama sql-proxy.yaml yang men-deploy container aplikasi Wordpress demo dengan agen Proxy SQL sebagai container sidecar.

Di setelan lingkungan container Wordpress, WORDPRESS_DB_HOST ditentukan menggunakan alamat IP localhost. Container sidecar cloudsql-proxy dikonfigurasi untuk mengarah ke instance Cloud SQL yang Anda buat di tugas sebelumnya. Nama pengguna dan sandi database diteruskan ke container Wordpress sebagai kunci secret, dan Workload Identity berhasil dikonfigurasi. Service juga dibuat agar Anda dapat terhubung ke instance Wordpress dari internet.

Buat dan buka file bernama sql-proxy.yaml dengan nano menggunakan perintah berikut:

nano sql-proxy.yaml
  1. Setelah nano terbuka, tempel kode berikut ke file sql-proxy.yaml:
apiVersion: apps/v1 kind: Deployment metadata: name: wordpress labels: app: wordpress spec: selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: serviceAccountName: gkesqlsa containers: - name: web image: gcr.io/cloud-marketplace/google/wordpress:6.1 #image: wordpress:5.9 ports: - containerPort: 80 env: - name: WORDPRESS_DB_HOST value: 127.0.0.1:3306 # These secrets are required to start the pod. # [START cloudsql_secrets] - name: WORDPRESS_DB_USER valueFrom: secretKeyRef: name: sql-credentials key: username - name: WORDPRESS_DB_PASSWORD valueFrom: secretKeyRef: name: sql-credentials key: password # [END cloudsql_secrets] # Change '<INSTANCE_CONNECTION_NAME>' here to include your Google Cloud # project, the region of your Cloud SQL instance and the name # of your Cloud SQL instance. The format is # $PROJECT:$REGION:$INSTANCE # [START proxy_container] - name: cloudsql-proxy image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.8.0 args: - "--structured-logs" - "--port=3306" - "<INSTANCE_CONNECTION_NAME>" securityContext: runAsNonRoot: true --- apiVersion: "v1" kind: "Service" metadata: name: "wordpress-service" namespace: "default" labels: app: "wordpress" spec: ports: - protocol: "TCP" port: 80 selector: app: "wordpress" type: "LoadBalancer" loadBalancerIP: ""
  1. Tekan Ctrl+O, lalu tekan Enter untuk menyimpan file yang diedit.

  2. Tekan Ctrl+X untuk keluar dari editor teks nano.

Bagian penting yang perlu diperhatikan dalam manifes ini adalah:

  • Di bagian spec, Akun Layanan Kubernetes telah dikonfigurasi.
  • Di bagian env Wordpress, variabel WORDPRESS_DB_HOST disetel ke 127.0.0.1:3306. Bagian ini akan terhubung ke container di Pod yang sama yang memantau port 3306. Ini adalah port yang dipantau Proxy SQL secara default.
  • Di bagian env Wordpress, variabel WORDPRESS_DB_USER dan WORDPRESS_DB_PASSWORD ditetapkan menggunakan nilai yang disimpan dalam Secret sql-credential yang Anda buat di tugas sebelumnya.
  • Di bagian container cloudsql-proxy, switch perintah yang menentukan nama Koneksi SQL, "INSTANCE_CONNECTION_NAME> berisi variabel placeholder yang tidak dikonfigurasi menggunakan ConfigMap atau Secret, sehingga harus diperbarui secara langsung dalam manifes contoh ini agar mengarah ke instance Cloud SQL Anda.
  • Bagian Service di akhir membuat LoadBalancer eksternal yang disebut "wordpress-service" yang memungkinkan aplikasi diakses dari alamat internet eksternal.
  1. Gunakan sed untuk memperbarui variabel placeholder untuk nama Koneksi SQL ke nama instance Cloud SQL Anda:
{i>sed -i 's/<INSTANCE_CONNECTION_NAME>/'"${SQL_NAME}"'/g'\ {i>sql-proxy.yaml<i} Catatan: Perintah sed di UNIX adalah singkatan dari stream editor dan perintah ini dapat menjalankan banyak fungsi pada file seperti penggantian, penyisipan, atau penghapusan. Meskipun demikian, penggunaan yang paling umum dari sed adalah untuk substitusi. Dengan sed, Anda dapat mengedit file tanpa perlu membukanya. Ini merupakan cara yang jauh lebih cepat untuk menemukan dan mengganti sesuatu dalam file, daripada membuka file tersebut terlebih dahulu di editor lalu mengubahnya.
  1. Deploy aplikasi:
kubectl apply -f sql-proxy.yaml
  1. Buat kueri status Deployment:
kubectl get deployment wordpress Catatan: Anda perlu mengulangi perintah ini sampai Anda melihat bahwa instance tersedia.

Output:

NAME READY UP-TO-DATE AVAILABLE AGE wordpress 1/1 1 1 45s
  1. Cantumkan layanan di cluster GKE Anda:
kubectl get services

ip-address LoadBalancer eksternal untuk wordpress-service adalah alamat yang Anda gunakan untuk terhubung ke blog Wordpress Anda.

  1. Ulangi perintah sampai Anda mendapatkan alamat eksternal seperti yang ditunjukkan di sini.
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) kubernetes ClusterIP 10.12.0.1 443/TCP wordpress-service LoadBalancer 10.12.3.17 35.238.218.6 80:31095/TCP

Klik Check my progress untuk memverifikasi tujuan.

Men-deploy agen Proxy SQL sebagai container sidecar

Tugas 7. Menghubungkan ke instance Wordpress Anda

  1. Buka tab browser baru dan hubungkan ke situs Wordpress Anda menggunakan ip-address LoadBalancer eksternal. Tindakan ini akan memulai wizard penginstalan Wordpress awal.
  2. Pilih English (United States), lalu klik Continue.
  3. Masukkan nama sampel pada bagian Site Title.
  4. Masukkan Username dan Password untuk mengelola situs.
  5. Masukkan alamat email.

Nilai-nilai ini tidak terlalu penting, Anda tidak perlu menggunakannya.

  1. Klik Install Wordpress.

Setelah beberapa detik, Anda akan melihat Success! dalam notifikasi. Anda dapat login jika ingin menjelajahi antarmuka admin Wordpress, tetapi ini tidak diperlukan untuk lab.

Proses inisialisasi telah membuat tabel dan data database baru di database wordpress pada instance Cloud SQL Anda. Anda sekarang akan memvalidasi bahwa tabel database baru ini telah dibuat menggunakan container proxy SQL.

  1. Pindah kembali ke Cloud Shell dan hubungkan ke instance Cloud SQL Anda:
gcloud sql connect sql-instance
  1. Saat diminta untuk memasukkan sandi root, tekan enter. Sandi pengguna SQL root kosong secara default.

Perintah mysql> muncul, yang menunjukkan bahwa Anda sekarang terhubung ke instance Cloud SQL menggunakan klien MySQL.

  1. Pilih database wordpress:
use wordpress;
  1. Pilih database wordpress:
show tables;

Perintah ini akan menampilkan sejumlah tabel database baru yang dibuat ketika Wordpress diinisialisasi, yang menunjukkan bahwa container Proxy SQL sidecar telah dikonfigurasi dengan benar:

MySQL [wordpress]> show tables; +-----------------------+ | Tables_in_wordpress | +-----------------------+ | wp_commentmeta | | wp_comments | | wp_links | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +-----------------------+ 12 rows in set (0.19 sec)
  1. Cantumkan semua entri tabel pengguna Wordpress:
select * from wp_users;

Perintah ini akan mencantumkan kumpulan database untuk akun admin Wordpress yang menampilkan email yang Anda pilih saat menginisialisasi Wordpress.

  1. Keluar dari klien MySQL:
exit;

Mengakhiri lab Anda

Setelah Anda menyelesaikan lab, klik Akhiri Lab. Google Cloud Skills Boost menghapus resource yang telah Anda gunakan dan membersihkan akun.

Anda akan diberi kesempatan untuk menilai pengalaman menggunakan lab. Pilih jumlah bintang yang sesuai, ketik komentar, lalu klik Submit.

Makna jumlah bintang:

  • 1 bintang = Sangat tidak puas
  • 2 bintang = Tidak puas
  • 3 bintang = Netral
  • 4 bintang = Puas
  • 5 bintang = Sangat puas

Anda dapat menutup kotak dialog jika tidak ingin memberikan masukan.

Untuk masukan, saran, atau koreksi, gunakan tab Support.

Hak cipta 2020 Google LLC Semua hak dilindungi undang-undang. Google dan logo Google adalah merek dagang dari Google LLC. Semua nama perusahaan dan produk lain mungkin adalah merek dagang masing-masing perusahaan yang bersangkutan.

Sebelum memulai

  1. Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
  2. Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
  3. Di kiri atas layar, klik Start lab untuk memulai

Gunakan penjelajahan rahasia

  1. Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
  2. Klik Open console dalam mode pribadi

Login ke Konsol

  1. Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
  2. Setujui persyaratan, dan lewati halaman resource pemulihan
  3. Jangan klik End lab kecuali jika Anda sudah menyelesaikan lab atau ingin mengulanginya, karena tindakan ini akan menghapus pekerjaan Anda dan menghapus project

Konten ini tidak tersedia untuk saat ini

Kami akan memberi tahu Anda melalui email saat konten tersedia

Bagus!

Kami akan menghubungi Anda melalui email saat konten tersedia

Satu lab dalam satu waktu

Konfirmasi untuk mengakhiri semua lab yang ada dan memulai lab ini

Gunakan penjelajahan rahasia untuk menjalankan lab

Gunakan jendela Samaran atau browser pribadi untuk menjalankan lab ini. Langkah ini akan mencegah konflik antara akun pribadi Anda dan akun Siswa yang dapat menyebabkan tagihan ekstra pada akun pribadi Anda.