Service Mesh (ASM) menyediakan sumber daya API CustomResourceDefinition (CRD) dengan kind berupa IstioGateway dan apiVersion berupa istio.alibabacloud.com/v1beta1. Selain itu, ASM menyediakan pengontrol untuk mengelola sumber daya tersebut. Pengontrol ini memantau perubahan dalam CRD dan memperbarui Service, Deployment, serta ServiceAccount dari kluster Kubernetes tempat pengontrol berjalan. Topik ini menjelaskan contoh konfigurasi dan bidang CRD untuk gateway ASM.
Contoh konfigurasi
Prasyarat
Kluster Container Service for Kubernetes (ACK) telah ditambahkan ke instance ASM Anda. Untuk informasi lebih lanjut, lihat Tambahkan Kluster ke Instance ASM.
Gateway ASM harus diterapkan di namespace istio-system. Dengan cara ini, ketika Anda memulai gateway ASM, konfigurasi gateway ASM dapat diperoleh untuk memastikan startup yang berhasil. Jika versi Istio instance Anda adalah 1.6 atau lebih baru dan Anda menerapkan gateway ASM di namespace lain, gateway ASM tidak dapat dimulai karena kegagalan mendapatkan konfigurasi gateway.
Contoh 1: Buat dan kelola gateway masuk menggunakan Kubernetes API
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman Ingress Gateway, klik Create from YAML.
Di halaman Create, masukkan nama untuk gateway masuk di bidang Name, pilih istio-system dari daftar drop-down Namespace, konfigurasikan bidang berikut di file YAML, lalu klik Create.
Untuk informasi lebih lanjut tentang bidang CRD, lihat Bidang CRD.
CatatanJika Anda perlu menggunakan Go Client untuk Kubernetes untuk mengelola gateway masuk, lihat Struktur Go untuk Gateway ASM.
Lihat informasi layanan gateway masuk dengan melakukan langkah-langkah berikut:
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Di bagian atas halaman Services, pilih istio-system dari daftar drop-down Namespace.
Dalam daftar layanan, klik nama layanan gateway masuk yang diinginkan untuk melihat informasinya.
Lihat informasi pod gateway masuk.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Di bagian atas halaman Pods, pilih istio-system dari daftar drop-down Namespace.
Dalam daftar pod, temukan pod gateway masuk dan klik nama pod untuk melihat informasi pod.
Contoh 2: Buat dan kelola gateway keluar menggunakan Kubernetes API
ASM menyediakan layanan gateway keluar untuk merutekan semua trafik arah keluar di dalam mesh.
Masuk ke Konsol ASM. Di panel navigasi kiri, pilih .
Di halaman Mesh Management, klik nama instance ASM. Di panel navigasi kiri, pilih .
Di halaman Egress Gateway, klik Create from YAML.
Di halaman Create, masukkan nama untuk gateway keluar di bidang Name, pilih istio-system dari daftar drop-down Namespace, konfigurasikan bidang berikut di file YAML, lalu klik Create.
Untuk informasi lebih lanjut tentang bidang CRD, lihat Bidang CRD.
Lihat informasi layanan gateway keluar dengan melakukan langkah-langkah berikut:
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Di bagian atas halaman Services, pilih istio-system dari daftar drop-down Namespace.
Dalam daftar layanan, klik nama layanan gateway keluar yang diinginkan untuk melihat informasinya.
Lihat informasi pod gateway keluar.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih .
Di bagian atas halaman Pods, pilih istio-system dari daftar drop-down Namespace.
Dalam daftar pod, temukan pod gateway keluar dan klik nama pod untuk melihat informasi pod.
Bidang CRD
Bidang | Deskripsi | Nilai default |
metadata.name | Nama gateway ASM. Service dan Deployment Kubernetes yang dihasilkan bernama istio-{Nilai dari bidang metadata.name}. | Tidak ada |
metadata.namespace | Namespace tempat gateway ASM diterapkan. Service dan Deployment Kubernetes yang dihasilkan berada di namespace ini. Penting Untuk memastikan bahwa Service dan Deployment Kubernetes yang dihasilkan tersedia di Istio 1.6 dan yang lebih baru, namespace harus istio-system. | istio-system |
clusterIds | ID kluster tempat Anda ingin menerapkan gateway ASM. Nilainya adalah array. Kluster harus dikelola dalam instance ASM saat ini. | Tidak ada |
env | Variabel lingkungan pod gateway ASM. Nilainya adalah array. | Tidak ada |
externalTrafficPolicy | Menentukan apakah gateway merutekan trafik masuk ke node-lokal atau titik akhir di seluruh kluster. Nilai valid: Cluster atau Local. Catatan Bidang ini hanya tersedia untuk gateway masuk. | Cluster |
ports | Port dan protokol yang didefinisikan untuk pod gateway ASM. Nilainya adalah array. Contohnya,
Catatan Pada versi sebelum 1.9.7.107, bidang protocol harus diatur ke TCP. | Tidak ada |
gatewayType | Tipe gateway ASM. Nilai valid: ingress dan egress.
| ingress |
replicaCount | Jumlah replika pod. | 1 |
configVolumes | Informasi tentang volume ConfigMap yang dipasang ke pod gateway ASM. Contoh: | Tidak ada |
resources | Konfigurasi sumber daya pod gateway ASM. |
|
secretVolumes | Informasi tentang volume rahasia yang dipasang ke pod gateway ASM. Contoh: | Tidak ada |
serviceType | Tipe layanan gateway ASM. Nilai valid: LoadBalancer, NodePort, dan ClusterIP. Untuk gateway keluar, nilai bidang ini biasanya diatur ke ClusterIP. Penting Jika Anda menggunakan kluster terdaftar pada bidang data dan bidang ini diatur ke LoadBalancer, pastikan kluster mendukung Layanan LoadBalancer. Jika tidak, pembuatan gateway ASM mungkin gagal. | LoadBalancer |
loadBalancerClass | Kelas loadBalancer gateway ASM. Bidang ini valid hanya jika parameter serviceType diatur ke LoadBalancer. Bidang ini didukung oleh instance ASM versi 1.18 atau lebih baru. Untuk informasi lebih lanjut, lihat Asosiasikan instance NLB dengan gateway masuk. | Tidak ada |
serviceAnnotations | Anotasi gateway ASM. Contoh: Catatan Bidang ini hanya tersedia untuk gateway yang serviceType-nya adalah LoadBalancer. Untuk gateway keluar, bidang ini biasanya tidak dikonfigurasi. | Tidak ada |
serviceLabels | Label gateway ASM. | Tidak ada |
podLabels | Label pod gateway ASM. | Tidak ada |
podAnnotations | Anotasi pod gateway ASM. | Tidak ada |
rollingMaxSurge | Jumlah maksimum pod yang dijadwalkan di atas jumlah replika yang diharapkan selama pembaruan bergulir. Nilainya bisa berupa nilai absolut atau persentase. | "100%" |
rollingMaxUnavailable | Jumlah maksimum pod yang dapat tidak tersedia selama pembaruan bergulir. Nilainya bisa berupa nilai absolut atau persentase. | "25%" |
overrides | Mengonfigurasi pengaturan khusus untuk kluster tertentu. Bidang ini tersedia ketika bidang clusterIds menentukan dua kluster atau lebih. Anda dapat menggunakan bidang ini ketika ingin mengonfigurasi kluster tertentu dengan pengaturan yang berbeda dari pengaturan kluster sebelumnya. Nilainya adalah tipe MAP yang berisi pasangan key-value. Catatan
| Tidak ada |
kernel.enabled | Menentukan apakah akan mengaktifkan bidang kernel kustom. | false |
kernel.parameters | Bidang kernel. Bidang kernel berikut didukung:
Catatan Bidang kernel spesifik yang didukung oleh ASM mungkin menjadi tidak valid karena versi kernel host. Jika situasi ini terjadi, pod gateway ASM mungkin melaporkan kesalahan. Anda dapat menjalankan perintah Nilai semua bidang kernel harus dalam format string. YAML mengenali angka sebagai nilai numerik. Oleh karena itu, Anda harus mengapit setiap nilai dalam tanda kutip ganda ("). Contoh: net.core.somaxconn: "65535". | Tidak ada |
compression.enabled | Menentukan apakah akan mengaktifkan fitur kompresi untuk gateway masuk. Catatan Bidang terkait compression hanya tersedia untuk gateway masuk. | false |
compression.content_type | Jenis data yang akan dikompresi, yang ditunjukkan oleh header Content-Type. Contohnya:
| Tidak ada |
compression.disable_on_etag_header |
| false |
compression.min_content_length | Ambang batas di mana kompresi dipicu. Nilai bidang ini menunjukkan ukuran header Content-Length. | 30 |
compression.remove_accept_encoding_header |
| false |
compression.gzip | Format kompresi. Hanya format GZIP yang didukung. Jika Anda ingin mengaktifkan fitur kompresi, bidang ini diperlukan. Jika nilai default digunakan untuk semua bidang lainnya, Anda harus membiarkan bidang ini kosong. Contoh: | Tidak ada |
compression.gzip.memory_level | Tingkat penggunaan memori pustaka zlib. Nilai valid: 1 hingga 9. Nilai yang lebih besar untuk bidang ini menghasilkan penggunaan memori yang lebih tinggi tetapi kecepatan kompresi yang lebih tinggi dan kualitas kompresi yang lebih baik. | 5 |
compression.gzip.compression_level | Tingkat kompresi yang digunakan oleh pustaka zlib. Nilai valid:
Catatan BEST_COMPRESSION menunjukkan kualitas kompresi tertinggi. BEST_SPEED menunjukkan kecepatan kompresi tertinggi. Daftar berikut menjelaskan beberapa tingkat kompresi:
| DEFAULT_COMPRESSION |
compression.gzip.compression_strategy | Kebijakan kompresi yang digunakan oleh pustaka zlib. Nilai valid:
Catatan DEFAULT_STRATEGY Kebijakan kompresi ini adalah kebijakan kompresi default yang menggunakan perilaku default dasar dan dapat menghasilkan hasil kompresi yang memuaskan dalam sebagian besar kasus. FILTERED Kebijakan kompresi ini secara preferensial menggunakan algoritma kompresi penyaringan yang berlaku untuk sebagian besar skenario di mana data duplikat ada. Kebijakan kompresi ini dapat membantu mencapai rasio kompresi yang lebih tinggi untuk data teks dan data buatan manusia. HUFFMAN_ONLY Kebijakan kompresi ini hanya menggunakan pengkodean Huffman untuk kompresi. Tidak ada algoritma lain yang digunakan. Kebijakan kompresi ini umumnya digunakan untuk mengompresi data statis. Data terkompresi tersebut dapat didekompresi lebih cepat. RLE Algoritma Run Length Encoding (RLE) sangat efektif dalam mengompresi urutan data berulang, seperti data bitmap. FIXED Kebijakan kompresi ini menggunakan pohon pengkodean yang telah ditentukan untuk melakukan pengkodean Huffman daripada pohon pengkodean yang dibuat secara dinamis berdasarkan data tertentu. Ini dapat mencapai kompresi dan dekompresi kecepatan tinggi. Namun, rasio kompresinya rendah. | DEFAULT_STRATEGY |
compression.gzip.window_bits | Ukuran jendela pustaka zlib. Nilai valid: 9 hingga 15. | 12 |
compression.gzip.chunk_size | Ukuran buffer output pustaka zlib. | 4096 |
hostNetwork | Menentukan apakah pod gateway ASM diizinkan mengakses namespace jaringan host. Nilai valid:
| false |
dnsPolicy | Kebijakan Domain Name System (DNS) yang dikonfigurasikan untuk pod gateway ASM. Untuk informasi lebih lanjut tentang kebijakan DNS, lihat DNS untuk Layanan dan Pod. | ClusterFirst |
cpu.targetAverageUtilization | Penggunaan CPU yang diharapkan ketika HPA diaktifkan. Nilai valid: 1 hingga 100. Jika penggunaan memori melebihi nilai ini, jumlah replika pod meningkat. Jika penggunaan memori kurang dari nilai ini, jumlah replika pod berkurang. | Tidak ada |
memory.targetAverageUtilization | Penggunaan memori yang diharapkan ketika HPA diaktifkan. Nilai valid: 1 hingga 100. Jika penggunaan memori melebihi nilai ini, jumlah replika pod meningkat. Jika penggunaan memori kurang dari nilai ini, jumlah replika pod berkurang. | Tidak ada |
maxReplicas | Jumlah maksimum replika pod yang dapat diskalakan oleh fitur HPA untuk gateway ASM. Nilai bidang ini harus bilangan bulat positif. | Tidak ada |
minReplicas | Jumlah minimum replika pod yang dapat diskalakan oleh fitur HPA untuk gateway ASM. Nilainya adalah bilangan bulat positif. Nilai minimumnya adalah 1. | Tidak ada |
nodeSelector | Menentukan label node tempat pod gateway ASM berada. Anda dapat menyesuaikan key dan value. Contoh: | Tidak ada |
affinity | Anda dapat mengonfigurasi afinitas node untuk menjadwalkan pod gateway ASM ke node. Untuk informasi lebih lanjut, lihat Afinitas dan Anti-Afinitas. | Tidak ada |
tolerations | Anda dapat mengonfigurasi toleransi untuk pod gateway ASM untuk mentolerir noda pada node. Untuk informasi lebih lanjut, lihat Noda dan Toleransi. | Tidak ada |
Bidang yang perubahannya akan menyebabkan restart bergulir gateway ASM
Mengubah bidang berikut akan menyebabkan restart bergulir gateway ASM. Berhati-hatilah saat mengubah bidang ini.
env
ports (Jika versi instance ASM lebih awal dari 1.16, mengubah bidang ini akan menyebabkan gateway ASM restart secara bergulir. Jika versi instance ASM adalah 1.16 atau lebih baru, mengubah bidang ini tidak akan menyebabkan gateway ASM restart secara bergulir.)
configVolumes
resources
secretVolumes
podLabels
podAnnotations
kernel.enabled
kernel.parameters
hostNetwork
dnsPolicy
nodeSelector (tergantung penjadwalan)
affinity (tergantung penjadwalan)
tolerations (tergantung penjadwalan)