Konteyner ve Geliştirici

CI/CD Hattı

Kodunuzu push edin, test ettiğiniz sürüm aynen üretime çıksın

Her push dakikalar içinde derlenir ve test ortamında açılır; üretime yeniden derlenmiş bir kopya değil, denediğiniz imajın kendisi çıkar. Bozuk bir sürümde imaj ve yapılandırma birlikte geri gelir.

Git deponuzkod ve testlerProjenize ayrılmış runner · Nesnet işletirDerlemeTestİmajtaranırTest başarısızüretime alınmazÖzel imaj deposutarama · önbellekTest ortamıGitOps ileSürüm ekibidigest doğrulamalıÜretimGeri almaimaj ve yapılandırma birlikteHer değişiklik bir commitcluster'a yalnız GitOps yazarpush

Neden şimdi

  • Test ortamında sorunsuz çalışan sürüm üretimde farklı davranıyor, çünkü üretim için kod ayrıca derleniyor. Bu hatta üretime çıkan imaj, test edilen imajın digest ile doğrulanmış kopyasıdır.
  • Cuma akşamı çıkan bir sürüm siparişleri durdurdu ve eski yapılandırmayı bulmak bir saat sürdü. Hat bozuk sürümü beklemeden hata sayar, önceki imajı ve yapılandırmayı birlikte geri koyar.
  • Üretime kimin, ne zaman çıktığı belli değil; dağıtımlar sunucuya dosya kopyalanarak yapılıyor. Bu hatta her değişiklik bir commit'tir ve üretime alma yetkisi tanımlı bir sürüm ekibindedir.
  • İmajlarınızın altındaki işletim sistemi katmanı aylardır yamalanmadı ve güvenlik taraması kırmızı yanıyor. Hat bu katmanı her hafta yeniler, uygulama kodunuza dokunmaz.
  • Yeni bir geliştirici ekibe katıldı ve ilk değişikliğini yayına almak için üç kişiden yardım istemesi gerekiyor. Hatta push yeterlidir; uygulama test ortamında kendi adresinde açılır.

Neler değişir

BugünNesnet ile
Üretim için kod yeniden derlenir; testte görülmeyen hata üretimde çıkar.Üretime test edilen imajın digest ile doğrulanmış kopyası çıkar; iki ortam arasındaki fark yalnız yapılandırmadır.
Bozuk bir sürümden sonra eski yapılandırma elle aranır.Önceki sürümün imajı ve yapılandırması birlikte geri konur, üretimin yeniden yanıt verdiği doğrulanır.
Kimin neyi ne zaman yayına aldığı kimsenin bilmediği bir sırdır.Her değişiklik bir commit, her sürüm silinemeyen bir kayıttır; denetçiye git geçmişini gösterirsiniz.
İmajların işletim sistemi katmanı, biri hatırlayana kadar yamasız kalır.Yamalı katman her hafta bütün imajların altına geçirilir; geliştiriciden iş istemez.
Yeni bir proje açmak, sunucu ve izin taleplerinden oluşan bir haftalık iştir.Proje platforma kaydedilir, ortamları ve runner'ı dakikalar içinde hazırdır; ilk push test ortamına çıkar.

Bugünden canlıya: nasıl işler

  1. 1

    Kapsamın belirlenmesi

    Hangi depoların hatta bağlanacağı, test ve üretim ortamlarının nerede duracağı ve sürüm ekibinde kimlerin olacağı Nesnet ekibiyle bir görüşmede netleşir.

  2. 2

    Projenin platforma kaydı

    Nesnet projeyi platforma kaydeder; ad alanları, kotalar, ağ politikaları, imaj deposundaki alan ve projenin runner'ı dakikalar içinde hazırlanır.

  3. 3

    İlk push

    Geliştirici kodunu GitHub'a gönderir; derlenen imaj özel depoya yazılır ve uygulama test ortamında kendi adresinde açılır.

  4. 4

    İlk sürüm

    Test ortamında denenen sürümü sürüm ekibi üretime alır; aynı imaj digest doğrulamasıyla üretime kopyalanır ve birkaç dakika içinde yayındadır.

  5. 5

    Her hafta güncel kalır

    İşletim sistemi katmanı her hafta yenilenir, bağımlılık güncellemeleri pull request olarak gelir. Ekibiniz yalnız büyük sürüm geçişlerini onaylar.

