Docker ve Kubernetes Nedir? Konteyner Yönetimi Rehberi
Docker Kubernetes Service: Konteynerleştirme ve Orkestrasyon Süreçleri
Modern yazılım uygulamalarının geliştirilmesi kadar farklı ortamlarda tutarlı, güvenilir ve ölçeklenebilir biçimde çalıştırılması da önemlidir. Bir uygulamanın geliştiricinin bilgisayarında sorunsuz çalışmasına rağmen test veya üretim ortamında hata vermesi; işletim sistemi, bağımlılık, yapılandırma ve çalışma zamanı farklılıklarından kaynaklanabilir.
Docker, uygulamaların ihtiyaç duydukları bağımlılıklarla birlikte taşınabilir konteynerler içinde paketlenmesini sağlayan teknolojilerden biridir. Kubernetes ise çok sayıda konteynerin dağıtılması, çalıştırılması, ölçeklendirilmesi ve izlenmesi için kullanılan bir konteyner orkestrasyon platformudur.
Bu iki teknoloji birlikte kullanıldığında uygulamaların geliştirme ortamından test ve üretim ortamlarına daha tutarlı biçimde taşınması, servislerin ölçeklendirilmesi ve dağıtım süreçlerinin otomatikleştirilmesi mümkün hâle gelebilir.
Docker, Kubernetes, konteyner yönetimi ve modern DevOps süreçleri hakkında bilgi geliştirmek isteyenler Docker Kubernetes Service Sertifika Programı kapsamında sunulan eğitim içeriğini inceleyebilir.
Docker Nedir?
Docker, uygulamaların ve bu uygulamaların çalışması için gereken bileşenlerin konteyner adı verilen izole ortamlarda paketlenmesini sağlayan bir platformdur. Konteyner içerisinde uygulama kodu, çalışma zamanı, sistem araçları, kütüphaneler ve gerekli yapılandırmalar bir araya getirilebilir.
Bu yaklaşım, uygulamanın farklı sistemlerde daha tutarlı biçimde çalıştırılmasına yardımcı olur. Geliştirme, test ve üretim ortamlarında aynı konteyner imajının kullanılması, ortam farklılıklarından kaynaklanan bazı problemlerin azaltılmasını destekleyebilir.
Docker ile:
- Uygulamalar taşınabilir paketler hâline getirilebilir
- Bağımlılıklar uygulamayla birlikte tanımlanabilir
- Geliştirme ortamları daha hızlı kurulabilir
- Farklı uygulamalar birbirinden izole çalıştırılabilir
- Dağıtım süreçleri standartlaştırılabilir
- Mikroservis tabanlı mimariler desteklenebilir
- CI/CD süreçlerinde tutarlı çalışma ortamları oluşturulabilir
Konteyner Nedir?
Konteyner, bir uygulamanın ihtiyaç duyduğu dosyalar ve bağımlılıklarla birlikte izole bir çalışma ortamında çalıştırılmasını sağlayan yapıdır. Konteynerler ana işletim sisteminin çekirdeğini paylaşabilir ancak süreç, dosya sistemi ve ağ düzeyinde belirli ölçülerde birbirinden ayrılır.
Bir konteyner içinde:
- Uygulama kaynak kodu veya derlenmiş dosyalar
- Çalışma zamanı bileşenleri
- Gerekli kütüphaneler
- Ortam değişkenleri
- Yapılandırma dosyaları
- Uygulamanın başlatılma komutu
yer alabilir.
Konteynerler uygulamaların aynı işletim sistemi üzerinde birbirinden ayrılmış süreçler olarak çalışmasını sağlar. Bu nedenle birçok kullanım senaryosunda geleneksel sanal makinelere kıyasla daha az kaynakla başlatılabilir.
Docker ile Sanal Makine Arasındaki Fark
| Değerlendirme Alanı | Docker Konteyneri | Sanal Makine |
|---|---|---|
| İşletim sistemi | Ana sistem çekirdeğini paylaşabilir | Kendi misafir işletim sistemini çalıştırır |
| Başlatma süresi | Genellikle daha kısadır | İşletim sistemi açılışı gerektiği için daha uzun olabilir |
| Kaynak kullanımı | Görece daha hafif olabilir | Daha fazla işlemci, bellek ve depolama kullanabilir |
| İzolasyon | Süreç ve konteyner düzeyindedir | İşletim sistemi ve sanallaştırma düzeyindedir |
| Taşınabilirlik | Konteyner imajları üzerinden sağlanır | Sanal makine imajları üzerinden sağlanır |
| Yaygın kullanım | Uygulama paketleme ve mikroservisler | Tam işletim sistemi izolasyonu ve farklı sistemler |
Konteynerler ve sanal makineler birbirlerinin doğrudan alternatifi olmak zorunda değildir. Birçok altyapıda sanal makineler üzerinde Docker konteynerleri çalıştırılabilir.
Docker Image Nedir?
Docker image, konteyner oluşturmak için kullanılan değiştirilemez uygulama şablonudur. Bir imaj içerisinde uygulamanın çalışması için gereken dosyalar, kütüphaneler, çalışma zamanı ve başlangıç komutları bulunabilir.
Aynı Docker image kullanılarak birden fazla konteyner oluşturulabilir. Böylece test edilmiş bir uygulama paketi farklı sunucularda aynı temel yapı ile çalıştırılabilir.
Docker image yapısının temel özellikleri şunlardır:
- Katmanlardan oluşabilir
- Sürümlendirilebilir
- Merkezî veya özel depolarda saklanabilir
- Farklı ortamlara taşınabilir
- Aynı yapıdan birden fazla konteyner üretilebilir
Dockerfile Nedir?
Dockerfile, bir Docker image oluşturmak için uygulanacak adımların tanımlandığı metin dosyasıdır. Kullanılacak temel imaj, kopyalanacak dosyalar, kurulacak paketler ve çalıştırılacak komutlar bu dosyada belirtilebilir.
Dockerfile kullanmak:
- İmaj oluşturma sürecini tekrar edilebilir hâle getirir
- Yapılandırmaların sürüm kontrolünde tutulmasını sağlar
- Manuel kurulum adımlarını azaltır
- CI/CD süreçlerinde otomatik image üretimini destekler
- Ekip üyelerinin aynı uygulama paketini oluşturmasına yardımcı olur
İyi hazırlanmış bir Dockerfile mümkün olduğunca küçük, anlaşılır ve güvenli bir image üretmeyi hedeflemelidir.
Docker Container ile Docker Image Arasındaki Fark
Docker image, uygulamanın çalıştırılabilir şablonudur. Container ise bu şablondan oluşturulan çalışan örnektir.
Bu ilişki bir sınıf ile sınıftan oluşturulan nesneye benzetilebilir. Aynı image kullanılarak farklı yapılandırmalara ve ağ bağlantılarına sahip birden fazla container çalıştırılabilir.
| Özellik | Docker Image | Docker Container |
|---|---|---|
| Temel yapı | Uygulama şablonu | Image üzerinden oluşturulan çalışan süreç |
| Durum | Değiştirilemez paket olarak değerlendirilir | Başlatılabilir, durdurulabilir ve silinebilir |
| Kullanım | Dağıtım ve sürümleme | Uygulamayı çalıştırma |
Docker Registry Nedir?
Docker registry, container image’larının saklandığı ve dağıtıldığı sistemdir. Geliştirme ekipleri oluşturdukları image’ları registry üzerinde tutabilir ve farklı ortamlara buradan aktarabilir.
Registry kullanımı:
- Image sürümlerinin merkezî olarak yönetilmesini
- Geliştirme ve üretim ekiplerinin aynı paketleri kullanmasını
- CI/CD süreçlerinde image indirme ve yükleme işlemlerini
- Erişim yetkilerinin kontrol edilmesini
- Image güvenlik taramalarının uygulanmasını
destekleyebilir.
Docker Volume Nedir?
Konteynerler geçici çalışma yapıları olarak tasarlanabilir. Bir konteyner silindiğinde yalnızca konteynerin yazılabilir katmanında bulunan veriler de kaybolabilir. Docker volume, kalıcı verilerin konteyner yaşam döngüsünden bağımsız biçimde saklanmasına yardımcı olur.
Volume kullanımı özellikle:
- Veri tabanı dosyalarının saklanması
- Uygulama tarafından oluşturulan kalıcı verilerin korunması
- Birden fazla konteyner arasında veri paylaşılması
- Yapılandırma dosyalarının dışarıdan sağlanması
- Yedekleme süreçlerinin yönetilmesi
gibi senaryolarda önem taşır.
Docker Network Nedir?
Docker network, konteynerlerin birbirleriyle ve dış sistemlerle nasıl iletişim kuracağını belirler. Aynı ağdaki konteynerler servis isimleri veya tanımlanan ağ kuralları üzerinden haberleşebilir.
Konteyner ağları sayesinde:
- Uygulama ve veri tabanı servisleri birbirine bağlanabilir
- İç servisler dış erişime kapatılabilir
- Farklı uygulama grupları ayrı ağlarda tutulabilir
- Port yönlendirme kuralları tanımlanabilir
- Mikroservisler arasında kontrollü iletişim kurulabilir
Docker Compose Nedir?
Docker Compose, birden fazla konteynerden oluşan uygulamaların tek bir yapılandırma dosyası üzerinden tanımlanmasını ve birlikte çalıştırılmasını sağlar.
Örneğin bir web uygulaması:
- Uygulama servisi
- Veri tabanı
- Önbellek sistemi
- Mesaj kuyruğu
- Yönetim arayüzü
gibi farklı konteynerlerden oluşabilir. Compose dosyasında bu servislerin image bilgileri, portları, volume bağlantıları, ortam değişkenleri ve ağ yapıları tanımlanabilir.
Docker Compose özellikle geliştirme ve test ortamlarının hızlı biçimde kurulmasında kullanılabilir.
Kubernetes Nedir?
Kubernetes, konteyner tabanlı uygulamaların dağıtılması, yönetilmesi ve ölçeklendirilmesi için kullanılan açık kaynaklı bir orkestrasyon platformudur.
Tek bir sunucuda birkaç konteyneri Docker komutlarıyla yönetmek mümkün olabilir. Ancak çok sayıda sunucuda yüzlerce veya binlerce konteynerin çalıştığı yapılarda manuel yönetim zorlaşır. Kubernetes bu operasyonları bildirimsel yapılandırmalar ve otomatik kontrol mekanizmalarıyla yönetmeyi amaçlar.
Kubernetes ile:
- Konteynerler farklı sunuculara dağıtılabilir
- Uygulama örnekleri otomatik ölçeklendirilebilir
- Çalışmayan konteynerler yeniden başlatılabilir
- Servis keşfi ve yük dengeleme sağlanabilir
- Sürümlü dağıtımlar yönetilebilir
- Yapılandırmalar ve hassas bilgiler dışarıdan sağlanabilir
- Kaynak kullanımı sınırlandırılabilir
Konteyner Orkestrasyonu Nedir?
Konteyner orkestrasyonu, çok sayıda konteynerin otomatik biçimde dağıtılması, çalıştırılması, ölçeklendirilmesi ve izlenmesi sürecidir.
Orkestrasyon sistemleri şu görevleri üstlenebilir:
- Konteynerleri uygun sunuculara yerleştirmek
- İstenen uygulama örneği sayısını korumak
- Başarısız konteynerleri yeniden oluşturmak
- Ağ ve servis erişimini yönetmek
- Yükü çalışan örnekler arasında dağıtmak
- Uygulama güncellemelerini kontrollü biçimde gerçekleştirmek
- Kaynak kullanımını izlemek
Kubernetes Cluster Nedir?
Kubernetes cluster, konteyner uygulamalarını çalıştırmak için birlikte çalışan sunucu ve bileşenlerin oluşturduğu yapıdır. Cluster genel olarak kontrol düzlemi ve worker node bileşenlerinden meydana gelir.
Kontrol düzlemi:
- Cluster durumunu yönetir
- Yeni iş yüklerinin yerleştirilmesine karar verir
- Tanımlanan yapı ile mevcut durumu karşılaştırır
- API üzerinden yönetim işlemlerini kabul eder
Worker node’lar ise uygulama pod’larının ve konteynerlerin çalıştırıldığı sunuculardır.
Kubernetes Pod Nedir?
Pod, Kubernetes ortamındaki en küçük dağıtılabilir çalışma birimidir. Bir pod çoğunlukla tek bir ana uygulama konteyneri içerir ancak aynı yaşam döngüsünü paylaşması gereken birden fazla konteyneri de barındırabilir.
Aynı pod içerisindeki konteynerler:
- Aynı ağ alanını paylaşabilir
- Birbirleriyle yerel bağlantı üzerinden iletişim kurabilir
- Ortak depolama alanlarını kullanabilir
- Birlikte başlatılıp sonlandırılabilir
Pod’lar kalıcı sunucular gibi değerlendirilmemelidir. Kubernetes gerekli olduğunda bir pod’u silerek farklı bir node üzerinde yenisini oluşturabilir.
Kubernetes Deployment Nedir?
Deployment, bir uygulamanın kaç pod örneğiyle ve hangi container image kullanılarak çalıştırılacağını tanımlayan Kubernetes kaynağıdır.
Deployment ile:
- İstenen pod sayısı belirlenebilir
- Uygulama image sürümü güncellenebilir
- Yeni sürümler kontrollü biçimde dağıtılabilir
- Başarısız güncellemeler geri alınabilir
- Pod sayısı artırılıp azaltılabilir
Kubernetes, Deployment tarafından tanımlanan istenen durum ile cluster’daki mevcut durumu sürekli karşılaştırır.
Kubernetes Service Nedir?
Kubernetes Service, bir veya birden fazla pod’a kararlı bir ağ erişim noktası sağlar. Pod’ların IP adresleri yeniden oluşturulduklarında değişebilir. Service yapısı, istemcilerin tek tek pod adreslerini takip etmesi yerine sabit bir servis adı ve erişim noktası kullanmasına yardımcı olur.
Kubernetes Service:
- Uygun pod’ları etiketler üzerinden belirleyebilir
- İstekleri çalışan pod’lara yönlendirebilir
- Cluster içi servis keşfini destekleyebilir
- Uygulamaları cluster dışına açabilir
- Pod değişikliklerini istemcilerden soyutlayabilir
Kubernetes Service Türleri
Kubernetes farklı erişim ihtiyaçları için çeşitli Service türleri sunar.
- ClusterIP: Servisi yalnızca cluster içerisinden erişilebilir hâle getirir.
- NodePort: Servisi node’lar üzerindeki belirli portlardan erişime açabilir.
- LoadBalancer: Uyumlu bulut ortamlarında harici yük dengeleyici oluşturulmasını sağlayabilir.
- ExternalName: Cluster içindeki servis adını dış bir alan adıyla ilişkilendirebilir.
Service türü belirlenirken uygulamanın yalnızca iç sistemler tarafından mı yoksa dış kullanıcılar tarafından mı erişileceği değerlendirilmelidir.
Ingress Nedir?
Ingress, HTTP ve HTTPS trafiğinin cluster içindeki farklı servislere yönlendirilmesi için kullanılan Kubernetes kaynağıdır.
Ingress kurallarıyla:
- Alan adına göre yönlendirme yapılabilir
- URL yoluna göre farklı servislere trafik aktarılabilir
- TLS sertifikaları yönetilebilir
- Tek giriş noktası üzerinden birden fazla uygulamaya erişim sağlanabilir
Ingress kaynağının çalışabilmesi için cluster içerisinde uyumlu bir Ingress Controller bulunması gerekir.
ConfigMap ve Secret Nedir?
Uygulama yapılandırmalarının container image içine doğrudan yazılması, aynı image’ın farklı ortamlarda kullanılmasını zorlaştırabilir. Kubernetes, yapılandırmaları ve hassas bilgileri uygulama image’ından ayırmak için ConfigMap ve Secret kaynaklarını sunar.
ConfigMap, hassas olmayan yapılandırmaları saklamak amacıyla kullanılabilir:
- Uygulama modu
- Servis adresleri
- Özellik ayarları
- Günlükleme seviyeleri
Secret ise parola, erişim anahtarı ve sertifika gibi hassas bilgilerin yönetilmesine yardımcı olur. Secret kullanılması, bilgilerin otomatik olarak tam güvenli hâle geldiği anlamına gelmez. Erişim yetkileri, şifreleme ve dış sır yönetim sistemleri ayrıca değerlendirilmelidir.
Persistent Volume Nedir?
Pod’lar yeniden oluşturulabildiği için kalıcı verilerin yalnızca pod dosya sistemi içinde tutulması veri kaybına yol açabilir. Kubernetes Persistent Volume yapısı, depolamanın pod yaşam döngüsünden bağımsız yönetilmesine yardımcı olur.
Kalıcı depolama özellikle:
- Veri tabanları
- Dosya paylaşım sistemleri
- Kullanıcı yüklemeleri
- Uygulama tarafından oluşturulan kalıcı içerikler
- Yedekleme alanları
için gerekebilir.
Kubernetes Namespace Nedir?
Namespace, aynı Kubernetes cluster içerisindeki kaynakların mantıksal gruplara ayrılmasını sağlar. Farklı ekipler, projeler veya ortamlar için ayrı namespace’ler oluşturulabilir.
Namespace kullanımı:
- Kaynak isimlerinin ayrılmasını
- Erişim yetkilerinin gruplandırılmasını
- Kaynak kotalarının uygulanmasını
- Geliştirme ve test ortamlarının ayrılmasını
- Ekiplerin kendi kaynaklarını yönetmesini
kolaylaştırabilir.
Kubernetes Ölçeklendirme Nasıl Çalışır?
Ölçeklendirme, uygulama talebine göre çalışan pod sayısının artırılması veya azaltılmasıdır. Kubernetes’te bu işlem manuel veya otomatik olarak gerçekleştirilebilir.
Yatay ölçeklendirmede aynı uygulamaya ait daha fazla pod çalıştırılır. Dikey ölçeklendirmede ise pod’lara ayrılan işlemci ve bellek kaynakları değiştirilebilir.
Otomatik ölçeklendirme kararları:
- İşlemci kullanımı
- Bellek kullanımı
- İstek sayısı
- Mesaj kuyruğu uzunluğu
- Uygulamaya özgü ölçümler
üzerinden verilebilir.
Self-Healing Nedir?
Self-healing, Kubernetes’in çalışmayan veya beklenen durumu karşılamayan iş yüklerini otomatik olarak yeniden oluşturabilmesini ifade eder.
Kubernetes:
- Başarısız konteynerleri yeniden başlatabilir
- Yanıt vermeyen pod’ları servis trafiğinden çıkarabilir
- Çalışmayan pod’un yerine yenisini oluşturabilir
- Bir node kullanılamaz olduğunda iş yüklerini başka node’lara taşıyabilir
Bu özellikler bütün uygulama hatalarını otomatik çözmez. Sağlık kontrollerinin, kaynak sınırlarının ve uygulama davranışlarının doğru yapılandırılması gerekir.
Liveness, Readiness ve Startup Probe
Kubernetes, uygulamaların sağlık durumunu değerlendirmek için farklı probe türleri kullanabilir.
- Liveness probe: Uygulamanın çalışmaya devam edip edemediğini kontrol eder. Başarısızlık durumunda konteyner yeniden başlatılabilir.
- Readiness probe: Uygulamanın trafik kabul etmeye hazır olup olmadığını belirler.
- Startup probe: Yavaş başlayan uygulamaların başlangıç sürecinin tamamlanmasını takip eder.
Bu kontrollerin yanlış yapılandırılması, sağlıklı uygulamaların gereksiz yere yeniden başlatılmasına veya hazır olmayan pod’lara trafik gönderilmesine neden olabilir.
Rolling Update ve Rollback Nedir?
Rolling update, yeni uygulama sürümünün çalışan pod’ları aşamalı biçimde değiştirerek dağıtılmasını sağlar. Bütün uygulama örneklerinin aynı anda durdurulması yerine eski ve yeni sürümler belirli bir süre birlikte çalışabilir.
Rollback ise yeni sürümde ciddi bir problem belirlenmesi durumunda önceki çalışan sürüme dönülmesini ifade eder.
Güvenilir güncelleme süreci için:
- Uygulama sürümleri açık biçimde etiketlenmelidir
- Sağlık kontrolleri tanımlanmalıdır
- Kaynak gereksinimleri belirlenmelidir
- Otomatik testler çalıştırılmalıdır
- Geri dönüş planı hazırlanmalıdır
Docker ve Kubernetes Birlikte Nasıl Kullanılır?
Docker uygulamanın container image olarak paketlenmesine odaklanırken Kubernetes bu image’lardan oluşturulan konteynerlerin cluster üzerinde yönetilmesini sağlar.
Genel bir süreç şu şekilde ilerleyebilir:
- Uygulama geliştirilir.
- Dockerfile hazırlanır.
- Container image oluşturulur.
- Image test edilir.
- Image bir registry sistemine yüklenir.
- Kubernetes Deployment tanımlanır.
- Pod’lar cluster üzerinde çalıştırılır.
- Service ile ağ erişimi sağlanır.
- Uygulama izlenir ve gerektiğinde ölçeklendirilir.
Docker, Kubernetes ve Mikroservis Mimarisi
Mikroservis mimarisinde uygulama, belirli iş sorumluluklarına sahip küçük ve bağımsız servislere ayrılır. Her servis ayrı bir container image olarak paketlenebilir ve Kubernetes üzerinde bağımsız biçimde dağıtılabilir.
Bu yaklaşım:
- Servislerin bağımsız ölçeklendirilmesini
- Farklı ekiplerin ayrı servisler üzerinde çalışmasını
- Servislerin farklı zamanlarda yayınlanmasını
- Teknoloji seçimlerinin servis düzeyinde yapılmasını
destekleyebilir.
Bununla birlikte mikroservis mimarisi dağıtık sistem karmaşıklığını artırabilir. Ağ iletişimi, veri tutarlılığı, hata yönetimi, izleme ve güvenlik konuları ayrıca ele alınmalıdır.
Dağıtık yazılım mimarileri hakkında bilgi geliştirmek isteyenler mikroservis ve dağıtık sistemler eğitim programını inceleyebilir.
Docker ve Kubernetes’in DevOps Süreçlerindeki Yeri
DevOps, yazılım geliştirme ve operasyon ekipleri arasındaki iş birliğini güçlendirmeyi ve yazılımın daha hızlı, güvenilir ve tekrarlanabilir biçimde teslim edilmesini amaçlar.
Docker ve Kubernetes DevOps süreçlerine şu alanlarda katkı sağlayabilir:
- Uygulama paketlerinin standartlaştırılması
- Geliştirme ve üretim ortamları arasındaki farklılıkların azaltılması
- Dağıtımların otomatikleştirilmesi
- Altyapı ve uygulama yapılandırmalarının sürümlenmesi
- Uygulamaların daha hızlı ölçeklendirilmesi
- Hatalı sürümlerin geri alınması
- Kaynak kullanımının izlenmesi
Yazılım yaşam döngüsü ve operasyon iş birliği konusunda temel bilgi geliştirmek isteyenler DevOps temelleri ve yazılım yaşam döngüsü eğitimini değerlendirebilir.
Docker ve Kubernetes CI/CD Süreçlerine Nasıl Eklenir?
CI/CD süreçleri uygulama değişikliklerinin otomatik olarak derlenmesini, test edilmesini ve uygun ortamlara dağıtılmasını sağlar.
Docker ve Kubernetes kullanılan örnek bir pipeline şu adımları içerebilir:
- Kaynak kodun depodan alınması
- Uygulamanın derlenmesi
- Birim ve entegrasyon testlerinin çalıştırılması
- Docker image oluşturulması
- Image güvenlik taramasının yapılması
- Image’ın registry sistemine yüklenmesi
- Kubernetes manifestlerinin doğrulanması
- Test ortamına dağıtım yapılması
- Otomatik kontrollerin çalıştırılması
- Uygun koşullarda üretim dağıtımının gerçekleştirilmesi
CI/CD otomasyonu hakkında bilgi edinmek isteyenler CI/CD süreçleri ve Jenkins eğitim programını inceleyebilir.
Docker ve Kubernetes Güvenliği
Konteyner kullanmak uygulamayı otomatik olarak güvenli hâle getirmez. Kullanılan image’ların, erişim yetkilerinin, ağ kurallarının ve cluster yapılandırmalarının güvenlik bakış açısıyla değerlendirilmesi gerekir.
Temel güvenlik uygulamaları şunlardır:
- Güvenilir ve güncel temel image’lar kullanmak
- Image’ları bilinen güvenlik açıklarına karşı taramak
- Konteynerleri gereksiz yönetici yetkileriyle çalıştırmamak
- Parola ve erişim anahtarlarını image içine eklememek
- En az ayrıcalık ilkesini uygulamak
- Kubernetes rol ve yetkilerini sınırlandırmak
- Ağ politikaları oluşturmak
- Günlükleme ve izleme sistemlerini etkinleştirmek
- Cluster bileşenlerini güncel tutmak
Yazılım geliştirme ve operasyon süreçlerine güvenliği dâhil etmek isteyenler DevSecOps, sürekli güvenlik ve güvenlik otomasyonu programını inceleyebilir.
Kubernetes Kaynak Yönetimi
Bir Kubernetes cluster’ında çok sayıda uygulama aynı sunucuları paylaşabilir. Bu nedenle her uygulamanın işlemci ve bellek gereksinimlerinin tanımlanması önemlidir.
Kaynak yönetiminde:
- Uygulamanın ihtiyaç duyduğu minimum kaynak request olarak tanımlanabilir
- Kullanabileceği en yüksek kaynak limit ile sınırlandırılabilir
- Namespace düzeyinde kaynak kotası uygulanabilir
- Kaynak tüketimi izlenebilir
- Ölçeklendirme kararları ölçümlere göre verilebilir
Yanlış kaynak tanımları uygulama performansını veya cluster kapasitesini olumsuz etkileyebilir.
Gözlemlenebilirlik ve İzleme
Dağıtık ve konteyner tabanlı sistemlerde yalnızca uygulamanın çalışıp çalışmadığını bilmek yeterli değildir. Performans, hata oranı, kaynak kullanımı ve servisler arasındaki iletişim de izlenmelidir.
Gözlemlenebilirliğin temel bileşenleri şunlardır:
- Metrikler: İşlemci, bellek, istek sayısı ve yanıt süresi gibi sayısal ölçümler
- Log kayıtları: Uygulama ve sistem olayları
- Dağıtık izleme: Bir isteğin farklı servisler arasındaki yolculuğunun takip edilmesi
Etkili izleme, performans sorunlarının ve başarısız dağıtımların daha hızlı belirlenmesine yardımcı olabilir.
Docker ve Kubernetes Kullanımında Sık Yapılan Hatalar
- Gereğinden büyük Docker image’ları oluşturmak
- Image sürümlerini yalnızca belirsiz etiketlerle yönetmek
- Hassas bilgileri Dockerfile veya image içine yazmak
- Konteynerleri yönetici yetkisiyle çalıştırmak
- Kalıcı verileri konteyner dosya sisteminde tutmak
- Kaynak request ve limit değerlerini tanımlamamak
- Sağlık kontrollerini kullanmamak
- Pod’ları kalıcı sunucular gibi değerlendirmek
- Güncelleme ve geri dönüş planı hazırlamamak
- Kubernetes erişim yetkilerini gereğinden geniş tanımlamak
- İzleme ve günlükleme süreçlerini ihmal etmek
- Test edilmemiş image’ları doğrudan üretime aktarmak
Docker ve Kubernetes Kimler İçin Uygundur?
Docker ve Kubernetes bilgisi yazılım geliştirme, sistem yönetimi ve bulut altyapılarıyla ilgilenen farklı profesyoneller için yararlı olabilir.
- Yazılım geliştiriciler
- DevOps uzmanları
- Sistem yöneticileri
- Bulut bilişim uzmanları
- Platform mühendisleri
- Site Reliability Engineering ekipleri
- Test otomasyon uzmanları
- Yazılım mimarları
- Bilgi güvenliği çalışanları
- Teknik ekip liderleri
- Konteyner teknolojilerine yönelmek isteyen öğrenciler
Docker ve Kubernetes Öğrenmeden Önce Hangi Bilgiler Yararlıdır?
Başlangıç seviyesindeki eğitimlerde ileri düzey sistem yönetimi bilgisi zorunlu olmayabilir. Bununla birlikte aşağıdaki konulardaki temel bilgi öğrenme sürecini kolaylaştırabilir:
- Linux işletim sistemi
- Komut satırı kullanımı
- Temel ağ kavramları
- Dosya ve dizin izinleri
- Yazılım geliştirme yaşam döngüsü
- Web uygulamalarının temel çalışma yapısı
- Kaynak kod yönetimi
- Temel bulut bilişim kavramları
- YAML dosya yapısı
Linux ve komut satırı kullanımına ilişkin temel beceriler geliştirmek isteyenler Linux Essentials temel seviye eğitimini inceleyebilir.
Docker ve Kubernetes Öğrenmeye Nereden Başlanmalı?
- Konteyner ve sanal makine farkını öğrenmek
- Docker kurulumunu ve temel komutları incelemek
- Docker image oluşturmak
- Dockerfile hazırlamak
- Volume ve network yapılarını kullanmak
- Docker Compose ile çok servisli uygulama çalıştırmak
- Kubernetes mimarisini öğrenmek
- Pod, Deployment ve Service kaynaklarını kullanmak
- ConfigMap ve Secret yapılarını incelemek
- Kalıcı depolama süreçlerini öğrenmek
- Uygulama ölçeklendirme ve güncelleme işlemlerini uygulamak
- İzleme ve güvenlik konularını değerlendirmek
- Docker ve Kubernetes’i CI/CD süreçlerine eklemek
Docker Kubernetes Service Eğitimi Neden Önemlidir?
Docker ve Kubernetes yalnızca belirli komutların ezberlenmesiyle etkili biçimde kullanılamaz. Uygulama paketleme, ağ yönetimi, kalıcı depolama, ölçeklendirme, güncelleme ve güvenlik konularının birlikte değerlendirilmesi gerekir.
Yapılandırılmış bir Docker ve Kubernetes eğitimi:
- Konteyner teknolojilerinin temelini anlamayı
- Taşınabilir uygulama paketleri oluşturmayı
- Çok servisli uygulamaları yönetmeyi
- Kubernetes kaynaklarını tanımayı
- Servis keşfi ve ağ erişimini anlamayı
- Uygulamaları ölçeklendirmeyi
- Dağıtım süreçlerini otomatikleştirmeyi
- Modern DevOps uygulamalarını değerlendirmeyi
- Konteyner güvenliği konusunda farkındalık geliştirmeyi
destekleyebilir.
Docker Kubernetes Service Sertifika Programının Kapsamı
Docker Kubernetes Service Sertifika Programı, Docker ve Kubernetes teknolojilerini kullanarak yazılım geliştirme ve operasyon süreçlerini daha sistemli biçimde yönetmek isteyen katılımcılara yönelik çevrim içi bir eğitim programıdır.
Programda konteyner teknolojileri, uygulamaların paketlenmesi, Kubernetes ile servis yönetimi ve modern DevOps uygulamaları öne çıkmaktadır. Eğitim içeriği, özellikle bilgi teknolojileri profesyonelleri ve sistem yöneticileri açısından değerlendirilebilir.
Program; teknik yetkinliklerin yanı sıra ekip içi iletişim, analitik düşünme ve modern yazılım operasyonlarına yönelik farkındalığın geliştirilmesini amaçlayan bir çerçeve sunmaktadır.
Program sonunda sunulan sertifika, ilgili eğitimin tamamlandığını gösteren üniversite onaylı kişisel ve mesleki gelişim belgesidir. Tek başına belirli bir mesleki unvan, işe yerleşme garantisi veya bağımsız bir teknoloji üreticisinin profesyonel sertifikasyonuna denkliği anlamına gelmez.
Çevrim İçi Eğitim ve Sertifika Süreci
Program çevrim içi olarak sunulmaktadır. Eğitim platformuna bilgisayar, tablet ve akıllı telefon üzerinden erişilebilir. Katılımcılar ders içeriklerine öğrenci panelindeki “Eğitimlerim” bölümü üzerinden ulaşabilir.
Program kapsamındaki ders videolarının tamamlanması gerekir. Videolar eksiksiz izlenerek sistemde tamamlandı olarak işaretlendikten sonra sınav modülü aktif hâle gelir.
Sınav soru sayısı eğitim içeriğine göre değişebilmekte ve genel olarak 10 ile 50 soru arasında olabilmektedir. Katılımcılara toplam üç ücretsiz sınav hakkı sunulmaktadır.
Program sonunda üniversite onaylı ve e-Devlet üzerinden sorgulanabilir sertifika sunulmaktadır. Eğitim kapsamı, sınav uygulaması ve sertifika koşulları için resmî program sayfasındaki güncel bilgiler esas alınmalıdır.
Sık Sorulan Sorular
Docker nedir?
Docker, uygulamaların ihtiyaç duydukları bağımlılıklarla birlikte konteyner adı verilen izole ortamlarda paketlenmesini ve çalıştırılmasını sağlayan platformdur.
Kubernetes nedir?
Kubernetes, konteyner tabanlı uygulamaların dağıtılması, ölçeklendirilmesi ve yönetilmesi için kullanılan konteyner orkestrasyon platformudur.
Container ile image arasındaki fark nedir?
Image uygulamanın çalıştırılabilir şablonu, container ise bu şablondan oluşturulan çalışan örnektir.
Docker ile sanal makine arasındaki fark nedir?
Docker konteynerleri ana işletim sistemi çekirdeğini paylaşabilir. Sanal makineler ise kendi misafir işletim sistemlerini çalıştırır.
Dockerfile ne işe yarar?
Docker image oluşturmak için uygulanacak temel imaj, dosya kopyalama, paket kurulumu ve başlangıç komutu gibi adımları tanımlar.
Docker Compose nedir?
Birden fazla konteynerden oluşan uygulamaların tek bir yapılandırma dosyası üzerinden birlikte çalıştırılmasını sağlayan araçtır.
Kubernetes Pod nedir?
Pod, Kubernetes ortamındaki en küçük dağıtılabilir çalışma birimidir ve bir veya daha fazla konteyner içerebilir.
Kubernetes Deployment nedir?
Bir uygulamanın hangi image ile ve kaç pod örneğiyle çalışacağını tanımlayan Kubernetes kaynağıdır.
Kubernetes Service ne işe yarar?
Değişebilen pod’lara kararlı bir ağ erişim noktası sağlar ve istekleri uygun pod örneklerine yönlendirir.
Kubernetes Ingress nedir?
HTTP ve HTTPS trafiğinin alan adı veya URL yolu üzerinden cluster içindeki servislere yönlendirilmesini sağlayan kaynaktır.
ConfigMap ve Secret arasındaki fark nedir?
ConfigMap hassas olmayan yapılandırmaları, Secret ise parola ve erişim anahtarı gibi hassas bilgileri yönetmek amacıyla kullanılır.
Kubernetes uygulamaları otomatik ölçeklendirebilir mi?
Evet. Uygun yapılandırmalarla pod sayısı işlemci kullanımı veya uygulamaya özgü ölçümler gibi verilere göre otomatik olarak artırılıp azaltılabilir.
Docker ve Kubernetes aynı teknoloji midir?
Hayır. Docker uygulamaları konteyner olarak paketlemeye ve çalıştırmaya, Kubernetes ise çok sayıda konteyneri yönetmeye odaklanır.
Docker ve Kubernetes yalnızca mikroservislerde mi kullanılır?
Hayır. Mikroservis mimarilerinde yaygın kullanılmalarına rağmen modüler monolitler, web uygulamaları, arka plan servisleri ve veri işleme sistemlerinde de kullanılabilir.
Docker Kubernetes eğitimi kimler için uygundur?
Yazılım geliştiriciler, DevOps uzmanları, sistem yöneticileri, bulut uzmanları, platform mühendisleri ve konteyner teknolojilerini öğrenmek isteyen katılımcılar tarafından değerlendirilebilir.
Eğitim çevrim içi midir?
Evet. Program çevrim içi olarak sunulmaktadır.
Eğitime hangi cihazlardan erişilebilir?
Eğitim platformuna bilgisayar, tablet ve akıllı telefon üzerinden erişilebilir.
Eğitim içeriklerine ne zaman erişilebilir?
Eğitim platformunda 7/24 erişim imkânı sunulmaktadır.
Ders videolarının tamamlanması gerekir mi?
Evet. Sınav modülüne geçilebilmesi için program kapsamındaki ders videolarının tamamlanması gerekir.
Sınav ne zaman aktif olur?
Ders videoları eksiksiz izlenip sistemde tamamlandı olarak işaretlendikten sonra sınav modülü aktif hâle gelir.
Sınavda kaç soru bulunur?
Soru sayısı eğitim içeriğine göre değişir ve genel olarak 10 ile 50 soru arasında olabilir.
Kaç ücretsiz sınav hakkı vardır?
Katılımcılara toplam üç ücretsiz sınav hakkı sunulmaktadır.
Sertifika e-Devlet üzerinden sorgulanabilir mi?
Program sonunda sunulan üniversite onaylı sertifika e-Devlet üzerinden sorgulanabilmektedir.
Program ayrıntılarına nereden ulaşılabilir?
Eğitim kapsamı, katılım süreci, sınav uygulaması ve sertifika bilgileri için Docker Kubernetes Service Sertifika Programı resmî sayfası incelenebilir.
Sonuç
Docker, uygulamaların bağımlılıklarıyla birlikte taşınabilir konteynerler içinde paketlenmesini sağlar. Kubernetes ise bu konteynerlerin farklı sunucular üzerinde dağıtılması, çalıştırılması, ölçeklendirilmesi ve izlenmesi için orkestrasyon yetenekleri sunar.
Docker image, container, volume ve network kavramları konteyner teknolojilerinin temelini oluşturur. Kubernetes tarafında ise Pod, Deployment, Service, Ingress, ConfigMap, Secret ve kalıcı depolama yapıları uygulamaların yönetilmesinde önemli rol oynar.
Bu teknolojilerin etkili kullanımı yalnızca temel komutları öğrenmeye dayanmaz. Ağ yönetimi, depolama, güvenlik, kaynak kullanımı, gözlemlenebilirlik ve CI/CD süreçleri birlikte ele alınmalıdır.
Konteynerleştirme, Kubernetes Service yönetimi, DevOps otomasyonu ve ölçeklenebilir uygulama dağıtımı alanlarında bilgi geliştirmek için Docker Kubernetes Service Sertifika Programı incelenebilir.