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 Anda menerapkan atau mengubah Kebijakan, pengontrol Gateway akan memprosesnya dan otomatis mengonfigurasi ulang resource load balancer yang mendasarinya. Dengan cara ini, Anda tidak perlu menghapus atau membuat ulang resource Gateway, Route, atau Service.
Anda juga dapat menggunakan BackendTLSPolicy untuk mengonfigurasi setelan TLS yang diautentikasi backend guna memverifikasi identitas backend yang terhubung ke Gateway. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi TLS backend.
Sebelum memulai
Sebelum memulai, pastikan Anda telah melakukan 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 perintah
gcloud components update. gcloud CLI versi sebelumnya mungkin tidak mendukung menjalankan perintah dalam dokumen ini.
- Pastikan Anda sudah memiliki cluster Autopilot atau Standard. Untuk membuat cluster baru, lihat Membuat cluster Autopilot.
Persyaratan GKE Gateway Controller
- Gateway API hanya didukung di cluster native VPC.
- Jika menggunakan GatewayClass regional atau lintas region, 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 Anda menggunakan VPC Bersama, di project host, Anda harus menetapkan peran
Compute Network Userke Akun layanan GKE untuk project layanan.
Batasan dan Pembatasan
Selain pembatasan dan batasan pengontrol GKE Gateway, batasan berikut berlaku khusus untuk Kebijakan yang diterapkan pada resource Gateway:
Resource
GCPGatewayPolicyhanya dapat dilampirkan kegateway.networking.k8s.ioGateway.Resource
GCPGatewayPolicyharus ada dalam namespace yang sama denganGatewaytarget.Saat menggunakan Gateway cluster tunggal, resource
GCPBackendPolicydanHealthCheckPolicyharus merujuk ke resourceService.Saat menggunakan Gateway multi-cluster,
GCPBackendPolicy, danHealthCheckPolicy, resource harus merujuk ke resourceServiceImport.Hanya satu
GCPBackendPolicyyang dapat dilampirkan ke Layanan dalam satu waktu. Jika dua kebijakanGCPBackendPolicydibuat yang menargetkanServiceatauServiceImportyang sama, kebijakan yang lebih lama akan diprioritaskan dan kebijakan kedua tidak akan terlampir.Kebijakan hierarkis tidak didukung dengan GKE Gateway.
Resource
HealthCheckPolicydanGCPBackendPolicyharus ada di namespace yang sama dengan resourceServiceatauServiceImporttarget.Resource
GCPBackendPolicydanHealthCheckPolicydisusun sedemikian rupa sehingga hanya dapat mereferensikan satu layanan backend.GCPBackendPolicytidak mendukung opsiHEADER_FIELDatauHTTP_COOKIEuntuk afinitas sesi. Untuk afinitas sesiHEADER_FIELDatauHTTP_COOKIE, gunakan resourceGCPTrafficDistributionPolicy.Saat menggunakan Gateway dengan cakupan yang berbeda (seperti Eksternal Global dan Internal Regional), Anda tidak dapat menggunakan
Servicebackend yang sama jika memerlukan konfigurasiGCPBackendPolicyyang berbeda. Misalnya,GCPBackendPolicyglobal tidak dapat diterapkan ke Gateway cakupan regional, dan sebaliknya. Untuk memastikan kebijakan khusus cakupan yang benar, buatServiceyang berbeda untuk setiap cakupan Gateway.Afinitas sesi yang dikonfigurasi menggunakan
GCPTrafficDistributionPolicyhanya didukung untuk Gateway cluster tunggal.Afinitas sesi
GCPTrafficDistributionPolicytidak kompatibel dengan resourceInferencePoolkarena menggunakan algoritma load balancing lokalitas khusus.GCPTrafficDistributionPolicytidak mendukung konfigurasi afinitas sesi atau kebijakan load balancing lokalitas untuk Load Balancer Aplikasi klasik.
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:
# Enable global access for the regional internal Application Load Balancer.
allowGlobalAccess: true
targetRef:
group: gateway.networking.k8s.io
kind: Gateway
name: my-gateway
Mengonfigurasi region untuk Gateway multi-cluster
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.30.3-gke.1225000 atau yang lebih baru.
Jika armada Anda memiliki cluster di beberapa region, Anda mungkin perlu men-deploy Gateway regional di berbagai region 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 config.
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.
Secara default, untuk layanan backend yang menggunakan protokol aplikasi HTTP atau kubernetes.io/h2c, HealthCheck adalah jenis HTTP. Untuk protokol HTTPS, HealthCheck default adalah jenis HTTPS. Untuk protokol HTTP2, HealthCheck default adalah jenis HTTP2.
Anda dapat menggunakan HealthCheckPolicy untuk mengontrol setelan health check load balancer. Setiap jenis health check (http, https, grpc, http2, dan tcp) memiliki parameter yang dapat Anda tentukan. Google Cloudmembuat health check unik untuk setiap layanan backend untuk setiap Layanan GKE.
Agar load balancer Anda berfungsi 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 menggunakan "/health" untuk melaporkan statusnya, Anda harus mengonfigurasi
requestPath di HealthCheckPolicy dengan tepat.
Manifes HealthCheckPolicy berikut menunjukkan semua kolom yang tersedia saat
mengonfigurasi kebijakan health check:
Layanan
# Health check configuration for the load balancer. For more information
# about these fields, see https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks.
apiVersion: networking.gke.io/v1
kind: HealthCheckPolicy
metadata:
name: lb-healthcheck
namespace: lb-service-namespace
spec:
default:
checkIntervalSec: INTERVAL # The default value is 15 seconds.
timeoutSec: TIMEOUT
healthyThreshold: HEALTHY_THRESHOLD
unhealthyThreshold: UNHEALTHY_THRESHOLD
logConfig:
enabled: true
config:
type: PROTOCOL
httpHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
httpsHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
grpcHealthCheck:
grpcServiceName: GRPC_SERVICE_NAME
portSpecification: PORT_SPECIFICATION
port: PORT
http2HealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
tcpHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
request: REQUEST
response: RESPONSE
proxyHeader: PROXY_HEADER
# Attach to a Service in the cluster.
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:
# The default and config fields control the health check configuration for the
# load balancer. For more information about these fields, see
# https://cloud.google.com/compute/docs/reference/rest/v1/healthChecks.
default:
checkIntervalSec: INTERVAL
timeoutSec: TIMEOUT
healthyThreshold: HEALTHY_THRESHOLD
unhealthyThreshold: UNHEALTHY_THRESHOLD
logConfig:
enabled: ENABLED
config:
type: PROTOCOL
httpHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
httpsHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
grpcHealthCheck:
grpcServiceName: GRPC_SERVICE_NAME
portSpecification: PORT_SPECIFICATION
port: PORT
http2HealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
host: HOST
requestPath: REQUEST_PATH
response: RESPONSE
proxyHeader: PROXY_HEADER
tcpHealthCheck:
portSpecification: PORT_SPECIFICATION
port: PORT
portName: PORT_NAME
request: REQUEST
response: RESPONSE
proxyHeader: PROXY_HEADER
# Attach to a multi-cluster Service by referencing the ServiceImport.
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, nilai default Google Cloud adalah 15 detik jika tidak adaHealthCheckPolicyyang ditentukan, dan 5 detik jikaHealthCheckPolicyditentukan tanpa nilaicheckIntervalSec. Untuk mengetahui informasi selengkapnya, lihat Beberapa pemeriksaan dan frekuensi.TIMEOUT: menentukan jumlah waktu yang diperlukanGoogle Cloud untuk menunggu respons terhadap pemeriksaan. NilaiTIMEOUTharus kurang dari atau sama denganINTERVAL. Unit dalam hitungan detik. Setiap pemeriksaan memerlukan kode respons HTTP 200 (OK) untuk dikirimkan sebelum waktu tunggu pemeriksaan.HEALTHY_THRESHOLDdanUNHEALTHY_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, Kriteria keberhasilan untuk gRPC dan Kriteria keberhasilan untuk TCP. 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. Jikaporttidak 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 dengancontainerPortPod yang aktif, meskipuncontainerPortdireferensikan olehtargetPortdari Layanan. Anda tidak dibatasi padacontainerPortsyang dirujuk olehtargetPortLayanan.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: Menentukan data aplikasi yang akan dikirim setelah koneksi TCP dibuat. Jika tidak ditentukan, nilai defaultnya adalah kosong. Jika permintaan dan respons kosong, koneksi yang terhubung itu sendiri menunjukkan respons. Data permintaan hanya dapat dalam format ASCII.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 menggunakanNONEatauPROXY_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 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 Cloud Armor dengan menambahkan nama kebijakan keamanan Anda ke GCPBackendPolicy untuk mengamankan layanan backend.
Secara default, Gateway tidak memiliki kebijakan keamanan backend Cloud Armor yang ditentukan dan dilampirkan.
Pastikan Anda membuat kebijakan keamanan backend
Cloud Armor sebelum merujuk kebijakan tersebut
di GCPBackendPolicy Anda. Jika mengaktifkan Gateway regional, Anda
harus membuat kebijakan keamanan backend 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:
# Apply a Cloud Armor security policy.
securityPolicy: example-security-policy
# Attach to a Service in the cluster.
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:
# Apply a Cloud Armor security policy.
securityPolicy: example-security-policy
# Attach to a multi-cluster Service by referencing the ServiceImport.
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Mengonfigurasi IAP
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:
- Dapatkan client ID dan rahasia klien untuk klien OAuth Anda. Rahasia klien hanya tersedia saat Anda membuat klien OAuth. Untuk mengetahui informasi selengkapnya, lihat Mengelola Klien OAuth.
-
Anda tidak perlu membuat BackendConfig, karena BackendConfig adalah resource konfigurasi Ingress.
Untuk menentukan kebijakan IAP yang merujuk secret:
Simpan manifes
GCPBackendPolicyberikut sebagaibackend-policy.yaml:Layanan
apiVersion: networking.gke.io/v1 kind: GCPBackendPolicy metadata: name: backend-policy spec: default: # IAP OAuth2 settings. For more information about these fields, # see https://cloud.google.com/iap/docs/reference/rest/v1/IapSettings#oauth2. iap: enabled: true oauth2ClientSecret: name: CLIENT_SECRET clientID: CLIENT_ID # Attach to a Service in the cluster. targetRef: group: "" kind: Service name: SERVICE_NAMEGanti kode berikut:
CLIENT_SECRET: rahasia klien OAuth.CLIENT_ID: ID klien OAuth.SERVICE_NAME: nama Layanan yang akan ditargetkan dalamGCPBackendPolicy.
Layanan Multi-cluster
apiVersion: networking.gke.io/v1 kind: GCPBackendPolicy metadata: name: backend-policy spec: default: # IAP OAuth2 settings. For more information about these fields, # see https://cloud.google.com/iap/docs/reference/rest/v1/IapSettings#oauth2. iap: enabled: true oauth2ClientSecret: name: CLIENT_SECRET clientID: CLIENT_ID # Attach to a multi-cluster Service by referencing the ServiceImport. targetRef: group: net.gke.io kind: ServiceImport name: SERVICEIMPORT_NAMEGanti kode berikut:
CLIENT_SECRET: rahasia klien OAuth.CLIENT_ID: ID klien OAuth.SERVICEIMPORT_NAME: nama ServiceImport yang akan ditargetkan dalamGCPBackendPolicy.
Terapkan manifes
backend-policy.yaml:kubectl apply -f backend-policy.yaml
Verifikasi konfigurasi Anda:
Pastikan kebijakan diterapkan setelah membuat
GCPBackendPolicydengan IAP:kubectl get gcpbackendpolicyOutputnya mirip dengan hal berikut ini:
NAME AGE backend-policy 45mUntuk mendapatkan detail selengkapnya, gunakan perintah describe:
kubectl describe gcpbackendpolicyOutputnya 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 GCPBackendPolicy "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:
# Backend service timeout, in seconds, for the load balancer. The default
# value is 30.
timeoutSec: 40
# Attach to a Service in the cluster.
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
# Attach to a multi-cluster Service by referencing the ServiceImport.
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Mengonfigurasi pemilihan backend menggunakan GCPBackendPolicy
Mode penyeimbangan CUSTOM_METRICS dalam GCPBackendPolicy memungkinkan Anda mengonfigurasi metrik kustom tertentu yang memengaruhi cara layanan backend load balancer mendistribusikan traffic. Mode penyeimbangan ini memungkinkan load balancing berdasarkan metrik kustom yang Anda tentukan, dan yang dilaporkan oleh backend aplikasi.
Untuk mengetahui informasi selengkapnya, lihat Pengelolaan traffic dengan load balancing berbasis metrik kustom.
Array customMetrics[], di kolom backends[], berisi kolom berikut:
name: menentukan nama metrik kustom yang ditentukan pengguna.maxUtilization: menetapkan target atau penggunaan maksimum untuk metrik ini. Rentang yang valid adalah [0, 100].dryRun: kolom boolean. Jika benar (true), data metrik dilaporkan ke Cloud Monitoring, tetapi tidak memengaruhi keputusan load balancing.
Contoh
Contoh berikut menunjukkan manifes GCPBackendPolicy yang mengonfigurasi metrik kustom untuk pemilihan backend dan perutean tingkat endpoint.
Simpan manifes berikut sebagai
my-backend-policy.yaml:kind: GCPBackendPolicy apiVersion: networking.gke.io/v1 metadata: name: my-backend-policy namespace: team-awesome spec: # Attach to the super-service Service. targetRef: kind: Service name: super-service default: backends: # Configuration for all locations. - location: "*" # Use the rate balancing mode for the load balancer. balancingMode: RATE # Maximum number of requests per second for each endpoint. maxRatePerEndpoint: 9000 # Configuration for us-central1-a - location: us-central1-a # maxRatePerEndpoint: 9000 inherited from the * configuration. # Use the custom metrics balancing mode for the load balancer. balancingMode: CUSTOM_METRICS # Configure the custom metrics for the load balancer to use. customMetrics: - name: gpu-load maxUtilizationPercent: 100 # value ranges from 0 to 100 and maps to the floating point range [0.0, 1.0] dryRun: falseTerapkan manifes ke cluster Anda:
kubectl apply -f my-backend-policy.yaml
Load balancer mendistribusikan traffic berdasarkan mode load balancing RATE
dan metrik gpu-load kustom.
Mengonfigurasi perutean tingkat endpoint dengan GCPTrafficDistributionPolicy
API GCPTrafficDistributionPolicy di Gateway Google Kubernetes Engine (GKE)
menyediakan kemampuan pengelolaan traffic tingkat lanjut yang memungkinkan kontrol yang tepat atas
cara traffic didistribusikan ke pod aplikasi Anda. Resource terpadu dan berbasis GKE ini menyederhanakan pengelolaan algoritma load balancing dan setelan afinitas sesi.
GCPTrafficDistributionPolicy memungkinkan Anda mengonfigurasi:
Algoritma Load Balancing: tentukan cara traffic didistribusikan di antara endpoint dalam backend.
WEIGHTED_ROUND_ROBIN: saat Anda memilih algoritma ini, load balancer menggunakan metrik kustom untuk menghitung bobot dan mendistribusikan traffic berdasarkan metrik yang dilaporkan ini. ArraycustomMetrics[]dalam konfigurasiGCPTrafficDistributionPolicymencakup kolom berikut:name: menentukan nama metrik kustom yang ditentukan pengguna.dryRun: saattrue, data metrik dilaporkan ke Cloud Monitoring, tetapi tidak memengaruhi load balancing.
RING_HASH: algoritma ini bermanfaat untuk layanan yang sensitif terhadap performa cache. Load balancer ini menggunakan hashing yang konsisten untuk meminimalkan pemetaan ulang permintaan saat pod backend ditambahkan atau dihapus, yang membantu memastikan stabilitas selama peristiwa penskalaan. MengonfigurasiminimumHashRingSizememberikan distribusi beban yang lebih terperinci.Afinitas sesi: membantu memastikan bahwa permintaan dari klien yang sama dirutekan secara konsisten ke pod backend yang sama. Hal ini sangat penting untuk workload stateful, seperti keranjang belanja e-commerce atau sesi game. Gateway GKE mendukung semua jenis afinitas sesi yang tersedia di instance Load Balancer AplikasiGoogle Cloud , termasuk
HEADER_FIELDdanHTTP_COOKIE.
Untuk mengetahui informasi selengkapnya, lihat Pengelolaan traffic dengan load balancing berbasis metrik kustom.
Contoh
Contoh berikut menunjukkan manifes GCPTrafficDistributionPolicy yang mengonfigurasi perutean tingkat endpoint menggunakan algoritma load balancing WEIGHTED_ROUND_ROBIN dan metrik kustom.
Simpan manifes contoh berikut sebagai
GCPTrafficDistributionPolicy.yaml:apiVersion: networking.gke.io/v1 kind: GCPTrafficDistributionPolicy metadata: name: echoserver-v2 namespace: team1 spec: targetRefs: # Attach to the echoserver-v2 Service in the cluster. - kind: Service group: "" name: echoserver-v2 default: # Use custom metrics to distribute traffic across endpoints. localityLbAlgorithm: WEIGHTED_ROUND_ROBIN # Configure metrics from an ORCA load report to use for traffic # distribution. customMetrics: - name: orca.named_metrics.bescm11 dryRun: false - name: orca.named_metrics.bescm12 dryRun: trueTerapkan manifes ke cluster Anda:
kubectl apply -f GCPTrafficDistributionPolicy.yaml
Load balancer mendistribusikan traffic ke endpoint berdasarkan algoritma WEIGHTED_ROUND_ROBIN dan metrik kustom yang diberikan.
Mengonfigurasi ukuran ring hash
Untuk layanan yang meminimalkan cache miss sangat penting, gunakan algoritma RING_HASH. Menyesuaikan minimumHashRingSize memungkinkan distribusi beban yang lebih terperinci di seluruh backend. Meskipun load balancer mengelola ukuran ring secara otomatis, memberikan nilai minimum yang lebih tinggi dapat membantu memastikan distribusi permintaan yang lebih merata untuk set backend yang lebih besar.
apiVersion: networking.gke.io/v1
kind: GCPTrafficDistributionPolicy
metadata:
name: ring-hash-policy
namespace: default
spec:
default:
localityLbAlgorithm: RING_HASH
# Defaults to 1024. Larger ring sizes result in more granular
# load distributions. Supported range is 1 to 2048.
minimumHashRingSize: 1024
targetRefs:
- group: ""
kind: Service
name: my-cache-heavy-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:
# On a best-effort basis, send requests from a specific client IP address
# to the same backend. This field also sets the load balancer locality
# policy to MAGLEV. For more information, see
# https://cloud.google.com/load-balancing/docs/backend-service#lb-locality-policy
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:
# On a best-effort basis, send requests from a specific client IP address
# to the same backend. This field also sets the load balancer locality
# policy to MAGLEV. For more information, see
# https://cloud.google.com/load-balancing/docs/backend-service#lb-locality-policy
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:
# Include an HTTP cookie in the Set-Cookie header of the response.
# This field also sets the load balancer locality policy to MAGLEV. For more
# information, see
# https://cloud.google.com/load-balancing/docs/l7-internal#generated_cookie_affinity.
sessionAffinity:
type: GENERATED_COOKIE
cookieTtlSec: 50 # The cookie expires in 50 seconds.
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:
# Include an HTTP cookie in the Set-Cookie header of the response.
# This field also sets the load balancer locality policy to MAGLEV. For more
# information, see
# https://cloud.google.com/load-balancing/docs/l7-internal#generated_cookie_affinity.
sessionAffinity:
type: GENERATED_COOKIE
cookieTtlSec: 50 # The cookie expires in 50 seconds.
targetRef:
group: net.gke.io
kind: ServiceImport
name: lb-service
Anda dapat menggunakan nilai berikut untuk kolom sessionAffinity.type:
CLIENT_IPGENERATED_COOKIENONE
Afinitas sesi yang diperluas menggunakan GCPTrafficDistributionPolicy
Bagian ini menjelaskan fungsionalitas yang tersedia di cluster GKE yang menjalankan versi 1.35.2-gke.1269001 atau yang lebih baru.
GKE Gateway mendukung jenis afinitas sesi yang diperluas dengan menggunakan resource
GCPTrafficDistributionPolicy. Hal ini memberikan kontrol yang lebih terperinci,
seperti perutean berdasarkan header HTTP kustom atau cookie yang dibuat oleh load balancer.
Catatan: Untuk afinitas sesi lanjutan, gunakan GCPTrafficDistributionPolicy.
Meskipun GCPBackendPolicy juga mendukung jenis afinitas sesi tertentu, GCPBackendPolicy dianggap sebagai opsi lama untuk konfigurasi ini. Jika kedua kebijakan menargetkan Layanan yang sama,
konfigurasi GCPTrafficDistributionPolicy akan diprioritaskan.
Tabel berikut menjelaskan jenis afinitas yang didukung saat menggunakan
GCPTrafficDistributionPolicy:
| Jenis Afinitas | Deskripsi |
|---|---|
HEADER_FIELD |
Afinitas berdasarkan header HTTP tertentu. Memerlukan localityLbAlgorithm yang ditetapkan ke MAGLEV atau RING_HASH. |
HTTP_COOKIE |
Afinitas berdasarkan cookie HTTP. Saat merespons permintaan pertama, load balancer membuat cookie dan memberikannya di header respons Set-Cookie. Pada permintaan berikutnya, klien menampilkan cookie yang diberikan oleh load balancer, dan load balancer menggunakannya untuk merutekan permintaan secara konsisten ke pod yang sama. Anda harus mengonfigurasi cookie.name, dan dapat secara opsional mengonfigurasi cookie.path dan cookie.ttl. Memerlukan localityLbAlgorithm yang ditetapkan ke MAGLEV atau RING_HASH. |
GENERATED_COOKIE |
Load balancer membuat cookie untuk melacak sesi. Nama cookie adalah GCLB untuk Load Balancer Aplikasi eksternal global, dan GCILB untuk Load Balancer Aplikasi internal regional dan Load Balancer Aplikasi eksternal regional, serta jalur cookie adalah /. Anda dapat secara opsional mengonfigurasi cookie.ttl hingga maksimum dua minggu; cookie.name dan cookie.path tidak dapat dikonfigurasi untuk jenis ini. Memerlukan localityLbAlgorithm yang ditetapkan ke MAGLEV atau RING_HASH. |
CLIENT_IP |
Afinitas berdasarkan alamat IP klien. Memerlukan localityLbAlgorithm yang ditetapkan ke MAGLEV atau RING_HASH. |
Contoh afinitas sesi yang diperluas
GCPTrafficDistributionPolicy mendukung beberapa jenis afinitas sesi, yang masing-masing
memiliki persyaratan konfigurasi yang unik.
Mengonfigurasi afinitas sesi berbasis cookie HTTP
Untuk aplikasi stateful, seperti keranjang belanja atau server game, rute
permintaan ke pod tertentu yang menyimpan data sesi pengguna. Konfigurasi
ini menggunakan afinitas HTTP_COOKIE, yang mendasarkan afinitas sesi pada
cookie tertentu yang dihasilkan oleh load balancer dan dikembalikan ke klien di header Set-Cookie.
Simpan manifes berikut sebagai
policy.yaml:apiVersion: networking.gke.io/v1 kind: GCPTrafficDistributionPolicy metadata: name: http-cookie-affinity-policy namespace: default spec: default: sessionAffinity: type: HTTP_COOKIE cookie: name: "my-app-session-id" ttl: "1h" path: "/" # HTTP_COOKIE affinity requires localityLbAlgorithm to be MAGLEV or RING_HASH. localityLbAlgorithm: MAGLEV targetRefs: - group: "" kind: Service name: my-stateful-serviceTerapkan kebijakan ke cluster Anda:
kubectl apply -f policy.yaml
Perilaku TTL nol untuk afinitas sesi berbasis cookie:
Semua afinitas sesi berbasis cookie, seperti afinitas GENERATED_COOKIE dan HTTP_COOKIE, memiliki atribut ttl.
TTL nol detik berarti load balancer tidak menetapkan atribut Expires
ke cookie. Dalam hal ini, klien memperlakukan cookie sebagai cookie sesi. Definisi sesi bervariasi bergantung pada klien:
- Beberapa klien, seperti browser web, menyimpan cookie selama seluruh sesi penjelajahan. Artinya, cookie tetap ada di beberapa permintaan hingga aplikasi ditutup.
- Klien lain memperlakukan sesi sebagai satu permintaan HTTP, dan langsung menghapus cookie setelahnya.
Mengonfigurasi afinitas sesi berbasis header
Mengarahkan traffic berdasarkan header HTTP tertentu untuk skenario seperti pengujian A/B atau
perutean klien khusus saat cookie tidak sesuai. Untuk menggunakan jenis afinitas sesi selain NONE, Anda harus menyetel localityLbAlgorithm ke MAGLEV atau RING_HASH. Tidak seperti ROUND_ROBIN default, algoritma ini mendukung hashing yang konsisten berdasarkan kolom kustom seperti header HTTP.
Simpan manifes berikut sebagai
policy.yaml:apiVersion: networking.gke.io/v1 kind: GCPTrafficDistributionPolicy metadata: name: header-affinity-policy namespace: default spec: default: sessionAffinity: type: HEADER_FIELD httpHeaderName: "X-User-Group-ID" localityLbAlgorithm: MAGLEV targetRefs: - group: "" kind: Service name: SERVICE_NAMETerapkan kebijakan ke cluster Anda:
kubectl apply -f policy.yaml
Memverifikasi kebijakan
Untuk memastikan GCPTrafficDistributionPolicy dikonfigurasi dan aktif dengan benar, verifikasi statusnya setelah Anda menerapkannya.
Untuk memeriksa status kebijakan, jelaskan kebijakan tersebut:
kubectl describe gcptrafficdistributionpolicy POLICY_NAMEGanti
POLICY_NAMEdengan nama kebijakan Anda.Pada output, cari bagian
Conditions. StatusTruedengan alasanAttachedmenunjukkan bahwa konfigurasi valid dan telah diterapkan.
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 pengambilan sampel adalah 1.000.000, yang berarti semua permintaan dicatat ke dalam log.
- Tidak ada kolom opsional yang dicatat.
Anda dapat menonaktifkan logging akses di Gateway menggunakan GCPBackendPolicy dengan tiga cara:
- Anda dapat mengosongkan bagian
GCPBackendPolicytanpalogging - Anda dapat menyetel
logging.enabledkefalse - Anda dapat menyetel
logging.enabledketruedan menyetellogging.sampleRateke0
Anda juga dapat mengonfigurasi frekuensi sampling logging akses dan daftar kolom opsional, misalnya "tls.cipher" atau "orca_load_report".
Untuk mengaktifkan logging kolom opsional:
- Tetapkan
logging.OptionalModekeCUSTOM. - Berikan daftar kolom opsional yang akan dicatat dalam log di
logging.optionalFields. Lihat logging dan pemantauan untuk mengetahui daftar kolom yang didukung.
Anda dapat menonaktifkan logging kolom opsional dengan dua cara:
- Anda dapat menghapus semua entri dari
logging.optionalFields. - Anda dapat menyetel
logging.OptionalModekeEXCLUDE_ALL_OPTIONAL.
Manifes GCPBackendPolicy berikut mengubah frekuensi sampel default logging akses dan menyetelnya ke 50% dari permintaan HTTP. Manifes juga memungkinkan logging dua kolom opsional untuk resource Layanan tertentu:
Layanan
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: my-backend-policy
namespace: lb-service-namespace
spec:
default:
# Access logging configuration for the load balancer.
logging:
enabled: true
# Log 50% of the requests. The value must be an integer between 0 and
# 1000000. To get the proportion of requests to log, GKE
# divides this value by 1000000.
sampleRate: 500000
# Log specific optional fields.
optionalMode: CUSTOM
optionalFields:
- tls.cipher
- orca_load_report.cpu_utilization
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:
# Access logging configuration for the load balancer.
logging:
enabled: true
# Log 50% of the requests. The value must be an integer between 0 and
# 1000000. To get the proportion of requests to log, GKE
# divides this value by 1000000.
sampleRate: 500000
# Log specific optional fields.
optionalMode: CUSTOM
optionalFields:
- tls.cipher
- orca_load_report.cpu_utilization
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 jikaenableditetapkan ketrue.sampleRateadalah kolom opsional, tetapi jika dikonfigurasi,enable: truejuga harus ditetapkan. Jikaenableditetapkan ketruedansampleRatetidak disediakan, GKE menetapkanenablekefalse.optionalMode: CUSTOM: menentukan bahwa sekumpulanoptionalFieldsharus disertakan dalam entri log.optionalFields: tls.cipher, orca_load_report.cpu_utilization: menentukan bahwa entri log harus menyertakan nama sandi yang digunakan untuk handshake TLS dan pemanfaatan CPU layanan, jika tersedia.
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 cluster tunggal, 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 sebesar 10:
apiVersion: networking.gke.io/v1
kind: GCPBackendPolicy
metadata:
name: store
spec:
default:
maxRatePerEndpoint: 10
targetRef:
group: ""
kind: Service
name: store
Untuk mempelajari lebih lanjut penskalaan otomatis berbasis traffic, lihat Penskalaan otomatis berdasarkan traffic load balancer.
Pemecahan masalah
Bagian ini memberikan panduan untuk memecahkan masalah umum saat mengonfigurasi resource Gateway menggunakan Kebijakan.
GCPTrafficDistributionPolicy tidak berlaku
Gejala: Traffic tidak didistribusikan sesuai dengan afinitas sesi atau setelan lokalitas yang ditentukan dalam kebijakan Anda.
Alasan: Hal ini biasanya terjadi jika kebijakan tidak terikat dengan benar ke Layanan atau jika pengontrol Gateway mengalami error validasi saat mencoba menyinkronkan konfigurasi ke load balancer.
Solusi:
Verifikasi status kebijakan: Periksa apakah kebijakan telah dilampirkan ke Layanan Anda:
kubectl describe gcptrafficdistributionpolicy POLICY_NAMEGanti
POLICY_NAMEdengan nama kebijakan Anda.Pada output, cari bagian
Conditions. StatusTruedengan alasanAttachedmenunjukkan bahwa konfigurasi valid dan telah diterapkan. Jika statusnyaFalse, periksa kolomReasondanMessageuntuk mengetahui error validasi (misalnya, algoritma yang tidak didukung untuk jenis afinitas yang dipilih).Verifikasi sinkronisasi konfigurasi Gateway: Pastikan Gateway yang mengelola traffic telah berhasil menyinkronkan setelan ini dengan infrastruktur cloud.
Di bagian
Status, verifikasi bahwa kondisiProgrammedmemilikiStatusTrue. JikaFalse, hal ini menunjukkan bahwa pengontrol Gateway mengalami error, yang mungkin terkait denganGCPTrafficDistributionPolicyAnda.Periksa kolom
ReasondanMessagedi samping kondisiProgrammeduntuk mengetahui detailnya secara langsung. Untuk mengetahui pesan error yang lebih terperinci atau histori kegagalan sinkronisasi, periksaEventsdi bagian bawah output.
Beberapa GCPBackendPolicy terpasang ke Service yang sama
Gejala:
Kondisi status berikut dapat 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.
Beberapa GCPBackendPolicy yang terpasang ke Service atau ServiceImport yang sama tidak didukung dengan GKE Gateway. Lihat Pembatasan dan Batasan
untuk mengetahui detail selengkapnya.
Solusi:
Konfigurasi satu GCPBackendPolicy yang mencakup semua konfigurasi kustom dan lampirkan ke Service atau ServiceImport Anda.
Afinitas sesi diabaikan selama pemisahan traffic
Gejala:
Permintaan tidak dirutekan secara konsisten ke Pod backend yang sama meskipun afinitas sesi dikonfigurasi.
Alasan:
Pemisahan traffic berbobot lebih diutamakan daripada afinitas sesi. Jika
HTTPRoute menentukan bobot untuk beberapa backend, load balancer akan memilih
backend berdasarkan bobot terlebih dahulu sebelum menerapkan logika afinitas.
Solusi:
Hindari penggunaan pembagian traffic berbobot pada aturan HTTPRoute yang sama jika diperlukan kelekatan sesi.
Kebijakan keamanan Cloud Armor tidak ditemukan
Gejala:
Pesan error berikut mungkin muncul saat Anda mengaktifkan 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 Cloud Armor regional yang ditentukan tidak ada di project Google Cloud Anda.
Solusi:
Buat kebijakan keamanan Cloud Armor regional di project Anda dan rujuk kebijakan ini di GCPBackendPolicy Anda.
Langkah berikutnya
- Pelajari cara men-deploy Gateway.
- Pelajari Pengontrol gateway lebih lanjut.
- Pelajari cara mereferensikan Gateway dari resource.
- Lihat referensi Policy Types API.
- Lihat definisi jenis API.