Loading...
Yönetilen container

Container Uygulamaları

Node, Python, Go, Java ya da bir port dinleyen herhangi bir şey olsun, herhangi bir HTTP veya API container'ını ücretsiz name.cdn.com.tr URL'si ve Auto SSL ile yönetilen bir uygulama olarak yayınlayın. Ortam, secrets, healthcheck, ölçeklendirme, log ve kesintisiz rollout'lar platform tarafından yönetilir, servis cdn.com.tr edge'i ve WAF'ının arkasında yer alır.

Container Uygulamaları

Sunucu çalıştırmadan bir image'dan public URL'ye

Tek bir container'ı internete çıkarmak normalde bir host sağlamak, bir container runtime kurmak, bir reverse proxy bağlamak, bir sertifika almak ve firewall portları açmak anlamına gelir — tek bir API için hatırı sayılır miktarda ayırt edici olmayan iş. Container Apps bunu ortadan kaldırır: bir image ve bir port verirsiniz, o da canlı, HTTPS ile güvenli bir name.cdn.com.tr URL'si döndürür. Yamalanacak bir host, yapılandırılacak bir nginx ya da göz kulak olunacak bir certbot cron'u yoktur, çünkü edge ve TLS platformun bir parçasıdır.

Healthcheck'ler ve kesintisiz rollout'lar

Süreç başlar başlamaz container'ları değiştiren bir deploy, uygulama hâlâ ısınırken istekleri düşürür. Platform, hazır olup olmadığına karar vermek için healthcheck yolunuzu kullanır: yeni bir deploy'da yeni container'ı ayağa kaldırır, healthcheck'in geçmesini bekler, trafiği kaydırır ve ancak o zaman eskisini emekliye ayırır. Bu, hiçbir zaman sağlıklı hale gelmeyen kötü bir image'ın servisi düşürmemesi anlamına gelir — yeni sürüm kendini kanıtlayana kadar önceki sürüm servis vermeye devam eder.

Doğru yapılmış ortam ve secrets

Twelve-factor uygulamalar yapılandırmalarını ortamdan okur, container'lar da farklı değildir. Sıradan ayarlar ortam değişkeni olarak girilir; veritabanı şifreleri, üçüncü taraf API anahtarları, imzalama sırları gibi hassas her şey ise şifrelenmiş saklanan ve kaydedildikten sonra yalnızca anahtar adıyla, asla değeriyle gösterilen bir secret olarak girilir. Object storage veya yönetilen bir veritabanı bağladığınızda, kimlik bilgileri aynı şekilde enjekte edilir; böylece hassas hiçbir şey image'a gömülmez veya bir build log'unda yazdırılmaz.

Gerçek yüke uyan ölçeklendirme ve kaynak planları

Uygulama başına bir kaynak planı (CPU ve bellek) ve bir replica sayısı seçersiniz; böylece düşük trafikli bir dahili araçla public bir API aynı ayak izini paylaşmak zorunda kalmaz. Birden çok replica çalıştırmak aynı zamanda dayanıklılık kazandırır: bir container yeniden başlıyorsa diğerleri servis vermeye devam eder. Rollout'lar sağlık kontrolüne bağlı olduğundan, ölçeği büyütmek ya da yeni bir sürüm deploy etmek, uygulamanın erişilemez olduğu bir an yaratmaz.

API'nizin önünde edge route, Auto SSL ve WAF

Dışa açılan her container uygulamasına cdn.com.tr edge'i üzerinden ulaşılır; böylece web sitelerinizin sahip olduğu aynı korumalar API'lerinize de uygulanır. Auto SSL sertifikayı sağlar ve yeniler, WAF kötü niyetli ve scanner trafiğini servisinize ulaşmadan önce filtreler, ve container üzerindeki yükü azaltmak için güvenli GET yanıtlarını edge'de cache'leyebilirsiniz. Origin container'ınıza public tarafından hiçbir zaman doğrudan erişilmez — yalnızca edge'in ilettiği trafiği alır.

Panel ya da cdnctl, ve stack'inizle uyumlu çalışır

Panelde yapabileceğiniz her şey — deploy etme, env ve secrets ayarlama, ölçeklendirme, log okuma, yeniden başlatma — cdnctl komut satırı aracı üzerinden de kullanılabilir; böylece container işlemleri scriptlere ve CI'a uyum sağlar. Container Apps aynı zamanda Docker Compose Instant Deploy'un hedefidir: çoklu servisli bir compose dosyası tek bir apply işlemiyle birkaç container uygulamasına ve yönetilen ek hizmetlere dönüşür; bu, mevcut bir stack'i her servisi elle yeniden oluşturmak yerine taşımanın en hızlı yoludur.

Adım adım nasıl deploy edilir

1

Bir container uygulaması oluşturun

Panelde Container Apps'i açın ve önceden build edilmiş bir image'dan uygulama oluşturun, örneğin Docker Hub'dan ya da özel bir registry'den myorg/api:1.4. Servisinizin dinlediği container portunu ayarlayın; böylece platform trafiği nereye göndereceğini bilir.

