Petunjuk dan persyaratan penyiapan lab
Lindungi akun dan progres Anda. Selalu gunakan jendela browser pribadi dan kredensial lab untuk menjalankan lab ini.

Mengonfigurasi Networking Google Kubernetes Engine (GKE)

Lab 1 jam universal_currency_alt 5 Kredit show_chart Pengantar
info Lab ini mungkin menggabungkan alat AI untuk mendukung pembelajaran Anda.
Konten ini belum dioptimalkan untuk perangkat seluler.
Untuk pengalaman terbaik, kunjungi kami dengan komputer desktop menggunakan link yang dikirim melalui email.

Ringkasan

Di lab ini, Anda akan membuat cluster standar yang menggunakan alamat IP RFC 1918 internal, menambahkan jaringan yang diotorisasi untuk akses API ke cluster tersebut, lalu mengonfigurasi kebijakan jaringan untuk keamanan Pod.

Catatan: Untuk lab ini, Mode GKE Standard akan digunakan. Lab ini berisi pembahasan mengenai kebijakan jaringan cluster yang diaktifkan secara default di GKE Autopilot.

Tujuan

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

  • Membuat dan menguji cluster standar yang menggunakan alamat IP RFC 1918 internal.
  • Mengonfigurasi cluster untuk akses bidang kontrol jaringan yang diotorisasi.
  • Mengonfigurasi kebijakan jaringan Cluster.

Penyiapan dan persyaratan

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

  1. Klik tombol Start Lab. Jika Anda perlu membayar lab, jendela pop-up akan terbuka untuk memilih metode pembayaran. Di sebelah kiri adalah panel Lab Details yang memuat sebagai berikut:

    • Tombol Open Google Cloud console
    • Waktu tersisa
    • Kredensial sementara yang harus Anda gunakan untuk lab ini
    • Informasi lain, jika diperlukan, untuk menyelesaikan lab ini
  2. Klik Open Google Cloud console (atau klik kanan dan pilih Open Link in Incognito Window jika Anda menjalankan browser Chrome).

    Lab akan menjalankan resource, lalu membuka tab lain yang menampilkan halaman Sign in.

    Tips: Atur tab di jendela terpisah secara berdampingan.

    Catatan: Jika Anda melihat dialog Choose an account, klik Use Another Account.
  3. Jika perlu, salin Username di bawah dan tempel ke dialog Sign in.

    {{{user_0.username | "Username"}}}

    Anda juga dapat menemukan Username di panel Lab Details.

  4. Klik Next.

  5. Salin Password di bawah dan tempel ke dialog Welcome.

    {{{user_0.password | "Password"}}}

    Anda juga dapat menemukan Password di panel Lab Details.

  6. Klik Next.

    Penting: Anda harus menggunakan kredensial yang diberikan lab. Jangan menggunakan kredensial akun Google Cloud Anda. Catatan: Menggunakan akun Google Cloud sendiri untuk lab ini dapat dikenai biaya tambahan.
  7. Klik halaman berikutnya:

    • Setujui persyaratan dan ketentuan.
    • Jangan tambahkan opsi pemulihan atau autentikasi 2 langkah (karena ini akun sementara).
    • Jangan mendaftar uji coba gratis.

Setelah beberapa saat, Konsol Google Cloud akan terbuka di tab ini.

Catatan: Untuk melihat menu yang berisi daftar produk dan layanan Google Cloud, klik Navigation menu di kiri atas, atau ketik nama layanan atau produk di kolom Search. Ikon Navigation menu

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. Membuat cluster standar

Dalam tugas ini, Anda akan membuat cluster standar yang menggunakan alamat IP internal RFC 1918.

Semua worker node di cluster hanya akan memiliki alamat IP RFC 1918 internal. Hal ini memastikan bahwa workload worker node terisolasi dari Internet publik dan tidak memiliki alamat IP publik.

Menyiapkan cluster standar

  1. Di Navigation menu (Ikon Navigation menu), klik Kubernetes Engine > Clusters.
  2. Klik Create, lalu pilih Switch to Standard Cluster untuk cluster.
  3. Beri nama cluster sebagai standard-cluster.
  4. Pilih sebagai Zone.
  5. Di panel kiri, di Node Pools, klik default-pool.
  6. Di Number of nodes, ketik 2

Bagian detail node pool

  1. Di panel kiri, di Cluster, klik Networking.
  2. Pastikan Enable authorized networks tidak dipilih.
  3. Pilih kotak centang untuk Override control plane’s default private endpoint subnet.
  4. Untuk Private endpoint subnet, pilih default.

