Kamal, sunucuda değil kendi makinenizde ya da CI çalıştırıcınızda çalışan bir dağıtım aracıdır. Dolayısıyla “Kamal VPS gereksinimleri” aslında Kamal’ın dağıtım yaptığı makineyle ilgili bir sorudur: o makinenin uygulama konteynerlerinizi, kamal-proxy’yi, tanımladığınız aksesuarları ve geri alma için saklanan birkaç günlük eski imajı taşıması gerekir.
Kamal’ın sunucudaki kendi kaynak maliyeti sıfırdır. Geri kalan her şeyi boyutlandırın.
Sunucuda Kaynak Tüketen Bileşenler
kamal setup sonrasında sunucuda üç şey çalışır:
- kamal-proxy — 80 ve 443 numaralı portları tutan, Go ile yazılmış küçük bir HTTP proxy’si
- uygulama konteynerleriniz —
config/deploy.ymliçindeki her rol için bir grup - aksesuarlar — Postgres, Redis veya tanımladığınız diğer servisler
Boyutlandırma açısından yalnızca ortadaki ikisi önemlidir. kamal-proxy tek bir statik ikili dosyadır ve gerçek bir uygulamanın yanında yer kaplamaz.
RAM
İnsanları yanıltan sayı, sabit durumdaki bellek kullanımı değil, dağıtım örtüşmesidir. Kamal, eski konteyner trafiği sunmaya devam ederken yeni konteyneri başlatır ve eskisini ancak yenisi sağlık kontrolünü geçtikten sonra durdurur. Bu yüzden tepe bellek kullanımı, normal kullanımınıza kabaca uygulama konteynerinin bir kopyası daha eklenmiş hâlidir.
- Pratik alt sınır: 2 GB, ayrı bir veri tabanı olmayan küçük bir uygulama için
- Rahat kullanım: 4 GB — tipik bir web uygulamasını, Postgres’i ve dağıtım örtüşmesini birlikte karşılar
- 4 GB’lık sunuculara takas alanı ekleyin. Dağıtımın ortasında takas kullanmaya başlayan bir sunucu, sağlık kontrolü penceresini kaçıracak kadar yavaşlayabilir; dağıtım da görünürde sebepsiz yere geri alınır.
Postgres’i yönetilen bir servis yerine Kamal aksesuarı olarak çalıştırıyorsanız onu ayrıca hesaba katın. Makinedeki en büyük tüketici Kamal değil, o olacaktır.
CPU
Mantıklı alt sınır iki vCPU’dur ve bunun sebebi sabit durumdaki yükle ilgili değildir: dağıtım sırasında sunucu aynı anda imaj çeker, konteyner başlatır, sağlık kontrolü yapar ve eski konteynerden trafik sunar. Tek vCPU’da bu çekişme, dağıtım penceresini uzatır.
- Asgari: 1 vCPU — düşük trafikli bir uygulamada, daha yavaş dağıtımları kabul ediyorsanız iş görür
- Önerilen: 2 vCPU
- İmajları VPS’in kendisinde derlemek, gerçekten daha fazlasını gerektiren tek durumdur. Dizüstü bilgisayarınız arm64 ise ve VPS elinizdeki tek amd64 makineyse, bir derleme verdiğiniz her çekirdeği kullanır.
Depolama
Kamal’ın davranışının sayıları asıl değiştirdiği yer burasıdır. Kamal, kamal rollback komutunun önceki bir sürümü registry’den çekmeden başlatabilmesi için eski konteynerleri ve imajları sunucuda tutar ve varsayılan olarak üç gün sonra temizler.
Yani diskin taşıması gerekenler:
- Uygulamanızın kendi verisi ve birimleri
- Güncel imaj artı kabaca üç günlük önceki sürümler
- Kaç sürüm tutarsanız tutun yalnızca bir kez saklanan paylaşılan temel katmanlar
Günde birkaç kez dağıtılan 1 GB’lık bir imaj, 40 GB NVMe üzerinde sorun çıkarmaz. 25 GB’lık diskteki 3 GB’lık bir imaj ise diski bir hafta içinde doldurur. Arıza biçimini bilmekte fayda var: dolan disk, onu dolduran dağıtımı değil bir sonraki dağıtımı bozar; yani sebep ile belirti arasında günler olabilir.
Sık dağıtım yapıyorsanız kamal prune all, üç günlük pencereyi beklemeden birikmiş yığını temizler.
VPS Sağlayıcı Seçenekleri ve Fiyatlandırma
| Sağlayıcı | Aylık Fiyat | Öne Çıkan Özellikler | Ortaklık Linki |
|---|---|---|---|
| Contabo | €5.99 | 400 GB disk; imaj geçmişi hiçbir zaman darboğaz olmaz | Contabo |
| Hetzner Cloud | €5.49 | 2 vCPU / 4 GB / 40 GB NVMe, riskli dağıtımlar öncesi anlık görüntü | Hetzner Cloud |
| DigitalOcean | $6 USD | Kamal’ın atladığı sunucu düzeyindeki kurulum için en açık dokümantasyon | DigitalOcean |
| Vultr | $5 USD | Uygulamanın kullanıcılarına yakın durması gerektiğinde işe yarayan bölge seçimi | Vultr |
| Linode (Akamai Cloud) | $5 USD | Öngörülebilir fiyatlandırma ve sade ağ yapılandırması | Linode |
Seçeneklere kapsamlı bir bakış için VPS karşılaştırmamıza göz atın.
Başlangıç için en kolayı DigitalOcean’dır, çünkü Kamal sunucuyu Docker’ın ötesinde bilinçli olarak yönetmez: güvenlik duvarı kuralları, takas alanı ve otomatik güncellemeler size kalır ve DigitalOcean’ın dokümantasyonu üçünü de kapsar. Bu kurulumu kendiniz yapmaktan çekinmiyorsanız Hetzner, euro başına daha fazla RAM ve disk verir.
Pratik Dağıtım İpuçları
- Sunucuda yalnızca 22, 80 ve 443 numaralı portları açın. TLS’i kamal-proxy’nin kendisi sonlandırır, dolayısıyla dışarıdan başka hiçbir şeye erişilebilir olması gerekmez.
- Bir geri almaya güvenmeden önce
kamal app containersçıktısına bakın; hedef sürümün hâlâ diskte olması gerekir. - Boş disk alanını, bellek için kullandığınız uyarı mekanizmasıyla izleyin. Sessizce gelen arıza budur.
- Aynı sunucuya ikinci bir uygulama dağıtmak Kamal 2’de destekleniyor — kamal-proxy yönlendirmeyi alan adına göre yapar — ancak bu, konteyner sayısını ve imaj geçmişini ikiye katlar; diski her ikisi için birden boyutlandırın.
Sonuç
Çoğu tek uygulama dağıtımı için 2 vCPU, 4 GB RAM ve 40 GB SSD veya NVMe; uygulamaya, veri tabanına, dağıtım örtüşmesine ve üç günlük geri alma imajlarına yer bırakır. Diski RAM’den önce büyütün: bellek baskısı kendini belli eder, imaj birikimi etmez. Daha fazla seçenek için, dağıtımınıza en uygun sunucuyu bulmak üzere VPS karşılaştırmamızı inceleyin.
Frequently asked questions
Kamal hedefi olacak bir VPS'in ne kadar RAM'e ihtiyacı var?
Uygulamanıza, aksesuarlarına ve uygulama konteynerinin fazladan bir kopyasına yetecek kadar. Dağıtım sırasında eski ve yeni konteyner aynı anda çalışır, bu yüzden tepe bellek kullanımı yaklaşık olarak normal kullanımınız artı bir uygulama konteyneridir. 1 GB'lık bir uygulama için 4 GB'lık sunucu rahattır; sınırda kalıyorsanız takas alanı ekleyin.
Kamal'ın kendisi sunucuda CPU veya bellek tüketir mi?
Hayır. Kamal, kendi makinenizde veya CI ortamında çalıştırdığınız bir gem'dir ve dağıtım bitince sonlanır. Sunucuya kalıcı olarak eklenen tek bileşen kamal-proxy'dir; Go ile yazılmış küçük bir HTTP proxy'sidir ve tüketimi gerçek bir uygulamanın yanında ihmal edilebilir düzeydedir.
Bir Kamal sunucusunun diski zamanla neden dolar?
Kamal, geri almaların registry'den çekme yapmasına gerek kalmaması için eski konteynerleri ve imajları saklar ve varsayılan olarak üç gün sonra temizler. Büyük bir imajın sık dağıtımı hızla birikir; disk genellikle soruna yol açan dağıtımda değil, günler sonraki bir dağıtımın ortasında dolar.