Neler alırsınız

  • Her push test ortamına çıkar

    Her git push derlenir ve test ortamına dağıtılır; uygulamanın adresi birkaç dakika içinde yanıt verir. Geliştirici yaptığı değişikliği çalışır hâlde görmek için kimseden dağıtım istemez, talep açıp beklemez.

  • Test ettiğiniz imaj üretime çıkar

    Üretime çıkan sürüm, test ortamındaki imajın digest değeriyle üretim alanına yapılan birebir kopyasıdır. Kopyalamadan sonra digest yeniden kontrol edilir; değeri tutmayan bir imaj üretime gitmez ve çalışan sürüm olduğu gibi kalır.

  • Üretime yalnız sürüm ekibi çıkar

    Üretime alma yetkisi projeye tanımlı bir sürüm ekibindedir; diğer geliştiriciler test ortamına istedikleri kadar dağıtır. Bu kural kaldırılırsa hat sürümü reddeder, böylece yetki sessizce genişlemez.

  • Bozuk sürümde tek hamlede geri dönüş

    Çöken pod, bulunamayan imaj ya da hatalı yapılandırma beklenmeden hata sayılır. Önceki sürümün imajı ve yapılandırması birlikte geri konur, ardından üretimin yeniden hizmet verdiği kontrol edilir; yarım kalmış bir geri alma oluşmaz.

  • Yamalar kod değişmeden gelir

    Her hafta yamalı işletim sistemi katmanı, uygulama katmanına dokunmadan bütün imajların altına geçirilir. Bunun için yeniden derleme, pull request ya da geliştirici işi gerekmez; ekip yeni özellik üzerinde çalışırken imajların tabanı güncel kalır.

  • Dockerfile yazmadan derleme

    Hat dili ve çatıyı depodaki dosyalardan tanır ve imajı kaynak koddan kendisi üretir; Dockerfile yazmanız gerekmez. Özel bir ihtiyacınız varsa kendi Dockerfile'ınızla da derleyebilirsiniz, temel imaj platformun deposundan gelir.

  • Uygulamanız tek bir dosyada tanımlı

    Uygulamanın adı, portu, boyu, sağlık kontrolü, ortam değişkenleri ve bağımlılıkları tek bir kısa dosyada yazılır. Kubernetes manifesti yazmazsınız; hat bu dosyadan kaynak limiti ve kesinti bütçesi gibi zorunlu kuralları taşıyan manifestleri üretir.

  • Veritabanı tek satırla gelir

    Uygulama tanımına veritabanı bağımlılığını yazdığınızda test ortamında tek kopya, üretimde yedekli üç kopyalı bir veritabanı kurulur. Bağlantı adresi ortam değişkeni olarak container'a gelir; veritabanını ayrıca sipariş edip bağlamanız gerekmez.

  • Her projeye kendi derleme ortamı

    Her proje kendi runner'ında, kendi ad alanında derlenir. Bir projenin derlemesi yalnız o projenin imaj alanına yazabilir; bir müşteri projesine kurulan araç ya da bırakılan dosya öteki projelerin derlemesine taşınmaz.

  • Taranan, root olmayan imajlar

    Hattın ürettiği imajlar Nesnet'in özel deposunda güvenlik açıklarına karşı taranır, yazılım malzeme listesiyle (SBOM) birlikte saklanır ve root olmayan kullanıcıyla çalışır. Platform deposu dışından gelen ya da root çalışan bir imaj cluster'a kabul edilmez.

  • Bağımlılıklar kendiliğinden güncellenir

    Bir güncelleme botu chart, imaj ve iş akışı sürümlerinin yenisini bulduğunda pull request açar. Yama ve küçük sürüm güncellemeleri otomatik birleşir, büyük sürüm değişiklikleri bir insanın onayını bekler; hangi sürümün ne zaman değiştiği commit geçmişinde görünür.

  • Sırlar geliştiriciye bile görünmez

    Parola ve API anahtarları depoda düz metin olarak durmaz; şifreli olarak ya da ayrı bir sır kasasında tutulur. Uygulama dosyasında yalnız sırrın adı yazar, değeri çalışma anında container'a ulaşır ve git geçmişine hiç girmez.

  • Kendi alan adınız, otomatik HTTPS

    Uygulamanıza kendi alan adınızı CNAME kaydıyla bağlarsınız; TLS sertifikası kendiliğinden alınır ve süresi dolmadan yenilenir. Sertifikanın bitiş tarihini takvime yazmanız ya da yeni dosyayı elle yüklemeniz gerekmez.

  • Uygulamalar yalnız izin verilenle konuşur

    Bir uygulamanın hangi uygulamalardan istek kabul edeceğini ve hangilerini çağıracağını uygulama dosyasında beyan edersiniz. Hat bu beyanı ağ ve yetki politikasına çevirir, çağrılan uygulamanın adresini de ortam değişkeni olarak verir.

  • Uygulama girişine tek oturum

    İç kullanıcılara açılan bir uygulamanın önüne isteğe bağlı olarak kurumsal kimlik doğrulaması konur. Kullanıcılar Kimlik ve SSO hesabıyla giriş yapar; uygulamanıza ayrı bir giriş ekranı yazmanız gerekmez.

  • Silinemeyen sürüm kaydı

    Her sürüm, proje başına yalnız ekleme yapılabilen bir kayda yazılır: ne çıktı, ne zaman çıktı, geri alındı mı. Bir denetimde ya da olay incelemesinde üretim geçmişini ayrı bir sistemde aramazsınız.

  • Konsoldan sürüm ve geri alma

    Web konsolunda sürümü üretime alır, gerekirse önceki sürüme döner, sırları, eklentileri, alan adlarını ve yedekleri yönetirsiniz. Komut satırını sevmeyen ekip üyeleri de aynı kurallarla, aynı yetkilerle çalışır.

  • Yapay zekâ ajanıyla dağıtım

    Kodlama ajanınız hatta MCP arayüzü üzerinden bağlanır ve geliştiricinin yaptığı işleri aynı GitOps yollarıyla yapar. Ajan cluster'a doğrudan yazamaz; her değişikliği bir commit olarak bırakır ve sürüm ekibinin kuralına tabidir.

