Loading...

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.

Hızlı yol: docker-compose.yml'inizi doğrudan içe aktarı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, redis ve nats (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'e hot-data-store adını verip 8082 portunu tanımlarsanız http://hot-data-store:8082 otomatik çö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 seçiliyken platform tipi sekmeleri
Platform sekmeleri. Yeşil nokta bu hesabın etkin platformunu işaretler.

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.

Managed Container Apps genel bakışı ve Your apps listesi
Üstte genel bakış kartları; altta Your apps listesi — durum rozetiyle app başına bir satır, Create Test Copy eylemi ve Manage → bağlantısı. Bir app'i açınca route'una, Expose on cdn.com.tr eylemine ve Add-ons / Imports / Jobs / Storage / Env bölümlerine ulaşırsınız.

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/amd64 iç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.
Container app oluşturma formu
App oluşturma formu. Env değişkenleri app yapılandırmasında görünür; secret'lar yalnızca yazılırdır. Eklentinin sahibi olacak bir servis için bağlantı dizesini elle yazmanız gerekmez — bkz. adım 4.

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:

Etkinleştirme/devre dışı bırakma eylemleriyle yönetilen eklentiler paneli
App detay sayfasındaki Add-ons paneli. Eklentiyi etkinleştirmek, bağlantı bağlanmış olarak app'i yeniden deploy eder.
# 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çin 1+'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.