CONTAINER APPS · PANEL REHBERİ
Çok servisli bir Docker projesini uçtan uca panelden taşıyın
Bu, cdnctl komut satırı rehberinin tıkla-ve-yap karşılığıdır. Aynı çok servisli docker-compose tarzı projeyi (web/API servisleri, arka plan worker'ları, veritabanı, cache ve mesaj yolu) alır ve tamamen yönetim panelinden CDN.com.tr yönetilen konteyner platformunda çalıştırır. Aşağıdaki her adımın bir komut satırı karşılığı vardır; hangisini isterseniz onu kullanın.
Zaten bir docker-compose.yml'iniz var mı? Konteyner sekmesi onu tek adımda içe aktarabilir — Import from Docker Compose'u açın, önizleme planını inceleyin ve onaylayın. Docker Compose içe aktarma rehberine ya da cdnctl compose referansına bakın. Aşağıdaki manuel adımlar, compose içe aktarmanın kapsamadığı durumlar için geçerliliğini korur.
1 · Kavramlar
- Hesap = proje. Bir hesap birçok container app barındırabilir; kaç app çalıştırabileceğinizi paketiniz belirler.
- App = bir konteyner imajı (bir servis). Her app'in portu, sağlık kontrolü, kaynakları, ortam değişkenleri ve secret'ları vardır; N replikaya ölçeklenebilir.
- Yönetilen eklentiler, bir app'e bağladığınız durumlu arka uçlardır —
postgres(PostgreSQL/TimescaleDB),mysql,redisvenats(JetStream). Bağlantı (üretilen parola dahil) doğrudan o app'e enjekte edilir; parola asla geri gösterilmez. - Servis keşfi. Hesabınızdaki app'ler özel bir ağı paylaşır ve tıpkı docker-compose servisleri gibi birbirine app adıyla erişir —
http://<app-adı>:<port>. Bir app'ehot-data-storeadını verip8082portunu tanımlarsanızhttp://hot-data-store:8082otomatik çözülür. - Public yayınlama. Her app bir CDN.com.tr alt alan adında ya da kendi alan adınızda yayınlanabilir. Yayınlanan her servis kendi hostname'ini alır; worker'lar ve veritabanları özel kalır.
2 · Container Apps sekmesini açın
Giriş yapın, CDN Hesaplarını açın, yönetmek istediğiniz hesapta ayarlar simgesine tıklayın, ardından Platformlar sekmesini seçin. Üstte platform tiplerini görürsünüz — Container Apps'i seçin (ilk seferde Activate'e basın).
Container Apps ekranı bir genel bakışla açılır (app sayısı, eklentiler, edge çıkışı); Create App ve Usage Details düğmeleri ve altında Your apps listesi vardır. Her app, durumunu gösteren bir satırdır; Create Test Copy (preprod) eylemi ve Manage → bağlantısı taşır. Servisin her şeyini bağladığınız detay sayfasını açmak için Manage'e tıklayın.
3 · Servis oluşturun ve bağlayın
Create App'e tıklayıp formu doldurun — servis başına bir app:
- App adı — diğer app'lerin kullandığı ağ-içi hostname de budur (compose servis adınızla aynı tutun).
- İmaj + Tag — her servisi
linux/amd64için derleyin ve platformun çekebileceği bir registry'ye push'layın. - Port, Replikalar, Plan ve Sağlık kontrolü yolu — dinlemeyen bir arka plan worker'ı için portu boş bırakın.
- Registry kimlik bilgisi — private imajlar için kayıtlı bir kimlik seçin ya da Private registry credential satırından anında ekleyin (token şifreli saklanır ve bir daha gösterilmez).
- Env değerleri (satır başına bir
KEY=value) ve Secret'lar — secret'lar şifreli Kubernetes secret'ı olarak saklanır ve kaydettikten sonra gösterilmez.
Eklentileri app'i oluştururken bağlamak için formdaki Managed Redis, Managed DB ya da Object Storage kutularını işaretleyin; ya da sonradan app'in detay sayfasından ekleyin (adım 4).
4 · Yönetilen veritabanı, cache ve mesaj yolu ekleyin
App'i açın (Manage →), sonra Add-ons sekmesine gelin ve Redis, bir veritabanı (PostgreSQL/MySQL) ya da NATS etkinleştirin. Eklenti o app için sağlanır ve bağlantısı otomatik enjekte edilir:
# auto-injected into the app the addon is enabled on:
DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER # env
DATABASE_PASSWORD, DATABASE_URL # secrets (full postgres:// URL)
REDIS_URL # redis://<redis-host>:6379/0
NATS_URL # nats://<nats-host>:4222
Bir arka ucu app'ler arasında paylaşmak. Parolasız arka uçlara — NATS ve buradaki yapılandırmasıyla Redis — diğer app'lerinizden de erişilebilir: eklentinin host'unu kullanarak her tüketicide NATS_URL/REDIS_URL'i env olarak ayarlayın. Parola korumalı bir SQL veritabanı yalnızca sahibi olan app'e enjekte edilir (parola asla gösterilmez); onu ikinci bir app'ten kullanmaya çalışmayın — veritabanının tek app'e ait olmasına izin verin ve diğerleri ona istek atsın, ya da parolasını sizin belirlediğiniz kendi veritabanı imajınızı çalıştırın.
5 · Deploy edin, durum ve logları izleyin
Bir app'i kaydetmek deploy kuyruğa alır. Konteyner sağlıklı olduğunda durum rozeti — hem Your apps listesinde hem detay sayfasında — running'e geçer. Detay sayfasındaki eylem düğmeleriyle durum / çalışma zamanını, logları ve aktiviteyi görüntüleyin; her deploy'u sonuna kadar izlemek için (üst bar) Operations menüsünü kullanın. App'leriniz açılışta migration çalıştırıyorsa önce veritabanı şemasını kuran servisi deploy edin.
Genel bakıştaki running / replicas sayacı ve Your apps başlığı canlı durumu yansıtır — pod hazır olur olmaz app orada running'e döner.
6 · Servisleri public yayınlayın
App'in detay sayfasında Expose on cdn.com.tr'ye tıklayarak app'in kendi değişmez <uid>.cdn.com.tr alt alan adını üretin (HTTPS sizin için halledilir). App'in route'u artık canlı adresi gösterir. İhtiyacınız kadar servisi yayınlayın — tek hesap, çok public hostname. Kendi alan adınızı kullanmak içinse DNS Yönetimi'nden ekleyip app'e yönlendirin.
Yalnızca public olması gereken servisleri yayınlayın. Arka plan worker'ları ve veritabanları özel kalır. Yayınladığınız her HTTP servisine kimlik doğrulama ekleyin.
7 · Gözlemlenebilirlik (tek cam)
İzleme yığınınızı sıradan app'ler olarak çalıştırın: servislerinizi kazıyan bir metrik toplayıcı (scrape yapılandırması gömülü derlenmiş, içeride tutulur) ve public yayınladığınız bir gösterge paneli. İkisini de herhangi bir app gibi oluşturun (adım 3), paneli toplayıcıya app adıyla bağlayın (http://<toplayıcı-adı>:<port>), sonra yalnızca paneli Expose edin. Panel, toplayıcıyı özel ağ üzerinden sorgular ve cdn.com.tr alt alan adından erişilebilir.
8 · Düzenleyin, ölçekleyin, yeniden başlatın ve silin
Bir app'i açın (Manage →); detay sayfası şu eylemleri taşır:
- Düzenle () — imaj/tag, port, replika, sağlık kontrolü, env ve secret'ları değiştirip yeniden deploy edin.
- Yeniden başlat ve ölçekle — bir servisi durdurmak için replikayı
0'a, başlatmak için1+'a ayarlayın. - Sil () — app'i ve public alt alan adını kaldırır. Bir veri eklentisini devre dışı bırakmak diskini varsayılan olarak korur; veriyi silmek açık onay ister.
Terminali mi tercih edersiniz? Buradaki her eylem birebir bir cdnctl komutuna karşılık gelir.