Halaman ini menunjukkan cara mengonfigurasi load balancer yang dibuat Google Kubernetes Engine (GKE) saat Anda men-deploy Gateway di cluster GKE.
Saat Anda men-deploy Gateway, konfigurasi GatewayClass akan menentukan load balancer yang dibuat GKE. Load balancer terkelola ini telah dikonfigurasi sebelumnya dengan setelan default yang dapat Anda ubah menggunakan Kebijakan.
Anda dapat menyesuaikan resource Gateway agar sesuai dengan persyaratan infrastruktur atau aplikasi dengan melampirkan Kebijakan ke Gateway, Layanan, atau ServiceImports. Setelah menerapkan atau mengubah Kebijakan, Anda tidak perlu menghapus atau membuat ulang resource Gateway, Route, atau Service. Kebijakan diproses oleh pengontrol Gateway dan resource load balancer yang mendasarinya (di-)konfigurasi ulang sesuai dengan Kebijakan (baru).
Sebelum memulai
Sebelum memulai, pastikan Anda telah menjalankan tugas berikut:
- Aktifkan Google Kubernetes Engine API. Aktifkan Google Kubernetes Engine API
- Jika ingin menggunakan Google Cloud CLI untuk tugas ini,
instal lalu
lakukan inisialisasi
gcloud CLI. Jika sebelumnya Anda telah menginstal gcloud CLI, dapatkan versi terbaru dengan menjalankan
gcloud components update
.
Persyaratan GKE Gateway Controller
- Untuk Standard, GKE versi 1.24 atau yang lebih baru.
- Untuk Autopilot, GKE versi 1.26 atau yang lebih baru.
- Google Cloud CLI versi 407.0.0 atau yang lebih baru.
- Gateway API hanya didukung di cluster native VPC.
- Jika menggunakan GatewayClass internal, Anda harus mengaktifkan subnet khusus proxy.
- Cluster Anda harus mengaktifkan add-on
HttpLoadBalancing
. - Jika menggunakan Istio, Anda harus mengupgrade Istio ke salah satu versi berikut:
- 1.15.2 atau yang lebih baru
- 1.14.5 atau yang lebih baru
- 1.13.9 atau yang lebih baru.
- Jika menggunakan VPC Bersama, di project host, Anda harus menetapkan peran
Compute Network User
ke Akun Layanan GKE untuk project layanan.
Pembatasan dan Batasan
Selain pembatasan dan batasan pengontrol Gateway GKE, batasan berikut berlaku khusus untuk Kebijakan yang diterapkan pada resource Gateway:
Resource
GCPGatewayPolicy
hanya dapat ditambahkan kegateway.networking.k8s.io
Gateway
.Resource
GCPGatewayPolicy
harus ada dalam namespace yang sama denganGateway
target.Saat menggunakan Gateway cluster tunggal, resource
GCPBackendPolicy
danHealthCheckPolicy
harus merujuk ke resourceService
.
- Saat menggunakan Gateway multi-cluster,
GCPBackendPolicy
, danHealthCheckPolicy
, resource harus merujuk ke resourceServiceImport
.
Hanya satu
GCPGatewayPolicy
yang dapat dilampirkan ke Layanan dalam satu waktu. Jika dua kebijakanGCPGatewayPolicy
dibuat dan menargetkanService
atauServiceImport
yang sama, kebijakan terlama akan diprioritaskan dan kebijakan kedua akan gagal dilampirkan.Kebijakan hierarkis tidak didukung dengan GKE Gateway.
Resource
HealthCheckPolicy
danGCPBackendPolicy
harus ada dalam namespace yang sama dengan resourceService
atauServiceImport
target.Resource
GCPBackendPolicy
danHealthCheckPolicy
disusun sedemikian rupa sehingga hanya dapat mereferensikan satu layanan backend.GCPBackendPolicy
tidak mendukung opsiHEADER_FIELD
atauHTTP_COOKIE
untuk afinitas sesi.
Mengonfigurasi akses global untuk Gateway internal regional
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Untuk mengaktifkan akses global dengan Gateway internal, lampirkan kebijakan ke resource Gateway.
Manifes GCPGatewayPolicy
berikut mengaktifkan Gateway internal regional untuk
akses global:
apiVersion: networking.gke.io/v1
kind: GCPGatewayPolicy
metadata:
name: my-gateway-policy
namespace: default
spec:
default:
allowGlobalAccess: true
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: my-gateway
Mengonfigurasi region untuk Gateway multi-cluster
Bagian ini menjelaskan fungsi yang tersedia di cluster GKE yang menjalankan versi 1.30.3-gke.1225000 atau yang lebih baru.
Jika fleet Anda memiliki cluster di beberapa region, Anda mungkin perlu men-deploy Gateway regional di region yang berbeda untuk berbagai kasus penggunaan, misalnya, redundansi lintas region, latensi rendah, dan kedaulatan data. Di cluster konfigurasi Gateway multi-cluster, Anda dapat menentukan region tempat Anda ingin men-deploy Gateway regional. Jika Anda tidak menentukan region, region default-nya adalah region cluster konfigurasi.
Untuk mengonfigurasi region untuk Gateway multi-cluster, gunakan kolom region
di GCPGatewayPolicy
. Dalam contoh berikut, Gateway dikonfigurasi di region us-central1
:
apiVersion: networking.gke.io/v1
kind: GCPGatewayPolicy
metadata:
name: my-gateway-policy
namespace: default
spec:
default:
region: us-central1
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: my-regional-gateway
Mengonfigurasi Kebijakan SSL untuk mengamankan traffic client-to-load-balancer
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Untuk mengamankan traffic client-to-load-balancer, konfigurasikan kebijakan SSL dengan menambahkan nama kebijakan Anda ke GCPGatewayPolicy
. Secara default, Gateway tidak memiliki Kebijakan SSL apa pun yang ditentukan dan dilampirkan.
Pastikan Anda membuat kebijakan SSL
sebelum merujuk kebijakan di GCPGatewayPolicy
Anda.
Manifes GCPGatewayPolicy
berikut menentukan kebijakan keamanan bernama gke-gateway-ssl-policy
:
apiVersion: networking.gke.io/v1
kind: GCPGatewayPolicy
metadata:
name: my-gateway-policy
namespace: team1
spec:
default:
sslPolicy: gke-gateway-ssl-policy
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: my-gateway
Mengonfigurasi health check
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Anda dapat menggunakan HealthCheckPolicy
untuk mengontrol setelan health check load balancer. Setiap jenis health check (http
, https
, grpc
, dan http2
) memiliki parameter yang dapat Anda tentukan. Google Cloud membuat health check unik untuk setiap layanan backend untuk setiap Layanan GKE.
Agar load balancer berfungsi secara normal, Anda mungkin perlu mengonfigurasi HealthCheckPolicy
kustom untuk load balancer jika jalur health check Anda bukan "/" standar. Konfigurasi ini juga diperlukan jika jalur memerlukan header khusus atau jika Anda perlu menyesuaikan parameter health check. Misalnya, jika
jalur permintaan default adalah "/", tetapi layanan Anda tidak dapat diakses di jalur permintaan
tersebut dan sebagai gantinya menggunakan "/health" untuk melaporkan statusnya, Anda harus mengonfigurasi
requestPath
di HealthCheckPolicy
Anda.
Manifes HealthCheckPolicy
berikut menunjukkan semua kolom yang tersedia saat
mengonfigurasi kebijakan health check:
Layanan
apiVersion: networking.gke.io/v1
kind: HealthCheckPolicy
metadata:
name: lb-healthcheck
namespace: lb-service-namespace
spec:
default:
checkIntervalSec: INTERVAL
timeoutSec: TIMEOUT
healthyThreshold: HEALTHY_THRESHOLD
unhealthyThreshold: UNHEALTHY_THRESHOLD
logConfig:
enabled: ENABLED
config:
type: PROTOCOL
httpHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
httpsHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
grpcHealthCheck:
grpcServiceName: GRPC_SERVICE_NAME
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
http2HealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
targetRef:
group: ""
kind: Service
name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1
kind: HealthCheckPolicy
metadata:
name: lb-healthcheck
namespace: lb-service-namespace
spec:
default:
checkIntervalSec: INTERVAL
timeoutSec: TIMEOUT
healthyThreshold: HEALTHY_THRESHOLD
unhealthyThreshold: UNHEALTHY_THRESHOLD
logConfig:
enabled: ENABLED
config:
type: PROTOCOL
httpHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
httpsHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
grpcHealthCheck:
grpcServiceName: GRPC_SERVICE_NAME
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
http2HealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Ganti kode berikut:
INTERVAL
: menentukan interval pemeriksaan, dalam detik, untuk setiap pemeriksaan health check. Ini adalah waktu dari awal satu pemeriksaan hingga awal pemeriksaan berikutnya. Jika Anda menghilangkan parameter ini, durasi default Google Cloud adalah 15 detik jika tidak adaHealthCheckPolicy
yang ditentukan, dan 5 detik jikaHealthCheckPolicy
ditentukan tanpa nilaicheckIntervalSec
. Untuk informasi selengkapnya, lihat Beberapa pemeriksaan dan frekuensi.TIMEOUT
: menentukan jumlah waktu yang diperlukan Google Cloud untuk menunggu respons terhadap pemeriksaan. NilaiTIMEOUT
harus kurang dari atau sama denganINTERVAL
. Unit dalam hitungan detik. Setiap pemeriksaan memerlukan kode respons HTTP 200 (OK) untuk dikirimkan sebelum waktu tunggu pemeriksaan.HEALTHY_THRESHOLD
danUNHEALTHY_THRESHOLD
: menentukan jumlah upaya koneksi berurutan yang harus berhasil atau gagal, minimal satu kali, untuk mengubahstatus kondisi dari bagus menjadi tidak bagus atau tidak bagus menjadi bagus. Jika Anda menghilangkan salah satu parameter ini, default Google Cloud adalah 2.PROTOCOL
: menentukan protokol yang digunakan oleh sistem pemeriksaan untuk health check. Untuk mengetahui informasi selengkapnya, lihat Kriteria keberhasilan untuk HTTP, HTTPS, dan HTTP/2 serta Kriteria keberhasilan untuk gRPC. Parameter ini wajib diisi.ENABLED
: menentukan apakah logging diaktifkan atau dinonaktifkan.PORT_SPECIFICATION
: menentukan apakah health check menggunakan port tetap (USE_FIXED_PORT
), port bernama (USE_NAMED_PORT
), atau port inferensi (USE_SERVING_PORT
). Jika tidak ditentukan, health check akan mengikuti perilaku yang ditentukan di kolomport
danportName
. Jikaport
atauportName
tidak ditentukan, kolom ini akan ditetapkan secara default keUSE_SERVING_PORT
.PORT
: HealthCheckPolicy hanya mendukung penentuan port health check load balancer menggunakan nomor port. Jika Anda menghilangkan parameter ini, nilai default Google Cloud adalah 80. Karena load balancer mengirimkan pemeriksaan ke alamat IP Pod secara langsung, Anda harus memilih port yang cocok dengancontainerPort
Pod yang aktif, meskipuncontainerPort
direferensikan olehtargetPort
dari Layanan. Anda tidak dibatasi padacontainerPorts
yang dirujuk olehtargetPort
Layanan.PORT_NAME
: menentukan nama port seperti yang ditetapkan dalam InstanceGroup.NamedPort.name. Jikaport
danportName
ditentukan, Google Cloud akan mempertimbangkan nilaiport
terlebih dahulu.HOST
: nilai header host dalam permintaan health check. Nilai ini menggunakan definisi RFC 1123 dari nama host, kecuali alamat IP numerik tidak diizinkan. Jika tidak ditentukan atau dibiarkan kosong, nilai ini akan ditetapkan secara default ke alamat IP health check.REQUEST_PATH
: menentukan request-path dari permintaan health check. Jika tidak ditentukan atau dibiarkan kosong, setelan defaultnya adalah/
.RESPONSE
: menentukan byte yang akan dicocokkan dengan awal data respons. Jika tidak ditentukan atau dibiarkan kosong, GKE akan mengartikan bahwa respons apa pun sebagai responsif. Data respons hanya bisa berupa ASCII.PROXY_HEADER
: menentukan jenis header proxy. Anda dapat menggunakanNONE
atauPROXY_V1
. Setelan defaultnya adalahNONE
.GRPC_SERVICE_NAME
: nama opsional Layanan gRPC. Hapus kolom ini untuk menentukan semua Layanan.
Untuk mengetahui informasi selengkapnya tentang kolom HealthCheckPolicy, lihat referensi
healthChecks
.
Mengonfigurasi kebijakan keamanan backend Google Cloud Armor untuk mengamankan layanan backend Anda
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Konfigurasikan kebijakan keamanan backend Google Cloud Armor dengan menambahkan nama kebijakan keamanan Anda ke GCPBackendPolicy
untuk mengamankan layanan backend.
Secara default, Gateway tidak memiliki kebijakan keamanan backend Google Cloud Armor yang ditentukan dan dilampirkan.
Pastikan Anda membuat kebijakan keamanan backend Google Cloud Armor sebelum merujuk kebijakan tersebut di GCPBackendPolicy
Anda. Jika mengaktifkan Gateway regional, Anda harus membuat kebijakan keamanan backend Google Cloud Armor regional.
Manifes GCPBackendPolicy
berikut menentukan kebijakan keamanan backend
bernama example-security-policy
:
Layanan
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
securityPolicy: example-security-policy
targetRef:
group: ""
kind: Service
name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
securityPolicy: example-security-policy
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Mengonfigurasi IAP
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Identity-Aware Proxy (IAP) menerapkan kebijakan kontrol akses pada layanan backend yang terkait dengan HTTPRoute. Dengan penerapan ini, hanya pengguna atau aplikasi terautentikasi dengan peran Identity and Access Management (IAM) yang tepat yang dapat mengakses layanan backend ini.
Secara default, tidak ada IAP yang diterapkan ke layanan backend, Anda harus mengonfigurasi IAP secara eksplisit di GCPBackendPolicy
.
Untuk mengonfigurasi IAP dengan Gateway, lakukan hal berikut:
Aktifkan IAP untuk GKE Jangan mengonfigurasi backend (Mengonfigurasi BackendConfig) karena
BackendConfig
hanya valid jika terjadi deployment Ingress.Buat Secret untuk IAP:
Di konsol Google Cloud, buka halaman Credentials.
Klik nama klien dan download file klien OAuth.
Dari file klien OAuth, salin secret OAuth di papan klip.
Buat file dengan nama
iap-secret.txt
.Tempel secret OAuth di file
iap-secret.txt
menggunakan perintah berikut:echo -n CLIENT_SECRET > iap-secret.txt kubectl create secret generic SECRET_NAME --from-file=key=iap-secret.txt
Untuk menentukan kebijakan IAP yang merujuk secret:
Buat manifes
GCPBackendPolicy
berikut, ganti masing-masingSECRET_NAME
danCLIENT_ID
. Simpan manifes sebagaibackend-policy.yaml
:Layanan
apiVersion: networking.gke.io/v1 kind: GCPBackendPolicy metadata: name: backend-policy spec: default: iap: enabled: true oauth2ClientSecret: name: SECRET_NAME clientID: CLIENT_ID targetRef: group: "" kind: Service name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1 kind: GCPBackendPolicy metadata: name: backend-policy spec: default: iap: enabled: true oauth2ClientSecret: name: SECRET_NAME clientID: CLIENT_ID targetRef: group: net.gke.io kind: ServiceImport name: lb-service
Terapkan manifes
backend-policy.yaml
:kubectl apply -f backend-policy.yaml
Verifikasi konfigurasi Anda:
Pastikan kebijakan diterapkan setelah membuat
GCPBackendPolicy
dengan IAP:kubectl get gcpbackendpolicy
Outputnya mirip dengan hal berikut ini:
NAME AGE backend-policy 45m
Untuk mendapatkan detail selengkapnya, gunakan perintah describe:
kubectl describe gcpbackendpolicy
Outputnya mirip dengan hal berikut ini:
Name: backend-policy Namespace: default Labels: <none> Annotations: <none> API Version: networking.gke.io/v1 Kind: GCPBackendPolicy Metadata: Creation Timestamp: 2023-05-27T06:45:32Z Generation: 2 Resource Version: 19780077 UID: f4f60a3b-4bb2-4e12-8748-d3b310d9c8e5 Spec: Default: Iap: Client ID: 441323991697-luotsrnpboij65ebfr13hlcpm5a4heke.apps.googleusercontent.com Enabled: true oauth2ClientSecret: Name: my-iap-secret Target Ref: Group: Kind: Service Name: lb-service Status: Conditions: Last Transition Time: 2023-05-27T06:48:25Z Message: Reason: Attached Status: True Type: Attached Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal ADD 46m sc-gateway-controller default/backend-policy Normal SYNC 44s (x15 over 43m) sc-gateway-controller Application of GCPGatewayPolicy "default/backend-policy" was a success
Mengonfigurasi waktu tunggu layanan backend
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Manifes GCPBackendPolicy
berikut menentukan periode
waktu tunggu layanan backend
selama 40 detik. Setelan default kolom timeoutSec
adalah 30 detik.
Layanan
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
timeoutSec: 40
targetRef:
group: ""
kind: Service
name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
timeoutSec: 40
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Mengonfigurasi afinitas sesi
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Anda dapat mengonfigurasi afinitas sesi berdasarkan kriteria berikut:
- Alamat IP klien
- Cookie yang dihasilkan
Saat Anda mengonfigurasi afinitas sesi
untuk Layanan, setelan localityLbPolicy
Gateway ditetapkan ke MAGLEV
.
Saat Anda menghapus konfigurasi afinitas sesi dari GCPBackendPolicy
, Gateway akan mengembalikan setelan localityLbPolicy
ke nilai default, ROUND_ROBIN
.
Manifes GCPBackendPolicy
berikut menentukan afinitas sesi berdasarkan
alamat IP klien:
Layanan
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
sessionAffinity:
type: CLIENT_IP
targetRef:
group: ""
kind: Service
name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
sessionAffinity:
type: CLIENT_IP
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Manifes GCPBackendPolicy
berikut menentukan afinitas sesi berdasarkan
cookie yang dihasilkan
dan mengonfigurasi TTL cookie ke 50 detik:
Layanan
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
sessionAffinity:
type: GENERATED_COOKIE
cookieTtlSec: 50
targetRef:
group: ""
kind: Service
name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
sessionAffinity:
type: GENERATED_COOKIE
cookieTtlSec: 50
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Anda dapat menggunakan nilai berikut untuk kolom sessionAffinity.type
:
CLIENT_IP
GENERATED_COOKIE
NONE
Mengonfigurasi waktu tunggu pengosongan koneksi
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Anda dapat mengonfigurasi
waktu tunggu pengosongan koneksi
menggunakan GCPBackendPolicy
. Waktu tunggu pengosongan koneksi adalah waktu, dalam detik, untuk menunggu koneksi dikosongkan. Durasi waktu tunggu bisa dari 0 hingga 3600 detik.
Nilai defaultnya adalah 0, yang juga menonaktifkan pengosongan koneksi.
Manifes GCPBackendPolicy
berikut menentukan waktu tunggu pengosongan koneksi selama 60 detik:
Layanan
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
connectionDraining:
drainingTimeoutSec: 60
targetRef:
group: ""
kind: Service
name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
connectionDraining:
drainingTimeoutSec: 60
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Selama durasi waktu tunggu yang ditentukan, GKE menunggu penyelesaian permintaan yang ada ke backend yang dihapus. Load balancer tidak mengirim permintaan baru ke backend yang dihapus. Setelah durasi waktu tunggu tercapai, GKE akan menutup semua koneksi yang tersisa ke backend.
Logging akses HTTP
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.24 atau yang lebih baru.
Secara default:
- Pengontrol Gateway mencatat semua permintaan HTTP dari klien ke Cloud Logging.
- Frekuensi sampling adalah 1.000.000, yang berarti semua permintaan dicatat ke dalam log.
Anda dapat menonaktifkan logging akses di Gateway menggunakan GCPBackendPolicy
dengan tiga cara:
- Anda dapat membiarkan
GCPBackendPolicy
tanpa bagianlogging
- Anda dapat menetapkan
logging.enabled
kefalse
- Anda dapat menetapkan
logging.enabled
ketrue
dan menetapkanlogging.sampleRate
ke0
Anda juga dapat mengonfigurasi frekuensi sampling logging akses.
Manifes GCPBackendPolicy
berikut mengubah frekuensi sampel default logging akses dan menetapkannya ke 50% permintaan HTTP untuk resource Layanan tertentu:
Layanan
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
logging:
enabled: true
sampleRate: 500000
targetRef:
group: ""
kind: Service
name: lb-service
Layanan Multi-cluster
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
logging:
enabled: true
sampleRate: 500000
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Manifes ini memiliki kolom berikut:
enable: true
: mengaktifkan logging akses secara eksplisit. Log tersedia di Logging.sampleRate: 500000
: menentukan bahwa 50% paket dicatat ke dalam log. Anda dapat menggunakan nilai antara 0 dan 1.000.000. GKE mengonversi nilai ini menjadi nilai floating point di rentang [0, 1] dengan membagi dengan 1.000.000. Kolom ini hanya relevan jikaenable
ditetapkan ketrue
.sampleRate
adalah kolom opsional, tetapi jika dikonfigurasi,enable: true
juga harus ditetapkan. Jikaenable
ditetapkan ketrue
dansampleRate
tidak disediakan, GKE menetapkanenable
kefalse
.
Mengonfigurasi penskalaan otomatis berbasis traffic untuk Gateway cluster tunggal
Pastikan cluster GKE Anda menjalankan versi 1.31.1-gke.2008000 atau yang lebih baru.
Untuk mengaktifkan penskalaan otomatis berbasis traffic dan load balancing berbasis kapasitas di Gateway satu cluster, Anda dapat mengonfigurasi Kapasitas layanan. Kapasitas layanan adalah kemampuan untuk menentukan jumlah kapasitas traffic yang dapat diterima Layanan sebelum Pod diskalakan otomatis atau traffic diluapkan ke cluster lain yang tersedia.
Untuk mengonfigurasi kapasitas Layanan, buat Layanan dan GCPBackendPolicy
terkait. Manifes GCPBackendPolicy
menggunakan kolom
maxRatePerEndpoint
yang menentukan nilai Permintaan per Detik (RPS) maksimum per
Pod dalam Layanan. Manifes GCPBackendPolicy
berikut menentukan RPS maksimum
10:
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: store
spec:
default:
maxRatePerEndpoint: 10
targetRef:
group: ""
kind: Service
name: store
Untuk mempelajari penskalaan otomatis berbasis traffic lebih lanjut, lihat Penskalaan otomatis berdasarkan traffic load balancer.
Pemecahan masalah
Beberapa GCPBackendPolicy
yang terpasang ke Service
yang sama
Gejala:
Kondisi status berikut mungkin terjadi saat Anda melampirkan GCPBackendPolicy
ke Service
atau ServiceImport
:
status:
conditions:
- lastTransitionTime: "2023-09-26T20:18:03Z"
message: conflicted with GCPBackendPolicy "[POLICY_NAME]" of higher precedence, hence not applied
reason: Conflicted
status: "False"
type: Attached
Alasan:
Kondisi status ini menunjukkan bahwa Anda mencoba menerapkan GCPBackendPolicy
kedua
ke Service
atau ServiceImport
yang sudah memiliki GCPBackendPolicy
terlampir.
Beberapa GCPBackendPolicy
yang dilampirkan ke Service
atau ServiceImport
yang sama tidak didukung dengan GKE Gateway. Lihat Batasan dan Batasan
untuk mengetahui detail selengkapnya.
Solusi:
Konfigurasikan satu GCPBackendPolicy
yang menyertakan semua konfigurasi kustom dan
lampirkan ke Service
atau ServiceImport
Anda.
Kebijakan keamanan Google Cloud Armor tidak ditemukan
Gejala:
Pesan error berikut mungkin muncul saat Anda mengaktifkan Google Cloud Armor di Gateway regional:
Invalid value for field 'resource': '{
"securityPolicy":"projects/123456789/regions/us-central1/securityPolicies/<policy_name>"}'.
The given security policy does not exist.
Alasan:
Pesan error menunjukkan bahwa kebijakan keamanan Google Cloud Armor regional yang ditentukan tidak ada di project Google Cloud Anda.
Solusi:
Buat kebijakan keamanan Google Cloud Armor regional di project Anda dan referensikan kebijakan ini di GCPBackendPolicy
Anda.
Langkah selanjutnya
- Pelajari Pengontrol gateway lebih lanjut.
- Pelajari cara mereferensikan Gateway dari resource.
- Lihat referensi API Jenis Kebijakan.
- Lihat definisi jenis API.