ApigConfig adalah Custom Resource Definition (CRD) yang disediakan oleh APIG Controller. Anda dapat menggunakannya untuk mengelola siklus hidup instans Gerbang APIG, mengonfigurasi opsi listener Ingress, menetapkan konfigurasi global, serta menerapkan kontrol akses IP global tingkat instans melalui daftar hitam dan daftar putih, pengumpulan log, dan Analisis Tracing.
Deskripsi ApigConfig
Deskripsi konfigurasi
ApigConfig adalah CRD yang digunakan oleh APIG Controller untuk mengelola siklus hidup dan konfigurasi global instans Gerbang APIG.
Satu ApigConfig berkorespondensi dengan satu instans Gerbang APIG. Untuk menggunakan beberapa instans Gerbang APIG, Anda harus membuat beberapa ApigConfig.
Kecuali dalam skenario reuse, penghapusan ApigConfig akan menghapus secara cascade instans Gerbang APIG yang terkait.
Kode contoh berikut menunjukkan 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" # Nilai kosong menunjukkan bahwa proyek default digunakan.
tracing:
openTelemetry:
sampleRate: "100"
ingress:
local:
ingressClass: apig
watchNamespace: "" # "" menunjukkan resource Ingress di semua namespace.Parameter | Deskripsi | Nilai default |
| Nama gerbang. | apig-ingress |
| Metode penagihan. Saat ini, hanya bayar sesuai penggunaan yang didukung. Jika Anda tidak mengonfigurasi parameter ini, metode bayar sesuai penggunaan digunakan secara default. | POSTPAY |
| Tipe instans gerbang. Nilai yang valid:
| apigw.small.x1 |
| vSwitch primer dan sekunder. vSwitch primer dicantumkan terlebih dahulu, diikuti oleh vSwitch sekunder. Tentukan minimal satu dan maksimal dua vSwitch. Jika Anda membiarkannya kosong, vSwitch akan diambil dari node tempat pod Controller berjalan. | None |
| Tipe instans SLB publik yang dibeli untuk gerbang. Nilai yang valid:
| Internet |
| Tipe grup keamanan. Nilai yang valid:
| normal |
| Mengaktifkan atau menonaktifkan akselerasi perangkat keras TLS. Mengaktifkan fitur ini dapat meningkatkan performa trafik HTTPS secara signifikan. | Enabled |
| Daftar putih IP global untuk kontrol akses. | Not configured |
| Daftar hitam IP global untuk kontrol akses. | Not configured |
| Mengaktifkan atau menonaktifkan Simple Log Service (SLS). Untuk mengaktifkan fitur ini, berikan izin SLS yang diperlukan kepada Controller. | shutdown |
| Proyek tujuan di SLS tempat log akses dikirimkan. Nilai yang valid:
| Kosong |
| Laju sampel untuk Analisis Tracing OpenTelemetry | 0 |
| Mengaktifkan atau menonaktifkan Analisis Tracing OpenTelemetry. | Opsi ini dinonaktifkan secara default dan saling eksklusif dengan OpenTelemetry. |
| Laju sampel untuk Analisis Tracing OpenTelemetry. | 100 |
| Resource Ingress di bawah IngressClass tertentu dalam kluster yang didengarkan oleh gerbang APIG. Nilai yang valid:
Catatan Konfigurasi ini memiliki prioritas lebih rendah daripada mengasosiasikan ApigConfig melalui resource IngressClass. | Not configured |
| Namespace dalam kluster yang resource Ingress-nya didengarkan oleh gerbang APIG. Nilai yang valid:
| Kosong |
Deskripsi status
Setelah membuat resource ApigConfig, Anda dapat menjalankan perintah kubectl get ApigConfig untuk memeriksa statusnya. Status ApigConfig berubah secara berurutan sebagai berikut: Pending > Running > Listening. Penjelasan masing-masing status adalah sebagai berikut:
Pending: Gerbang APIG sedang dalam proses pembuatan. Proses ini memerlukan waktu sekitar 3 menit.Running: Gerbang APIG telah berhasil dibuat dan sedang berjalan.Listening: Gerbang APIG berjalan dan mendengarkan resource Ingress dalam kluster.Failed: Gerbang APIG berada dalam status tidak valid. Untuk informasi lebih lanjut, lihat pesan pada bidang Status.
Deskripsi tag
Instans Gerbang APIG yang dibuat atau digunakan kembali melalui ApigConfig diberi tag sumber daya. Anda dapat melihat tag tersebut di bagian informasi dasar pada Konsol APIG.
Jangan mengedit tag dalam tabel berikut dari konsol Gerbang APIG karena tindakan ini dapat memengaruhi instans gerbang Anda.
Nama tag | Deskripsi |
ack.aliyun.com | Mengelola lalu lintas masuk kluster layanan kontainer untuk gerbang APIG. |
ingress.k8s.alibaba/ApigConfig | Mengasosiasikan gerbang APIG dengan ApigConfig. |
kubernetes.reused.by.user | Menunjukkan apakah gerbang APIG digunakan kembali. Jika dalam skenario reuse, instans gerbang APIG tidak dihapus saat ApigConfig terkait dihapus. |
Buat instans gerbang APIG
Konfigurasikan ApigConfig.
Kode contoh berikut membuat instans Gerbang APIG bernama apig-ingress dengan tipe instans `apigw.small.x1`. Anda dapat menyesuaikan pengaturan ApigConfig lainnya sesuai kebutuhan.
apiVersion: apig.alibabacloud.com/v1alpha1 kind: ApigConfig metadata: name: apig-ingress spec: name: apig-ingress common: instance: spec: apigw.small.x1Buat resource IngressClass di kluster layanan kontainer dan asosiasikan dengan ApigConfig melalui spec.parameters untuk mendeklarasikan prosesor Ingress dalam kluster.
Setelah konfigurasi selesai, resource Ingress dalam kluster yang terkait dengan IngressClass ini akan diproses oleh instans Gerbang APIG yang terkait dengan ApigConfig.
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 gerbang APIG yang ada
Untuk menggunakan kembali instans Gerbang APIG yang sudah ada, tentukan ID unik instans Gerbang APIG (dalam format gw-xxx) di spec.id saat membuat ApigConfig. Gunakan parameter spec.override untuk mengontrol apakah konfigurasi instans Gerbang APIG yang digunakan kembali akan ditimpa dengan pengaturan dari ApigConfig.
Kode contoh berikut menggunakan kembali instans Gerbang APIG yang sudah ada melalui ApigConfig. Instans gerbang diasosiasikan dengan kluster kontainer dan dikonfigurasi untuk mendengarkan resource Ingress dalam kluster yang memiliki ingressClass apig.
Dalam konfigurasi berikut,
spec.overridediatur kefalse. Pengaturan ini mencegah opsi listener Ingress dan konfigurasi global Gerbang APIG yang sudah ada ditimpa. Jika instans gerbang belum diasosiasikan dengan kluster kontainer, instans tersebut akan secara otomatis diasosiasikan. Listener Ingress kemudian dikonfigurasi untuk mendengarkan resource Ingress dalam kluster yang ingressClass-nya cocok dengan nilaispec.ingress.local.ingressClass, yaitu apig dalam contoh ini. Jika instans gerbang sudah diasosiasikan dengan kluster kontainer, opsi listener Ingress aslinya tetap dipertahankan.Untuk menimpa opsi listener Ingress dan konfigurasi global Gerbang APIG yang sudah ada, pastikan terlebih dahulu bahwa semua parameter gerbang yang diperlukan—seperti opsi listener Ingress, akselerasi perangkat keras, daftar hitam dan daftar putih global, serta observabilitas—telah dikonfigurasi dengan benar dalam ApigConfig Anda. Kemudian, atur
spec.overrideke `true`. Jika Anda mengaturspec.overrideke `true` tanpa menentukan konfigurasi tersebut dalam ApigConfig, parameter gerbang asli akan ditimpa, yang dapat berdampak negatif terhadap lalu lintas.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: reuse
spec:
id: gw-xxxx
override: false
ingress:
local:
ingressClass: apigParameter | Deskripsi |
| ID instans gerbang APIG target yang akan digunakan kembali. Formatnya adalah `gw-xxx`. |
| Menentukan apakah konfigurasi instans gerbang APIG yang digunakan kembali akan ditimpa berdasarkan ApigConfig.
|
Hapus instans gerbang APIG
Satu ApigConfig berkorespondensi dengan satu instans Gerbang APIG. Kecuali dalam skenario reuse, penghapusan ApigConfig akan menghapus secara cascade instans Gerbang APIG yang terkait.
Kebijakan penghapusan ditunjukkan dalam tabel berikut.
Metode penagihan gerbang | Pembuatan otomatis oleh APIG Controller | Reuse gerbang yang dibeli di konsol |
Pay-as-you-go | Hapus ApigConfig untuk menghapus instans gerbang secara otomatis. | Hapus ApigConfig, tetapi instans gerbang tetap dipertahankan. |
Jalankan perintah berikut untuk menghapus ApigConfig.
kubectl delete ApigConfig your-config-nameKonfigurasi kontrol akses IP global tingkat instans
Konfigurasi daftar putih IP
Anda dapat mengonfigurasi daftar putih IP global tingkat instans untuk hanya mengizinkan IP sumber tertentu mengakses APIG Ingress.
Kode contoh berikut mengonfigurasi instans Gerbang APIG Ingress agar hanya mengizinkan akses dari alamat IP sumber 1.1.XX.XX atau 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
Anda dapat mengonfigurasi daftar hitam IP global tingkat instans untuk menolak akses dari IP sumber tertentu ke APIG Ingress.
Kode contoh berikut mengonfigurasi instans Gerbang APIG Ingress agar menolak akses dari alamat IP sumber 1.1.XX.XX atau 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 log SLS
Sebelum mengaktifkan log SLS, pastikan Anda telah memberikan izin SLS yang diperlukan kepada APIG Controller.
Kode contoh berikut mengonfigurasi Gerbang APIG Ingress untuk mengirimkan log akses ke proyek bernama demo.
apiVersion: apig.alibabacloud.com/v1alpha1
kind: ApigConfig
metadata:
name: apig-ingress
spec:
...
monitor:
logging:
sls:
# Konfigurasikan reuseProject untuk mengaktifkan SLS. Untuk menggunakan proyek default, biarkan kosong.
reuseProject: "demo"
...Aktifkan Analisis Tracing OpenTelemetry
Setelah mengonfigurasi Analisis Tracing OpenTelemetry Alibaba Cloud untuk gerbang, Anda dapat membangun sistem tracing dan pemantauan end-to-end guna mendiagnosis serta mengidentifikasi masalah online secara cepat.
Kode contoh berikut mengonfigurasi Analisis Tracing OpenTelemetry untuk Gerbang APIG Ingress 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 gerbang yang digunakan oleh APIG Ingress mendukung konfigurasi tambahan.
Untuk menerapkan konfigurasi ini, login ke Konsol Cloud-native API Gateway. Di menu , temukan instans gerbang yang digunakan atau dibuat otomatis oleh APIG Controller. Klik ID instans, lalu klik Parameter Settings di panel navigasi sebelah kiri.
Item konfigurasi | Tipe | Deskripsi |
| Bool | Berlaku untuk cakupan permintaan. Menghasilkan ID permintaan di header permintaan untuk pelacakan permintaan. |
| Bool | Berlaku untuk tahap permintaan dan respons. Mengaktifkan gzip akan mengompresi permintaan dan respons. Ini mengurangi trafik gerbang tetapi meningkatkan konsumsi CPU gerbang. |
| Bool | Menentukan apakah akan menggabungkan karakter |
| Int | Berlaku untuk koneksi gerbang. Ukuran buffer untuk satu koneksi. Pengaturan ini memengaruhi throughput dan penggunaan memori gerbang. Rentang nilai: [0, 2147483647]. |
| Int | Berlaku untuk tahap permintaan. Jumlah proxy tepercaya di depan gerbang. Ini memengaruhi apakah gerbang menggunakan header permintaan yang dihasilkan klien seperti Rentang nilai: [0, 10]. Satuan: proxy. |
| Int | Berlaku untuk tahap permintaan. Jumlah maksimum stream konkuren pada satu koneksi ketika klien menggunakan HTTP/2. Rentang nilai: [0, 2147483647]. Satuan: byte. |
| Int | Berlaku untuk tahap permintaan. Ukuran jendela Rentang nilai: [65535, 2147483647]. Satuan: byte. |
| Int | Berlaku untuk tahap permintaan. Ukuran jendela awal tingkat koneksi saat gerbang dan klien menggunakan HTTP/2. Rentang nilai: [65535, 2147483647]. Satuan: byte. |
| Bool | Menentukan apakah akan mendukung protokol HTTP/3. HTTP/3 tidak kompatibel dengan fitur akselerasi perangkat keras. Nonaktifkan akselerasi perangkat keras sebelum mengaktifkan dukungan HTTP/3. |
| String | Menentukan tindakan untuk permintaan yang path URI-nya mengandung karakter escape seperti %2F, %2f, %5C, atau %5c. Nilai default adalah Nilai yang valid: |
| List<String> | Algoritma kompresi yang digunakan setelah kompresi diaktifkan. Jika Nilai yang valid: |
| Bool | Menentukan apakah akan mengaktifkan protokol PROXY. Jika lalu lintas masuk gerbang diakses melalui NLB, Anda harus mengaktifkan ini untuk mendapatkan alamat IP asal klien. Mengaktifkan ini tidak memengaruhi permintaan non-PROXY protocol. |
| Bool | Berlaku untuk skenario di mana layanan otorisasi self-built digunakan. Saat diaktifkan, perubahan aturan otorisasi tidak menyebabkan gangguan koneksi. Ini cocok untuk skenario WebSocket dan bisnis online. |
| Int | Menghasilkan header respons Keep-Alive untuk memberi tahu klien tentang waktu keepalive koneksi. Misalnya, jika diatur ke 10, header respons Rentang nilai: [0, 600]. Satuan: s. |
| Int | Waktu keepalive yang dipertahankan untuk koneksi WebSocket saat instans gerbang perlu menutup koneksi, misalnya selama peningkatan atau restart. Rentang nilai: [20, 900]. Satuan: s. |
EnableGzipHardwareAccelerate | Bool | Menjalankan kompresi Gzip berdasarkan perangkat keras khusus. Saat diaktifkan, kompresi permintaan dan respons dilakukan, secara signifikan mengurangi trafik gerbang. Fitur ini menawarkan performa lebih tinggi dan konsumsi CPU lebih rendah dibandingkan Gzip berbasis perangkat lunak. Fitur ini tidak dapat diaktifkan di wilayah yang tidak didukung atau jika akselerasi perangkat keras Gzip tidak ditentukan saat pembelian. Setelah diaktifkan, |
EnableK8sSourceWorkloadFilter | Bool | Memfilter resource Ingress, Service, dan pod berdasarkan tag tertentu saat menambahkan sumber layanan. Filter invers didukung. |