Takip et

Kubernetes Made Simple: An Overview of DigitalOcean Kubernetes

Kubernetes Made Simple: An Overview of DigitalOcean Kubernetes Giriş: Konteynerleşmenin Yükselişi ve Kubernetes’in Önemi Günümüzün dijital d

Kubernetes Made Simple: An Overview of DigitalOcean Kubernetes

Giriş: Konteynerleşmenin Yükselişi ve Kubernetes’in Önemi

Günümüzün dijital dünyasında, yazılım geliştirme ve dağıtım süreçleri hiç olmadığı kadar hızlı ve dinamik bir hale gelmiştir. Monolitik mimarilerin yerini alan mikroservis mimarileri, uygulamaların daha küçük, bağımsız ve yönetilebilir bileşenlere ayrılmasını sağlayarak geliştirme hızını artırmış, ölçeklenebilirliği ve hata toleransını iyileştirmiştir. Bu mikroservislerin temel taşı ise konteyner teknolojisi, özellikle de Docker olmuştur. Konteynerler, bir uygulamanın tüm bağımlılıklarıyla (kod, çalışma zamanı, sistem araçları, kütüphaneler) birlikte paketlenmesini sağlayarak, uygulamanın farklı ortamlarda tutarlı bir şekilde çalışmasını garanti eder. “Bir kez yaz, her yerde çalıştır” felsefesini gerçeğe dönüştüren konteynerler, geliştiricilerin “benim makinemde çalışıyordu” sorununu ortadan kaldırmıştır.

Ancak, tek bir konteyner uygulaması yönetmek kolay olsa da, yüzlerce veya binlerce konteyneri içeren karmaşık, dağıtık bir mikroservis uygulamasını yönetmek bambaşka bir zorluktur. Bu noktada konteyner orkestrasyon platformlarına ihtiyaç duyulur. Konteyner orkestrasyonu, konteynerlerin dağıtımını, ölçeklendirilmesini, ağ iletişimini, depolamasını ve yaşam döngüsünü otomatikleştirme sürecidir. Bu alandaki tartışmasız lider ise Google tarafından geliştirilen ve Cloud Native Computing Foundation (CNCF) tarafından yönetilen açık kaynaklı bir platform olan Kubernetes’tir.

Kubernetes, konteynerli iş yüklerini ve hizmetlerini yönetmek için taşınabilir, genişletilebilir, açık kaynaklı bir platform sağlar. Bildirimsel yapılandırma ve otomasyonu kolaylaştırır. Ölçeklendirme, kendi kendini iyileştirme, yük dengeleme, depolama entegrasyonu gibi kritik özellikler sunarak modern bulut yerel uygulamaların temelini oluşturur. Ancak Kubernetes’in gücüyle birlikte gelen bir karmaşıklık da vardır. Kendi Kubernetes kümesini kurmak, yapılandırmak, bakımını yapmak ve yükseltmek, önemli bir operasyonel yük ve uzmanlık gerektirir. İşte bu noktada yönetilen Kubernetes hizmetleri devreye girer.

DigitalOcean Kubernetes (DOKS), bu karmaşıklığı ortadan kaldırarak geliştiricilerin ve işletmelerin Kubernetes’in gücünden kolayca yararlanmasını sağlayan, DigitalOcean’ın sunduğu yönetilen bir Kubernetes hizmetidir. Bu makalede, Kubernetes’in temel kavramlarını basitleştirerek açıklayacak, ardından yönetilen Kubernetes’in avantajlarını vurgulayacak ve son olarak DigitalOcean Kubernetes’in özelliklerini, avantajlarını ve pratik kullanımını detaylı bir şekilde inceleyeceğiz. Amacımız, Kubernetes’in neden bu kadar önemli olduğunu anlamak ve DOKS’un bu güçlü teknolojiyi herkes için nasıl erişilebilir kıldığını göstermektir.

Kubernetes Nedir? Temel Kavramlar ve Bileşenler

Kubernetes, konteynerli uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştiren açık kaynaklı bir sistemdir. “Kubernet” Yunanca’da “dümenci” veya “pilot” anlamına gelir ve bu isim, Kubernetes’in konteyner filonuzu yönetme rolünü mükemmel bir şekilde yansıtır. Kubernetes, temel olarak bir küme (cluster) mimarisi üzerinde çalışır ve bu küme, Master (kontrol düzlemi) ve Worker (işçi) düğümlerinden oluşur.

Master ve Worker Düğümleri (Nodes)

