Alibaba Cloud Service Mesh (ASM) menyediakan Custom Resource Definition (CRD) dengan kind diatur ke IstioGateway dan apiVersion diatur ke istio.alibabacloud.com/v1beta1. ASM juga menyediakan controller yang sesuai. Dengan memantau perubahan pada resource CRD ini, controller tersebut menyinkronkan layanan Kubernetes, Deployment, ServiceAccount, dan resource terkait lainnya di dalam kluster. Topik ini menjelaskan contoh konfigurasi dan definisi bidang untuk CRD gerbang ASM.
Contoh konfigurasi
Prasyarat
Buat semua gerbang ASM baru di namespace istio-system untuk memastikan gerbang tersebut dapat mengakses informasi konfigurasi yang diperlukan. Di Istio 1.6 dan versi setelahnya, men-deploy gerbang di namespace lain mencegahnya mengakses konfigurasi yang diperlukan, sehingga menyebabkan gerbang ASM gagal dimulai.
Contoh 1: Mengelola ingress gateway menggunakan API Kubernetes
-
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Ingress Gateway, klik Create from YAML.
Pada halaman Create, masukkan Name untuk gerbang, pilih Namespaces sebagai istio-system, konfigurasikan YAML berikut, lalu klik Create.
Untuk detail setiap bidang, lihat Referensi bidang CRD.
CatatanJika Anda ingin mengelola ingress gateway menggunakan client Kubernetes, lihat Implementasi struktur Go gerbang.
Lihat informasi layanan ingress gateway.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di bagian atas halaman Services, pilih istio-system dari daftar drop-down Namespace.
Di daftar layanan, klik nama layanan target Anda untuk melihat informasi ingress gateway-nya.
Lihat informasi pod ingress gateway.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di bagian atas halaman Pods, pilih istio-system dari daftar drop-down Namespace.
Di daftar pod, klik nama pod target Anda untuk melihat informasi ingress gateway-nya.
Contoh 2: Mengelola egress gateway menggunakan API Kubernetes
ASM menyediakan layanan egress gateway yang menawarkan titik keluar traffic terpadu bagi aplikasi dalam mesh.
-
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
-
Pada halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
Pada halaman Egress Gateway, klik Create from YAML.
Pada halaman Create, masukkan Name untuk egress gateway, pilih Namespaces sebagai istio-system, konfigurasikan YAML berikut, lalu klik Create.
Untuk detail setiap bidang, lihat Referensi bidang CRD.
Lihat informasi layanan egress gateway.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Pada halaman Services, pilih istio-system dari daftar drop-down Namespace.
Di daftar layanan, klik nama layanan target Anda untuk melihat informasi egress gateway-nya.
Lihat informasi pod egress gateway.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Pada halaman Pods, pilih istio-system dari daftar drop-down Namespace.
Di daftar pod, klik nama pod target Anda untuk melihat informasi egress gateway-nya.
Referensi bidang CRD
Bidang | Deskripsi | Default |
metadata.name | Nama. Nama Kubernetes Service dan Deployment yang dihasilkan adalah istio-{nilai ini}. | Tidak ada |
metadata.namespace | Namespace tempat Kubernetes Service dan Deployment yang dihasilkan berada. Penting Untuk menjaga kompatibilitas dengan Istio 1.6 dan versi setelahnya, namespace ini harus istio-system. | istio-system |
clusterIds | Tipe array. ID kluster tempat gerbang akan dideploy. Kluster-kluster ini termasuk dalam instans mesh saat ini. | Tidak ada |
env | Tipe array. Variabel lingkungan untuk pod gerbang. | Tidak ada |
externalTrafficPolicy | Menentukan apakah traffic eksternal harus diarahkan ke endpoint lokal node atau seluruh kluster. Nilai yang valid adalah Cluster atau Local. Catatan Bidang ini hanya berlaku untuk ingress gateway. | Cluster |
ports | Tipe array. Daftar port dan protokol yang didefinisikan untuk pod gerbang. Contoh:
Catatan Pada versi sebelum 1.9.7.107, bidang protocol tidak dinyatakan secara eksplisit. Anda harus mendeklarasikannya secara seragam sebagai TCP. | Tidak ada |
gatewayType | Tipe gerbang. Nilai yang valid adalah ingress atau egress.
| ingress |
replicaCount | Jumlah replika. | 1 |
configVolumes | Volume ConfigMap yang dipasang ke pod gerbang. Contoh: | Tidak ada |
resources | Konfigurasi resource untuk pod gerbang. |
|
secretVolumes | Volume rahasia yang dipasang ke pod gerbang. Contoh: | Tidak ada |
serviceType | Tipe layanan untuk gerbang. Nilai yang valid adalah LoadBalancer, NodePort, atau ClusterIP. Gerbang egress biasanya diatur ke ClusterIP. Penting Jika kluster bidang data Anda adalah kluster terdaftar dan Anda mengatur bidang ini ke LoadBalancer, pastikan kluster tersebut mendukung layanan tipe LoadBalancer untuk menghindari kegagalan pembuatan gerbang ASM. | LoadBalancer |
loadBalancerClass | Menentukan loadBalancerClass untuk layanan gerbang. Bidang ini hanya berlaku ketika serviceType diatur ke LoadBalancer. Bidang ini didukung mulai dari versi ASM 1.18. Untuk informasi lebih lanjut, lihat Gunakan Network Load Balancer (NLB) dengan gerbang ingress ASM. | Tidak ada |
serviceAnnotations | Anotasi untuk layanan gerbang. Contoh: Catatan Bidang ini hanya berlaku untuk gerbang dengan serviceType diatur ke LoadBalancer. Gerbang egress biasanya tidak menggunakan bidang ini. | Tidak ada |
serviceLabels | Label untuk layanan gerbang. | Tidak ada |
podLabels | Label untuk pod gerbang. | Tidak ada |
podAnnotations | Anotasi untuk pod gerbang. | Tidak ada |
rollingMaxSurge | Jumlah maksimum pod yang dapat melebihi jumlah yang diinginkan selama pembaruan bergulir. Nilai ini dapat berupa angka absolut atau persentase. | "100%" |
rollingMaxUnavailable | Jumlah maksimum pod yang tidak tersedia selama pembaruan bergulir. Nilai ini dapat berupa angka absolut atau persentase. | "25%" |
overrides | Saat clusterIds menentukan dua atau lebih kluster, Anda dapat mendefinisikan konfigurasi spesifik kluster yang berbeda dari parameter umum di atas. Nilainya bertipe map. Catatan
| Tidak ada |
kernel.enabled | Apakah parameter kernel kustom diaktifkan? | false |
kernel.parameters | Pengaturan parameter kernel. Parameter kernel berikut saat ini didukung:
Catatan Bergantung pada versi kernel host, beberapa parameter kernel mungkin tidak didukung. Jika hal ini terjadi, pod mesh mungkin melaporkan error. Gunakan perintah Semua nilai parameter kernel harus berupa string. Karena sintaksis YAML menguraikan angka biasa sebagai tipe numerik, bungkus nilai Anda dengan tanda kutip ganda (""), misalnya: net.core.somaxconn: "65535". | Tidak ada |
compression.enabled | Mengaktifkan kemampuan kompresi untuk ingress gateway. Catatan Bidang yang terkait dengan compression hanya berlaku untuk ingress gateway. | false |
compression.content_type | Daftar ContentType yang dikompresi. Contoh:
| Tidak ada |
compression.disable_on_etag_header |
| false |
compression.min_content_length | Memicu kompresi saat ContentLength lebih besar dari atau sama dengan nilai ini. | 30 |
compression.remove_accept_encoding_header |
| false |
compression.gzip | Hanya kompresi gzip yang saat ini didukung. Untuk mengaktifkan kompresi, Anda harus menyertakan bidang ini. Bahkan jika semua parameter menggunakan nilai default, sertakan struktur kosong, misalnya: | Tidak ada |
compression.gzip.memory_level | Tingkat penggunaan memori untuk internal zlib. Nilai yang valid adalah 1–9. Nilai yang lebih tinggi menggunakan lebih banyak memori tetapi memberikan kecepatan kompresi lebih cepat dan rasio kompresi lebih baik. | 5 |
compression.gzip.compression_level | Tingkat kompresi untuk zlib. Nilai yang valid:
Catatan BEST_COMPRESSION memberikan kualitas kompresi tertinggi. BEST_SPEED memberikan kecepatan kompresi tercepat. Secara spesifik:
| DEFAULT_COMPRESSION |
compression.gzip.compression_strategy | Strategi kompresi untuk zlib. Nilai yang valid:
Catatan DEFAULT_STRATEGY Strategi kompresi default menggunakan perilaku default dasar dan menghasilkan hasil yang memuaskan dalam sebagian besar kasus. FILTERED Memprioritaskan algoritma kompresi lapisan filter untuk skenario dengan data yang sebagian besar repetitif. Menawarkan rasio kompresi tinggi untuk teks dan data yang dihasilkan secara artifisial. HUFFMAN_ONLY Hanya menggunakan pengkodean Huffman tanpa algoritma kompresi lainnya. Biasanya digunakan untuk data statis yang membutuhkan dekompresi cepat. RLE Menggunakan pengkodean run-length, yang secara efisien mengompresi urutan data identik, seperti bitmap. FIXED Menggunakan pohon pengkodean yang telah ditentukan untuk pengkodean Huffman alih-alih menghasilkannya secara dinamis berdasarkan data input. Memungkinkan kompresi dan dekompresi cepat tetapi umumnya menghasilkan rasio kompresi lebih rendah. | DEFAULT_STRATEGY |
compression.gzip.window_bits | Ukuran jendela untuk zlib. Nilai yang valid adalah 9–15. | 12 |
compression.gzip.chunk_size | Ukuran buffer output untuk zlib. | 4096 |
hostNetwork | Jaringan host.
| false |
dnsPolicy | Kebijakan DNS. Untuk informasi lebih lanjut tentang dnsPolicy, lihat DNS for Services and Pods. | ClusterFirst |
cpu.targetAverageUtilization | Pemanfaatan CPU target saat HPA diaktifkan. Nilai yang valid adalah 1–100. Jika pemanfaatan melebihi nilai ini, replika bertambah. Jika turun di bawahnya, replika berkurang. | Tidak ada |
memory.targetAverageUtilization | Pemanfaatan memori target saat HPA diaktifkan. Nilai yang valid adalah 1–100. Jika pemanfaatan melebihi nilai ini, replika bertambah. Jika turun di bawahnya, replika berkurang. | Tidak ada |
maxReplicas | Jumlah maksimum replika yang disesuaikan oleh HPA. Harus berupa bilangan bulat positif. | Tidak ada |
minReplicas | Jumlah minimum replika yang disesuaikan oleh HPA. Harus berupa bilangan bulat positif dengan nilai minimum 1. | Tidak ada |
nodeSelector | Menentukan node tempat pod gerbang berjalan. Definisikan pasangan kunci-nilai kustom di bawah bidang ini. Contoh: | Tidak ada |
affinity | Menentukan node untuk pod gerbang menggunakan afinitas node. Untuk informasi lebih lanjut, lihat Affinity and anti-affinity. | Tidak ada |
tolerations | Digunakan bersama dengan taint node. Untuk informasi lebih lanjut, lihat Taints and tolerations. | Tidak ada |
Bidang yang memicu restart bergulir
Mengubah bidang-bidang berikut memicu restart bergulir gerbang. Lakukan dengan hati-hati.
env
ports (memicu restart di versi ASM sebelum 1.16; tidak ada restart di 1.16 dan setelahnya)
configVolumes
resources
secretVolumes
podLabels
podAnnotations
kernel.enabled
kernel.parameters
hostNetwork
dnsPolicy
nodeSelector (tergantung pada penjadwalan)
affinity (tergantung pada penjadwalan)
tolerations (tergantung pada penjadwalan)