Beban kerja tanpa status tidak menyimpan data atau status—misalnya, NGINX. Anda dapat membuat aplikasi tanpa status dari gambar, templat, atau CLI. Saat menggunakan gambar privat, konfigurasikan Image Pull Secret di Konsol ACK demi keamanan. Topik ini menjelaskan cara membuat aplikasi tanpa status dari gambar di Konsol pada kluster ACK Serverless.
Prasyarat
Pastikan hal berikut:
-
Kluster ACK Serverless telah dibuat.
Langkah 1: Konfigurasi pengaturan dasar
-
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters.
-
Di halaman Cluster, klik kluster target. Di panel navigasi kiri, pilih Workloads > Deployments.
-
Di halaman Deployments, klik Create from Image.
-
Di halaman Basic Information, pilih namespace. Contoh ini menggunakan namespace default.
-
Konfigurasikan pengaturan dasar.
Parameter Deskripsi Name Masukkan nama untuk aplikasi. Replicas Tentukan jumlah Pod yang akan disediakan. Type Pilih jenis resource: Deployment, StatefulSet, Job, atau CronJob. Label Tambahkan label untuk mengidentifikasi aplikasi. Annotations Tambahkan anotasi ke aplikasi. -
Klik Next.
Langkah 2: Konfigurasi kontainer
Pada langkah Container, konfigurasikan gambar kontainer, sumber daya komputasi, port, variabel lingkungan, pemeriksaan kesehatan, siklus hidup, dan volume.
Klik Add Container untuk menambahkan lebih banyak kontainer.
Konfigurasi gambar
Pada bagian General, konfigurasikan pengaturan berikut:
| Parameter | Deskripsi |
|---|---|
| Image Name | Pilih atau masukkan gambar kontainer. Lihat Pilih sumber gambar di bawah. |
| Required Resources | Cadangkan CPU dan memori untuk kontainer. Mencegah gangguan akibat konflik sumber daya dan wajib untuk HPA. |
| Container Start Parameter | stdin: meneruskan input dari Konsol ACK ke kontainer. tty: mengalokasikan pseudo-TTY sehingga kontainer menggunakan konsol sebagai input standar.: meneruskan parameter awal dari terminal virtual ke Konsol ACK. |
| Init Containers | Buat init container untuk inisialisasi Pod. Lihat Init containers. |
Pilih sumber gambar
Klik Select images. Sumber:
-
Container Registry Enterprise Edition: gambar dalam instans Container Registry Enterprise Edition. Pilih wilayah dan instans. Tidak perlu Secret.
-
Container Registry Personal Edition: gambar yang disimpan dalam instans Container Registry Personal Edition. Pilih wilayah dan instans.
-
Artifact Center: gambar OS dasar, gambar bahasa dasar, dan gambar AI/data besar yang dikelola oleh Alibaba Cloud dan OpenAnolis. Contoh ini menggunakan gambar NGINX. Lihat Ikhtisar artifact center.
Untuk pertanyaan atau permintaan gambar, bergabunglah dengan grup DingTalk 33605007047.
-
Private registry: masukkan alamat gambar dalam format
domainname/namespace/imagename:tag.
Image pull policy
| Kebijakan | Perilaku |
|---|---|
| IfNotPresent | Gunakan gambar yang tersimpan di cache lokal jika tersedia; tarik dari registri jika tidak. |
| Always | Tarik dari registri setiap kali aplikasi diterapkan atau diskalakan. |
| Never | Gunakan hanya gambar yang tersimpan di cache lokal; jangan pernah menarik dari registri. |
Jika tidak ada yang dipilih, kebijakan pull tidak diterapkan.
Set Image Pull Secret
Untuk menarik gambar dari registri privat (seperti Container Registry Personal Edition), klik Set Image Pull Secret dan pilih Secret. Lihat Manage Secrets. Tidak diperlukan Secret untuk Container Registry Enterprise Edition.
Konfigurasi port
Di bagian Ports, klik Add.
| Field | Deskripsi |
|---|---|
| Name | Masukkan nama untuk port. |
| Container Port | Masukkan nomor port (1–65535). |
| Protocol | Pilih TCP atau UDP. |
Konfigurasi variabel lingkungan
Pada bagian Environments, klik Add untuk mengonfigurasi variabel lingkungan.
Untuk menggunakan ConfigMap atau Secret sebagai sumber variabel lingkungan, buat terlebih dahulu. Lihat Manage ConfigMaps dan Manage Secrets.
Tetapkan Type ke salah satu: Custom, ConfigMaps, Secrets, Value/ValueFrom, atau ResourceFieldRef. Memilih ConfigMap atau Secret akan meneruskan semua data dalam resource yang dipilih ke kontainer sebagai variabel lingkungan.
Contoh ini menggunakan Secrets: pilih Secrets dari daftar Type, lalu pilih Secret dari Value/ValueFrom. Semua data dalam Secret yang dipilih diteruskan sebagai variabel lingkungan.
Konfigurasi pemeriksaan kesehatan
Pada bagian Health Check, aktifkan probe sesuai kebutuhan:
| Probe | Tujuan | Kapan digunakan |
|---|---|---|
| Liveness | Mendeteksi apakah kontainer berjalan dengan benar; mulai ulang jika tidak. | Selalu konfigurasikan untuk kontainer berjalan lama. |
| Readiness | Menentukan apakah kontainer siap menerima traffic. | Gunakan ketika aplikasi memerlukan waktu pemanasan sebelum melayani permintaan. |
| Startup | Memeriksa apakah aplikasi telah dimulai; menonaktifkan probe lain hingga berhasil. | Gunakan untuk aplikasi dengan waktu inisialisasi panjang. |
Probe startup memerlukan Kubernetes 1.18 atau lebih baru.
Setiap probe mendukung jenis permintaan berikut:
HTTP — mengirim permintaan HTTP untuk memeriksa kesehatan kontainer.
| Parameter | Deskripsi | Bawaan |
|---|---|---|
| Protocol | HTTP atau HTTPS. | — |
| Path | Path HTTP pada server. | — |
| Port | Nomor atau nama port yang diekspos oleh kontainer (1–65535). | — |
| HTTP Header | Header kustom dalam pasangan kunci-nilai; duplikasi diperbolehkan. | — |
| Initial Delay (s) | Detik yang ditunggu setelah kontainer dimulai sebelum probe pertama (initialDelaySeconds). |
Liveness: 3; TCP: 15; Command: 5 |
| Period (s) | Interval antar probe (periodSeconds); minimum 1. Nilai lebih rendah mendeteksi kegagalan lebih cepat tetapi meningkatkan beban probe. |
10 |
| Timeout (s) | Waktu sebelum probe timeout (timeoutSeconds); minimum 1. |
1 |
| Healthy Threshold | Jumlah keberhasilan berturut-turut yang diperlukan agar kontainer dianggap sehat. Harus 1 untuk probe liveness. | 1 |
| Unhealthy Threshold | Jumlah kegagalan berturut-turut yang diperlukan agar kontainer dianggap tidak sehat. Nilai lebih tinggi mentoleransi kegagalan sementara; nilai lebih rendah memicu restart lebih cepat. | 3 |
TCP — membuka soket TCP untuk memeriksa kesehatan kontainer. Parameter sama seperti HTTP kecuali Protocol, Path, dan HTTP Header.
Command — menjalankan perintah di dalam kontainer untuk memeriksa kesehatan. Mendukung Command, Initial Delay, Period, Timeout, Healthy Threshold, dan Unhealthy Threshold.
Konfigurasi siklus hidup
Pada bagian Lifecycle, konfigurasikan kait siklus hidup:
-
Start: dijalankan sebelum kontainer dimulai.
-
Post Start: dijalankan setelah kontainer dimulai.
-
Pre Stop: dijalankan sebelum kontainer dihentikan.
Konfigurasi volume
Pada bagian Volume, tambahkan volume penyimpanan:
-
Volume penyimpanan on-premises
-
PVC (PersistentVolumeClaim)
-
NAS (Penyimpanan File NAS)
-
Disk
Lihat Menggunakan volume disk yang diprovisikan secara statis, Menggunakan volume disk yang diprovisikan secara dinamis, dan Memasang volume NAS yang diprovisikan secara statis.
Konfigurasi pengumpulan log
Pada bagian Log, konfigurasikan pengumpulan log. Lihat Buat aplikasi dari gambar dan konfigurasikan Simple Log Service untuk mengumpulkan log aplikasi.
Klik Next.
Langkah 3: Konfigurasi pengaturan lanjutan
Pada langkah Advanced, konfigurasikan kontrol akses, penskalaan, label, dan anotasi.
Konfigurasi kontrol akses
Pada bagian Access Control, pilih cara mengekspos Pod aplikasi.
Aplikasi internal: buat Service ClusterIP atau NodePort untuk komunikasi intra-kluster.
Aplikasi eksternal: ekspos aplikasi ke internet:
-
LoadBalancer Service: atur tipe Service ke Server Load Balancer. Pilih atau buat instans SLB untuk mengarahkan traffic eksternal.
-
Ingress: gunakan sumber daya Ingress untuk mengarahkan lalu lintas HTTP/HTTPS ke Service. Lihat Ingress.
Contoh ini membuat Service ClusterIP dan Ingress untuk mengekspos aplikasi NGINX.
Buat Layanan
Klik Create di samping Services dan konfigurasikan parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Name | Masukkan nama untuk Service. Contoh ini menggunakan nginx-svc. |
| Type | Contoh ini menggunakan Cluster IP.Server Load Balancer. Opsi: Cluster IP, Server Load Balancer, Node Port. |
| Port Mapping | Petakan port Service ke port kontainer. Contoh ini menggunakan Service Port 80 dan Container Port 80. |
| External Traffic Policy | Local: mengarahkan traffic hanya ke node tempat Service berjalan. Cluster: mengarahkan traffic ke Pod di node mana pun. Berlaku hanya untuk tipe NodePort dan Server Load Balancer. |
| Annotations | Tambahkan anotasi konfigurasi SLB. Misalnya, service.beta.kubernetes.io/alicloud-loadbalancer-bandwidth:20 membatasi bandwidth hingga 20 Mbit/s. Lihat Use annotations to configure CLB instances. |
| Label | Tambahkan label untuk mengidentifikasi Service. |
Saat menggunakan instans SLB:
Listener pada instans SLB yang sudah ada akan menimpa listener Service.
Instans SLB yang dibuat bersama Service tidak dapat digunakan kembali oleh Service lain. Hanya instans SLB yang dibuat secara manual di Konsol atau melalui API yang dapat dibagikan.
Service yang berbagi instans SLB yang sama harus menggunakan port frontend berbeda untuk menghindari konflik.
Jangan ubah nama listener atau nama kelompok vServer pada instans SLB yang dibagikan, karena ACK menggunakannya sebagai pengenal unik.
Instans SLB tidak dapat dibagikan lintas kluster.
Buat Ingress
Klik Create di samping Ingresses dan konfigurasikan parameter berikut:
| Parameter | Deskripsi |
|---|---|
| Name | Masukkan nama untuk Ingress. Contoh ini menggunakan nginx-ingress. |
| Rule | Tentukan aturan routing: Domain (contoh ini menggunakan domain pengujian foo.bar.com), Path (default /), Services (pilih nginx-svc), dan EnableTLS. |
| Weight | Atur bobot traffic untuk setiap Service dalam path tersebut. Default: 100. |
| Canary Release | Aktifkan canary release. Disarankan: Open Source Solution. |
| Ingress Class | Tentukan kelas Ingress. |
| Annotations | Tambahkan Anotasi Ingress. Lihat Annotations. |
| Labels | Tambahkan label untuk mendeskripsikan Ingress. |
Setiap Service hanya dapat memiliki satu Ingress. Contoh ini menggunakan nama host virtual sebagai domain uji. Tambahkan IP Ingress ke file hosts Anda. Untuk menemukannya, buka halaman detail aplikasi > tab Access Method > kolom External Endpoint. Di produksi, gunakan domain dengan Pendaftaran ICP.
101.37.xx.xx foo.bar.com # Ganti dengan alamat IP Ingress sebenarnya
Setelah membuat Service dan Ingress, keduanya muncul di bagian Access Control. Klik Update atau Delete untuk memodifikasinya.
Konfigurasi penskalaan otomatis
Pada bagian Scaling, konfigurasikan Horizontal Pod Autoscaler (HPA) atau CronHPA.
HPA memerlukan Required Resources yang dikonfigurasi di Langkah 2.
HPA secara otomatis menskalakan Pod berdasarkan penggunaan CPU atau memori:
| Parameter | Deskripsi |
|---|---|
| Metric | Pilih CPU Usage atau Memory Usage. Harus sesuai dengan jenis resource yang dikonfigurasi di Required Resources. |
| Condition | Ambang batas penggunaan yang memicu skala keluar. Misalnya, CPU 70% berarti HPA menambah Pod saat penggunaan rata-rata melebihi 70%. |
| Max. Replicas | Jumlah maksimum Pod yang dapat diskalakan oleh aplikasi. |
| Min. Replicas | Jumlah minimum Pod yang harus selalu berjalan. |
CronHPA juga didukung untuk penskalaan berbasis penjadwalan.
Tambahkan label dan anotasi
Pada bagian Labels,Annotations, klik Add.
-
Pod Labels: label untuk mengidentifikasi Pod.
-
Pod Annotations: anotasi untuk Pod.
Klik Create.
Langkah 4: Verifikasi penerapan
Verifikasi bahwa Deployment, Service, dan aplikasi berjalan dengan benar.
Periksa Deployment
Di langkah Complete, klik View Details. Di halaman Deployments, pastikan aplikasi bernama serverless-app-svc muncul.
Periksa Service
Di panel navigasi kiri, pilih Network > Services. Pastikan Service bernama serverless-app-svc muncul dalam daftar.
Akses aplikasi
Buka endpoint eksternal atau nama domain di browser untuk mengunjungi halaman selamat datang NGINX.
-
Tipe Service harus Server Load Balancer agar dapat diakses melalui browser.
-
Jika menggunakan
foo.bar.com, tambahkan IP Ingress ke file hosts seperti dijelaskan di Buat Ingress.