Bir Kubernetes kümesi, yönetici makineler (Master düğümleri) ve iş yüklerini çalıştıran makineler (Worker düğümleri) olmak üzere iki ana bileşen türünden oluşur:
* Master Düğümü (Control Plane): Kümenin beyni gibidir. Kümenin genel durumunu yönetir, iş yüklerini planlar, API isteklerini işler ve kümenin kararlılığını sağlar. Bir Master düğümü genellikle birden fazla bileşeni içerir:
* Kube-API Server: Kubernetes API’sini sunan ana bileşendir. Tüm dahili ve harici iletişimler bu API sunucusu aracılığıyla gerçekleşir. kubectl gibi komut satırı araçları veya diğer bileşenler, küme ile bu API üzerinden etkileşime girer.
* Kube-Scheduler: Yeni oluşturulan Pod’ları hangi Worker düğümüne atayacağına karar verir. Kaynak gereksinimleri, donanım/yazılım/ilke kısıtlamaları, affinite ve anti-affinite kuralları gibi birçok faktörü göz önünde bulundurur.
* Kube-Controller-Manager: Çeşitli denetleyici (controller) süreçlerini çalıştıran bileşendir. Örneğin, Node Controller (düğüm durumunu izler), Replication Controller (belirtilen sayıda Pod’un çalışmasını sağlar), Endpoint Controller ve Service Account & Token Controllers gibi. Bu denetleyiciler, kümenin mevcut durumunu istenen duruma getirmek için sürekli olarak çalışır.
* etcd: Kümenin tüm yapılandırma verilerini, durum bilgilerini ve meta verilerini depolayan dağıtık, tutarlı ve yüksek erişilebilirliğe sahip bir anahtar-değer deposudur. Kubernetes kümesinin “tek doğruluk kaynağı”dır.
* Worker Düğümü (Node): Uygulama iş yüklerini (Pod’ları) çalıştıran makinelerdir. Her Worker düğümü aşağıdaki bileşenleri içerir:
* Kubelet: Her Worker düğümünde çalışan bir ajandır. Kube-API Server’dan Pod tanımlarını alır ve konteyner çalışma zamanını kullanarak Pod’ları başlatır, durdurur ve yönetir. Ayrıca düğümün ve Pod’ların durumunu API sunucusuna bildirir.
* Kube-Proxy: Her düğümde çalışan bir ağ proxy’sidir. Kubernetes Service’leri için ağ kurallarını yönetir, Pod’lar arasındaki ve dışarıdan Pod’lara gelen ağ trafiğini yönlendirir ve yük dengeleme sağlar.
* Container Runtime (Konteyner Çalışma Zamanı): Konteynerleri çalıştıran yazılımdır (örneğin Docker, containerd, CRI-O). Kubelet’in isteği üzerine konteyner imajlarını çeker ve çalıştırır.

Pod’lar

Kubernetes’teki en küçük, dağıtılabilir ve yönetilebilir birim Pod’dur. Bir Pod, bir veya daha fazla konteyneri barındıran bir soyutlama katmanıdır. Aynı Pod içindeki konteynerler ortak bir ağ ad alanını (IP adresi ve portlar), depolama birimlerini ve Linux ad alanlarını paylaşır. Bu, aynı Pod içindeki konteynerlerin birbirleriyle localhost üzerinden iletişim kurmasını sağlar. Pod’lar geçicidir ve genellikle doğrudan yönetilmezler; bunun yerine Deployment’lar veya StatefulSet’ler gibi daha yüksek seviyeli soyutlamalar aracılığıyla yönetilirler.

Deployment’lar

Deployment, Pod’ların ve ReplicaSet’lerin bildirimsel yönetimini sağlayan bir Kubernetes nesnesidir. Bir Deployment tanımlayarak, uygulamanızın istenen durumunu (örneğin, uygulamanın kaç kopyasının çalışması gerektiği, hangi konteyner imajının kullanılacağı) belirtirsiniz. Deployment denetleyicisi, bu istenen durumu kümenin mevcut durumuyla eşleştirmek için sürekli olarak çalışır. Deployment’lar, uygulamanızın yeni sürümlerini yayınlamak için “rolling update” (kademeli güncelleme) stratejileri sunar ve herhangi bir sorun durumunda kolayca önceki sürüme geri dönme (rollback) yeteneği sağlar.

Service’ler

Pod’lar geçici olduğu ve IP adresleri değişebildiği için, uygulamaların Pod’lara güvenilir bir şekilde erişmesi için sabit bir mekanizmaya ihtiyaç vardır. Kubernetes Service’leri bu sorunu çözer. Bir Service, bir dizi Pod’a sabit bir IP adresi ve DNS adı sağlayarak, bu Pod’lara erişim için soyut bir arayüz sunar. Service’ler, gelen trafiği arka uç Pod’lar arasında yük dengeleyebilir. Başlıca Service tipleri şunlardır:
* ClusterIP: Küme içindeki diğer Pod’lar tarafından erişilebilen dahili bir IP adresi sağlar.
* NodePort: Her Worker düğümünde belirli bir portu açarak, küme dışından erişim sağlar.
* LoadBalancer: Bulut sağlayıcınızın yük dengeleyici hizmetini kullanarak, küme dışından gelen trafiği otomatik olarak Pod’larınıza yönlendirir.
* ExternalName: Harici bir DNS adını bir Service’e eşler.

Volume’lar

Konteynerler varsayılan olarak geçicidir ve konteyner silindiğinde içindeki tüm veriler kaybolur. Kalıcı depolama sağlamak için Kubernetes Volume’ları kullanılır. Bir Volume, bir Pod’un yaşam döngüsünden bağımsız olarak verileri depolayabilen bir dizindir. Kubernetes, çeşitli Volume tiplerini destekler (örneğin, emptyDir, hostPath, NFS, PersistentVolumeClaim ile bulut sağlayıcıya özel depolama). PersistentVolume (PV) ve PersistentVolumeClaim (PVC) kavramları, depolama kaynaklarının soyutlanmasını ve dinamik olarak sağlanmasını sağlar.

ConfigMap’ler ve Secret’lar

Uygulama yapılandırmasını koddan ayırmak, en iyi uygulamalardan biridir. Kubernetes, bu amaçla ConfigMap’leri ve Secret’ları sunar.
* ConfigMap’ler: Uygulama yapılandırma verilerini (ortam değişkenleri, komut satırı argümanları, yapılandırma dosyaları) anahtar-değer çiftleri olarak depolamak için kullanılır. Hassas olmayan veriler için idealdir.
* Secret’lar: Hassas verileri (parolalar, API anahtarları, kimlik doğrulama belirteçleri) güvenli bir şekilde depolamak için kullanılır. Kubernetes, Secret’ları Base64 ile kodlar ve bunları Pod’lara ortam değişkenleri veya dosya sistemi olarak bağlayabilir.

Namespace’ler

Namespace’ler, bir Kubernetes kümesini birden fazla sanal kümeye bölmek için bir mekanizma sağlar. Bu, farklı ekiplerin, ortamların veya uygulamaların aynı fiziksel kümeyi paylaşmasına olanak tanırken, kaynaklar arasında izolasyon sağlar. Her Namespace, kendi kaynaklarına (Pod’lar, Service’ler, Deployment’lar vb.) sahiptir ve bunlar diğer Namespace’lerden bağımsızdır.

Yönetilen Kubernetes (Managed Kubernetes) Nedir ve Neden Tercih Edilmelidir?

Kubernetes’in gücü tartışılmaz olsa da, kendi Kubernetes kümesini sıfırdan kurmak, yapılandırmak, bakımını yapmak ve güvenliğini sağlamak önemli bir operasyonel yük getirir. Bu süreç, derinlemesine teknik bilgi, zaman ve insan kaynağı gerektirir. İşte bu noktada yönetilen Kubernetes hizmetleri (Managed Kubernetes) devreye girer. Yönetilen Kubernetes, bulut sağlayıcılarının Kubernetes kümesinin kontrol düzlemini (Master düğümleri) ve bazen de Worker düğümlerinin yönetimini üstlendiği bir hizmet modelidir.

Kendi Kubernetes kümesini yönetmenin zorlukları şunlardır:
* Kurulum ve Yapılandırma: Kubernetes bileşenlerinin kurulumu, ağ yapılandırması, depolama entegrasyonu ve güvenlik ayarları karmaşıktır.
* Bakım ve Yükseltmeler: Kubernetes sık sık yeni sürümlerle güncellenir. Bu güncellemeleri takip etmek, kümenin uyumluluğunu sağlamak ve kesinti olmadan yükseltmeler yapmak zorludur.
* Güvenlik: Küme güvenliğini sağlamak (API erişimi, ağ politikaları, Secret yönetimi) sürekli dikkat gerektirir.
* Ölçeklendirme: Kümenin kapasitesini artırmak veya azaltmak, düğümleri eklemek/çıkarmak ve kaynakları optimize etmek manuel çaba gerektirebilir.
* Yüksek Erişilebilirlik: Kontrol düzleminin yüksek erişilebilirliğini sağlamak için birden fazla Master düğümü kurmak ve yönetmek karmaşıktır.
* İzleme ve Sorun Giderme: Küme bileşenlerinin ve üzerinde çalışan uygulamaların izlenmesi, günlüklerin toplanması ve sorunların giderilmesi için özel araçlar ve uzmanlık gerekir.