Bagian Networking

  1. Centang kotak untuk Enable Private nodes.
Catatan: Google Cloud menggunakan peering VPC untuk menghubungkan VPC cluster dengan jaringan VPC default Anda.

Anda mungkin harus men-scroll ke bawah untuk melihat opsi ini.

Dengan setelan ini, Anda dapat menentukan rentang alamat yang dapat mengakses cluster secara eksternal. Jika kotak centang ini tidak dipilih, Anda dapat mengakses kubectl hanya dari jaringan Google Cloud. Di lab ini, Anda hanya akan mengakses kubectl melalui jaringan Google Cloud, tetapi Anda akan memodifikasi setelan ini nanti.

  1. Klik Create.
Catatan: Anda perlu menunggu beberapa menit hingga deployment cluster selesai.

Memeriksa cluster

  • Di Cloud Shell, masukkan perintah berikut untuk meninjau detail dari cluster baru Anda.
gcloud container clusters describe standard-cluster --zone {{{project_0.default_zone|ZONE}}}

Nilai berikut hanya muncul dalam cluster:

  • privateEndpoint, alamat IP internal. Node menggunakan alamat IP internal ini untuk berkomunikasi dengan bidang kontrol cluster.
  • publicEndpoint, alamat IP eksternal. Administrator dan layanan eksternal dapat menggunakan alamat IP eksternal untuk berkomunikasi dengan bidang kontrol cluster.

Anda memiliki beberapa opsi untuk mengunci cluster ke berbagai tingkat:

  • Seluruh cluster dapat memiliki akses eksternal.
  • Seluruh cluster dapat memiliki akses internal.
  • Node dapat bersifat internal, sedangkan bidang kontrol cluster dapat bersifat publik, dan Anda dapat membatasi jaringan eksternal yang diotorisasi untuk mengakses bidang kontrol cluster.

Tanpa alamat IP publik, kode yang berjalan di node tidak dapat mengakses internet publik kecuali Anda mengonfigurasi gateway NAT seperti Cloud NAT.

Anda mungkin menggunakan cluster dengan akses internal untuk menyediakan layanan, seperti API internal yang hanya dimaksudkan untuk diakses oleh resource di dalam jaringan Anda. Misalnya, resource mungkin merupakan alat pribadi yang hanya digunakan perusahaan Anda. Atau resource mungkin berupa layanan backend yang diakses oleh layanan frontend, dan mungkin hanya layanan frontend tersebut yang diakses secara langsung oleh pengguna atau pelanggan eksternal. Dalam kasus seperti ini, cluster merupakan cara yang tepat untuk mengurangi area permukaan aplikasi yang dapat diserang.

Klik Periksa progres saya untuk memverifikasi tujuan. Membuat cluster standar

Tugas 2. Menambahkan jaringan yang diizinkan untuk akses bidang kontrol cluster

Setelah pembuatan cluster, Anda mungkin ingin memberikan perintah ke cluster dari luar Google Cloud. Misalnya, Anda mungkin memutuskan bahwa hanya jaringan perusahaan Anda yang dapat memberikan perintah ke bidang kontrol cluster. Sayangnya, Anda tidak menetapkan jaringan yang diizinkan pada saat pembuatan cluster.

Dalam tugas ini, Anda akan menambahkan jaringan yang diizinkan untuk akses bidang kontrol cluster.

Catatan: Dalam tugas ini, Anda membuat API bidang kontrol Kubernetes dapat diakses oleh rentang alamat jaringan tertentu. Dalam penggunaan GKE di dunia nyata, koneksi ini akan digunakan oleh staf IT dan proses otomatis, bukan pengguna akhir.
  1. Pada Navigation menu di Konsol Google Cloud (Ikon Navigation menu), klik Kubernetes Engine > Clusters.
  2. Klik standard-cluster untuk membuka halaman detail Cluster.
  3. Di tab Details, di bagian Control Plane Networking, klik Edit(Ikon Edit).
  4. Pilih Enable authorized networks.
  5. Klik Add an authorization network.
  6. Untuk Name, ketik nama untuk jaringan, gunakan Corporate.
  7. Untuk Network, ketik rentang CIDR yang ingin Anda beri akses ke bidang kontrol cluster. Misalnya, Anda dapat menggunakan 192.168.1.0/24.
  8. Klik Done.
  9. Pastikan parameter berikut diaktifkan:
    • Akses menggunakan alamat IP eksternal bidang kontrol
    • Akses menggunakan alamat IP internal bidang kontrol dari region mana saja
    • Terapkan jaringan yang diizinkan di endpoint internal bidang kontrol
    • Tambahkan alamat IP eksternal Google Cloud ke jaringan yang diizinkan

Beberapa jaringan dapat ditambahkan di sini jika perlu, tetapi tidak lebih dari 50 rentang CIDR.

Catatan: Di luar lingkungan lab ini, contoh penggunaannya adalah hanya mengizinkan akses ke alamat IP publik firewall perusahaan Anda. Misalnya, jika alamat IP firewall perusahaan Anda adalah 8.8.8.14, Anda dapat mengizinkan akses ke 8.8.8.14/32.
  1. Klik Save changes di bagian bawah menu.

Klik Periksa progres saya untuk memverifikasi tujuan. Menambahkan jaringan yang diizinkan untuk akses bidang kontrol cluster

Tugas 3. Membuat kebijakan jaringan cluster

Dalam tugas ini, Anda membuat kebijakan jaringan cluster untuk membatasi komunikasi antara Pod. Zona zero-trust penting untuk mencegah serangan lateral dalam cluster saat penyusup menyerang salah satu Pod.

Membuat cluster GKE

  1. Di Cloud Shell, ketik perintah berikut untuk menetapkan variabel lingkungan untuk nama cluster dan zona:
export my_zone={{{project_0.default_zone|ZONE}}} export my_cluster=standard-cluster-1
  1. Konfigurasi pelengkapan command line kubectl di Cloud Shell:
source <(kubectl completion bash)
  1. Di Cloud Shell, ketik perintah berikut untuk membuat cluster Kubernetes. Perlu diketahui bahwa perintah ini menambahkan flag tambahan --enable-network-policy ke parameter yang telah Anda gunakan dalam lab sebelumnya. Dengan flag tersebut, cluster ini dapat menggunakan kebijakan jaringan cluster:
gcloud container clusters create $my_cluster --num-nodes 3 --enable-ip-alias --zone $my_zone --enable-network-policy
  1. Di Cloud Shell, konfigurasi akses ke cluster Anda untuk alat command line kubectl menggunakan perintah berikut:
gcloud container clusters get-credentials $my_cluster --zone $my_zone
  1. Jalankan aplikasi server web sederhana dengan label app=hello, dan ekspos aplikasi web secara internal di cluster:
kubectl run hello-web --labels app=hello \ --image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose

Membatasi traffic masuk ke Pod

Buat sampel file manifes NetworkPolicy bernama hello-allow-from-foo.yaml . File manifes ini menentukan kebijakan ingress yang mengizinkan akses ke Pod berlabel app: hello dari Pod berlabel app: foo.

  1. Buat dan buka file bernama hello-allow-from-foo.yaml dengan nano menggunakan perintah berikut:
nano hello-allow-from-foo.yaml
  1. Setelah nano terbuka, tempel kode berikut ke file hello-allow-from-foo.yaml:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: hello-allow-from-foo spec: policyTypes: - Ingress podSelector: matchLabels: app: hello ingress: - from: - podSelector: matchLabels: app: foo
  1. Tekan Ctrl+O, lalu tekan Enter untuk menyimpan file yang diedit.

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

  3. Buat kebijakan ingress:

kubectl apply -f hello-allow-from-foo.yaml
  1. Verifikasi bahwa kebijakan telah dibuat:
kubectl get networkpolicy

Output:

NAME POD-SELECTOR AGE hello-allow-from-foo app=hello 7s

Memvalidasi kebijakan ingress

  1. Jalankan Pod sementara bernama test-1 dengan label app=foo dan dapatkan shell di Pod:
kubectl run test-1 --labels app=foo --image=alpine --restart=Never --rm --stdin --tty Catatan: Tombol kubectl yang digunakan di sini bersama dengan perintah run harus diperhatikan.

--stdin ( atau -i ) membuat sesi interaksi yang ditambahkan ke STDIN di container.

--tty ( atau -t ) mengalokasikan TTY untuk setiap container di pod.

--rm menginstruksikan Kubernetes untuk memperlakukan ini sebagai Pod sementara yang akan dihapus begitu tugas pemulaiannya selesai. Karena ini merupakan sesi interaktif, switch ini akan dihapus setelah pengguna keluar dari sesi.

--label ( atau -l ) menambahkan serangkaian label ke pod.

--restart menetapkan kebijakan mulai ulang untuk Pod.
  1. Ajukan permintaan ke endpoint hello-web:8080 untuk memverifikasi bahwa traffic masuk diizinkan:
wget -qO- --timeout=2 http://hello-web:8080

Output:

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 Hello, world! Version: 1.0.0 Hostname: hello-web-8b44b849-k96lh / #
  1. Ketik exit lalu tekan ENTER untuk keluar dari shell.

  2. Sekarang, Anda akan menjalankan Pod berbeda yang menggunakan nama Pod yang sama tapi menggunakan label, app=other, yang tidak sesuai dengan podSelector di kebijakan jaringan yang aktif. Pod ini seharusnya tidak memiliki kemampuan untuk mengakses aplikasi hello-web.

kubectl run test-1 --labels app=other --image=alpine --restart=Never --rm --stdin --tty
  1. Ajukan permintaan ke endpoint hello-web:8080 untuk memverifikasi bahwa traffic masuk tidak diizinkan:
wget -qO- --timeout=2 http://hello-web:8080

Waktu permintaan habis.

Output:

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 wget: download timed out / #
  1. Ketik exit lalu tekan ENTER untuk keluar dari shell.

Membatasi traffic keluar dari Pod

Anda dapat membatasi traffic keluar (egress) dengan cara sama yang Anda lakukan untuk traffic masuk. Meski demikian, untuk membuat kueri nama host internal (seperti hello-web) atau nama host eksternal (seperti www.example.com), Anda harus mengizinkan resolusi DNS di kebijakan jaringan egress. Traffic DNS terjadi di port 53, menggunakan protokol TCP dan UDP.

Mari kita buat file manifes NetworkPolicy bernama foo-allow-to-hello.yaml. File ini menentukan kebijakan yang mengizinkan Pod dengan label app: foo untuk berkomunikasi dengan Pod berlabel app: hello di nomor port mana saja, dan mengizinkan Pod berlabel app: foo untuk berkomunikasi dengan komputer mana saja di port UDP 53 yang digunakan untuk resolusi DNS. Tanpa port DNS yang terbuka, Anda tidak akan dapat me-resolve nama host.

  1. Buat dan buka file bernama foo-allow-to-hello.yaml dengan nano menggunakan perintah berikut:
nano foo-allow-to-hello.yaml
  1. Setelah nano terbuka, tempel kode berikut ke file foo-allow-to-hello.yaml:
kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: foo-allow-to-hello spec: policyTypes: - Egress podSelector: matchLabels: app: foo egress: - to: - podSelector: matchLabels: app: hello - to: ports: - protocol: UDP port: 53
  1. Tekan Ctrl+O, lalu tekan Enter untuk menyimpan file yang diedit.

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

  3. Buat kebijakan egress:

kubectl apply -f foo-allow-to-hello.yaml
  1. Verifikasi bahwa kebijakan telah dibuat:
kubectl get networkpolicy

Output:

NAME POD-SELECTOR AGE foo-allow-to-hello app=foo 7s hello-allow-from-foo app=hello 5m

Validasi kebijakan egress

  1. Deploy aplikasi web baru bernama hello-web-2 dan ekspos secara internal aplikasi web tersebut di cluster:
kubectl run hello-web-2 --labels app=hello-2 \ --image=gcr.io/google-samples/hello-app:1.0 --port 8080 --expose
  1. Jalankan Pod sementara dengan label app=foo dan dapatkan prompt shell di dalam container.
kubectl run test-3 --labels app=foo --image=alpine --restart=Never --rm --stdin --tty
  1. Verifikasi bahwa Pod dapat terhubung ke hello-web:8080:
wget -qO- --timeout=2 http://hello-web:8080

Output:

If you don't see a command prompt, try pressing enter. / # wget -qO- --timeout=2 http://hello-web:8080 Hello, world! Version: 1.0.0 Hostname: hello-web / #
  1. Verifikasi bahwa Pod tidak dapat terhubung ke hello-web-2:8080:
wget -qO- --timeout=2 http://hello-web-2:8080

Cara ini gagal karena tak satu pun kebijakan Jaringan yang telah Anda tetapkan yang mengizinkan traffic ke Pod berlabel app: hello-2.

  1. Verifikasi bahwa Pod tidak dapat terhubung ke situs eksternal, seperti www.example.com:
wget -qO- --timeout=2 http://www.example.com

Cara ini gagal karena kebijakan jaringan tidak mengizinkan traffic http eksternal (tcp port 80).

  1. Ketik exit lalu tekan ENTER untuk keluar dari shell.

Klik Periksa progres saya untuk memverifikasi tujuan. Menjalankan aplikasi server web

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.