Di lab ini, Anda akan menyiapkan informasi konfigurasi, baik yang dienkripsi maupun yang tidak dienkripsi. Informasi konfigurasi yang terenkripsi disimpan sebagai secret. Informasi konfigurasi yang tidak terenkripsi disimpan sebagai ConfigMap.
Pendekatan ini menghindari hard coding atas informasi tersebut menjadi code base. Kredensial (seperti kunci API) yang termasuk secret seharusnya tidak pernah masuk ke dalam repositori kode seperti GitHub (kecuali kredensial tersebut dienkripsi sebelum masuk, tetapi sebaiknya kredensial tersebut tetap dipisahkan).
Tujuan
Di lab ini, Anda akan mempelajari cara melakukan tugas-tugas berikut:
Membuat secret menggunakan perintah kubectl dan file manifes.
Membuat ConfigMap menggunakan perintah kubectl dan file manifes.
Memakai secret di container menggunakan variabel lingkungan atau volume yang terpasang.
Memakai ConfigMap di container menggunakan variabel lingkungan atau volume yang terpasang.
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:
Dalam tugas ini, Anda akan mengautentikasi container dengan Google Cloud agar dapat mengakses layanan Google Cloud. Anda menyiapkan topik dan langganan Cloud Pub/Sub, mencoba mengakses topik Cloud Pub/Sub dari container yang berjalan di GKE, dan melihat bahwa permintaan akses gagal.
Untuk mengakses topik Pub/Sub dengan benar, Anda membuat akun layanan dengan kredensial dan meneruskan kredensial tersebut melalui Secret Kubernetes.
Menyiapkan akun layanan tanpa izin
Di Konsol Google Cloud, pada Navigation menu (), klik IAM & Admin > Service accounts.
Klik + Create Service Account.
Di kotak teks Service Account Name, masukkan no-permissions.
Klik Create and Continue.
Klik Continue lalu klik Done.
Temukan akun layanan no-permissions di daftar, lalu salin alamat email yang terkait dengannya ke file teks untuk digunakan nanti.
Membuat cluster GKE
Saat Anda membuat cluster ini, Anda akan menentukan akun layanan yang dibuat sebelumnya. Sebagai gambaran akan kebutuhan akun layanan dengan izin yang tepat, akun layanan tidak memiliki izin ke layanan Google Cloud lainnya sehingga tidak dapat terhubung ke aplikasi uji coba Cloud Pub/Sub yang nanti akan di-deploy. Anda akan memperbaiki hal ini nanti di lab.
Di Cloud Shell, ketik perintah berikut guna membuat variabel lingkungan untuk zona Google Cloud dan nama cluster yang akan digunakan untuk membuat cluster bagi lab ini:
export my_zone={{{ project_0.default_zone | ZONE }}}
export my_cluster=standard-cluster-1
Konfigurasi pelengkapan command line untuk alat command line kubectl:
source <(kubectl completion bash)
Di Cloud Shell, ketik perintah berikut guna menetapkan variabel lingkungan untuk nama akun layanan, dengan [MY-SERVICE-ACCOUNT-EMAIL] adalah alamat email akun layanan yang Anda buat sebelumnya:
Men-deploy aplikasi untuk membaca dari topik Cloud Pub/Sub
Anda membuat deployment dengan container yang dapat membaca dari topik Cloud Pub/Sub. Karena dibutuhkan izin spesifik untuk berlangganan dan membaca dari topik Cloud Pub/Sub, container ini perlu dilengkapi dengan kredensial agar berhasil terhubung ke Cloud Pub/Sub.
File manifes Deployment bernama pubsub.yaml disediakan untuk Anda.
Ubah ke direktori yang berisi file sampel untuk lab ini:
cd ~/ak8s/Secrets/
Deploy aplikasi:
kubectl apply -f pubsub.yaml
Setelah aplikasi di-deploy, buat kueri Pod dengan menjalankan perintah berikut:
kubectl get pods -l app=pubsub
Perintah berikut memfilter daftar Pod, yang hanya mencakup Pod yang memiliki label yang cocok berupa app: pubsub.
Output:
NAME READY STATUS RESTARTS AGE
pubsub-74d4d96ddb-lqkt8 0/1 CrashLoopBackOff 0 6s
Catatan: Anda perlu menunggu sekitar satu menit. Aplikasi sedang dimulai, tetapi ini tidak akan berhasil.
Cantumkan lagi Pod ke daftar:
kubectl get pods -l app=pubsub
Output:
NAME READY STATUS RESTARTS AGE
pubsub-74d4d96ddb-lqkt8 0/1 Error 4 2m
Perhatikan status Pod. Pod mengalami error dan telah dimulai ulang beberapa kali.
Untuk memeriksa log dari Pod, jalankan perintah berikut:
kubectl logs -l app=pubsub
Pesan error yang ditampilkan pada akhir log mengindikasikan bahwa aplikasi tidak memiliki izin untuk membuat kueri layanan Cloud Pub/Sub.
StatusCode.PERMISSION_DENIED, User not authorized to perform this action.
Membuat kredensial akun layanan
Anda akan membuat layanan akun baru serta memberinya akses ke langganan pub/sub yang sedang diupayakan oleh aplikasi uji coba untuk digunakan. Alih-alih mengubah akun layanan node cluster GKE, Anda akan membuat kunci JSON untuk akun layanan, lalu secara aman meneruskan kunci JSON ke Pod melalui Secret Kubernetes.
Di Konsol Google Cloud, pada Navigation menu, klik IAM & Admin > Service Accounts.
Klik + Create Service Account.
Di kotak teks Service Account Name, masukkan pubsub-app, lalu klik Create and Continue.
Pada menu drop-down Select a role, pilih Pub/Sub > Pub/Sub Subscriber.
Konfirmasi bahwa peran sudah tercantum, lalu klik Continue dan klik Done.
Di layar ringkasan Akun Layanan, klik tiga titik di sisi kanan akun layanan pubsub-app, lalu pilih Manage Keys.
Di menu drop-down, klik Add Key, lalu pilih Create new key.
Pilih JSON sebagai jenis kunci, lalu klik Create.
File kunci JSON yang berisi kredensial akun layanan akan didownload ke komputer Anda. Anda dapat melihat file di kotak download di bagian bawah layar. Anda akan menggunakan file kunci ini untuk mengonfigurasi sampel aplikasi guna mengautentikasi Cloud Pub/Sub API.
Klik Close.
Di hard drive, cari kunci JSON yang baru saja didownload, lalu ganti nama file menjadi credentials.json.
Mengimpor kredensial sebagai secret
Di Cloud Shell, klik tiga titik () pada toolbar Cloud Shell untuk menampilkan opsi lebih lanjut.
Klik Upload, lalu upload file credentials.json dari mesin lokal Anda ke VM Cloud Shell dan klik Upload.
Di Cloud Shell, masukkan perintah berikut untuk mengonfirmasi bahwa file telah diupload:
ls ~/
Anda akan melihat file kredensial yang telah diupload serta direktori file lab yang telah Anda clone sebelumnya.
Untuk menyimpan file kunci credentials.json ke Secret Kubernetes bernama pubsub-key, jalankan perintah berikut:
Perintah ini membuat sebuah secret bernama pubsub-key yang memiliki nilai key.json yang menampung konten kunci pribadi yang didownload dari Konsol Google Cloud.
Hapus file credentials.json dari komputer Anda:
rm -rf ~/credentials.json
Mengonfigurasi aplikasi dengan secret
Anda kini mengupdate deployment untuk mencakup perubahan berikut:
Tambahkan volume ke spesifikasi Pod. Volume ini berisi secret.
Volume secret terpasang di container aplikasi.
Variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ditetapkan untuk diarahkan ke file kunci di pemasangan volume secret.
Variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS secara otomatis dikenali oleh Library Klien Cloud, dalam kasus ini, klien Cloud Pub/Sub untuk Python.
File Deployment yang diupdate bernama pubsub-secret.yaml telah diberikan untuk Anda.
Dalam beberapa detik, pesan seharusnya dipilih oleh aplikasi dan dicetak oleh aliran output.
Untuk memeriksa log dari Pod yang di-deploy, jalankan perintah berikut:
kubectl logs -l app=pubsub
Output-nya akan terlihat seperti contoh.
Output:
Pulling messages from Pub/Sub subscription...
[2018-12-17 22:01:06.860378] Received message: ID=328977244395410 Data=b'Hello, world!'
[2018-12-17 22:01:06.860736] Processing: 328977244395410
[2018-12-17 22:01:09.863973] Processed: 328977244395410
Klik Check my progress untuk memverifikasi tujuan.
Menangani Secret
Tugas 2. Menangani ConfigMap
ConfigMap mengikat file konfigurasi, argumen command line, variabel lingkungan, nomor port, dan artefak konfigurasi lainnya ke container Pod dan komponen sistem Anda saat runtime.
Melalui ConfigMap, Anda dapat memisahkan konfigurasi dari Pod dan komponen. Namun, ConfigMap tidak sesuai untuk kredensial karena tidak terenkripsi. Di sinilah letak perbedaan antara secret dan ConfigMap: secret dienkripsi sehingga lebih sesuai untuk informasi rahasia atau sensitif seperti kredensial.
ConfigMap lebih sesuai untuk informasi konfigurasi umum seperti nomor port.
Menggunakan perintah kubectl untuk membuat ConfigMap
Anda menggunakan kubectl untuk membuat ConfigMap dengan mengikuti pola kubectl membuat configmap [NAME] [DATA] dan menambahkan flag untuk file (--from-file) atau literal (--from-literal).
Awali dengan literal sederhana dalam perintah kubectl berikut:
Anda juga dapat menggunakan file konfigurasi YAML untuk membuat ConfigMap. File config-map-3.yaml berisi definisi ConfigMap yang bernama sample3. Anda akan menggunakan ConfigMap ini nanti untuk mendemonstrasikan dua cara berbeda dalam mengekspos data di dalam container.
Sekarang, Anda memiliki informasi konfigurasi bukan secret yang tidak dienkripsi, benar-benar terpisah dari aplikasi, dan tersedia untuk cluster Anda. Anda telah menjalankan tugas ini menggunakan ConfigMap dengan tiga cara berbeda untuk mendemonstrasikan berbagai opsi. Namun, pada praktiknya, Anda biasanya memilih satu metode, yang kemungkinan besar berupa pendekatan file konfigurasi YAML. File konfigurasi menyediakan data berisi nilai yang Anda simpan, sehingga Anda dapat dengan mudah mengulang prosesnya nanti.
Selanjutnya, Anda akan mempelajari cara mengakses informasi ini dari dalam aplikasi Anda.
Menggunakan variabel lingkungan untuk memakai ConfigMap dalam container
Untuk dapat mengakses ConfigMap dari dalam Container dengan menggunakan variabel lingkungan, definisi Pod harus diupdate untuk mencakup satu atau beberapa configMapKeyRefs.
File pubsub-configmap.yaml merupakan versi terbaru dari Deployment demo Cloud Pub/Sub yang mencakup setelan tambahan env: di bagian akhir file untuk mengimpor variabel lingkungan dari ConfigMap ke container.
Untuk menerapkan kembali file konfigurasi terbaru, jalankan perintah berikut:
kubectl apply -f pubsub-configmap.yaml
Karena aplikasi Anda memiliki akses ke variabel lingkungan bernama INSIGHTS, yang memiliki nilai berupa testAllTheThings.
Untuk memverifikasi bahwa variabel lingkungan memiliki nilai yang benar, Anda harus mendapatkan akses shell ke Pod, yang berarti Anda membutuhkan nama Pod. Untuk mendapatkan nama Pod, jalankan perintah berikut:
kubectl get pods
Output-nya akan terlihat seperti contoh.
Output:
NAME READY STATUS RESTARTS AGE
pubsub-77df8f8c6-krfl2 1/1 Running 0 4m
Untuk memulai sesi shell, jalankan perintah berikut, yang mengganti nama Pod Anda dengan [MY-POD-NAME]:
kubectl exec -it [MY-POD-NAME] -- sh
Contoh:
kubectl exec -it pubsub-77df8f8c6-krfl2 -- sh
Untuk mencetak daftar variabel lingkungan, jalankan perintah berikut:
printenv
INSIGHTS=testAllTheThings seharusnya muncul dalam daftar.
Untuk keluar dari sesi shell container, jalankan perintah berikut:
exit
Menggunakan volume terpasang untuk memakai ConfigMap dalam container
Anda dapat mengisi volume dengan data ConfigMap sebagai ganti (atau sebagai tambahan untuk) menyimpannya di variabel lingkungan.
Dalam Deployment ini, ConfigMap bernama sample-3 yang Anda buat sebelumnya dalam tugas ini juga ditambahkan sebagai volume bernama config-3 dalam spesifikasi Pod. Volume config-3 lalu terpasang di dalam container di jalur /etc/config. Metode asli yang menggunakan Variabel lingkungan untuk mengimpor ConfigMap juga dikonfigurasi.
File Deployment yang diupdate bernama pubsub-configmap2.yaml telah diberikan untuk Anda.
Hubungkan kembali ke sesi shell container untuk mengetahui apakah nilai dalam ConfigMap dapat diakses atau tidak. Nama Pod akan sudah berubah. Untuk mendapatkan nama Pod, jalankan perintah berikut:
kubectl get pods
Output-nya akan terlihat seperti contoh.
Output:
NAME READY STATUS RESTARTS AGE
pubsub-747cf8c545-ngsrf 1/1 Running 0 30s
pubsub-df6bc7b87-vb8cz 1/1 Terminating 0 4m
Untuk memulai sesi shell, jalankan perintah berikut, yang mengganti nama Pod Anda dengan [MY-POD-NAME]:
kubectl exec -it [MY-POD-NAME] -- sh
Contoh:
kubectl exec -it pubsub-747cf8c545-ngsrf -- sh
Buka folder yang terkait:
cd /etc/config
Cantumkan daftar file dalam folder:
Nama file sebagai kunci dari sample3 harus dicantumkan.
ls
Output:
airspeed meme
Untuk melihat konten salah satu file, jalankan perintah berikut:
cat airspeed
Output:
africanOrEuropean#
Catatan: Nilai airspeed tidak mencakup enter, sehingga command prompt (tanda \#) berada di bagian akhir nilai yang ditampilkan.
Untuk keluar dari shell container, jalankan perintah berikut:
exit
Klik Check my progress untuk memverifikasi tujuan.
Menangani ConfigMap
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: Menangani Secret dan ConfigMap Kubernetes Engine