2

Gerekirse özel bir registry kimlik bilgisi ekleyin

Image özelse, Container Apps → registry credentials altına bir registry kullanıcı adı ve access token'ı bir kez ekleyin; platform her deploy'da image'ı çekebilsin. Public image'lar bu adımı tamamen atlar.

3

Ortam, secrets ve healthcheck ayarlayın

Sıradan yapılandırmayı ortam değişkeni olarak, hassas değerleri — API anahtarları, veritabanı şifreleri, token'lar — ise şifrelenmiş saklanan ve asla geri gösterilmeyen secrets olarak ekleyin. Platformun yeni bir container'ın sadece başladığını değil, gerçekten servis vermeye hazır olduğunu anlaması için bir healthcheck yolu tanımlayın.

4

Deploy edin ve dışa açın

Uygulamayı deploy edin, ardından web portunu dışa açarak otomatik HTTPS'li ücretsiz bir name.cdn.com.tr URL'si alın ya da kendi domain'inizi bağlayın. Trafik artık cdn.com.tr edge'inden container'ınıza akar, SSL edge'de sonlandırılır.

5

Ölçeklendirin, logları izleyin ve güncellemeleri yayınlayın

Beklediğiniz yük için replica sayısı ve bir kaynak planı belirleyin, hata ayıklamak için panelden logları izleyin ve kesintisiz bir rollout tetiklemek için yeni bir image tag'i push edin. Terminali mi tercih ediyorsunuz? cdnctl, aynı deploy, scale ve log işlemlerini shell'inizden gerçekleştirir.

Örnek senaryolar

Public JSON API

Bir Node ya da Go API'si bir image'dan deploy edilir, Auto SSL'li bir domain'de dışa açılır ve WAF ile korunur; güvenli GET yanıtları edge'de cache'lenir.

İzole mikroservis

Tek bir servis, stack'in geri kalanıyla bir host paylaşmadan, kendi kaynak planı ve secrets'ıyla, dayanıklılık için birkaç replica'ya ölçeklenmiş şekilde çalışır.

Review ve demo ortamı

Bir ürün ekibi, bir name.cdn.com.tr URL'sinde bir image tag'inden geçici bir ortam kurar, review bitince de kaldırır.

Sıkça sorulan sorular

Container Apps image'ımı bir Dockerfile'dan build eder mi?

Hayır — önceden build edilmiş image'ları deploy eder. Image'ı build edip bir registry'ye (Docker Hub ya da özel bir registry) push edersiniz ve platforma image referansını ve portu verirsiniz. Kaynaktan push-to-deploy istiyorsanız, build adımını halleden GitHub Deploy ile eşleştirin, ya da çoklu servisli, önceden build edilmiş image'lardan oluşan bir stack için Docker Compose Instant Deploy'u kullanın.

Kesintisiz bir deploy burada tam olarak nasıl çalışır?

Yeni bir deploy'da platform yeni container'ı başlatır, healthcheck yolunuzun hazır raporu vermesini bekler, ardından trafiği ona kaydırır ve eski container'ı emekliye ayırır. Yeni container healthcheck'i hiç geçemezse trafik önceki sürümde kalır; böylece bozuk bir build servisi çevrimdışı bırakmaz.

Secrets'larım kaydettikten sonra görünür mü?

Hayır. Secrets şifrelenmiş saklanır ve kaydedildikten sonra yalnızca anahtar adıyla gösterilir — değerler panelde, loglarda ya da önizlemelerde geri gösterilmez. Bu, bir secret'ı bir ekran kaydına, bir destek oturumuna ya da bir build log'una sızdırmadan panelden döndürmenizi sağlar.

Container'ım yönetilen bir veritabanına ya da object storage'a ulaşabilir mi?

Evet. Yönetilen bir veritabanını, Redis'i ya da bir object storage bucket'ını uygulamaya bağlarsınız ve bağlantı detayları ile access key'ler ortam değişkeni veya secret olarak enjekte edilir. Container bunları kendi ortamından okur; böylece kimlik bilgilerinin image'a gömülmesi hiç gerekmez.

Birden fazla instance'ı nasıl çalıştırırım ve bunu neden isterim?

Uygulamada replica sayısını ayarlayın. Birden çok replica dayanıklılık kazandırır — biri yeniden başlıyorsa ya da sağlıksızsa diğerleri servis vermeye devam eder — ve uygulamanın daha fazla eşzamanlı trafiği kaldırmasını sağlar. Sağlık kontrolüne bağlı rollout'larla birlikte, ölçeği büyütmek servisin erişilemez olduğu bir pencere yaratmaz.

Container uygulamalarını komut satırından ve CI'dan yönetebilir miyim?

Evet. cdnctl aracı, panelle aynı deploy, scale, log, restart ve yapılandırma işlemlerini gerçekleştirir; böylece container işlemlerini scriptleyebilir ya da arayüzde tıklamak yerine bir CI pipeline'ından çalıştırabilirsiniz. Bir Docker Compose import'unu terminalden önizlemenin ve uygulamanın da yolu budur.