Neden Nesnet

  • Üretime yeniden derleme gitmez

    Üretime alma bir derleme adımı değildir: test ortamında denenen imaj üretim alanına birebir kopyalanır ve kopyanın digest değeri doğrulanır. "Testte çalışıyordu" sürprizlerinin en sık nedeni olan ikinci derleme bu hatta yoktur.

  • Nesnet'in işlettiği platformlarda her gün çalışıyor

    Bu hat, Nesnet'in kurup işlettiği müşteri platformlarında her gün üretimde kullanılıyor. Kurulum o platformlardaki canlı ürünler çalışmaya devam ederken yapıldı; size kurulan hat aynı bileşenler ve aynı kurallarla gelir.

  • Cluster'a yalnız GitOps yazar

    Dağıtımı yalnız GitOps aracı yapar; cluster'a başka hiçbir araç ya da kişi doğrudan yazmaz. Platformun kendi otomasyonu bile üretimi değiştiremez, her değişiklik bir commit olarak gelir.

  • Dışarıdan bağlantı açılmaz

    Dağıtım için cluster'a internetten gelen bir webhook bağlantısı açılmaz; hat değişiklikleri içeriden yoklayarak alır. Kod deponuzda paylaşılan bir sır da tutulmaz, sızdırılacak bir anahtar yoktur.

  • Kodunuz ve imajlarınız Türkiye'de

    Derleme Nesnet'in runner'larında yapılır, imajlar Nesnet'in özel deposunda durur ve uygulamalar Equinix İstanbul (Dudullu) ile Türk Telekom Ankara veri merkezlerindeki cluster'larda çalışır. Derlenen yazılımınız yurt dışındaki bir derleme servisinden geçmez.

  • Tek aylık fatura, e-Fatura

    Hat ve üzerinde çalıştığı cluster kaynakları tek bir aylık faturada, e-Fatura biçiminde gelir. Dakika başına ücretlendirilen yurt dışı bir derleme servisinin ödeme takibi muhasebenizin gündeminden çıkar.

Örnek senaryolar

  • Elle dağıtımdan commit'e geçen ürün ekibi

    Durum

    Bir ürün ekibi yeni sürümleri sunucuya bağlanıp dosya kopyalayarak yayınlıyor. Kimin neyi değiştirdiği kayıtlı değil, bir hatadan sonra çalışan son hâli bulmak saatler sürüyor.

    Sonuç

    Geliştiriciler push ediyor, değişiklik test ortamına çıkıyor; yeni sürümü üretime sürüm ekibi alıyor. Bozuk bir sürümde önceki imaj ve yapılandırma birlikte geri geliyor, her adım git geçmişinde duruyor.

  • Testte çalışıp üretimde bozulan sürüm

    Durum

    Bir yazılım ekibi üretim için ayrı bir derleme yapıyor. Test ortamında görülmeyen bir hata yalnız üretimde ortaya çıkıyor, çünkü iki ortamdaki imaj aynı değil.

    Sonuç

    Hatta üretime çıkan imaj, test ortamındaki imajın digest ile doğrulanmış kopyası oluyor. İki ortam arasındaki fark yapılandırmayla sınırlı kalıyor ve o da git'te görünüyor.

  • Birden çok müşteri projesi yürüten yazılım firması

    Durum

    Bir yazılım firması farklı müşterileri için ayrı projeler geliştiriyor. Ortak bir derleme sunucusunda bir projeye kurulan araç ötekinin derlemesini bozabiliyor.

    Sonuç

    Her proje kendi runner'ında ve kendi ad alanında derleniyor; bir projenin derlemesi yalnız kendi imaj alanına yazabiliyor. Yeni bir müşteri projesi açmak bir kayıt adımından ibaret oluyor.

  • Güvenlik taraması kırmızı yanan imajlar

    Durum

    Bir şirketin onlarca servisinin imajı aynı eski işletim sistemi tabanını taşıyor ve tarama raporu her ay daha uzun çıkıyor. Her servisi tek tek yeniden derlemek için ekipte zaman yok.

    Sonuç

    Haftalık yenileme yamalı tabanı bütün imajların altına geçiriyor, uygulama katmanı değişmiyor. Tarama raporu kısalıyor ve geliştiriciler bunun için tek satır kod yazmıyor.

  • Denetime hazırlanan kurum

    Durum

    Bir kurumun iç denetimi, üretime son altı ayda hangi değişikliğin kimin onayıyla çıktığını soruyor. Dağıtımlar elle yapıldığı için cevap e-postalardan derleniyor.

    Sonuç

    Hatta her sürüm silinemeyen bir kayda, her değişiklik bir commit'e yazılıyor. Denetçiye sürüm kaydı ve git geçmişi gösteriliyor; onayı kimin verdiği sürüm ekibi listesinden okunuyor.

Kim neyi yapar

NesnetSiz
Runner'ları, özel imaj deposunu ve GitOps dağıtımını kurar ve işletir.Kodunuzu ve testlerinizi yazar, GitHub deponuza push edersiniz.
Digest ile üretime alma, digest doğrulaması ve birlikte geri alma kurallarını işletir.Sürüm ekibinde kimlerin olacağını siz belirlersiniz.
İmajların altındaki işletim sistemi katmanını her hafta yeniler.Hangi sürümün ne zaman üretime çıkacağına sürüm ekibiniz karar verir.
Her projeye ayrı runner, ayrı ad alanı, kota ve ağ politikası açar.Büyük sürüm bağımlılık güncellemelerini siz onaylarsınız.
Alan adı sertifikalarını alır ve süresi dolmadan yeniler.Uygulama dosyanızda bağımlılıkları, sırların adlarını ve erişim izinlerini siz tanımlarsınız.

Kimler için

  • Operasyon ekibi olmayan yazılım ekipleri

    Operasyon ekibi olmayan ve kurmayı düşünmeyen yazılım ekipleri. Kubernetes bilmeyen bir geliştirici push eder, uygulama birkaç dakika içinde test ortamında çalışmaya başlar.

  • Üretime çıkışı sınırlamak isteyenler

    Herkesin test ortamına dağıtabildiği, ama üretime yalnız sürüm ekibinin çıkarabildiği bir düzen isteyen ekipler. Yetki tek bir listede durur, araçlara tek tek yazılmaz.

  • Çok projeli yazılım firmaları

    Aynı anda birden çok müşteri projesi yürüten yazılım firmaları. Her proje kendi runner'ında, kendi ad alanında derlenir ve projeler birbirinin derlemesine dokunamaz.

  • Elle dağıtım yapan ekipler

    Bugün sunucuya bağlanıp dosya kopyalayarak ya da elle kubectl komutuyla yayın yapan ekipler. Her değişiklik bir commit olduğu için denetim izi kendiliğinden oluşur.

  • Denetime hazır olmak isteyen kurumlar

    Kimin, neyi, ne zaman üretime aldığını yazılı olarak gösterebilmesi gereken kurumlar. Her sürüm silinemeyen bir kayda yazılır, üretimdeki her değişikliğin git geçmişinde karşılığı vardır.

Uygun olmayabilir

Kaynak kodunu GitHub dışında tutan ve taşımayı düşünmeyen ekipler; hat derlemeyi GitHub iş akışlarıyla yapar. Bu durumda Yönetilen Kubernetes daha uygundur; cluster'ın kubeconfig dosyasıyla kendi derleme aracınızdan dağıtım yapabilirsiniz.

Tek bir web uygulamasını sürüm ekibi ve ayrı ortamlar kurmadan yayınlamak isteyen geliştiriciler. Bu durumda Nesly Sunucusuz Platform daha uygundur; aynı push ile yayına çıkma kolaylığının self servis karşılığıdır.

Altyapının içi

Derleme ve testler GitHub Actions iş akışlarınızla çalışır; bu iş akışlarını yürüten runner'lar Nesnet bulutundaki bir Kubernetes cluster'ının içinde, her proje için ayrı açılır. Derlenen imaj Nesnet'in kendi imaj deposuna yazılır ve güvenlik açıklarına karşı taranır. Cluster'lara dağıtımı yalnız GitOps denetleyicisi yapar; istenen durum git'te durur ve cluster bu duruma getirilir. Chart, imaj ve Actions sürümleri için güncelleme önerileri pull request olarak gelir; alan adlarının sertifikaları otomatik sertifika yönetimiyle kendiliğinden alınır ve yenilenir. Nesnet bu araçların üstüne kendi kurallarını ekler: üretime alma digest kopyasıyla yapılır ve doğrulanır, üretime yalnız yetkili sürüm ekibi çıkarabilir, bozuk sürümde imaj ve yapılandırma birlikte geri konur, işletim sistemi katmanı her hafta yenilenir. Hat, Nesnet bulutundaki Yönetilen Kubernetes cluster'larında çalışır.

Yapı taşları

GitHub Actions iş akışları
derlemeyi ve testleri çalıştırır; iş akışı dosyası sizin deponuzda durur
Proje başına runner
iş akışlarını cluster içinde, her proje için ayrı çalıştırır
Özel imaj deposu ve güvenlik taraması
imajlar Nesnet'te durur, açıklara karşı taranır, genel depolar önbelleklenir
GitOps denetleyicisi
cluster'a yazan tek bileşen; istenen durum git'te
Otomatik güncelleme önerileri
chart, imaj ve Actions sürümleri için pull request'ler
Otomatik sertifika yönetimi
alan adı sertifikalarının alınması ve süresi dolmadan yenilenmesi
Yönetilen Kubernetes
hattın dağıtım yaptığı cluster'lar

Diğer seçeneklerle karşılaştırma

SeçenekNe zaman doğru seçim
Kendi derleme aracınız ve Yönetilen KubernetesEkibinizin oturmuş bir derleme hattı (GitLab CI, Jenkins ya da başka bir araç) varsa ve onu değiştirmek istemiyorsanız doğru seçimdir. Cluster'ı Yönetilen Kubernetes olarak alır, kendi hattınızdan kubeconfig ile dağıtırsınız.
Hattı kendi platform ekibinizle kurmakHer bileşenin ayarını kendiniz belirlemek istiyorsanız ve bu araçları yıllarca ayakta tutacak bir platform ekibiniz varsa mantıklıdır. Bu hattaki bileşenlerin hepsi açık kaynak araçlardır; Nesnet'in eklediği şey kurallar ve işletimdir.
Nesly Sunucusuz PlatformTek uygulamalı, sürüm ekibi ve ayrı ortam gerektirmeyen projelerde daha hafiftir. Bağladığınız dala gelen push doğrudan yayına çıkar ve hesap self servis açılır.

