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.
Login ke Qwiklabs menggunakan jendela samaran.
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.
Jika sudah siap, klik Start lab.
Catat kredensial lab (Nama pengguna dan Sandi) Anda. Anda akan menggunakannya untuk login ke Google Cloud Console.
Klik Open Google Console.
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.
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.
Di Cloud Console, pada toolbar di kanan atas, klik tombol Open Cloud Shell.
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:
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:
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.
Buat database yang diperlukan untuk Wordpress. Database ini bernama wordpress secara default:
create database wordpress;
Pilih database wordpress:
use wordpress;
Pilih database wordpress:
show tables;
Tindakan ini akan menampilkan Empty set karena Anda belum membuat tabel apa pun.
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
Untuk membuat Akun Layanan, di konsol Google Cloud, buka IAM & Admin> Service Accounts.
Klik + Create Service Account.
Tentukan Service account name sebagai sql-access, lalu klik Create and Continue.
Klik Select a role.
Telusuri Cloud SQL, pilih Cloud SQL Client lalu klik Continue.
Klik Done.
Temukan akun layanan sql-access, lalu klik ikon tiga titik di kolom Actions.
Pilih Manage keys.
Selanjutnya, klik ADD KEY, lalu pilih Create new key.
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.
Klik Close untuk menutup dialog notifikasi.
Temukan file kredensial JSON yang Anda download dan ganti namanya menjadi credentials.json
Tugas 5. Membuat Akun Layanan Kubernetes dan mengonfigurasi Workload Identity
Di Cloud Shell, jalankan perintah berikut untuk membuat Akun Layanan Kubernetes:
kubectl create serviceaccount gkesqlsa
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
Di Cloud Shell, jalankan perintah berikut untuk menganotasi Akun Layanan Kubernetes dengan detail akun layanan Google Cloud:
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.
Di Cloud Shell, klik More () di ujung kanan panel menu Cloud Shell.
Pilih Upload, tetap pilih File, lalu klik Choose Files dan upload file kredensial credentials.json yang Anda download di tugas sebelumnya ke Cloud Shell.
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.
Buat Secret untuk kredensial Akun Layanan Google Cloud Anda menggunakan perintah berikut:
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
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: ""
Tekan Ctrl+O, lalu tekan Enter untuk menyimpan file yang diedit.
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.
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.
Deploy aplikasi:
kubectl apply -f sql-proxy.yaml
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
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.
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
Buka tab browser baru dan hubungkan ke situs Wordpress Anda menggunakan ip-address LoadBalancer eksternal. Tindakan ini akan memulai wizard penginstalan Wordpress awal.
Pilih English (United States), lalu klik Continue.
Masukkan nama sampel pada bagian Site Title.
Masukkan Username dan Password untuk mengelola situs.
Masukkan alamat email.
Nilai-nilai ini tidak terlalu penting, Anda tidak perlu menggunakannya.
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.
Pindah kembali ke Cloud Shell dan hubungkan ke instance Cloud SQL Anda:
gcloud sql connect sql-instance
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.
Pilih database wordpress:
use wordpress;
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:
Perintah ini akan mencantumkan kumpulan database untuk akun admin Wordpress yang menampilkan email yang Anda pilih saat menginisialisasi Wordpress.
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.
Lab membuat project dan resource Google Cloud untuk jangka waktu tertentu
Lab memiliki batas waktu dan tidak memiliki fitur jeda. Jika lab diakhiri, Anda harus memulainya lagi dari awal.
Di kiri atas layar, klik Start lab untuk memulai
Gunakan penjelajahan rahasia
Salin Nama Pengguna dan Sandi yang diberikan untuk lab tersebut
Klik Open console dalam mode pribadi
Login ke Konsol
Login menggunakan kredensial lab Anda. Menggunakan kredensial lain mungkin menyebabkan error atau dikenai biaya.
Setujui persyaratan, dan lewati halaman resource pemulihan
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.
Merancang dengan Google Kubernetes Engine: Menggunakan Cloud SQL dengan Kubernetes Engine