Yönetilen Kubernetes’in avantajları ise bu zorlukların çoğunu ortadan kaldırır:
* Kolay Kurulum ve Hızlı Başlangıç: Bulut sağlayıcıları, birkaç tıklama veya komutla dakikalar içinde tam işlevsel bir Kubernetes kümesi oluşturmanıza olanak tanır. Altyapı kurulumuyla uğraşmak zorunda kalmazsınız.
* Otomatik Yükseltmeler ve Yamalar: Kontrol düzlemi genellikle bulut sağlayıcısı tarafından otomatik olarak güncellenir ve yamalanır. Bu, güvenlik açıklarının hızla kapatılmasını ve kümenin en son özelliklerle çalışmasını sağlar.
* Operasyonel Yükün Azalması: Altyapı yönetimi, bakım, yedekleme ve kurtarma gibi operasyonel görevler bulut sağlayıcısına devredilir. Bu, geliştiricilerin ve operasyon ekiplerinin ana işlerine (uygulama geliştirme ve dağıtım) odaklanmasını sağlar.
* Yüksek Erişilebilirlik ve Güvenilirlik: Yönetilen hizmetler genellikle kontrol düzlemi için yüksek erişilebilirlik ve hata toleransı sağlar. Birden fazla bölge veya kullanılabilirlik alanı arasında dağıtılmış Master düğümleri sunabilirler.
* Entegre Hizmetler: Bulut sağlayıcıları, yönetilen Kubernetes hizmetlerini kendi bulut ekosistemlerindeki diğer hizmetlerle (yük dengeleyiciler, depolama, veritabanları, izleme araçları) sorunsuz bir şekilde entegre eder. Bu, tam teşekküllü bir bulut yerel uygulama mimarisi oluşturmayı kolaylaştırır.
* Maliyet Etkinliği: Kendi Kubernetes kümesini yönetmek için gereken uzmanlık ve zaman maliyetleri, yönetilen bir hizmetin maliyetinden daha yüksek olabilir. Yönetilen hizmetler, operasyonel maliyetleri düşürür.
* Güvenlik: Bulut sağlayıcıları, küme güvenliği için en iyi uygulamaları uygular ve güvenlik sertifikasyonlarını sağlar.

Özetle, yönetilen Kubernetes hizmetleri, Kubernetes’in güçlü özelliklerinden yararlanmak isteyen ancak altyapı yönetimiyle uğraşmak istemeyen geliştiriciler ve işletmeler için ideal bir çözümdür. DigitalOcean Kubernetes (DOKS) de bu felsefeyle hareket ederek, Kubernetes’i basit, erişilebilir ve uygun maliyetli hale getirmeyi hedefler.

DigitalOcean Kubernetes (DOKS) Nedir? Temel Özellikleri ve Avantajları

DigitalOcean Kubernetes (DOKS), geliştiricilerin ve küçük/orta ölçekli işletmelerin konteynerli uygulamalarını kolayca dağıtmasına ve ölçeklendirmesine olanak tanıyan, DigitalOcean’ın sunduğu tam yönetilen bir Kubernetes hizmetidir. DigitalOcean’ın temel değerleri olan basitlik, kullanım kolaylığı ve uygun maliyet, DOKS’a da yansımıştır. DOKS, karmaşık Kubernetes operasyonlarını soyutlayarak, kullanıcıların altyapı yerine uygulama geliştirmeye odaklanmasını sağlar.

Basitlik ve Kullanım Kolaylığı

DOKS’un en belirgin özelliklerinden biri, kullanım kolaylığıdır. DigitalOcean’ın sezgisel kontrol paneli veya doctl komut satırı aracı aracılığıyla sadece birkaç tıklama veya komutla bir Kubernetes kümesi oluşturabilirsiniz. Küme oluşturma süreci, bölge seçimi, Kubernetes sürümü ve düğüm havuzları (node pools) yapılandırması gibi adımları basitleştirir. Bu, Kubernetes’e yeni başlayanlar için bile hızlı bir başlangıç yapmayı mümkün kılar.

Maliyet Etkinliği

DigitalOcean, “Basit Bulut” sloganıyla uygun fiyatlı ve şeffaf fiyatlandırma sunar. DOKS da bu prensibe sadık kalır. Diğer bulut sağlayıcılarının aksine, DigitalOcean, Kubernetes kontrol düzlemi (Master düğümleri) için ek bir ücret talep etmez. Yalnızca Worker düğümleri olarak kullandığınız DigitalOcean Droplet’leri (sanal makineler) için ödeme yaparsınız. Bu, özellikle maliyet hassasiyeti olan geliştiriciler ve startup’lar için önemli bir avantajdır.

Entegrasyonlar

DOKS, DigitalOcean ekosistemindeki diğer hizmetlerle sorunsuz bir şekilde entegre olur ve uygulamalarınız için kapsamlı bir çözüm sunar:
* DigitalOcean Load Balancers: Kubernetes Service’leriniz için otomatik olarak yönetilen yük dengeleyiciler sağlar, gelen trafiği Pod’larınıza yönlendirir ve yüksek erişilebilirlik sunar.
* DigitalOcean Block Storage: Kalıcı depolama ihtiyaçlarınız için yüksek performanslı ve dayanıklı blok depolama birimleri sunar. PersistentVolumeClaim (PVC) aracılığıyla kolayca bağlanabilir.
* DigitalOcean Container Registry: Konteyner imajlarınızı güvenli bir şekilde depolayabileceğiniz özel bir Docker kayıt defteri hizmetidir. DOKS ile kolayca entegre olur.
* DigitalOcean Monitoring ve Alerts: Kümenizin ve uygulamalarınızın performansını izlemek, metrikleri toplamak ve potansiyel sorunlar hakkında uyarılar almak için entegre izleme çözümleri sunar.
* Managed Databases: Uygulamalarınız için yönetilen veritabanı hizmetleri (PostgreSQL, MySQL, Redis, MongoDB) ile kolayca entegre olabilir, böylece veritabanı yönetimi yükünü de üzerinizden alırsınız.

Ölçeklenebilirlik

DOKS, uygulamalarınızın değişen taleplerine uyum sağlamak için güçlü ölçeklenebilirlik özellikleri sunar:
* Otomatik Düğüm Havuzu Ölçeklendirme (Node Pool Autoscaling): Kümenizdeki Worker düğümlerinin sayısını, Pod’larınızın kaynak gereksinimlerine göre otomatik olarak artırır veya azaltır. Bu, gereksiz kaynak kullanımını önlerken, uygulamanızın her zaman yeterli kapasiteye sahip olmasını sağlar.
* Yatay Pod Ölçeklendirme (Horizontal Pod Autoscaler – HPA): CPU kullanımı, bellek veya özel metrikler gibi ölçütlere göre Pod’larınızın sayısını otomatik olarak ölçeklendirir.

Güvenlik

Güvenlik, DOKS’un temel önceliklerinden biridir:
* Yönetilen Kontrol Düzlemi Güvenliği: DigitalOcean, Master düğümlerinin güvenliğini, yamalarını ve güncellemelerini yönetir.
* Ağ İzolasyonu: DOKS, küme içinde ağ politikaları tanımlamanıza ve DigitalOcean VPC (Virtual Private Cloud) aracılığıyla diğer kaynaklarınızla güvenli bir şekilde iletişim kurmanıza olanak tanır.
* Rol Tabanlı Erişim Kontrolü (RBAC): Kullanıcıların ve hizmet hesaplarının küme kaynaklarına erişimini detaylı bir şekilde kontrol etmenizi sağlar.
* Otomatik Güncellemeler: Küme bileşenlerinin ve Kubernetes sürümünün güncel kalmasını sağlayarak, bilinen güvenlik açıklarına karşı koruma sağlar.

Güvenilirlik ve Yüksek Erişilebilirlik

DigitalOcean, DOKS için yüksek erişilebilirlik ve güvenilirlik sağlar:
* Yönetilen Kontrol Düzlemi: Kontrol düzleminin yüksek erişilebilirliği DigitalOcean tarafından garanti edilir. Bu, Master düğümlerinin arızalanması durumunda bile kümenizin çalışmaya devam etmesini sağlar.
* Çoklu Bölge Desteği (Multi-Zone Support): DigitalOcean’ın farklı veri merkezlerindeki (bölgelerdeki) kullanılabilirlik alanlarına yayılan düğüm havuzları oluşturarak, kümenizin daha fazla hata toleransına sahip olmasını sağlayabilirsiniz.

Geliştirici Dostu Ekosistem

DOKS, geliştiricilerin alışkın olduğu araçlarla uyumludur ve bulut yerel geliştirme deneyimini destekler:
* Helm Entegrasyonu: Kubernetes için paket yöneticisi olan Helm ile kolayca entegre olur, karmaşık uygulamaların dağıtımını basitleştirir.
* kubectl Uyumluluğu: Kubernetes’in standart komut satırı aracı olan kubectl ile tam uyumluluk sunar.

Bu özellikler bütünü, DigitalOcean Kubernetes’i, Kubernetes’in gücünden yararlanmak isteyen ancak operasyonel karmaşıklıkla uğraşmak istemeyen herkes için cazip bir seçenek haline getirir.

DigitalOcean Kubernetes ile Bir Küme Oluşturma ve Yönetme (Pratik Bir Bakış)

DigitalOcean Kubernetes (DOKS) ile bir küme oluşturmak ve uygulamaları dağıtmak oldukça basittir. Bu bölümde, DOKS’un temel işlevlerini pratik adımlarla inceleyeceğiz.

Küme Oluşturma Adımları

Bir DOKS kümesi oluşturmak için DigitalOcean kontrol panelini veya doctl komut satırı aracını kullanabilirsiniz.
1. Kontrol Paneli Üzerinden:
* DigitalOcean hesabınıza giriş yapın.
* Sol menüden “Kubernetes” seçeneğine tıklayın.
* “Create a Kubernetes Cluster” düğmesine tıklayın.
* Bölge Seçimi: Kümenizin hangi DigitalOcean veri merkezinde (örneğin, Frankfurt, New York, Amsterdam) barındırılacağını seçin. Uygulama kullanıcılarınıza en yakın bölgeyi seçmek gecikmeyi azaltır.
* Kubernetes Sürümü: Kullanmak istediğiniz Kubernetes sürümünü seçin. Genellikle en son kararlı sürüm önerilir.
* Düğüm Havuzları (Node Pools) Yapılandırması: Düğüm havuzları, aynı özelliklere sahip Worker düğümlerinin gruplarıdır.
* Droplet Planı: Düğüm havuzunuzdaki Worker düğümleri için DigitalOcean Droplet planını (CPU, RAM, Disk boyutu) seçin. Uygulamanızın kaynak gereksinimlerine göre (Basic, General Purpose, CPU-Optimized) uygun bir plan seçin.
* Düğüm Sayısı: Bu düğüm havuzunda kaç adet Worker düğümü olacağını belirtin. Başlangıç için genellikle 3 düğüm önerilir.
* İsteğe bağlı olarak birden fazla düğüm havuzu ekleyebilir, her birine farklı Droplet planları atayabilir ve otomatik ölçeklendirme (autoscaling) özelliğini etkinleştirebilirsiniz.
* Küme Adı: Kümenize açıklayıcı bir ad verin.
* “Create Cluster” düğmesine tıklayın.
DigitalOcean, kümenizi oluşturmaya başlayacak ve bu işlem birkaç dakika sürecektir.

2. doctl CLI Aracı ile:
* doctl aracını yükleyin ve DigitalOcean API anahtarınızla kimlik doğrulaması yapın.
* Aşağıdaki gibi bir komut kullanarak küme oluşturabilirsiniz:

doctl kubernetes cluster create my-doks-cluster \
          --region fra1 \
          --version 1.28.2 \
          --node-pool name=worker-pool,size=s-2vcpu-4gb,count=3,auto-scale=true,min-nodes=1,max-nodes=5

Bu komut, fra1 bölgesinde 1.28.2 sürümünde my-doks-cluster adında bir küme oluşturur. Küme, s-2vcpu-4gb boyutunda 3 adet Worker düğümüne sahip worker-pool adında bir düğüm havuzu içerir ve otomatik ölçeklendirme etkindir (minimum 1, maksimum 5 düğüm).

kubectl ile Bağlantı Kurma

Kümeniz oluşturulduktan sonra, kubectl komut satırı aracıyla kümenize bağlanmanız gerekir.
1. Kubeconfig Dosyası İndirme:
* Kontrol panelinde, oluşturduğunuz kümenin sayfasına gidin ve “Actions” altındaki “Download Kubeconfig” seçeneğine tıklayın.
* doctl kullanıyorsanız: doctl kubernetes cluster kubeconfig save my-doks-cluster
2. Kubeconfig Dosyasını Yapılandırma: İndirdiğiniz dosyayı ~/.kube/config dizinine yerleştirin veya KUBECONFIG ortam değişkenini ayarlayın.
3. Bağlantıyı Test Etme:

kubectl get nodes

Bu komut, kümenizdeki Worker düğümlerini listelemelidir.

Uygulama Dağıtma

Şimdi basit bir Nginx uygulaması dağıtalım. Bunun için bir Deployment ve bir Service tanımlayan YAML dosyaları oluşturacağız.

nginx-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

nginx-service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  type: LoadBalancer
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

Uygulamayı dağıtmak için:

kubectl apply -f nginx-deployment.yaml
kubectl apply -f nginx-service.yaml

Birkaç dakika sonra, kubectl get svc komutunu çalıştırarak nginx-service için harici bir IP adresi (External-IP) almalısınız. Bu IP adresine web tarayıcınızdan erişerek Nginx varsayılan sayfasını görebilirsiniz.

Ölçeklendirme ve Güncelleme

* Deployment’ı Ölçeklendirme:

kubectl scale deployment nginx-deployment --replicas=5

Bu komut, Nginx Pod’larının sayısını 3’ten 5’e çıkarır.
* Pod’ları Güncelleme (Rolling Update):
Deployment tanımınızdaki konteyner imajını güncelleyerek (örneğin nginx:1.21.0 yerine nginx:1.22.0), Kubernetes otomatik olarak kademeli bir güncelleme yapar. Eski Pod’ları yavaşça kapatırken yeni Pod’ları başlatır.

kubectl set image deployment/nginx-deployment nginx=nginx:1.22.0

Depolama ve Ağ Hizmetleri

* PersistentVolumeClaim (PVC) ve Block Storage Kullanımı:
DOKS, DigitalOcean Block Storage ile entegre çalışır. Bir PVC tanımlayarak uygulamalarınız için kalıcı depolama isteyebilirsiniz:

apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 10Gi

Bu PVC’yi bir Pod’a bağlayarak kalıcı depolama kullanabilirsiniz.
* Load Balancer ile Dışarıdan Erişim:
Yukarıdaki nginx-service.yaml örneğinde olduğu gibi, type: LoadBalancer kullanarak DigitalOcean Load Balancer’larını otomatik olarak devreye alabilir ve uygulamanızı internete açabilirsiniz.

İzleme ve Günlükleme

DigitalOcean Monitoring, DOKS kümenizin ve Droplet’lerinizin temel metriklerini otomatik olarak toplar ve görselleştirir. Kontrol panelinden CPU, RAM, disk ve ağ kullanımı gibi metrikleri izleyebilirsiniz. Ayrıca özel uyarılar ayarlayarak performans düşüşleri veya hata durumlarında bildirim alabilirsiniz. Uygulama günlüklerini toplamak için Prometheus ve Grafana gibi açık kaynak araçları veya DigitalOcean’ın kendi günlükleme çözümlerini entegre edebilirsiniz.

Bu pratik adımlar, DigitalOcean Kubernetes’in basitliğini ve gücünü göstermektedir. Geliştiricilerin altyapı karmaşıklığı yerine uygulama koduna ve işlevselliğine odaklanmasını sağlayarak, bulut yerel uygulamaların dağıtımını ve yönetimini hızlandırır.

DigitalOcean Kubernetes’in Kullanım Senaryoları

DigitalOcean Kubernetes (DOKS), çeşitli uygulama türleri ve iş yükleri için uygun, esnek ve güçlü bir platform sunar. Basitliği, maliyet etkinliği ve entegre hizmetleri sayesinde birçok farklı senaryoda tercih edilebilir:

* Mikroservis Tabanlı Uygulamalar: DOKS, mikroservis mimarisini benimsemiş uygulamalar için ideal bir ortamdır. Her mikroservisi kendi Pod’unda veya Deployment’ında çalıştırarak bağımsız ölçeklendirme, geliştirme ve dağıtım imkanı sunar. Service’ler aracılığıyla mikroservisler arası iletişimi kolaylaştırır.
* Sürekli Entegrasyon/Sürekli Dağıtım (CI/CD) İşlem Hatları: DOKS, CI/CD işlem hatlarının otomasyonu için mükemmel bir hedeftir. Geliştiriciler, yeni kod değişikliklerini otomatik olarak test edip konteyner imajlarına dönüştürebilir ve ardından DOKS üzerinde çalışan uygulamaları kademeli olarak güncelleyebilirler. Argo CD, Jenkins, GitLab CI/CD gibi araçlarla kolayca entegre edilebilir.
* Yüksek Trafikli Web Uygulamaları ve API’ler: Otomatik ölçeklendirme özellikleri (Node Pool Autoscaling ve Horizontal Pod Autoscaler), DOKS’u ani trafik artışlarına veya sürekli yüksek yüke sahip web siteleri ve API’ler için uygun hale getirir. Yük dengeleyiciler ve Service’ler aracılığıyla gelen trafiği etkili bir şekilde yönetebilir.
* Veri İşleme ve Analitik İş Yükleri: Apache Spark, Kafka veya Elasticsearch gibi dağıtık veri işleme ve analitik araçlarını DOKS üzerinde çalıştırabilirsiniz. Kalıcı depolama (Block Storage) entegrasyonu, veri sürekliliğini sağlar.
* IoT Uygulamaları ve Edge Computing: IoT cihazlarından gelen verileri işlemek veya edge cihazlarında hafif uygulamalar çalıştırmak için DOKS kullanılabilir. Kubernetes’in esnekliği, farklı donanım ve yazılım ortamlarına uyum sağlamasına yardımcı olur.
* Geliştirme ve Test Ortamları: DOKS’un hızlı küme oluşturma ve kolay yönetilebilirliği, geliştiricilerin ve QA ekiplerinin hızlı bir şekilde izole edilmiş geliştirme ve test ortamları kurmasına olanak tanır. Bu, farklı projeler veya özellik dalları için ayrı ortamlar sağlamayı kolaylaştırır.
* E-ticaret Platformları: E-ticaret siteleri genellikle yüksek erişilebilirlik, ölçeklenebilirlik ve hızlı yanıt süreleri gerektirir. DOKS, bu gereksinimleri karşılayarak müşteri deneyimini iyileştirmeye yardımcı olur.
* Oyun Sunucuları: Dağıtık oyun sunucuları veya mikroservis tabanlı oyun arka uçları, Kubernetes’in ölçeklenebilirlik ve yüksek erişilebilirlik özelliklerinden faydalanabilir.
* Blockchain ve Dağıtık Defter Teknolojileri: Blockchain düğümleri veya dağıtık defter uygulamaları, Kubernetes üzerinde yüksek erişilebilirlik ve ölçeklenebilirlik ile çalıştırılabilir.

Bu senaryolar, DOKS’un ne kadar çok yönlü bir platform olduğunu göstermektedir. Geliştiricilerin ve işletmelerin çeşitli ihtiyaçlarına yanıt veren, güçlü ve yönetilebilir bir altyapı sunar.

Sonuç: Geleceğe Yönelik Bir Platform

Konteynerleşme ve mikroservis mimarileri, modern yazılım geliştirmeyi kökten değiştirmiş, uygulamaların daha hızlı, daha esnek ve daha güvenilir bir şekilde dağıtılmasını sağlamıştır. Bu devrimin kalbinde yer alan Kubernetes, konteyner orkestrasyonunun fiili standardı haline gelmiştir. Ancak Kubernetes’in sunduğu muazzam güce rağmen, kendi kendine yönetimi beraberinde önemli bir operasyonel karmaşıklık getirmektedir. İşte bu noktada DigitalOcean Kubernetes (DOKS) gibi yönetilen hizmetler, Kubernetes’in kapılarını geniş bir kitleye açarak bu teknolojiyi “basit” hale getirir.

DigitalOcean Kubernetes, DigitalOcean’ın temel felsefesi olan basitlik, maliyet etkinliği ve geliştirici dostu yaklaşımı benimseyerek, Kubernetes’in tüm avantajlarından yararlanmanızı sağlar. Kontrol düzlemi yönetimi, otomatik yükseltmeler, sorunsuz entegrasyonlar (Load Balancers, Block Storage, Container Registry), güçlü ölçeklendirme yetenekleri ve şeffaf fiyatlandırma modeli sayesinde DOKS, geliştiricilerin ve işletmelerin altyapı yönetimiyle değil, yenilikçi uygulamalar geliştirmeye odaklanmasını sağlar.

İster yeni başlayan bir startup olun, ister büyüyen bir işletme, ister karmaşık mikroservisler geliştiren bir ekip, DOKS size uygulamalarınızı güvenle dağıtabileceğiniz, ölçekleyebileceğiniz ve yönetebileceğiniz sağlam bir temel sunar. Yüksek erişilebilirlik, güvenlik ve DigitalOcean ekosistemindeki diğer hizmetlerle kolay entegrasyon, DOKS’u bulut yerel uygulamalarınız için cazip bir seçenek haline getirir.

Kubernetes’in gelecekte de bulut yerel mimarinin ve modern uygulama dağıtımının temel taşı olacağı açıktır. DigitalOcean Kubernetes, bu güçlü teknolojiyi herkes için erişilebilir ve yönetilebilir kılarak, geliştiricilerin fikirlerini hızla hayata geçirmelerine ve dijital dünyada rekabetçi kalmalarına olanak tanır. DOKS ile Kubernetes’in karmaşıklığını geride bırakın ve uygulamanızı yeni zirvelere taşıyın.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.