Panduan ini menunjukkan cara membuat dua cluster Google Kubernetes Engine (GKE), dalam project terpisah, yang menggunakan VPC Bersama. Untuk informasi umum tentang jejaring GKE, kunjungi Ringkasan jaringan.
Ringkasan
Dengan VPC Bersama, Anda menetapkan satu project sebagai project host, dan Anda dapat menambahkan project lain, yang disebut project layanan, ke project host. Anda dapat membuat jaringan, subnet, rentang alamat IP sekunder, aturan firewall, dan resource jaringan lainnya di dalam project host. Kemudian, Anda membagikan subnet yang dipilih, termasuk rentang sekunder, dengan project layanan. Komponen yang berjalan dalam project layanan dapat menggunakan VPC Bersama untuk berkomunikasi dengan komponen yang berjalan di project layanan lainnya.
Anda dapat menggunakan VPC Bersama dengan cluster Autopilot serta dengan cluster Standard zona dan regional.Cluster Standard yang menggunakan VPC Bersama tidak dapat menggunakan jaringan lama dan harus mengaktifkan pemilihan rute traffic berbasis VPC. Cluster Autopilot selalu mengaktifkan pemilihan rute traffic berbasis VPC.
Anda dapat mengonfigurasi VPC Bersama saat membuat cluster baru. GKE tidak mendukung konversi cluster yang ada ke model VPC Bersama.
Dengan VPC Bersama, kuota dan batas tertentu berlaku. Misalnya, terdapat kuota jumlah jaringan dalam sebuah project, dan ada batas jumlah project layanan yang dapat ditambahkan ke project host. Untuk detailnya, lihat Kuota dan batas.
Tentang contoh
Contoh dalam panduan ini menyiapkan infrastruktur untuk aplikasi web dua tingkat, seperti yang dijelaskan dalam Ringkasan VPC Bersama.
Sebelum memulai
Sebelum Anda mulai menyiapkan cluster dengan VPC Bersama:
- Pastikan Anda memiliki organisasi Google Cloud.
- Pastikan organisasi Anda memiliki tiga project Google Cloud.
- Pastikan Anda sudah memahami konsep VPC Bersama, termasuk berbagai peran Identity and Access Management (IAM) yang digunakan oleh VPC Bersama. Tugas-tugas dalam panduan ini harus dilakukan oleh Admin VPC Bersama.
- Pastikan Anda sudah memahami batasan kebijakan organisasi apa pun yang berlaku untuk organisasi, folder, atau project Anda. Administrator Kebijakan Organisasi mungkin telah menentukan batasan yang membatasi project yang dapat menjadi project host VPC Bersama, atau membatasi subnet mana yang dapat dibagikan. Lihat batasan kebijakan organisasi untuk informasi selengkapnya.
Sebelum Anda melakukan latihan dalam panduan ini:
- Pilih salah satu project Anda untuk menjadi project host.
- Pilih dua project Anda untuk menjadi project layanan.
Setiap project memiliki nama, ID, dan nomor. Dalam beberapa kasus, nama dan ID-nya sama. Panduan ini menggunakan nama dan placeholder yang simpel untuk merujuk ke project Anda:
Nama yang simpel | Placeholder project ID |
Placeholder nomor project |
---|---|---|
Project host Anda | HOST_PROJECT_ID |
HOST_PROJECT_NUM |
Project layanan pertama Anda | SERVICE_PROJECT_1_ID |
SERVICE_PROJECT_1_NUM |
Project layanan kedua Anda | SERVICE_PROJECT_2_ID |
SERVICE_PROJECT_2_NUM |
Menemukan project ID dan nomor project Anda
Anda dapat menemukan project ID dan nomor project dengan menggunakan gcloud CLI atau Konsol Google Cloud.
Konsol
Buka halaman Home di Konsol Google Cloud.
Di pemilih project, pilih project yang telah Anda pilih untuk menjadi project host.
Di bagian Project info, Anda dapat melihat nama project, project ID, dan nomor project. Catat ID dan nomornya untuk nanti.
Lakukan hal yang sama untuk setiap project yang telah Anda pilih sebagai project layanan.
gcloud
Tampilkan daftar project Anda menggunakan perintah berikut:
gcloud projects list
Output akan menampilkan nama, ID, dan nomor project Anda. Catat ID dan nomornya untuk nanti:
PROJECT_ID NAME PROJECT_NUMBER
host-123 host 1027xxxxxxxx
srv-1-456 srv-1 4964xxxxxxxx
srv-2-789 srv-2 4559xxxxxxxx
Mengaktifkan GKE API dalam project Anda
Sebelum melanjutkan latihan dalam panduan ini, pastikan GKE API telah diaktifkan di ketiga project Anda. Jika API diaktifkan dalam project, akun layanan GKE untuk project tersebut akan dibuat. Agar dapat melakukan tugas selanjutnya dalam panduan ini, setiap project Anda harus memiliki akun layanan GKE.
Anda dapat mengaktifkan GKE API menggunakan Konsol Google Cloud atau Google Cloud CLI.
Konsol
Buka halaman APIs & Services di Konsol Google Cloud.
Di pemilih project, pilih project yang telah Anda pilih untuk menjadi project host.
Jika Kubernetes Engine API ada dalam daftar API, berarti API tersebut sudah diaktifkan dan Anda tidak perlu melakukan apa pun. Jika tidak ada dalam daftar, klik Enable APIs and Services. Telusuri
Kubernetes Engine API
. Klik kartu Kubernetes Engine API, lalu klik Enable.Ulangi langkah-langkah ini untuk setiap project yang telah dipilih sebagai project layanan. Setiap operasi mungkin memerlukan waktu beberapa saat untuk diselesaikan.
gcloud
Aktifkan GKE API untuk ketiga project Anda. Setiap operasi mungkin memerlukan waktu beberapa saat untuk diselesaikan:
gcloud services enable container.googleapis.com --project HOST_PROJECT_ID
gcloud services enable container.googleapis.com --project SERVICE_PROJECT_1_ID
gcloud services enable container.googleapis.com --project SERVICE_PROJECT_2_ID
Membuat jaringan dan dua subnet
Di bagian ini, Anda akan melakukan tugas berikut:
- Di project host Anda, buat jaringan bernama
shared-net
. - Buat dua subnet bernama
tier-1
dantier-2
. - Untuk setiap subnet, buat dua rentang alamat IP sekunder: satu untuk Layanan, dan satu untuk Pod.
Konsol
Buka halaman VPC networks di Konsol Google Cloud.
Di pemilih project, pilih project host Anda.
Klik add_box Create VPC Network.
Untuk Name, masukkan
shared-net
.Di bagian Subnet creation mode, pilih Custom.
Di kotak New subnet, untuk Name, masukkan
tier-1
.Untuk Region, pilih region.
Di bagian Jenis stack IP, pilih IPv4 (single-stack).
Untuk IPv4 range, masukkan
10.0.4.0/22
.Klik Create secondary IPv4 range. Untuk Subnet range name, masukkan
tier-1-services
, dan untuk Secondary IPv4 range, masukkan10.0.32.0/20
.Klik Add IP range. Untuk Subnet range name, masukkan
tier-1-pods
, dan untuk Secondary IPv4 range, masukkan10.4.0.0/14
.Klik Tambahkan subnet.
Untuk Name, masukkan
tier-2
.Untuk Wilayah, pilih region yang sama dengan yang Anda pilih untuk subnet sebelumnya.
Untuk IPv4 range, masukkan
172.16.4.0/22
.Klik Create secondary IPv4 range. Untuk Subnet range name, masukkan
tier-2-services
, dan untuk Secondary IPv4 range, masukkan172.16.16.0/20
.Klik Add IP range. Untuk Subnet range name, masukkan
tier-2-pods
, dan untuk Secondary IPv4 range, masukkan172.20.0.0/14
.Klik Create.
gcloud
Di project host Anda, buat jaringan bernama shared-net
:
gcloud compute networks create shared-net \
--subnet-mode custom \
--project HOST_PROJECT_ID
Di jaringan baru Anda, buat subnet bernama tier-1
:
gcloud compute networks subnets create tier-1 \
--project HOST_PROJECT_ID \
--network shared-net \
--range 10.0.4.0/22 \
--region COMPUTE_REGION \
--secondary-range tier-1-services=10.0.32.0/20,tier-1-pods=10.4.0.0/14
Buat subnet lain bernama tier-2
:
gcloud compute networks subnets create tier-2 \
--project HOST_PROJECT_ID \
--network shared-net \
--range 172.16.4.0/22 \
--region COMPUTE_REGION \
--secondary-range tier-2-services=172.16.16.0/20,tier-2-pods=172.20.0.0/14
Ganti COMPUTE_REGION
dengan
region Compute Engine.
Menentukan nama akun layanan di project layanan Anda
Anda memiliki dua project layanan, yang masing-masing memiliki beberapa akun layanan. Bagian ini berkaitan dengan akun layanan GKE dan akun layanan API Google Anda. Anda memerlukan nama akun layanan ini untuk bagian berikutnya.
Tabel berikut mencantumkan akun layanan API Google dan GKE dalam dua project layanan Anda:
Jenis akun layanan | Nama akun layanan |
---|---|
GKE | service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com |
service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com | |
Google API | SERVICE_PROJECT_1_NUM@cloudservices.gserviceaccount.com |
SERVICE_PROJECT_2_NUM@cloudservices.gserviceaccount.com |
Mengaktifkan VPC Bersama dan memberikan peran
Untuk melakukan tugas di bagian ini, pastikan organisasi Anda telah menentukan peran Shared VPC Admin.
Di bagian ini, Anda akan melakukan tugas berikut:
- Di project host, aktifkan VPC Bersama.
- Lampirkan dua project layanan Anda ke project host.
- Berikan peran IAM yang sesuai ke akun layanan yang termasuk dalam project layanan Anda:
- Di project layanan pertama Anda, berikan peran
Compute Network User
ke dua akun layanan pada subnettier-1
project host Anda. - Di project layanan kedua Anda, berikan peran
Compute Network User
ke dua akun layanan pada subnettier-2
project host Anda.
- Di project layanan pertama Anda, berikan peran
Konsol
Lakukan langkah-langkah berikut untuk mengaktifkan VPC Bersama, melampirkan project layanan, dan memberi peran:
Buka halaman Shared VPC di Konsol Google Cloud.
Di pemilih project, pilih project host Anda.
Klik Set up Shared VPC. Layar Enable host project akan ditampilkan.
Klik Save & continue. Halaman Select subnets akan ditampilkan.
Di bagian Sharing mode, pilih Individual subnets.
Di bagian Subnets to share, centang tier-1 dan tier-2. Hapus semua centang di kotak lainnya.
Klik Continue. Halaman Give permissions akan ditampilkan.
Di bagian Attach service projects, periksa project layanan pertama dan project layanan kedua Anda. Hapus semua centang di kotak lainnya di bagian Attach service projects.
Di bagian Kubernetes Engine access, centang Enabled.
Klik Save. Halaman baru akan ditampilkan.
Di bagian Individual subnet permissions, centang tier-1.
Di panel kanan, hapus semua akun layanan yang termasuk dalam project layanan kedua Anda. Artinya, hapus semua akun layanan yang berisi
SERVICE_PROJECT_2_NUM
.Di panel kanan, cari nama akun layanan API Google dan Kubernetes Engine yang termasuk dalam project layanan pertama Anda. Anda ingin melihat kedua nama akun layanan tersebut dalam daftar. Jika salah satu di antaranya tidak ada dalam daftar, masukkan nama akun layanan di bagian Add members, lalu klik Add.
Di panel tengah, di bagian Individual subnet permissions, centang tier-2, dan hapus centang tier-1.
Di panel kanan, hapus akun layanan apa pun yang termasuk dalam project layanan pertama Anda. Artinya, hapus semua akun layanan yang berisi
SERVICE_PROJECT_1_NUM
.Di panel kanan, cari nama akun layanan API Google dan Kubernetes Engine yang termasuk dalam project layanan kedua Anda. Anda ingin melihat kedua nama akun layanan tersebut dalam daftar. Jika salah satu di antaranya tidak ada dalam daftar, masukkan nama akun layanan di bagian Add members, lalu klik Add.
gcloud
Aktifkan VPC Bersama di project host Anda. Perintah yang Anda gunakan bergantung pada peran administratif yang diperlukan yang Anda miliki.
Jika Anda memiliki peran Shared VPC Admin di tingkat organisasi:
gcloud compute shared-vpc enable HOST_PROJECT_ID
Jika Anda memiliki peran Shared VPC Admin di tingkat folder:
gcloud beta compute shared-vpc enable HOST_PROJECT_ID
Lampirkan project layanan pertama Anda ke project host:
gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_1_ID \ --host-project HOST_PROJECT_ID
Lampirkan project layanan kedua Anda ke project host:
gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_2_ID \ --host-project HOST_PROJECT_ID
Dapatkan kebijakan IAM untuk subnet
tier-1
:gcloud compute networks subnets get-iam-policy tier-1 \ --project HOST_PROJECT_ID \ --region COMPUTE_REGION
Output berisi kolom
etag
. Catat nilaietag
.Buat file bernama
tier-1-policy.yaml
yang memiliki konten berikut:bindings: - members: - serviceAccount:SERVICE_PROJECT_1_NUM@cloudservices.gserviceaccount.com - serviceAccount:service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com role: roles/compute.networkUser etag: ETAG_STRING
Ganti
ETAG_STRING
dengan nilaietag
yang Anda catat sebelumnya.Tetapkan kebijakan IAM untuk subnet
tier-1
:gcloud compute networks subnets set-iam-policy tier-1 \ tier-1-policy.yaml \ --project HOST_PROJECT_ID \ --region COMPUTE_REGION
Dapatkan kebijakan IAM untuk subnet
tier-2
:gcloud compute networks subnets get-iam-policy tier-2 \ --project HOST_PROJECT_ID \ --region COMPUTE_REGION
Output berisi kolom
etag
. Catat nilaietag
.Buat file bernama
tier-2-policy.yaml
yang memiliki konten berikut:bindings: - members: - serviceAccount:SERVICE_PROJECT_2_NUM@cloudservices.gserviceaccount.com - serviceAccount:service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com role: roles/compute.networkUser etag: ETAG_STRING
Ganti
ETAG_STRING
dengan nilaietag
yang Anda catat sebelumnya.Tetapkan kebijakan IAM untuk subnet
tier-2
:gcloud compute networks subnets set-iam-policy tier-2 \ tier-2-policy.yaml \ --project HOST_PROJECT_ID \ --region COMPUTE_REGION
Mengelola resource firewall
Jika Anda ingin cluster GKE dalam project layanan membuat dan mengelola resource firewall di project host Anda, akun layanan GKE project layanan harus diberi izin IAM yang sesuai menggunakan salah satu strategi berikut:
Beri akun layanan GKE project layanan peran
Compute Security Admin
ke project host.
Konsol
Di Konsol Google Cloud, buka halaman IAM.
Pilih project host.
Klik
Grant access, lalu masukkan akun utama akun layanan GKE project layanan,service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com
.Pilih peran
Compute Security Admin
dari menu drop-down.Klik Save.
gcloud
Berikan peran Compute
Security Admin
ke akun layanan GKE project layanan dalam project host:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com \
--role=roles/compute.securityAdmin
Ganti yang berikut ini:
HOST_PROJECT_ID
: project ID host VPC bersamaSERVICE_PROJECT_NUM
: ID pada project layanan yang berisi akun layanan GKE
Untuk pendekatan yang lebih mendetail, buat peran IAM kustom yang hanya mencakup izin berikut:
compute.networks.updatePolicy
,compute.firewalls.list
,compute.firewalls.get
,compute.firewalls.create
,compute.firewalls.update
, dancompute.firewalls.delete
. Beri akun layanan GKE project layanan peran khusus ke project host.
Konsol
Buat peran kustom dalam project host yang berisi izin IAM yang disebutkan sebelumnya:
Di Konsol Google Cloud, buka halaman Roles.
Menggunakan menu drop-down di bagian atas halaman, pilih project host.
Klik Create Role.
Masukkan Title, Description, ID, dan Role launch stage untuk peran tersebut. Nama peran tidak dapat diubah setelah peran dibuat.
Klik Add Permissions.
Filter
compute.networks
, lalu pilih izin IAM yang disebutkan sebelumnya.Setelah semua izin yang diperlukan dipilih, klik Add.
Klik Create.
Beri akun layanan GKE project layanan peran khusus yang baru dibuat dalam project host:
Di Konsol Google Cloud, buka halaman IAM.
Pilih project host.
Klik
Grant access, lalu masuk ke akun utama akun layanan GKE project layanan,service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com
.Filter Title dari peran khusus yang baru dibuat, lalu pilih peran tersebut.
Klik Save.
gcloud
Buat peran kustom dalam project host yang berisi izin IAM yang disebutkan sebelumnya:
gcloud iam roles create ROLE_ID \ --title="ROLE_TITLE" \ --description="ROLE_DESCRIPTION" \ --stage=LAUNCH_STAGE \ --permissions=compute.networks.updatePolicy,compute.firewalls.list,compute.firewalls.get,compute.firewalls.create,compute.firewalls.update,compute.firewalls.delete \ --project=HOST_PROJECT_ID
Beri akun layanan GKE project layanan peran khusus yang baru dibuat dalam project host:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member=serviceAccount:service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com \ --role=projects/HOST_PROJECT_ID/roles/ROLE_ID
Ganti yang berikut ini:
ROLE_ID
: nama peran, misalnyagkeFirewallAdmin
ROLE_TITLE
: judul yang cocok untuk peran tersebut, misalnyaGKE Firewall Admin
ROLE_DESCRIPTION
: deskripsi singkat peran, misalnyaGKE service account FW permissions
LAUNCH_STAGE
: tahap peluncuran peran dalam siklus prosesnya, misalnyaALPHA
,BETA
, atauGA
HOST_PROJECT_ID
: project ID host VPC bersamaSERVICE_PROJECT_NUM
: ID pada project layanan yang berisi akun layanan GKE
Jika memiliki cluster di lebih dari satu project layanan, Anda harus memilih salah satu strategi dan mengulanginya untuk setiap akun layanan GKE project layanan.
Ringkasan peran yang diberikan ke subnet
Berikut adalah ringkasan peran yang diberikan ke subnet:
Akun layanan | Peran | Subnet |
---|---|---|
service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com | Compute Network User | tier-1 |
SERVICE_PROJECT_1_NUM@cloudservices.gserviceaccount.com | Compute Network User | tier-1 |
service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com | Compute Network User | tier-2 |
SERVICE_PROJECT_2_NUM@cloudservices.gserviceaccount.com | Compute Network User | tier-2 |
Akses Kubernetes Engine
Saat melampirkan project layanan, mengaktifkan akses Kubernetes Engine akan memberikan izin ke akun layanan GKE project layanan tersebut untuk menjalankan operasi pengelolaan jaringan di project host.
GKE menetapkan peran berikut secara otomatis di project host saat mengaktifkan akses Kubernetes Engine:
Anggota | Peran | Resource |
---|---|---|
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com | Host Service Agent User | Akun layanan GKE di project host |
Namun, Anda harus menambahkan izin IAM Compute Network User
secara manual ke akun layanan GKE project layanan untuk mengakses jaringan host.
Anggota | Peran | Resource |
---|---|---|
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com | Compute Network User | Subnet tertentu atau seluruh project host |
Jika project layanan terpasang tanpa mengaktifkan akses Kubernetes Engine, dengan asumsi bahwa Kubernetes Engine API telah diaktifkan di host dan project layanan, Anda dapat menetapkan izin secara manual ke layanan GKE project layanan akun ini dengan menambahkan binding peran IAM berikut di project host:
Anggota | Peran | Resource |
---|---|---|
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com | Compute Network User | Subnet tertentu atau seluruh project host |
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com | Host Service Agent User | Akun layanan GKE di project host |
Memberikan peran Host Service Agent User
Setiap akun layanan GKE project layanan harus memiliki binding untuk peran Host Service Agent User di project host. Akun layanan GKE mengambil bentuk berikut:
service-SERVICE_PROJECT_NUM@container-engine-robot.iam.gserviceaccount.com
Dengan SERVICE_PROJECT_NUM
adalah nomor project pada project layanan Anda.
Dengan binding ini, akun layanan GKE project layanan dapat menjalankan operasi pengelolaan jaringan di project host, seolah-olah akun tersebut adalah akun layanan GKE project host. Peran ini hanya dapat diberikan ke akun layanan GKE project layanan.
Konsol
Jika telah menggunakan Konsol Google Cloud, Anda tidak perlu memberikan peran Host Service Agent User secara eksplisit. Hal tersebut otomatis dilakukan saat Anda menggunakan Konsol Google Cloud untuk melampirkan project layanan ke project host.
gcloud
Untuk project pertama Anda, berikan peran Host Service Agent User ke Akun Layanan GKE project. Peran ini diberikan pada project host Anda:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member serviceAccount:service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com \ --role roles/container.hostServiceAgentUser
Untuk project kedua Anda, berikan peran Host Service Agent User ke Akun Layanan GKE project. Peran ini diberikan pada project host Anda:
gcloud projects add-iam-policy-binding HOST_PROJECT_ID \ --member serviceAccount:service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com \ --role roles/container.hostServiceAgentUser
Memverifikasi subnet yang dapat digunakan dan rentang alamat IP sekunder
Saat membuat cluster, Anda harus menentukan subnet dan rentang alamat IP sekunder yang akan digunakan untuk Pod dan Layanan cluster. Ada beberapa alasan mengapa rentang alamat IP mungkin tidak tersedia untuk digunakan. Baik untuk membuat cluster dengan Konsol Google Cloud maupun gcloud CLI, Anda harus menentukan rentang alamat IP yang dapat digunakan.
Rentang alamat IP dapat digunakan untuk Layanan cluster baru jika rentang tersebut belum digunakan. Rentang alamat IP yang Anda tentukan untuk Pod cluster baru dapat berupa rentang yang tidak digunakan, atau dapat berupa rentang yang dibagikan dengan Pod di cluster lainnya. Rentang alamat IP yang dibuat dan dikelola oleh GKE tidak dapat digunakan oleh cluster Anda.
Anda dapat membuat daftar subnet dan rentang alamat IP sekunder project yang dapat digunakan dengan gcloud CLI.
gcloud
gcloud container subnets list-usable \
--project SERVICE_PROJECT_ID \
--network-project HOST_PROJECT_ID
Ganti SERVICE_PROJECT_ID
dengan project ID untuk project layanan.
Jika Anda menghilangkan opsi --project
atau --network-project
, perintah gcloud CLI akan menggunakan project default dari konfigurasi aktif Anda. Karena project host dan project jaringan berbeda, Anda harus menentukan salah satu atau kedua --project
dan --network-project
.
Outputnya mirip dengan hal berikut ini:
PROJECT: xpn-host
REGION: REGION_NAME
NETWORK: shared-net
SUBNET: tier-2
RANGE: 172.16.4.0/22
SECONDARY_RANGE_NAME: tier-2-services
IP_CIDR_RANGE: 172.20.0.0/14
STATUS: usable for pods or services
SECONDARY_RANGE_NAME: tier-2-pods
IP_CIDR_RANGE: 172.16.16.0/20
STATUS: usable for pods or services
PROJECT: xpn-host
REGION: REGION_NAME
NETWORK: shared-net
SUBNET: tier-1
RANGE: 10.0.4.0/22
SECONDARY_RANGE_NAME: tier-1-services
IP_CIDR_RANGE: 10.0.32.0/20
STATUS: usable for pods or services
SECONDARY_RANGE_NAME: tier-1-pods
IP_CIDR_RANGE: 10.4.0.0/14
STATUS: usable for pods or services
Perintah list-usable
akan menampilkan daftar kosong dalam situasi berikut:
- Jika akun layanan Kubernetes Engine project layanan tidak memiliki peran Host Service Agent User ke project host.
- Jika akun layanan Kubernetes Engine dalam project host tidak ada (misalnya, jika Anda tidak sengaja menghapus akun tersebut).
- Jika Kubernetes Engine API tidak diaktifkan di project host, yang berarti akun layanan Kubernetes Engine dalam project host tidak ada.
Untuk informasi selengkapnya, lihat bagian pemecahan masalah.
Catatan tentang rentang sekunder
Anda dapat membuat 30 rentang sekunder dalam subnet tertentu. Untuk setiap cluster, Anda memerlukan dua rentang sekunder: satu untuk Pod dan satu untuk Layanan.
Membuat cluster di project layanan pertama Anda
Untuk membuat cluster di project layanan pertama Anda, lakukan langkah-langkah berikut menggunakan gcloud CLI atau Konsol Google Cloud.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Di pemilih project, pilih project layanan pertama Anda.
Klik add_box Create.
Di bagian Autopilot atau Standard, klik Configure.
Untuk Name, masukkan
tier-1-cluster
.Di menu drop-down Region, pilih region yang sama dengan yang Anda gunakan untuk subnet.
Dari panel navigasi, klik Networking.
Di bagian Cluster networking, pilih shared-net.
Untuk Node subnet, pilih tier-1.
Di bagian Advanced networking options, untuk Cluster default Pod address range, pilih tier-1-pods.
Untuk Service address range, pilih tier-1-services.
Klik Create.
Setelah pembuatan selesai, dalam daftar cluster, klik tier-1-cluster.
Di halaman Cluster details, klik tab Nodes
Di bagian Node Pools, klik nama node pool yang ingin Anda periksa.
Di bagian Instance groups, klik nama grup instance yang ingin Anda periksa. Misalnya, gke-tier-1-cluster-default-pool-5c5add1f-grp.
Dalam daftar instance, pastikan alamat IP internal node Anda berada di rentang utama subnet tier-1:
10.0.4.0/22
.
gcloud
Buat cluster bernama tier-1-cluster
di project layanan pertama Anda:
gcloud container clusters create-auto tier-1-cluster \
--project=SERVICE_PROJECT_1_ID \
--location=COMPUTE_REGION \
--network=projects/HOST_PROJECT_ID/global/networks/shared-net \
--subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/tier-1 \
--cluster-secondary-range-name=tier-1-pods \
--services-secondary-range-name=tier-1-services
Setelah pembuatan selesai, pastikan node cluster Anda berada di rentang utama subnet tier-1: 10.0.4.0/22
.
gcloud compute instances list --project SERVICE_PROJECT_1_ID
Output menunjukkan alamat IP internal node:
NAME ZONE ... INTERNAL_IP
gke-tier-1-cluster-... ZONE_NAME ... 10.0.4.2
gke-tier-1-cluster-... ZONE_NAME ... 10.0.4.3
gke-tier-1-cluster-... ZONE_NAME ... 10.0.4.4
Membuat cluster di project layanan kedua Anda
Untuk membuat cluster di project layanan kedua Anda, lakukan langkah-langkah berikut menggunakan gcloud CLI atau Konsol Google Cloud.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Pada pemilih project, pilih project layanan kedua Anda.
Klik add_box Create.
Di bagian Standard atau Autopilot, klik Configure.
Untuk Name, masukkan
tier-2-cluster
.Di menu drop-down Region, pilih region yang sama dengan yang Anda gunakan untuk subnet.
Dari panel navigasi, klik Networking.
Untuk Network, pilih shared-net.
Untuk Node subnet, pilih tier-2.
Untuk Cluster default Pod address range, pilih tier-2-pods.
Untuk Service address range, pilih tier-2-services.
Klik Create.
Setelah pembuatan selesai, dalam daftar cluster, klik tier-2-cluster.
Di halaman Cluster details, klik tab Nodes
Di bagian Node Pools, klik nama node pool yang ingin Anda periksa.
Di bagian Instance groups, klik nama grup instance yang ingin Anda periksa. Contoh,
gke-tier-2-cluster-default-pool-5c5add1f-grp
.Dalam daftar instance, pastikan alamat IP internal node Anda berada di rentang utama subnet tier-2:
172.16.4.0/22
.
gcloud
Buat cluster bernama tier-2-cluster
di project layanan kedua Anda:
gcloud container clusters create-auto tier-2-cluster \
--project=SERVICE_PROJECT_2_ID \
--location=COMPUTE_REGION \
--network=projects/HOST_PROJECT_ID/global/networks/shared-net \
--subnetwork=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/tier-2 \
--cluster-secondary-range-name=tier-2-pods \
--services-secondary-range-name=tier-2-services
Setelah pembuatan selesai, pastikan node cluster Anda berada di rentang utama subnet tier-2: 172.16.4.0/22
.
gcloud compute instances list --project SERVICE_PROJECT_2_ID
Output menunjukkan alamat IP internal node:
NAME ZONE ... INTERNAL_IP
gke-tier-2-cluster-... ZONE_NAME ... 172.16.4.2
gke-tier-2-cluster-... ZONE_NAME ... 172.16.4.3
gke-tier-2-cluster-... ZONE_NAME ... 172.16.4.4
Membuat aturan firewall
Untuk mengizinkan traffic ke dalam jaringan dan di antara cluster dalam jaringan, Anda harus membuat firewall. Bagian berikut menunjukkan cara membuat dan memperbarui aturan firewall:
- Membuat aturan firewall untuk mengaktifkan koneksi SSH ke sebuah node: Menunjukkan cara membuat aturan firewall yang memungkinkan traffic dari luar cluster menggunakan SSH.
Memperbarui aturan firewall untuk melakukan ping antar-node: Menunjukkan cara mengupdate aturan firewall untuk mengizinkan traffic ICMP antar-cluster.
SSH dan ICMP digunakan sebagai contoh, Anda harus membuat aturan firewall yang mengaktifkan persyaratan jejaring aplikasi tertentu.
Membuat aturan firewall untuk mengaktifkan koneksi SSH ke node
Di project host Anda, buat aturan firewall untuk jaringan shared-net
.
Izinkan traffic untuk masuk di port TCP 22
, yang memungkinkan Anda terhubung ke node cluster menggunakan SSH.
Konsol
Buka halaman Firewall di Konsol Google Cloud.
Di pemilih project, pilih project host Anda.
Dari menu VPC Networking, klik Create Firewall Rule.
Untuk Name, masukkan
my-shared-net-rule
.Untuk Network, pilih shared-net.
Untuk Direction of traffic, pilih Ingress.
Untuk Action on match, pilih Allow.
Untuk Target, klik All instances in the network.
Untuk Source filter, pilih IP ranges.
Untuk Source IP ranges, masukkan
0.0.0.0/0
.Untuk Protocols and ports, pilih Specified protocols and ports. Di kotak, masukkan
tcp:22
.Klik Create.
gcloud
Buat aturan firewall untuk jaringan bersama:
gcloud compute firewall-rules create my-shared-net-rule \
--project HOST_PROJECT_ID \
--network shared-net \
--direction INGRESS \
--allow tcp:22
Membuat koneksi ke node menggunakan SSH
Setelah membuat firewall yang mengizinkan traffic masuk di port TCP 22
, hubungkan ke node menggunakan SSH.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Di pemilih project, pilih project layanan pertama Anda.
Klik tier-1-cluster.
Di halaman Cluster details, klik tab Nodes.
Di bagian Node Pools, klik nama node pool Anda.
Di bagian Instance groups, klik nama grup instance Anda. Misalnya, gke-tier-1-cluster-default-pool-faf87d48-grp.
Dalam daftar instance, catat alamat IP internal node. Alamat ini berada dalam rentang
10.0.4.0/22
.Untuk salah satu node Anda, klik SSH. Perintah ini berhasil karena SSH menggunakan port TCP
22
, yang diizinkan oleh aturan firewall Anda.
gcloud
Cantumkan node dalam project layanan pertama Anda:
gcloud compute instances list --project SERVICE_PROJECT_1_ID
Output menyertakan nama node di cluster Anda:
NAME ...
gke-tier-1-cluster-default-pool-faf87d48-3mf8 ...
gke-tier-1-cluster-default-pool-faf87d48-q17k ...
gke-tier-1-cluster-default-pool-faf87d48-x9rk ...
Hubungkan ke salah satu node Anda menggunakan SSH:
gcloud compute ssh NODE_NAME \
--project SERVICE_PROJECT_1_ID \
--zone COMPUTE_ZONE
Ganti kode berikut:
NODE_NAME
: nama salah satu node Anda.COMPUTE_ZONE
: nama zona Compute Engine dalam region.
Memperbarui aturan firewall untuk melakukan ping antar-node
Di jendela command line SSH, mulai CoreOS Toolbox:
/usr/bin/toolbox
Dalam shell toolbox, lakukan ping ke salah satu node Anda yang lain di cluster yang sama. Misalnya:
ping 10.0.4.4
Perintah
ping
berhasil karena node Anda dan node lainnya berada dalam rentang10.0.4.0/22
.Sekarang, coba ping salah satu node dalam cluster pada project layanan Anda yang lain. Contoh:
ping 172.16.4.3
Kali ini, perintah
ping
gagal karena aturan firewall Anda tidak mengizinkan traffic Internet Control Message Protocol (ICMP).Di command prompt biasa, bukan shell toolbox, perbarui aturan firewall untuk mengizinkan ICMP:
gcloud compute firewall-rules update my-shared-net-rule \ --project HOST_PROJECT_ID \ --allow tcp:22,icmp
Di shell toolbox, ping node lagi. Contoh:
ping 172.16.4.3
Kali ini perintah
ping
berhasil.
Membuat aturan firewall tambahan
Anda dapat membuat aturan firewall tambahan untuk mengizinkan komunikasi antara node, Pod, dan Layanan di cluster Anda.
Misalnya, aturan berikut mengizinkan traffic untuk masuk dari node, Pod, atau Layanan mana pun di tier-1-cluster
pada port TCP atau UDP apa pun:
gcloud compute firewall-rules create my-shared-net-rule-2 \
--project HOST_PROJECT_ID \
--network shared-net \
--allow tcp,udp \
--direction INGRESS \
--source-ranges 10.0.4.0/22,10.4.0.0/14,10.0.32.0/20
Aturan berikut mengizinkan traffic masuk dari node, Pod, atau Layanan mana pun di tier-2-cluster
di port TCP atau UDP mana pun:
gcloud compute firewall-rules create my-shared-net-rule-3 \
--project HOST_PROJECT_ID \
--network shared-net \
--allow tcp,udp \
--direction INGRESS \
--source-ranges 172.16.4.0/22,172.20.0.0/14,172.16.16.0/20
Kubernetes juga akan mencoba membuat dan mengelola resource firewall jika diperlukan, misalnya saat Anda membuat layanan load balancer. Jika Kubernetes sendiri tidak dapat mengubah aturan firewall karena masalah izin, Peristiwa Kubernetes akan ditampilkan untuk memandu Anda tentang cara membuat perubahan.
Jika Anda ingin memberikan izin Kubernetes untuk mengubah aturan firewall, lihat Mengelola resource firewall.
Untuk Load Balancer Ingress, jika Kubernetes tidak dapat mengubah aturan firewall karena izin tidak memadai, peristiwa firewallXPNError
akan muncul setiap beberapa menit. Di GLBC 1.4 dan yang lebih baru, Anda dapat membisukan peristiwa firewallXPNError
dengan menambahkan anotasi networking.gke.io/suppress-firewall-xpn-error: "true"
ke resource masuk. Anda dapat menghapus anotasi ini kapan saja untuk membunyikannya.
Membuat cluster berdasarkan Peering Jaringan VPC di VPC Bersama
Anda dapat menggunakan VPC Bersama dengan cluster berdasarkan Peering Jaringan VPC.
Anda harus memberikan izin berikut pada project host, baik ke akun pengguna maupun ke akun layanan, yang digunakan untuk membuat cluster:
compute.networks.get
compute.networks.updatePeering
Anda juga harus memastikan rentang alamat IP bidang kontrol tidak tumpang tindih dengan rentang lain yang dicadangkan di jaringan bersama.
Di bagian ini, Anda akan membuat cluster berbasis VPC bernama cluster-vpc
dalam jaringan VPC bersama yang telah ditetapkan.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Klik add_box Create.
Di bagian Autopilot atau Standard, klik Configure.
Untuk Name, masukkan
cluster-vpc
.Dari panel navigasi, klik Networking.
Pilih Private cluster.
(Opsional untuk Autopilot): Tetapkan Control plane IP range ke
172.16.0.16/28
.Di menu drop-down Network, pilih jaringan VPC yang Anda buat sebelumnya.
Di menu drop-down Node subnet, pilih subnet bersama yang Anda buat sebelumnya.
Konfigurasi cluster Anda sesuai kebutuhan.
Klik Create.
gcloud
Jalankan perintah berikut untuk membuat cluster bernama cluster-vpc
di VPC Bersama yang telah ditetapkan:
gcloud container clusters create-auto private-cluster-vpc \
--project=PROJECT_ID \
--location=COMPUTE_REGION \
--network=projects/HOST_PROJECT/global/networks/shared-net \
--subnetwork=SHARED_SUBNETWORK \
--cluster-secondary-range-name=tier-1-pods \
--services-secondary-range-name=tier-1-services \
--enable-private-nodes \
--master-ipv4-cidr=172.16.0.0/28
Mencadangkan alamat IP
Anda dapat mencadangkan alamat IP internal dan eksternal untuk cluster VPC Bersama. Pastikan alamat IP dicadangkan di project layanan.
Untuk alamat IP internal, Anda harus memberikan subnetwork tempat alamat IP berada. Untuk mencadangkan alamat IP di seluruh project, gunakan URL resource lengkap untuk mengidentifikasi subnetwork.
Anda dapat menggunakan perintah berikut di Google Cloud CLI untuk mencadangkan alamat IP internal:
gcloud compute addresses create RESERVED_IP_NAME \
--region=COMPUTE_REGION \
--subnet=projects/HOST_PROJECT_ID/regions/COMPUTE_REGION/subnetworks/SUBNETWORK_NAME \
--addresses=IP_ADDRESS \
--project=SERVICE_PROJECT_ID
Untuk memanggil perintah ini, Anda harus menambahkan izin compute.subnetworks.use
ke subnetwork. Anda dapat memberikan peran compute.networkUser
ke pemanggil di subnetwork, atau Anda dapat memberikan peran khusus ke pemanggil dengan izin compute.subnetworks.use
di tingkat project.
Pembersihan
Setelah menyelesaikan latihan dalam panduan ini, lakukan tugas berikut untuk menghapus resource guna mencegah tagihan yang tidak diinginkan yang timbul pada akun Anda:
Menghapus cluster
Hapus dua klaster yang Anda buat.
Konsol
Buka halaman Google Kubernetes Engine di konsol Google Cloud.
Di pemilih project, pilih project layanan pertama Anda.
Pilih tier-1-cluster, lalu klik Delete.
Pada pemilih project, pilih project layanan kedua Anda.
Pilih tier-2-cluster, lalu klik Delete.
gcloud
gcloud container clusters delete tier-1-cluster \
--project SERVICE_PROJECT_1_ID \
--zone COMPUTE_ZONE
gcloud container clusters delete tier-2-cluster \
--project SERVICE_PROJECT_2_ID \
--zone COMPUTE_ZONE
Menonaktifkan VPC Bersama
Nonaktifkan VPC Bersama di project host Anda.
Konsol
Buka halaman Shared VPC di Konsol Google Cloud.
Di pemilih project, pilih project host Anda.
Klik Disable Shared VPC.
Masukkan
HOST_PROJECT_ID
di kolom, lalu klik Disable.
gcloud
gcloud compute shared-vpc associated-projects remove SERVICE_PROJECT_1_ID \
--host-project HOST_PROJECT_ID
gcloud compute shared-vpc associated-projects remove SERVICE_PROJECT_2_ID \
--host-project HOST_PROJECT_ID
gcloud compute shared-vpc disable HOST_PROJECT_ID
Menghapus aturan firewall
Hapus aturan firewall yang Anda buat.
Konsol
Buka halaman Firewall di Konsol Google Cloud.
Di pemilih project, pilih project host Anda.
Dalam daftar aturan, pilih my-shared-net-rule, my-shared-net-rule-2, dan my-shared- net-rule-3
Klik Delete.
gcloud
Hapus aturan firewall Anda:
gcloud compute firewall-rules delete \
my-shared-net-rule \
my-shared-net-rule-2 \
my-shared-net-rule-3 \
--project HOST_PROJECT_ID
Menghapus jaringan bersama
Hapus jaringan bersama yang Anda buat.
Konsol
Buka halaman VPC networks di Konsol Google Cloud.
Di pemilih project, pilih project host Anda.
Di daftar jaringan, pilih shared-net.
Klik Delete VPC Network.
gcloud
gcloud compute networks subnets delete tier-1 \
--project HOST_PROJECT_ID \
--region COMPUTE_REGION
gcloud compute networks subnets delete tier-2 \
--project HOST_PROJECT_ID \
--region COMPUTE_REGION
gcloud compute networks delete shared-net --project HOST_PROJECT_ID
Menghapus peran Host Service Agent User
Hapus peran Host Service Agent User dari dua project layanan Anda.
Konsol
Buka halaman IAM di Konsol Google Cloud.
Di pemilih project, pilih project host Anda.
Dalam daftar anggota, pilih baris yang menampilkan
service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com
yang diberi peran Kubernetes Engine Host Service Agent User.Pilih baris yang menunjukkan
service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com
yang diberi peran Kubernetes Engine Host Service Agent User.Klik Remove access.
gcloud
Hapus peran Host Service Agent User dari akun layanan GKE project layanan pertama Anda:
gcloud projects remove-iam-policy-binding HOST_PROJECT_ID \ --member serviceAccount:service-SERVICE_PROJECT_1_NUM@container-engine-robot.iam.gserviceaccount.com \ --role roles/container.hostServiceAgentUser
Hapus peran Host Service Agent User dari akun layanan GKE project layanan kedua Anda:
gcloud projects remove-iam-policy-binding HOST_PROJECT_ID \ --member serviceAccount:service-SERVICE_PROJECT_2_NUM@container-engine-robot.iam.gserviceaccount.com \ --role roles/container.hostServiceAgentUser
Pemecahan masalah
Bagian berikut membantu Anda menyelesaikan masalah umum pada cluster VPC Bersama.
Error: Gagal mendapatkan metadata dari project jaringan
Pesan berikut adalah error umum saat menggunakan cluster VPC Bersama:
Failed to get metadata from network project. GCE_PERMISSION_DENIED: Google
Compute Engine: Required 'compute.projects.get' permission for
'projects/HOST_PROJECT_ID
Error ini dapat terjadi karena alasan berikut:
Kubernetes Engine API belum diaktifkan dalam project host.
Akun layanan GKE project host tidak ada. Misalnya, data tersebut mungkin telah dihapus.
Akun layanan GKE project host tidak memiliki peran Kubernetes Engine Service Agent (
container.serviceAgent
) di project host. Binding mungkin telah dihapus secara tidak sengaja.Akun layanan GKE project layanan tidak memiliki peran Host Service Agent User dalam project host.
Untuk mengatasi masalah ini, tentukan apakah akun layanan GKE project host ada.
Jika akun layanan tidak ada, lakukan langkah berikut:
Jika Kubernetes Engine API tidak diaktifkan di project host, aktifkan Kubernetes Engine. Tindakan ini akan membuat akun layanan GKE project host dan memberi akun layanan GKE project host peran Kubernetes Engine Service Agent (
container.serviceAgent
) dalam project host.Jika Kubernetes Engine API diaktifkan di project host, ini berarti akun layanan GKE project host telah dihapus atau peran Kubernetes Engine Service Agent (
container.serviceAgent
) tidak ada dalam project host. Untuk memulihkan akun layanan GKE atau binding peran, Anda harus menonaktifkan dan mengaktifkan kembali Kubernetes Engine API. Untuk mengetahui informasi selengkapnya, lihat Error 400/403: Izin edit untuk akun tidak ada.
Masalah: Konektivitas
Jika Anda mengalami masalah konektivitas antara VM Compute Engine yang berada di jaringan Virtual Private Cloud (VPC) yang sama atau dua jaringan VPC yang terhubung dengan Peering Jaringan VPC, lihat artikel Pemecahan masalah konektivitas antara instance virtual machine (VM) dengan alamat IP internal dalam dokumentasi Virtual Private Cloud (VPC).
Masalah: Kehilangan paket
Jika Anda mengalami masalah kehilangan paket saat mengirim traffic dari cluster ke alamat IP eksternal menggunakan Cloud NAT, cluster VPC native, atau Agen penyamaran IP, lihat Memecahkan masalah kehilangan paket Cloud NAT dari cluster.
Langkah selanjutnya
- Baca ringkasan VPC Bersama.
- Pelajari cara menyediakan VPC Bersama.
- Baca ringkasan jaringan GKE.
- Baca tentang aturan firewall yang dibuat secara otomatis.
- Pelajari cara memecahkan masalah konektivitas antara instance virtual machine (VM) dengan alamat IP internal.