Extensible Service Proxy V2 (ESPv2) adalah proxy berbasis Envoy yang memungkinkan Cloud Endpoints menyediakan fitur pengelolaan API. Untuk mengonfigurasi ESPv2, Anda dapat menentukan flag konfigurasi saat men-deploy layanan ESPv2.
Menetapkan flag konfigurasi
Metode untuk menetapkan flag konfigurasi ESPv2 bervariasi berdasarkan platform deployment, seperti yang diuraikan di bagian berikut.
VM Compute Engine
Flag konfigurasi ESPv2 untuk Compute Engine ditentukan dalam perintah docker run
. Contoh:
sudo docker run \ --detach \ DOCKER_ARGUMENTS \ gcr.io/endpoints-release/endpoints-runtime:2 \ --service=SERVICE_NAME \ --rollout_strategy=managed \ --backend=YOUR_API_CONTAINER_NAME:8080
Dalam contoh ini, --service
, --rollout_strategy
, dan --backend
adalah flag konfigurasi
ESPv2.
GKE dan Kubernetes
Anda dapat menentukan flag konfigurasi untuk GKE dan Kubernetes di kolom args
file manifes deployment. Contoh:
containers: - name: esp image: gcr.io/endpoints-release/endpoints-runtime:2 args: [ "--listener_port=8081", "--backend=127.0.0.1:8080", "--service=SERVICE_NAME", "--rollout_strategy=managed" ]
Dalam contoh ini, --listener_port
, --backend
, --service
, dan --rollout_strategy
adalah
flag konfigurasi ESPv2.
Cloud Run untuk platform serverless
Untuk menentukan opsi startup untuk Cloud Run untuk serverless, gunakan variabel lingkungan ESPv2_ARGS. Variabel dapat ditetapkan dalam perintah gcloud run deploy
menggunakan opsi --set-env-vars
.
Contoh:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --image="gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:CLOUD_RUN_HOSTNAME-CONFIG_ID" \ --set-env-vars=ESPv2_ARGS=--enable_debug
Dalam contoh ini, --enable_debug
adalah flag konfigurasi ESPv2.
Lihat Cloud Functions untuk OpenAPI,
Cloud Run untuk OpenAPI, atau
Cloud Run untuk gRPC
untuk mengetahui informasi selengkapnya tentang perintah gcloud run deploy
.
Untuk menetapkan beberapa argumen dalam variabel lingkungan ESPv2_ARGS, tentukan pembatas kustom dan gunakan pembatas tersebut untuk memisahkan beberapa argumen. Jangan gunakan koma sebagai pembatas. Tempatkan pemisah kustom di awal variabel lingkungan ESPv2_ARGS, yang diapit oleh tanda petik.
Contoh berikut menggunakan ++
sebagai pemisah:
gcloud run deploy CLOUD_RUN_SERVICE_NAME \ --image="gcr.io/ESP_PROJECT_ID/endpoints-runtime-serverless:CLOUD_RUN_HOSTNAME-CONFIG_ID" \ --set-env-vars=ESPv2_ARGS=^++^--cors_preset=basic++--cors_allow_origin=your_host.com
Jika flag yang Anda tetapkan berisi koma, Anda harus menetapkan variabel lingkungan ESPv2_ARGS dalam skrip gcloud_build_image.
Misalnya, untuk menambahkan flag --cors_allow_methods=PUT,POST,GET
:
- Download skrip gcloud_build_image.
- Edit
gcloud_build_image
seperti yang ditunjukkan di bawah:cat <<EOF > Dockerfile FROM BASE_IMAGE ENV ENDPOINTS_SERVICE_PATH /etc/endpoints/service.json COPY service.json \ENDPOINTS_SERVICE_PATH ENV ESPv2_ARGS ^++^--cors_preset=basic++--cors_allow_method="GET,PUT,POST"++--cors_allow_credentials ENTRYPOINT ["/env_start_proxy.py"] EOF
- Jalankan skrip
gcloud_build_image
untuk mem-build image.
Flag konfigurasi ESPv2
Flag konfigurasi ESPv2 dapat dikelompokkan ke dalam kategori berikut:
- Konfigurasi non-serverless
- Logging
- Pelacakan
- Health Check
- Proses Debug
- Pengujian Lokal
- Deployment Non-Google Cloud
- Ekstraksi IP klien
- Dukungan CORS
- Dukungan TLS
- Waktu tunggu habis dan percobaan ulang
- Transcoding gRPC
- Perubahan permintaan dan respons
- Opsi keamanan
- Autentikasi JWT
Contoh umum tambahan dan teks bantuan untuk flag ESPv2 dapat ditemukan di repositori GitHub.
Konfigurasi Non-Serverless
Flag ini diperlukan untuk menjalankan ESPv2 di platform non-serverless, seperti GKE, Compute Engine, dan Kubernetes. Parameter ini tidak dapat ditetapkan saat di-deploy di Cloud Run untuk platform serverless.
``Flag | Deskripsi |
---|---|
--service
|
Menetapkan nama layanan Endpoint. |
--version
|
Menetapkan ID konfigurasi layanan dari layanan Endpoints. |
--rollout_strategy
|
Menentukan strategi peluncuran konfigurasi layanan, [fixed|managed]. Default-nya adalah fixed. |
--listener_port
|
Mengidentifikasi port untuk menerima koneksi downstream. Layanan ini mendukung koneksi HTTP/1.x, HTTP/2, dan gRPC. Defaultnya adalah 8080. |
--backend
|
Menentukan alamat server aplikasi backend lokal. Skema yang valid adalah http, https, grpc, dan grpcs jika disertakan. Skema default adalah >http. |
Logging
Gunakan flag ini untuk mengonfigurasi ESPv2 guna menulis informasi tambahan ke log Stackdriver.
Flag | Deskripsi |
---|---|
--log_request_headers
|
Catat nilai header permintaan yang ditentukan, yang dipisahkan dengan koma tanpa spasi. Misalnya, tetapkan tanda ini sebagai:
Jika nilai untuk header "foo" dan "bar" tersedia dalam permintaan, log Endpoints akan berisi:
|
--log_response_headers
|
Catat nilai header respons yang ditentukan, yang dipisahkan dengan koma tanpa spasi. Misalnya, tetapkan tanda ini sebagai:
Jika nilai untuk header "baz" dan "bing" tersedia dalam respons, log Endpoint akan berisi:
|
--log_jwt_payloads
|
Catat nilai kolom primitif payload JWT yang ditentukan, dipisahkan dengan koma tanpa spasi. Misalnya, tetapkan tanda ini sebagai:
Jika nilai tersedia dalam payload JWT, log Endpoints akan berisi:
Nilai dalam payload JWT harus berupa kolom primitif (string, bilangan bulat). Objek dan array JSON tidak dicatat ke dalam log. |
--access_log
|
Jika ditentukan, jalur ke file lokal tempat entri log akses akan ditulis. |
--access_log_format
|
Format string untuk menentukan format log akses. Jika tidak ditetapkan, >default format string akan digunakan. Untuk tata bahasa format mendetail, lihat referensi string format. |
Pelacakan
Gunakan flag ini untuk mengonfigurasi data pelacakan ESPv2 yang dikirim ke Stackdriver. Flag ini hanya berlaku jika pelacakan diaktifkan.
Flag | Deskripsi |
---|---|
--disable_tracing
|
Nonaktifkan pelacakan. Secara default, pelacakan diaktifkan. Jika diaktifkan, ESPv2 akan mengambil sampel sejumlah kecil permintaan ke API Anda setiap detik untuk mendapatkan rekaman aktivitas yang dikirim ke Stackdriver Trace. Secara default, 1 dari 1.000 permintaan akan diambil sampelnya.
Gunakan flag |
--tracing_project_id
|
Project ID Google untuk pelacakan Stackdriver. Pelacakan adalah layanan berbayar. Project yang ditentukan akan ditagih untuk pelacakan. Secara default, project ID layanan ESPv2 yang di-deploy akan ditagih.
Project ID ditentukan dengan memanggil Server Metadata Instance Google Cloud saat memulai.
Jika ESPv2 di-deploy di luar Google Cloud (menggunakan flag |
--tracing_sample_rate
|
Tetapkan frekuensi sampling rekaman aktivitas ke nilai dari 0,0 hingga 1,0. Nilai ini menentukan fraksi permintaan yang diambil sampelnya. Nilai defaultnya adalah 0,001, yang setara dengan 1 dari 1.000 permintaan. |
--tracing_incoming_context
|
Flag ini menentukan header HTTP yang akan diperiksa untuk konteks rekaman aktivitas, dengan nilai flag yang dipisahkan koma tanpa spasi. Perhatikan bahwa urutan penting: konteks rekaman aktivitas akan berasal dari header pertama yang cocok. Nilai yang mungkin mencakup Jika dihilangkan, header Lihat Melacak API Anda untuk mengetahui detail selengkapnya. |
--tracing_outgoing_context
|
Menetapkan header konteks rekaman aktivitas dalam permintaan yang dikirim ke layanan backend. Flag ini menentukan header HTTP yang akan ditetapkan, dengan nilai flag yang dipisahkan koma tanpa spasi. Nilai yang mungkin mencakup Jika dihilangkan, header Lihat Melacak API Anda untuk mengetahui detail selengkapnya. |
Health Check
Gunakan flag ini untuk mengonfigurasi health check untuk ESPv2. Flag pertama dapat digunakan untuk menyiapkan pengendali kesehatan guna merespons panggilan pemeriksaan kesehatan. Flag lainnya dapat digunakan untuk mengaktifkan pemeriksaan kesehatan untuk backend gRPC.
/tbody>Flag | Deskripsi |
---|---|
-z, --healthz
|
Tentukan endpoint pemeriksaan kesehatan. Misalnya, -z healthz
membuat ESPv2 menampilkan kode 200 untuk jalur /healthz .
|
--health_check_grpc_backend
|
Mengaktifkan ESPv2 untuk memeriksa layanan Kesehatan gRPC secara berkala untuk backend yang ditentukan oleh tanda --backend .
Backend harus menggunakan protokol gRPC dan menerapkan Protokol Pemeriksaan Kesehatan gRPC.
Endpoint health check yang diaktifkan oleh tanda --healthz akan mencerminkan hasil health check backend.
|
--health_check_grpc_backend_service
|
Tentukan nama layanan saat memanggil Protokol Health Check gRPC backend. Nilai flag ini hanya diterapkan saat
flag --health_check_grpc_backend digunakan. Ini bersifat opsional, jika tidak ditetapkan, defaultnya kosong.
Nama layanan kosong digunakan untuk mengkueri status kesehatan server gRPC secara keseluruhan.
|
--health_check_grpc_backend_interval
|
Tentukan interval pemeriksaan dan waktu tunggu permintaan saat memanggil layanan Kesehatan gRPC backend.
Nilai flag ini hanya diterapkan saat flag --health_check_grpc_backend digunakan. Defaultnya adalah 1 detik.
Format yang diterima adalah urutan bilangan desimal, masing-masing dengan pecahan opsional dan akhiran satuan, seperti "5s", "100 md", atau "2 m".
Satuan waktu yang valid adalah "m" untuk menit, "s" untuk detik, dan "ms" untuk milidetik.
|
Proses Debug
Gunakan flag ini untuk mengonfigurasi proses debug untuk ESPv2. Flag ini dapat digunakan untuk menyiapkan port admin Envoy guna mengambil konfigurasi dan statistik atau menjalankan Envoy dalam mode debug untuk menulis informasi tingkat debug ke log.
Flag | Deskripsi |
---|---|
--status_port , --admin_port
|
Aktifkan admin Envoy ESPv2 di port ini. Lihat referensi antarmuka administrasi Envoy untuk detail selengkapnya. Port admin dinonaktifkan secara default. |
--enable_debug
|
Aktifkan log level debug dan tambahkan header debug. |
Deployment Non-Google Cloud
Jika ESPv2 di-deploy di lingkungan non-Google Cloud, flag berikut mungkin diperlukan.
Flag | Deskripsi |
---|---|
--service_account_key
|
Menentukan file JSON kunci akun layanan untuk mengakses layanan Google. Jika opsi dihilangkan, proxy akan menghubungi server metadata Google Cloud untuk mengambil token akses. |
--dns_resolver_addresses
|
Alamat resolver DNS. Setiap alamat harus dalam format
IP_ADDR atau IP_ADDR:PORT dan dipisahkan dengan titik koma (;). Untuk IP_ADDR, port DNS default 52 akan digunakan. Misalnya:
--dns_resolver_addresses=127.0.0.1;127.0.0.2;127.0.0.3:8000 )
Jika tidak ditetapkan, ESPv2 akan menggunakan resolver default yang dikonfigurasi di /etc/resolv.conf
|
--backend_dns_lookup_family
|
Tentukan keluarga pencarian DNS untuk semua backend. Opsi yang tersedia adalah auto, v4only, v6only, v4preferred, dan all. Defaultnya adalah v4preferred. Perhatikan bahwa auto adalah nilai lama. Menetapkan flag ke auto akan menghasilkan perilaku yang setara dengan v6preferred. |
--non_gcp
|
Secara default, proxy mencoba terhubung ke Server Metadata Google Cloud untuk mendapatkan lokasi VM dalam beberapa permintaan pertama. Untuk melewati langkah ini, tetapkan tanda ini ke true. |
Pengujian Lokal
ESPv2 dapat di-deploy secara lokal di workstation Anda untuk pengujian. Lihat Menjalankan ESP secara lokal atau di platform lain untuk mengetahui detail selengkapnya.
Gunakan flag ini bersama dengan flag Deployment Non-Google Cloud untuk memudahkan deployment dan pengujian lokal dalam integrasi berkelanjutan.
Flag | Deskripsi |
---|---|
--service_json_path
|
Tentukan jalur untuk ESPv2 guna memuat konfigurasi layanan endpoint. Dengan flag ini, ESPv2 akan menggunakan strategi peluncuran "tetap" dan flag berikut akan diabaikan:
Flag ini akan mencegah ESPv2 menggunakan kuota Service Management API. |
--enable_backend_address_override
|
Alamat backend dapat ditentukan menggunakan tanda
Konfigurasi layanan per operasi
Aktifkan flag ini jika Anda ingin flag
Catatan: Hanya alamat yang akan diganti.
Semua komponen |
Ekstraksi IP Klien
Gunakan flag ini untuk mengonfigurasi ekstraksi IP klien untuk ESPv2.
Flag | Deskripsi |
---|---|
--envoy_use_remote_address
|
Konfigurasi HttpConnectionManager Envoy, lihat referensi Envoy untuk mengetahui informasi mendetail. Default-nya adalah nonaktif. |
--envoy_xff_num_trusted_hops
|
Konfigurasi HttpConnectionManager Envoy, lihat referensi Envoy untuk mengetahui informasi mendetail. Nilai defaultnya adalah 2. |
Dukungan CORS
Silakan baca Mendukung CORS untuk mengetahui deskripsi opsi dukungan CORS yang tersedia. Bagian ini menjelaskan penggunaan flag startup ESPv2 untuk mendukung CORS.
Untuk mengaktifkan dukungan CORS di ESPv2, sertakan opsi --cors_preset
dan tetapkan salah satu flag berikut:
--cors_preset=basic
--cors_preset=cors_with_regex
Saat Anda menyertakan --cors_preset=basic
atau --cors_preset=cors_with_regex
, ESPv2:
- Mengasumsikan semua jalur lokasi memiliki kebijakan CORS yang sama.
- Merespons permintaan sederhana dan permintaan
HTTP OPTIONS
preflight. - Menyimpan hasil permintaan
OPTIONS
pra-penerbangan ke dalam cache hingga 20 hari (1728000 detik). Menetapkan header respons ke nilai berikut:
Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, POST, PUT, PATCH, DELETE, OPTIONS Access-Control-Allow-Headers: DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range,Authorization Access-Control-Expose-Headers: Content-Length,Content-Range Access-Control-Max-Age: 1728000
Untuk mengganti nilai default
Access-Control-Allow-Origin
,
tentukan salah satu opsi berikut:
Opsi | Deskripsi |
---|---|
--cors_allow_origin |
Gunakan dengan --cors_preset=basic untuk menetapkan
Access-Control-Allow-Origin ke origin tertentu.Contoh:
--cors_preset=basic
|
--cors_allow_origin_regex |
Gunakan dengan --cors_preset=cors_with_regex . Memungkinkan Anda menggunakan
ekspresi reguler untuk menetapkan Access-Control-Allow-Origin .Contoh:
--cors_preset=cors_with_regex
Ekspresi reguler dalam contoh sebelumnya mengizinkan origin dengan
http atau https dan subdomain apa pun dari
Saat menetapkan opsi ini dalam file konfigurasi Kubernetes, Anda perlu menambahkan karakter garis miring terbalik tambahan untuk meng-escape kedua instance \. dalam string, misalnya:
"--cors_preset","cors_with_regex",
Saat Anda menetapkan opsi ini dalam skrip gcloud_build_image untuk Cloud Run,
usahakan untuk tidak menggunakan karakter yang di-escape dan garis miring terbalik, karena karakter tersebut mungkin tidak diteruskan
dengan benar dari skrip bash ke proxy saat memulai. Gunakan class karakter,
bukan urutan meta. Contoh:
|
Setelah menetapkan --cors_preset=basic
atau --cors_preset=cors_with_regex
untuk mengaktifkan CORS, Anda dapat mengganti nilai default header respons lainnya dengan menentukan satu atau beberapa opsi berikut:
Opsi | Deskripsi |
---|---|
--cors_allow_methods |
Menetapkan
Access-Control-Allow-Methods
ke metode HTTP yang ditentukan. Tentukan metode HTTP sebagai string dengan setiap
metode HTTP dipisahkan oleh koma.Contoh:
--cors_preset=basic
|
--cors_allow_headers |
Menetapkan
Access-Control-Allow-Headers
ke header HTTP yang ditentukan. Tentukan header HTTP sebagai string dengan setiap
header HTTP dipisahkan oleh koma.Contoh:
--cors_preset=basic
|
--cors_allow_credentials |
Menyertakan header
Access-Control-Allow-Credentials
dengan nilai true dalam respons. Secara default, header
Access-Control-Allow-Credentials tidak disertakan dalam respons.Contoh:
--cors_preset=basic
|
--cors_expose_headers |
Menetapkan
Access-Control-Expose-Headers
ke header yang ditentukan. Tentukan header yang dapat ditampilkan sebagai bagian dari
respons sebagai string dengan setiap header dipisahkan oleh koma.Contoh:
--cors_preset=basic
|
--cors_max_age |
Menetapkan
Access-Control-Max-Age
ke durasi waktu yang ditentukan. Format yang dapat diterima adalah urutan bilangan decimal, masing-masing dengan nilai pecahan opsional dan akhiran satuan, seperti "300m", "1,5h", atau "2h45m". Satuan waktu yang valid adalah "m" untuk menit, "h" untuk
jam. Nilai defaultnya adalah "480h" jika tidak ditetapkan.Contoh:
--cors_preset=basic
|
Dukungan TLS
Gunakan flag ini untuk mengonfigurasi ESPv2 agar menggunakan koneksi TLS.
Flag | Deskripsi |
---|---|
--ssl_server_cert_path
|
Jalur sertifikat server proxy. Saat dikonfigurasi, ESPv2 hanya menerima koneksi aman HTTP/1.x dan HTTP/2 di listener_port. Memerlukan file sertifikat dan kunci "server.crt" dan "server.key" dalam jalur ini. |
--ssl_server_cipher_suites
|
Cipher suite yang akan digunakan untuk koneksi downstream, yang ditentukan sebagai daftar yang dipisahkan koma. Silakan baca Konfigurasi cipher suite. |
--ssl_backend_client_cert_path
|
Jalur sertifikat klien proxy. Jika dikonfigurasi, ESPv2 akan mengaktifkan autentikasi TLS bersama untuk backend HTTPS. Memerlukan file sertifikat dan kunci "client.crt" dan "client.key" dalam jalur ini. |
--ssl_backend_client_root_certs_file
|
Jalur file root certificate yang digunakan ESPv2 untuk memverifikasi sertifikat server backend. Jika tidak ditentukan, ESPv2 akan menggunakan "/etc/ssl/certs/ca-certificates.crt" secara default. |
--ssl_backend_client_cipher_suites
|
Cipher suite yang akan digunakan untuk backend HTTPS, yang ditentukan sebagai daftar yang dipisahkan koma. Silakan baca Konfigurasi cipher suite. |
--ssl_minimum_protocol
|
Versi protokol TLS minimum untuk koneksi sisi klien. Silakan baca artikel ini |
--ssl_maximum_protocol
|
Versi protokol TLS maksimum untuk koneksi sisi klien. Silakan baca artikel ini |
--enable_strict_transport_security
|
Aktifkan HSTS (HTTP Strict Transport Security). Header respons "Strict-Transport-Security" dengan nilai "max-age=31536000; includeSubdomains;" ditambahkan untuk semua respons. |
--generate_self_signed_cert
|
Buat sertifikat dan kunci yang ditandatangani sendiri di awal, lalu simpan di "/tmp/ssl/endpoints/server.crt" dan "/tmp/ssl/endpoints/server.key". Hal ini berguna jika hanya sertifikat tanda tangan sendiri acak yang diperlukan untuk menayangkan permintaan HTTPS. Sertifikat yang dihasilkan akan memiliki Nama Umum "localhost" dan berlaku selama 10 tahun. |
Waktu Tunggu dan Percobaan Ulang
Gunakan flag ini untuk mengonfigurasi waktu tunggu panggilan HTTP jarak jauh dan percobaan ulang untuk ESPv2.
Flag | Deskripsi |
---|---|
--http_request_timeout_s
|
Tetapkan waktu tunggu dalam hitungan detik untuk permintaan yang dilakukan ke layanan eksternal, kecuali Backend dan Kontrol Layanan Google. Hal ini mencakup Google ServiceManagement, server Metadata, dan server Google IAM. Harus > 0 dan default-nya adalah 30 detik jika tidak ditetapkan. |
--service_control_network_fail_open
|
Jika terjadi kegagalan jaringan saat terhubung ke kontrol layanan Google, permintaan akan diizinkan jika tanda ini aktif. Setelan defaultnya adalah aktif. |
--service_control_check_timeout_ms
|
Tetapkan waktu tunggu dalam milidetik untuk permintaan Pemeriksaan kontrol layanan. Harus > 0 dan defaultnya adalah 1000 jika tidak ditetapkan. |
--service_control_report_timeout_ms
|
Menetapkan waktu tunggu dalam milidetik untuk permintaan Laporan kontrol layanan. Harus > 0 dan defaultnya adalah 1000 jika tidak ditetapkan. |
--service_control_quota_timeout_ms
|
Tetapkan waktu tunggu dalam milidetik untuk permintaan Kuota kontrol layanan. Harus > 0 dan defaultnya adalah 1000 jika tidak ditetapkan. |
--service_control_check_retries
|
Menetapkan waktu percobaan ulang untuk permintaan Pemeriksaan kontrol layanan. Harus >= 0 dan defaultnya adalah 3 jika tidak ditetapkan |
--service_control_report_retries
|
Menetapkan waktu percobaan ulang untuk permintaan Laporan kontrol layanan. Harus >= 0 dan defaultnya adalah 5 jika tidak ditetapkan |
--service_control_quota_retries
|
Menetapkan waktu percobaan ulang untuk permintaan Kuota kontrol layanan. Harus >= 0 dan defaultnya adalah 1 jika tidak ditetapkan |
--backend_retry_ons
|
Kondisi saat ESPv2 mencoba lagi di backend. Satu atau beberapa kondisi Lihat link berikut untuk mengetahui kondisi yang diterima: |
--backend_retry_num
|
Jumlah percobaan ulang yang diizinkan. Harus >= 0 dan defaultnya adalah 1. |
Transcoding gRPC
Gunakan flag ini untuk mengonfigurasi ESPv2 untuk transcoding HTTP/JSON ke gRPC.
Flag | Deskripsi |
---|---|
--transcoding_always_print_primitive_fields
|
Menentukan apakah akan mencetak kolom primitif untuk transcoding grpc-json. Secara default, kolom primitif dengan nilai default akan dihilangkan dalam output JSON. Misalnya, kolom int32 yang ditetapkan ke 0 akan dihilangkan. Menetapkan tanda ini ke true akan mengganti perilaku default dan mencetak kolom primitif, terlepas dari nilainya. Nilai defaultnya adalah false. |
--transcoding_always_print_enums_as_ints
|
Menentukan apakah akan mencetak enum sebagai int untuk transcoding grpc-json. Secara default, keduanya dirender sebagai string. Nilai defaultnya adalah false. |
--transcoding_stream_newline_delimited
|
Jika benar, gunakan pemisah baris baru untuk memisahkan pesan streaming respons. Jika salah, semua pesan streaming respons akan ditranskode menjadi array JSON. |
--transcoding_case_insensitive_enum_parsing
|
Biasanya, nilai enum proto harus dalam huruf besar saat digunakan dalam JSON. Tetapkan tanda ini ke benar jika permintaan JSON Anda menggunakan nilai enum non-huruf besar. |
--transcoding_preserve_proto_field_names
|
Menentukan apakah akan mempertahankan nama kolom proto untuk transcoding grpc-json. Secara default, protobuf akan membuat nama kolom JSON menggunakan opsi json_name, atau camel case kecil, dalam urutan tersebut. Menyetel tanda ini akan mempertahankan nama kolom asli. Nilai defaultnya adalah false. |
--transcoding_ignore_query_parameters
|
Daftar parameter kueri yang dipisahkan koma yang akan diabaikan untuk pemetaan metode transcoding dalam transcoding grpc-json. Secara default, filter transcoder tidak akan mentranskode permintaan dengan parameter kueri yang tidak diketahui/tidak valid. |
--transcoding_ignore_unknown_query_parameters
|
Menentukan apakah akan mengabaikan parameter kueri yang tidak dapat dipetakan ke
kolom protobuf yang sesuai dalam transcoding grpc-json. Gunakan ini jika Anda tidak dapat mengontrol parameter kueri dan tidak mengetahuinya sebelumnya.
Jika tidak, gunakan |
--transcoding_query_parameters_disable_unescape_plus
|
Secara default, tanda plus |
Perubahan Permintaan dan Respons
Gunakan flag ini untuk mengonfigurasi ESPv2 guna mengubah permintaan dan respons secara sebagian.
Flag | Deskripsi |
---|---|
--add_request_header
|
Tambahkan header HTTP ke permintaan sebelum mengirimkannya ke backend upstream. Jika header sudah ada dalam permintaan, nilainya akan diganti dengan header baru. Fitur ini mendukung variabel khusus Envoy.
Argumen ini dapat diulang beberapa kali untuk menentukan beberapa header.
Misalnya: |
--append_request_header
|
Tambahkan header HTTP ke permintaan sebelum mengirimkannya ke backend upstream. Jika header sudah ada dalam permintaan, nilai baru akan ditambahkan. Fitur ini mendukung variabel khusus Envoy.
Argumen ini dapat diulang beberapa kali untuk menentukan beberapa header.
Misalnya: |
--add_response_header
|
Tambahkan header HTTP ke respons sebelum mengirimkannya ke klien downstream. Jika header sudah ada dalam respons, header tersebut akan diganti dengan header baru. Fitur ini mendukung variabel khusus Envoy.
Argumen ini dapat diulang beberapa kali untuk menentukan beberapa header.
Misalnya: |
--append_response_header
|
Tambahkan header HTTP ke respons sebelum mengirimkannya ke klien downstream. Jika header sudah ada dalam respons, header baru akan ditambahkan. Fitur ini mendukung variabel khusus Envoy.
Argumen ini dapat diulang beberapa kali untuk menentukan beberapa header.
Misalnya: |
Opsi Keamanan
Gunakan flag ini untuk lebih menyaring permintaan yang diizinkan ESPv2.
Flag | Deskripsi |
---|---|
--underscores_in_headers
|
Mengizinkan nama header yang berisi garis bawah untuk diteruskan. Nilai defaultnya adalah false.
Karakter garis bawah diizinkan dalam nama header berdasarkan
RFC-7230.
Namun, perilaku ini diterapkan sebagai langkah keamanan karena
beberapa sistem memperlakukan |
--envoy_connection_buffer_limit_bytes
|
Konfigurasikan jumlah maksimum data yang di-buffer untuk setiap isi permintaan/respons, dalam byte. Jika tidak ditetapkan, default akan ditentukan oleh Envoy. Lihat Konfigurasi pemroses Envoy. |
--disable_normalize_path
|
Nonaktifkan normalisasi header HTTP
Tabel berikut memberikan contoh permintaan
----------------------------------------------------------------- | Request Path | Without Normalization | With Normalization | ----------------------------------------------------------------- | /hello/../world | Rejected | /world | | /%4A | /%4A | /J | | /%4a | /%4a | /J | ----------------------------------------------------------------- Secara default, ESPv2 akan menormalisasi jalur. Nonaktifkan fitur ini hanya jika traffic Anda terpengaruh oleh perilaku tersebut.
Catatan: Sesuai dengan RFC 3986, opsi ini tidak menghapus escape karakter garis miring yang dienkode persen. Lihat flag Catatan: Normalisasi huruf besar/kecil dari RFC 3986 tidak didukung, meskipun opsi ini diaktifkan. Untuk mengetahui detail selengkapnya, lihat Memahami Templating Jalur. |
--disable_merge_slashes_in_path
|
Menonaktifkan penggabungan garis miring yang berdekatan di header HTTP
Tabel berikut memberikan contoh permintaan
----------------------------------------------------------------- | Request Path | Without Normalization | With Normalization | ----------------------------------------------------------------- | /hello//world | Rejected | /hello/world | | /hello/// | Rejected | /hello | ----------------------------------------------------------------- Secara default, ESPv2 akan menggabungkan garis miring. Nonaktifkan fitur hanya jika traffic Anda terpengaruh oleh perilaku tersebut. Untuk mengetahui detail selengkapnya, lihat Memahami Templating Jalur. |
--disallow_escaped_slashes_in_path
|
Tidak mengizinkan permintaan dengan karakter garis miring yang di-escape dan dienkode persen:
Jika diaktifkan, perilakunya bergantung pada protokol yang digunakan:
Opsi ini tidak mematuhi RFC 3986, sehingga dinonaktifkan secara default. Jika backend Anda tidak mematuhi RFC 3986 dan meng-escape garis miring, Anda harus mengaktifkan opsi ini di ESPv2. Tindakan ini akan mencegah serangan kebingungan jalur yang menyebabkan persyaratan keamanan tidak diterapkan. Untuk mengetahui detail selengkapnya, lihat Memahami Templating Jalur. |
Autentikasi JWT
Gunakan flag ini untuk mengonfigurasi ESPv2 guna mengambil Jwks jarak jauh dengan percobaan ulang.
Flag | Deskripsi |
---|---|
--jwks_fetch_num_retries
|
Tentukan jumlah percobaan ulang dalam kebijakan percobaan ulang pengambilan JWKS jarak jauh. Defaultnya adalah 0, tidak mencoba lagi. |
--jwks_fetch_retry_back_off_base_interval_ms
|
Tentukan interval dasar backoff eksponensial percobaan ulang pengambilan JWKS, dalam milidetik. Jika tidak ditetapkan, defaultnya adalah 200 mdtk. |
--jwks_fetch_retry_back_off_max_interval_ms
|
Menentukan interval maksimum backoff eksponensial percobaan ulang pengambilan JWKS, dalam milidetik. Jika tidak ditetapkan, defaultnya adalah 32 detik. |
--jwks_cache_duration_in_s
|
Tentukan durasi cache kunci publik JWT dalam detik. Jika tidak ditetapkan, defaultnya adalah 5 menit. |
--jwks_async_fetch_fast_listener
|
Hanya berlaku jika flag |
--jwt_cache_size
|
Tentukan jumlah token JWT unik sebagai ukuran cache JWT maksimum. Cache hanya menyimpan token terverifikasi. Jika 0, cache JWT dinonaktifkan. Flag ini membatasi penggunaan memori untuk cache JWT. Memori yang digunakan cache kira-kira (ukuran token + 64 byte) per token. Jika tidak ditentukan, jumlah defaultnya adalah 100.000. |
--disable_jwt_audience_service_name_check
|
Biasanya, kolom |
Langkah selanjutnya
Pelajari: