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.
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ün | Nesnet 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
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
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
İ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
İ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
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
| Nesnet | Siz |
|---|---|
| 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çenek | Ne zaman doğru seçim |
|---|---|
| Kendi derleme aracınız ve Yönetilen Kubernetes | Ekibinizin 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 kurmak | Her 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 Platform | Tek 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 ve test | GitHub iş akışlarıyla |
|---|---|
| Runner | Cluster içinde, proje başına ayrı |
| İmaj deposu | Özel depo, güvenlik taraması, genel depolar için önbellek |
| Dağıtım yöntemi | GitOps; cluster'a yalnız dağıtım aracı yazar |
|---|---|
| Hedef cluster'lar | Nesnet bulutundaki Kubernetes cluster'ları |
| Test ortamına dağıtım | Her git push ile |
| Üretime alma | Test edilen imajın digest kopyası, digest doğrulamalı |
|---|---|
| Yetki | Yalnız projenin sürüm ekibi |
| Geri alma | İmaj ve yapılandırma birlikte; ardından sağlık doğrulaması |
| İşletim sistemi katmanı | Haftalık yenileme, yeniden derlemesiz |
|---|---|
| Bağımlılık güncellemesi | Yama ve küçük sürüm otomatik, büyük sürüm onaylı |
| Sertifika | Otomatik alınır ve yenilenir |
| Sırlar | Şifreli git ya da ayrı sır kasası |
| Veri merkezleri | Equinix İ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.Formu doldurun ya da 0800 606 1071'i arayın.
- 2.Depolarınız, ortamlarınız ve sürüm ekibiniz bir görüşmede netleşir; teklif hazırlanır.
- 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.