Teknik özellikler

Derleme
Derleme ve testGitHub iş akışlarıyla
RunnerCluster içinde, proje başına ayrı
İmaj deposuÖzel depo, güvenlik taraması, genel depolar için önbellek
Dağıtım
Dağıtım yöntemiGitOps; cluster'a yalnız dağıtım aracı yazar
Hedef cluster'larNesnet bulutundaki Kubernetes cluster'ları
Test ortamına dağıtımHer git push ile
Üretime alma ve geri alma
Üretime almaTest edilen imajın digest kopyası, digest doğrulamalı
YetkiYalnız projenin sürüm ekibi
Geri almaİmaj ve yapılandırma birlikte; ardından sağlık doğrulaması
Bakım ve güvenlik
İşletim sistemi katmanıHaftalık yenileme, yeniden derlemesiz
Bağımlılık güncellemesiYama ve küçük sürüm otomatik, büyük sürüm onaylı
SertifikaOtomatik alınır ve yenilenir
SırlarŞifreli git ya da ayrı sır kasası
Konum
Veri merkezleriEquinix İstanbul (Dudullu), Türk Telekom Ankara; veri Türkiye'de kalır

Bir şey bozulursa

  • Üretime çıkan sürüm ayağa kalkmazsa

    Hat bunu beklemeden hata sayar ve önceki sürümün imajını ve yapılandırmasını birlikte geri koyar. Üretimin yeniden hizmet verdiği doğrulanmadan iş bitmiş sayılmaz.

  • Derleme ya da testler başarısız olursa

    Sürüm üretime alınmaz. Üretimde o an çalışan sürüm olduğu gibi kalır; düzeltilen kod yeni bir push ile hattan yeniden geçer.

  • GitOps aracı durursa

    Cluster'lar çalıştırdıkları uygulamaları çalıştırmaya devam eder. Durum yalnız yeni değişikliklerin uygulanmamasıdır; araç yeniden çalıştığında git'teki duruma yetişir.

  • Genel bir imaj deposu erişilemezse

    Derlemenin ihtiyaç duyduğu genel imajlar özel deponun önbelleğinden gelir. Dış deponun sınırı ya da kesintisi derlemeyi yarıda bırakmaz.

Sık sorulan sorular

Fiyatlandırma ve ilk adım

Fiyatlandırma

CI/CD Hattı kaynak kullanımına göre aylık faturalanır ve fatura e-Fatura biçiminde kesilir. Faturayı hatta bağlı proje sayısı, ortamların çalıştığı cluster kaynakları ve derleme yoğunluğu belirler; kapsam teklif aşamasında birlikte çıkarılır.

Fiyatı belirleyenler

  • Hatta bağlanan proje sayısı; her proje kendi runner'ıyla gelir
  • Test ve üretim ortamlarının sayısı ve çalıştıkları cluster'ların node boyu
  • Derleme yoğunluğu; runner'lar cluster'ın vCPU ve RAM'ini kullanır
  • Uygulamaların bağlandığı veritabanı gibi ek hizmetler

Nasıl başlarsınız

  1. 1.Formu doldurun ya da 0800 606 1071'i arayın.
  2. 2.Depolarınız, ortamlarınız ve sürüm ekibiniz bir görüşmede netleşir; teklif hazırlanır.
  3. 3.Projeniz kaydedilir, geliştiricileriniz ilk push'u yapar.

Üretime test ettiğiniz imaj çıksın

Projelerinizi, ortamlarınızı ve sürüm düzeninizi Nesnet ekibine anlatın; aynı iş günü içinde dönüş yapılır. İlk push'tan sonra geliştiricileriniz kimseden dağıtım istemez, üretime yalnız onayladığınız sürüm çıkar.