ApigConfig adalah CRD yang disediakan oleh APIG Controller untuk mengelola siklus hidup instans gateway APIG, mengonfigurasi opsi listener Ingress, serta menentukan pengaturan global seperti kontrol akses IP, pengumpulan log, dan tracing.
Ikhtisar ApigConfig
Konfigurasi
ApigConfig adalah CRD yang disediakan oleh APIG Controller untuk mengelola siklus hidup dan konfigurasi global instans gateway APIG.
Setiap ApigConfig berkorespondensi dengan satu instans gateway APIG. Untuk menggunakan beberapa instans gateway APIG, Anda harus membuat beberapa resource ApigConfig.
Kecuali dalam skenario reuse, menghapus ApigConfig juga akan menghapus instans gateway APIG yang sesuai.
Untuk instans gateway APIG yang dibuat menggunakan CRD (ApigConfig), kelola konfigurasi bisnis seperti API, entri rute, dan sertifikat di dalam CRD tersebut. Anda dapat menggunakan Konsol APIG untuk operasi seperti scaling. Jangan mengubah konfigurasi bisnis instans yang dibuat melalui CRD di Konsol, karena sinkronisasi CRD dapat menimpa perubahan Anda dan menyebabkan konflik konfigurasi.
Berikut ini contoh konfigurasi ApigConfig lengkap.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
name: apig-ingress
common:
pay:
payType: POSTPAY
instance:
spec: apigw.small.x1
network:
vSwitches:
- "vsw-1"
- "vsw-2"
networkType: Internet
securityGroupType: enterprise
global:
tls:
enableHardwareAcceleration: true
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.2.XX.XX
monitor:
logging:
sls:
reuseProject: "xxx" # Biarkan kosong untuk menggunakan proyek default.
tracing:
openTelemetry:
sampleRate: "100"
ingress:
local:
ingressClass: apig
watchNamespace: "" # String kosong ("") menunjukkan resource Ingress di semua namespace.
|
Parameter |
Deskripsi |
Default |
|
|
Nama gateway. |
apig-ingress |
|
|
Metode penagihan. Hanya bayar sesuai penggunaan yang didukung dan menjadi nilai default jika tidak ditentukan. |
POSTPAY |
|
|
Tipe instans gateway. Nilai valid:
|
apigw.small.x1 |
|
|
vSwitch primary dan standby, dalam urutan tersebut. Tentukan satu atau dua vSwitch. Jika tidak ditentukan, vSwitch diwariskan dari node tempat pod APIG Controller berjalan. |
Tidak ada |
|
|
Aksesibilitas jaringan gateway. Nilai valid:
|
Internet |
|
|
Jenis grup keamanan. Nilai valid:
|
normal |
|
|
Menentukan apakah akan mengaktifkan akselerasi perangkat keras TLS. Fitur ini dapat meningkatkan performa traffic HTTPS secara signifikan. |
Diaktifkan |
|
|
Daftar putih IP global. |
Tidak dikonfigurasi |
|
|
Daftar hitam IP global. |
Tidak dikonfigurasi |
|
|
Menentukan apakah akan mengaktifkan pengumpulan log Simple Log Service (SLS). Untuk mengaktifkan fitur ini, berikan izin SLS yang diperlukan kepada APIG Controller. |
Nonaktif |
|
|
Proyek SLS untuk menyimpan log akses. Nilai valid:
|
Kosong |
|
|
Laju sampel untuk Tracing Analysis (x-trace). |
0 |
|
|
Mengaktifkan atau menonaktifkan tracing OpenTelemetry. |
Nonaktif secara default. Saling eksklusif dengan opsi tracing |
|
|
Laju sampel untuk tracing OpenTelemetry. |
100 |
|
|
Menentukan resource Ingress mana yang diproses oleh instans gateway APIG, berdasarkan IngressClass-nya. Nilai valid:
Catatan
Pengaturan ini memiliki prioritas lebih rendah daripada asosiasi ApigConfig melalui IngressClass. |
Tidak dikonfigurasi |
|
|
Namespace tempat gateway memantau resource Ingress. Nilai valid:
|
Kosong |
Status
Setelah membuat resource ApigConfig, jalankan perintah kubectl get ApigConfig untuk memeriksa statusnya. Resource tersebut melewati status berikut: Pending > Running > Listening.
-
Pending: Instans gateway APIG sedang dibuat. Proses ini memakan waktu sekitar 3 menit. -
Running: Instans gateway APIG telah dibuat dan berjalan. -
Listening: Instans gateway APIG berjalan dan mendengarkan resource Ingress di kluster. -
Failed: Instans gateway APIG berada dalam status tidak valid. PeriksaMessagedi bidangStatusuntuk mengetahui penyebabnya.
Tag
Instans gateway APIG yang dibuat atau digunakan kembali melalui ApigConfig diberi tag sumber daya. Anda dapat melihat informasi tag di bagian Informasi Dasar pada Konsol APIG.
Jangan mengedit tag ini di Konsol APIG, karena tindakan tersebut dapat mengganggu instans gateway Anda.
|
Tag |
Deskripsi |
|
ack.aliyun.com |
Menunjukkan bahwa gateway APIG mengelola traffic ingress kluster Container Service for Kubernetes (ACK). |
|
ingress.k8s.alibaba/ApigConfig |
Mengasosiasikan instans gateway APIG dengan ApigConfig. |
|
kubernetes.reused.by.user |
Menunjukkan apakah instans gateway APIG digunakan kembali. Instans yang digunakan kembali tidak dihapus saat ApigConfig terkait dihapus. |
Buat instans gateway APIG
-
Konfigurasi ApigConfig.
Contoh berikut membuat instans gateway APIG bernama apig-ingress dengan tipe instans apigw.small.x1. Ubah pengaturan ApigConfig lain sesuai kebutuhan.
apiVersion: apig.alibabacloud.com/v1alpha1 kind: ApigConfig metadata: name: apig-ingress spec: name: apig-ingress common: instance: spec: apigw.small.x1 -
Di kluster Container Service for Kubernetes (ACK) Anda, buat IngressClass dan asosiasikan dengan ApigConfig menggunakan spec.parameters. Ini mendeklarasikan prosesor Ingress di kluster.
Setelah dikonfigurasi, instans gateway APIG yang terhubung akan memproses setiap Ingress yang terkait dengan IngressClass ini.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: apig spec: controller: apig.alibabacloud.com/ingress parameters: apiGroup: apig.alibabacloud.com kind: ApigConfig name: apig-ingress
Gunakan kembali instans gateway APIG yang ada
Untuk menggunakan kembali instans gateway APIG yang sudah ada, tentukan ID-nya (misalnya, gw-xxx) di bidang spec.id ApigConfig Anda. Gunakan spec.override untuk mengontrol apakah pengaturan ApigConfig akan menimpa konfigurasi instans yang sudah ada.
Contoh berikut menggunakan kembali instans gateway APIG yang sudah ada. ApigConfig mengasosiasikan instans tersebut dengan kluster dan mengonfigurasinya untuk memproses resource Ingress dengan IngressClass apig.
-
Dalam konfigurasi berikut,
spec.overridediatur kefalse, artinya opsi listener Ingress dan konfigurasi global gateway APIG yang sudah ada tidak ditimpa. Jika instans gateway yang sudah ada belum diasosiasikan dengan kluster kontainer, instans tersebut secara otomatis diasosiasikan dengan kluster dan opsi listener Ingress-nya dikonfigurasi untuk mendengarkan resource Ingress di kluster kontainer tempatingressClassbernilaispec.ingress.local.ingressClass(dalam hal ini,apig). Jika instans gateway sudah diasosiasikan dengan kluster kontainer, opsi listener Ingress yang sudah ada tidak ditimpa. -
Untuk menimpa opsi listener Ingress dan konfigurasi global gateway APIG yang sudah ada, pastikan parameter gateway dalam ApigConfig (opsi listener Ingress, akselerasi perangkat keras, daftar hitam dan putih alamat IP global, serta observabilitas) dikonfigurasi dengan benar sebelum mengaktifkan
spec.override. Jika konfigurasi ini tidak ditentukan dalam ApigConfig, mengaktifkanspec.overrideakan menimpa parameter gateway asli (opsi listener Ingress, akselerasi perangkat keras, daftar hitam dan putih alamat IP global, serta observabilitas), yang dapat memengaruhi traffic.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: reuse
spec:
id: gw-xxxx
override: false
ingress:
local:
ingressClass: apig
|
Parameter |
Deskripsi |
|
|
ID instans gateway APIG target yang akan digunakan kembali. ID harus diawali dengan |
|
|
Menentukan apakah akan menimpa konfigurasi instans gateway APIG yang digunakan kembali berdasarkan pengaturan ApigConfig.
|
Hapus instans gateway APIG
Menghapus ApigConfig juga akan menghapus instans gateway APIG yang sesuai, kecuali untuk instans yang digunakan kembali.
Tabel berikut menjelaskan kebijakan penghapusan.
|
Metode penagihan |
Dibuat oleh APIG Controller |
Gateway konsol yang digunakan kembali |
|
pay-as-you-go |
Menghapus ApigConfig secara otomatis menghapus instans gateway. |
Menghapus ApigConfig tetap menyimpan instans gateway. |
Untuk menghapus ApigConfig, jalankan perintah berikut:
kubectl delete ApigConfig your-config-name
Konfigurasi kontrol akses IP global
Konfigurasi daftar putih IP
Konfigurasi daftar putih IP global untuk hanya mengizinkan akses ke APIG Ingress Anda dari IP sumber tertentu.
Contoh berikut hanya mengizinkan akses dari IP sumber 1.1.XX.XX dan Blok CIDR 2.0.XX.XX/8.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
...
global:
ipAccessControl:
whitelist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...
Konfigurasi daftar hitam IP
Konfigurasi daftar hitam IP tingkat instans global untuk menolak akses dari IP sumber tertentu.
Contoh berikut menolak permintaan dari IP sumber 1.1.XX.XX dan Blok CIDR 2.0.XX.XX/8.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
...
global:
ipAccessControl:
blacklist:
- 1.1.XX.XX
- 2.0.XX.XX/8
...
Aktifkan logging SLS
Sebelum mengaktifkan pengumpulan log, pastikan APIG Controller memiliki izin SLS yang diperlukan.
-
Untuk kluster ACK yang dikelola, lihat Berikan izin kepada APIG Controller.
Contoh berikut mengonfigurasi gateway untuk mengirimkan log akses ke proyek SLS bernama demo.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
...
monitor:
logging:
sls:
# Konfigurasi reuseProject untuk mengaktifkan Simple Log Service. Jika ingin menggunakan proyek default, biarkan bidang ini kosong.
reuseProject: "demo"
...
Aktifkan tracing OpenTelemetry
Konfigurasi tracing OpenTelemetry untuk gateway guna membangun sistem tracing end-to-end untuk mendiagnosis masalah produksi.
Contoh berikut mengonfigurasi tracing OpenTelemetry dengan laju sampel (sampleRate) 100%.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
...
monitor:
tracing:
openTelemetry:
sampleRate: "100"
...
Konfigurasi tambahan
Instans gateway APIG Ingress mendukung konfigurasi tambahan berikut:
Untuk menerapkan pengaturan ini, buka Konsol Cloud-native API Gateway. Di halaman , pilih instans gateway, lalu klik Parameter Settings di panel navigasi sebelah kiri.
|
Parameter |
Type |
Deskripsi |
|
|
Bool |
Jika diaktifkan, ID permintaan dihasilkan di header permintaan untuk keperluan tracing. |
|
|
Bool |
Mengaktifkan kompresi Gzip untuk permintaan dan respons, mengurangi traffic gateway tetapi meningkatkan konsumsi CPU. |
|
|
Bool |
Jika diaktifkan, menggabungkan karakter |
|
|
Int |
Ukuran buffer koneksi tunggal, yang memengaruhi throughput dan penggunaan memori gateway. Rentang valid: [0, 2147483647]. |
|
|
Int |
Jumlah proxy tepercaya di depan gateway. Ini memengaruhi apakah gateway menggunakan header permintaan yang ditambahkan oleh proxy, seperti Rentang nilai: [0, 10]. Satuan: item. |
|
|
Int |
Jumlah maksimum stream konkuren pada koneksi tunggal ketika klien menggunakan HTTP/2. Rentang nilai: [0, 2147483647]. Satuan: byte. |
|
|
Int |
Ukuran jendela awal Rentang nilai: [65535, 2147483647]. Satuan: byte. |
|
|
Int |
Ukuran jendela awal tingkat koneksi HTTP/2 yang dinegosiasikan antara gateway dan klien. Rentang nilai: [65535, 2147483647]. Satuan: byte. |
|
|
Bool |
Menentukan apakah akan mendukung protokol HTTP/3. HTTP/3 tidak kompatibel dengan akselerasi perangkat keras TLS. Anda harus menonaktifkan akselerasi perangkat keras sebelum mengaktifkan HTTP/3. |
|
|
String |
Menentukan aksi untuk permintaan yang path URI-nya mengandung karakter ter-escape seperti %2F, %2f, %5C, atau %5c. Nilai default adalah Nilai valid: |
|
|
List<String> |
Algoritma kompresi yang digunakan setelah kompresi diaktifkan. Jika opsi |
|
|
Bool |
Menentukan apakah akan mengaktifkan protokol PROXY. Saat traffic ingress dirutekan melalui Network Load Balancer (NLB), aktifkan opsi ini untuk mengambil alamat IP klien asli. Mengaktifkannya tidak memengaruhi permintaan non-PROXY protocol. |
|
|
Bool |
Untuk layanan otorisasi yang dikelola sendiri. Jika diaktifkan, perubahan aturan otorisasi tidak mengganggu koneksi aktif, yang cocok untuk skenario WebSocket dan real-time lainnya. |
|
|
Int |
Mengatur nilai header respons Rentang nilai: [0, 600]. Satuan: detik. |
|
|
Int |
Periode tenggang untuk koneksi WebSocket aktif saat gateway menutup koneksi, misalnya selama peningkatan atau restart. Rentang nilai: [20, 900]. Satuan: detik. |
|
EnableGzipHardwareAccelerate |
Bool |
Mengaktifkan kompresi Gzip berakselerasi perangkat keras. Dibandingkan dengan Gzip perangkat lunak, ini memberikan performa lebih tinggi dengan konsumsi CPU lebih rendah. Opsi ini tidak tersedia di wilayah yang tidak didukung atau jika akselerasi perangkat keras Gzip tidak ditentukan saat pembelian. Saat diaktifkan, pengaturan |
|
EnableK8sSourceWorkloadFilter |
Bool |
Memfilter resource Ingress, Service, dan Pod berdasarkan label tertentu saat Anda menambahkan sumber layanan. Pemfilteran invers juga didukung. |
FAQ
Apa yang harus saya lakukan jika titik akhir tetap kosong setelah saya menghapus dan membuat ulang APIG Ingress?
Jika Anda menghapus Ingress dan membuatnya kembali menggunakan file YAML yang sama, tetapi titik akhir tetap kosong setelah menunggu beberapa saat, biasanya opsi listener Ingress tidak dikonfigurasi di ApigConfig. Akibatnya, instans gateway APIG tidak memantau resource Ingress tersebut. Pecahkan masalah ini sebagai berikut:
-
Periksa apakah
spec.ingress.local.ingressClassdikonfigurasi di ApigConfig. Jika bidang ini tidak dikonfigurasi, instans gateway APIG tidak memantau resource Ingress apa pun, dan titik akhir tidak dipulihkan setelah Anda membuat ulang Ingress. Atur bidang ini keapig. -
Pastikan IngressClass dari Ingress sesuai dengan nilai
ingress.local.ingressClassdi ApigConfig. Anda dapat menentukan IngressClass Ingress menggunakan anotasikubernetes.io/ingress.class: apigatau bidangspec.ingressClassName. -
Jalankan perintah
kubectl get apigconfiguntuk memeriksa apakah status ApigConfig adalahListening. -
Buat ulang Ingress setelah konfigurasi di atas benar. Titik akhir kemudian akan dipulihkan secara otomatis. Anda tidak perlu membuat ulang instans gateway APIG.