Dalam mode ambient Service Mesh (ASM), komponen Ztunnel memuat konfigurasi waktu prosesnya dari ConfigMap ztunnel-config di namespace istio-system. Bidang config.yaml dalam ConfigMap ini menentukan pengaturan untuk kebijakan egress, observabilitas L7, dan konfigurasi lainnya. Ztunnel menggunakan mekanisme pemantauan file untuk mendeteksi perubahan konfigurasi dan menerapkannya secara otomatis tanpa perlu restart. Dokumen ini menyediakan contoh YAML dan deskripsi bidang untuk ztunnel-config.
Konfigurasi
ConfigMap ztunnel-config memiliki struktur berikut:
apiVersion: v1
kind: ConfigMap
metadata:
name: ztunnel-config
namespace: istio-system
data:
ztunnel-config.yaml: |
l7Config:
enabled: false
egressPolicies: [ ]
Bidang | Tipe | Wajib | Deskripsi |
|
| Tidak | Konfigurasi untuk observabilitas L7. Jika tidak ditentukan, nilai default akan digunakan. |
|
| Tidak | Daftar aturan kebijakan egress untuk traffic egress ke layanan di luar kluster. Jika daftar kosong atau tidak ditentukan, semua traffic egress diizinkan secara default. |
Konfigurasi EgressPolicy hanya berlaku untuk layanan di luar kluster. Layanan yang terdaftar di dalam kluster, seperti sumber daya Service dan ServiceEntry, tidak terpengaruh.
Contoh konfigurasi
Contoh 1: Aktifkan log akses L7
Aktifkan pembuatan log akses L7. Ztunnel akan mengurai traffic HTTP dan TLS serta menghasilkan log akses.
l7Config:
enabled: trueContoh 2: Tolak akses ke Blok CIDR pribadi
Contoh ini tidak mengonfigurasi observabilitas L7. Contoh ini menggunakan kebijakan egress untuk menolak akses dari semua namespace ke Blok CIDR pribadi.
egressPolicies:
- matchCidrs:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
policy: DenyContoh 3: Aktifkan log akses L7 dan kontrol egress berlapis
Contoh ini mengaktifkan pembuatan log akses L7 dan kebijakan egress. Kebijakan ini mengizinkan passthrough untuk namespace tertentu, menolak akses ke layanan metadata pada port tertentu, dan menolak akses ke Blok CIDR pribadi.
l7Config:
enabled: true
egressPolicies:
# Izinkan passthrough untuk namespace egress-gateway agar aturan fallback tidak memblokir proxy egress itu sendiri.
- namespaces:
- egress-gateway
policy: Passthrough
# Tolak akses ke layanan metadata penyedia cloud pada port 80 dan 443.
- matchCidrs:
- 169.254.169.254/32
- fd00:ec2::254/128
matchPorts:
- 80
- 443
policy: Deny
# Tolak akses ke Blok CIDR pribadi.
- matchCidrs:
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- fc00::/7
policy: DenyDetail bidang
L7Config
Bidang | Tipe | Wajib | Deskripsi |
|
| Tidak | Menentukan apakah observabilitas traffic L7 diaktifkan. Nilai default-nya adalah |
Saat ini, observabilitas L7 hanya mendukung pembuatan log akses. Pengumpulan metrik tingkat permintaan dan pelacakan terdistribusi belum didukung.
Protokol yang didukung adalah HTTP dan TLS.
Fitur ini dapat menambahkan beban kinerja sekitar 5%. Evaluasi kebutuhan bisnis Anda sebelum mengaktifkannya.
Bidang HTTP tambahan
Saat observabilitas L7 diaktifkan, setiap transaksi permintaan/tanggapan HTTP menghasilkan entri log akses terpisah. Selain bidang dasar, entri tersebut mencakup bidang-bidang berikut:
Bidang | Deskripsi | Nilai contoh |
| Metode permintaan HTTP |
|
| Jalur permintaan |
|
| Versi protokol |
|
| Host permintaan |
|
| Kode status respons HTTP |
|
| Header permintaan |
|
| Ukuran badan permintaan dalam byte, per permintaan |
|
| Ukuran badan respons dalam byte, per permintaan |
|
| Waktu total untuk satu permintaan, dari saat dikirim hingga respons diterima |
|
Bidang TLS tambahan
Saat observabilitas L7 diaktifkan untuk traffic TLS (bukan HTTP over TLS), Ztunnel mengurai pesan jabat tangan ClientHello dan menambahkan bidang-bidang berikut ke entri log:
Bidang | Deskripsi | Nilai contoh |
| Nilai tetap |
|
| Indikasi Nama Server (SNI) dari pesan ClientHello |
|
| Protokol Application-Layer Protocol Negotiation (ALPN) pertama dari pesan ClientHello. Jika ALPN tidak ditentukan, nilainya adalah |
|
EgressPolicy
Setiap aturan EgressPolicy terdiri dari tiga kondisi pencocokan (namespaces, matchCidrs, dan matchPorts) dan aksi policy. Ztunnel mengevaluasi aturan dalam daftar secara berurutan dari atas ke bawah. Aturan pertama yang memenuhi semua kondisinya akan diterapkan.
Bidang | Tipe | Wajib | Deskripsi |
|
| Tidak | Daftar namespace client tempat aturan berlaku. Jika kosong, aturan berlaku untuk semua namespace. |
|
| Tidak | Daftar rentang alamat IP tujuan dalam format CIDR. Jika kosong, aturan berlaku untuk semua alamat IP tujuan. Untuk mengontrol traffic IPv4 dan IPv6, Anda harus mengonfigurasi rentang CIDR masing-masing secara terpisah. |
|
| Tidak | Daftar port tujuan. Jika kosong, aturan berlaku untuk semua port. |
|
| Ya | Aksi yang akan diambil. Nilai yang valid adalah:
|
EgressPolicyAction
Nilai berikut tersedia untuk bidang policy:
Nilai | Deskripsi |
| Meneruskan traffic langsung ke alamat IP tujuan melalui TCP, melewati proxy mesh. |
| Langsung menjatuhkan permintaan, sehingga tidak mencapai tujuan. |
Batasan konfigurasi
Ztunnel mengevaluasi aturan dalam
egressPoliciessecara berurutan. Ztunnel menerapkan aturan pertama yang memenuhi semua kondisinamespaces,matchCidrs, danmatchPorts-nya, lalu mengabaikan aturan berikutnya.Bidang
namespacesmencocokkan namespace klien (sumber permintaan), bukan namespace layanan tujuan.Bidang
matchCidrsmencocokkan alamat IP tujuan, bukan nama domain. Untuk mengontrol lalu lintas berdasarkan nama domain, Anda harus mendaftarkan layanan eksternal sebagaiServiceEntrydi mesh.Bidang
matchPortsmencocokkan port tujuan (port remote dari permintaan), bukan port sumber klien.Jika permintaan tidak cocok dengan aturan apa pun dalam
egressPolicies, aksi default-nya adalahPassthrough.Ztunnel secara otomatis memuat perubahan konfigurasi melalui mekanisme pemantauan file, tanpa perlu restart Pod Ztunnel. Jika format konfigurasi tidak valid, Ztunnel mempertahankan konfigurasi terakhir yang diketahui baik.