Takip et

Adım Adım AKS Kurulumu: Azure Kubernetes Service’e Giriş ve Yapılandırma Rehberi

Modern bulut tabanlı uygulamaların vazgeçilmezi haline gelen konteyner teknolojisi, mikroservis mimarilerinin yaygınlaşmasıyla birlikte büyük bir ivm…

Adım Adım AKS Kurulumu: Azure Kubernetes Service’e Giriş ve Yapılandırma Rehberi

Modern bulut tabanlı uygulamaların vazgeçilmezi haline gelen konteyner teknolojisi, mikroservis mimarilerinin yaygınlaşmasıyla birlikte büyük bir ivme kazandı. Bu konteynerleri etkin bir şekilde yönetmek ve ölçeklendirmek için ise Kubernetes gibi konteyner orkestrasyon platformlarına ihtiyaç duyulmaktadır. Azure Kubernetes Service (AKS), Microsoft Azure’ın sunduğu, yönetilen bir Kubernetes hizmetidir. Bu makalede, AKS’in temel bileşenlerinden başlayarak, adım adım bir AKS kümesini nasıl kuracağınızı, yöneteceğinizi ve uygulamalarınızı nasıl dağıtacağınızı detaylı bir şekilde ele alacağız. Amacımız, bulut tabanlı konteyner altyapınızı kurmak için sağlam bir temel oluşturmaktır.

AKS Nedir ve Neden Kullanmalıyız?

Azure Kubernetes Service (AKS), Microsoft Azure tarafından sunulan, tam olarak yönetilen bir Kubernetes hizmetidir. Geliştiricilerin ve operasyon ekiplerinin Kubernetes kümelerini kolayca dağıtmasına, yönetmesine ve ölçeklendirmesine olanak tanır. AKS, Kubernetes kontrol düzlemini (master node’lar) sizin için yöneterek, altyapı yönetimi yükünü azaltır ve uygulamanıza odaklanmanızı sağlar.

Kubernetes’in Temelleri

Kubernetes, Google tarafından geliştirilen açık kaynaklı bir konteyner orkestrasyon platformudur. Konteynerli uygulamaları otomatik olarak dağıtmak, ölçeklendirmek ve yönetmek için tasarlanmıştır. Pod’lar, Deployment’lar, Service’ler ve Ingress gibi temel bileşenleriyle, uygulamaların yüksek erişilebilirlik, ölçeklenebilirlik ve esneklikle çalışmasını sağlar.

AKS’in Avantajları

  • Yönetilen Hizmet: Kontrol düzlemi Azure tarafından yönetilir, bu da operasyonel yükü azaltır.
  • Kolay Entegrasyon: Azure Active Directory, Azure Monitor, Azure Policy gibi diğer Azure hizmetleriyle sorunsuz entegrasyon.
  • Otomatik Ölçeklendirme: Uygulama yüküne göre otomatik olarak node’ları veya pod’ları ölçeklendirme yeteneği.
  • Maliyet Optimizasyonu: Sadece kullandığınız kaynaklar için ödeme yaparsınız ve spot VM’ler gibi seçeneklerle maliyetleri düşürebilirsiniz.
  • Geliştirici Dostu: Kubernetes’in tüm gücünü, basitleştirilmiş bir yönetim deneyimiyle sunar.

Kullanım Senaryoları

AKS, mikroservis mimarileri, CI/CD işlem hatları, IoT çözümleri, makine öğrenimi iş yükleri ve büyük veri işleme gibi birçok farklı senaryoda kullanılabilir. Özellikle yüksek trafikli web uygulamaları ve sürekli entegrasyon/sürekli dağıtım (CI/CD) süreçlerine sahip projeler için ideal bir çözümdür.

Ön Gereksinimler ve Ortam Hazırlığı

AKS kümesi oluşturmaya başlamadan önce bazı temel araçlara ve bir Azure hesabına ihtiyacımız var.

Azure Hesabı ve Aboneliği

Bir Azure aboneliğinizin olması gerekmektedir. Eğer yoksa, Azure ücretsiz hesabı oluşturarak başlayabilirsiniz.

Azure CLI Kurulumu

Azure kaynaklarını komut satırından yönetmek için Azure CLI (Command-Line Interface) kurulu olmalıdır. Kurulum talimatları için Azure CLI belgelerine bakabilirsiniz. Kurulumdan sonra Azure hesabınıza giriş yapın:

az login

Kaynak Grubu Oluşturma

Azure'da tüm kaynaklar bir kaynak grubu içinde yer alır. AKS kümenizi ve ilgili kaynakları barındırmak için bir kaynak grubu oluşturalım:

az group create --name myAKSResourceGroup --location eastus

myAKSResourceGroup yerine kendi kaynak grubunuzun adını, eastus yerine ise tercih ettiğiniz Azure bölgesini yazabilirsiniz.

kubectl Kurulumu

Kubernetes kümeleriyle etkileşim kurmak için kubectl komut satırı aracına ihtiyacımız var. Azure CLI üzerinden kolayca kurabiliriz:

az aks install-cli

AKS Kümesi Oluşturma

Şimdi sıra AKS kümemizi oluşturmaya geldi. Bu adımda kümenin temel özelliklerini belirleyeceğiz.

Temel Küme Oluşturma Komutu

Aşağıdaki komutla basit bir AKS kümesi oluşturabiliriz. Bu komut, belirtilen kaynak grubunda varsayılan ayarlarla (örneğin, 3 sanal makine düğümü) bir küme oluşturacaktır:

az aks create \
    --resource-group myAKSResourceGroup \
    --name myAKSCluster \
    --node-count 3 \
    --enable-managed-identity \
    --generate-ssh-keys

  • --resource-group: Kümenin oluşturulacağı kaynak grubu.
  • --name: Kümenizin adı.
  • --node-count: Kümedeki başlangıç düğüm (node) sayısı.
  • --enable-managed-identity: Kümenin Azure kaynaklarıyla kimlik doğrulaması yapması için yönetilen kimlikleri etkinleştirir.
  • --generate-ssh-keys: SSH anahtarları oluşturur (Linux düğümleri için gereklidir).

Bu işlem birkaç dakika sürebilir.

Node Pool Yapılandırması

AKS, farklı iş yükleri için farklı node pool'ları (düğüm havuzları) destekler. Örneğin, GPU'lu veya yüksek bellekli node'lara sahip havuzlar oluşturabilirsiniz. Varsayılan olarak bir "default" node pool oluşturulur. Yeni bir node pool eklemek için:

az aks nodepool add \
    --resource-group myAKSResourceGroup \
    --cluster-name myAKSCluster \
    --name myuserpool \
    --node-count 2 \
    --node-vm-size Standard_DS2_v2

Gelişmiş Ağ Ayarları (Opsiyonel)

Varsayılan olarak AKS, küme için temel ağ ayarlarını kullanır. Daha gelişmiş senaryolar için (örneğin, mevcut bir VNet'e entegrasyon) Azure CNI (Container Network Interface) kullanabilirsiniz. Bu, küme oluşturma sırasında --network-plugin azure ve diğer ağ parametreleriyle belirtilir.

Küme Kimlik Doğrulaması

AKS, Azure Active Directory (AAD) ile entegrasyonu destekler. Bu, kullanıcıların ve grupların Kubernetes API'sine erişimini AAD üzerinden yönetmenizi sağlar. Küme oluştururken --enable-aad ve --aad-admin-group-object-ids gibi parametrelerle etkinleştirilebilir.

AKS Kümesini Yönetme ve Ölçeklendirme

Kümeniz oluştuktan sonra, onu yönetmek ve uygulamanızın ihtiyaçlarına göre ölçeklendirmek önemlidir.

Küme Bağlantısını Yapılandırma

kubectl'in AKS kümenizle iletişim kurabilmesi için kimlik bilgilerini indirmeniz gerekir:

az aks get-credentials --resource-group myAKSResourceGroup --name myAKSCluster

Şimdi kümenizin düğümlerini kontrol edebilirsiniz:

kubectl get nodes

Node Pool Ekleme ve Kaldırma

Uygulama gereksinimleriniz değiştikçe node pool'ları ekleyebilir veya kaldırabilirsiniz. Yukarıda bir node pool eklemeyi görmüştük. Mevcut bir node pool'u kaldırmak için:

az aks nodepool delete \
    --resource-group myAKSResourceGroup \
    --cluster-name myAKSCluster \
    --name myuserpool

Otomatik Ölçeklendirme (Autoscaler)

AKS, Cluster Autoscaler ve Horizontal Pod Autoscaler (HPA) ile otomatik ölçeklendirmeyi destekler. Cluster Autoscaler, kümedeki node sayısını uygulama yüküne göre otomatik olarak artırır veya azaltır. HPA ise pod'ların CPU veya bellek kullanımına göre ölçeklenmesini sağlar. Cluster Autoscaler'ı etkinleştirmek için:

az aks update \
    --resource-group myAKSResourceGroup \
    --name myAKSCluster \
    --enable-cluster-autoscaler \
    --min-count 1 \
    --max-count 5

Küme Yükseltme (Upgrade)

Kubernetes'in yeni sürümleri çıktıkça AKS kümenizi yükseltmeniz gerekebilir. Bu, güvenlik yamaları ve yeni özellikler için önemlidir:

az aks upgrade \
    --resource-group myAKSResourceGroup \
    --name myAKSCluster \
    --kubernetes-version 1.28.3

(Sürüm numarasını güncel olanla değiştirin)

Uygulama Dağıtımı ve Servisleri

Kümemiz hazır olduğuna göre, şimdi üzerine bir uygulama dağıtabiliriz.

Örnek Bir Uygulama Dağıtımı (Deployment)

Basit bir Nginx web sunucusu dağıtımı oluşturalım. Bunun için nginx-deployment.yaml adında bir dosya oluşturalım:

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

Bu dağıtımı kümeye uygulamak için:

kubectl apply -f nginx-deployment.yaml

Servis Oluşturma (Service - LoadBalancer)

Uygulamamızın dışarıdan erişilebilir olması için bir Kubernetes Service oluşturmamız gerekir. nginx-service.yaml:

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

Bu servisi uygulamak için:

kubectl apply -f nginx-service.yaml

Uygulamaya Erişim

LoadBalancer tipi servis, Azure'da bir genel IP adresi ile bir yük dengeleyici oluşturacaktır. Bu IP adresini almak için:

kubectl get service nginx-service

EXTERNAL-IP sütunundaki IP adresini bir web tarayıcısına yapıştırarak Nginx sayfanıza erişebilirsiniz.

Ingress Kontrolörleri (Kısaca)

Daha karmaşık yönlendirme ve TLS sonlandırma senaryoları için Ingress kontrolörleri (örneğin NGINX Ingress Controller veya Azure Application Gateway Ingress Controller) kullanabilirsiniz. Ingress, HTTP/HTTPS trafiğini küme içindeki servislere yönlendirir.

Güvenlik ve İzleme İpuçları

Bir AKS kümesini kurmak sadece başlangıçtır. Güvenlik ve izleme, üretim ortamları için hayati öneme sahiptir.

RBAC ve Azure AD Entegrasyonu

Kubernetes'in yerleşik Rol Tabanlı Erişim Kontrolü (RBAC) mekanizmasını kullanarak kullanıcıların ve servis hesaplarının küme kaynaklarına erişimini kısıtlayın. Azure AD entegrasyonu ile kurumsal kimlik yönetiminizi Kubernetes'e taşıyabilirsiniz.

Ağ Güvenliği (Network Policies)

Kubernetes Network Policies, pod'lar arasındaki ve pod'lar ile dış kaynaklar arasındaki ağ trafiğini kontrol etmenizi sağlar. Bu, mikrosegmentasyon uygulayarak güvenlik duruşunuzu güçlendirir.

İzleme ve Loglama (Azure Monitor)

Azure Monitor for Containers, AKS kümelerinizin performansını ve sağlığını izlemek için kapsamlı bir çözüm sunar. CPU, bellek kullanımı, ağ trafiği gibi metrikleri toplar ve logları analiz etmenizi sağlar. Kurulum sırasında --enable-addons monitoring ile etkinleştirilebilir.

Güncellemeler ve Yama Yönetimi

AKS kümenizi ve node'larınızı düzenli olarak güncel tutun. Azure, otomatik düğüm işletim sistemi yamalama ve küme yükseltme seçenekleri sunar. Bu, güvenlik açıklarını kapatmak ve yeni özelliklerden yararlanmak için kritik öneme sahiptir.

AKS'i Kaldırma

Artık AKS kümenize ihtiyacınız kalmadığında, gereksiz maliyetlerden kaçınmak için onu silmelisiniz.

Kaynak Grubunu Silme

AKS kümesini ve ilişkili tüm kaynakları (depolama hesapları, yük dengeleyiciler, sanal ağlar vb.) silmenin en kolay yolu, kümenin bulunduğu kaynak grubunu silmektir:

az group delete --name myAKSResourceGroup --yes --no-wait

--yes komutu onay istemeden silme işlemini başlatır, --no-wait ise komutun arka planda çalışmasını sağlar.

Tek Tek Kaynakları Silme (Alternatif)

Eğer kaynak grubunuzda AKS kümesi dışında korumak istediğiniz başka kaynaklar varsa, sadece AKS kümesini silebilirsiniz:

az aks delete --resource-group myAKSResourceGroup --name myAKSCluster --yes --no-wait

Ancak bu, küme tarafından oluşturulan diğer Azure kaynaklarını (örneğin, yük dengeleyiciler) silmeyebilir. Bu yüzden genellikle kaynak grubunu silmek daha güvenli ve eksiksiz bir temizleme yöntemidir.

Sonuç

Bu makalede, Azure Kubernetes Service (AKS) hakkında kapsamlı bir rehber sunarak, temel kavramlardan başlayıp adım adım bir AKS kümesini nasıl kuracağınızı, yöneteceğinizi ve üzerine bir uygulama dağıtacağınızı gösterdik. Ayrıca güvenlik ve izleme ipuçlarına değindik ve kümenizi nasıl temizleyeceğinizi açıkladık. AKS, konteynerli iş yüklerinizi bulutta çalıştırmak için güçlü, esnek ve yönetilen bir platform sunar. Bu rehber, bulut yerel uygulamalarınız için sağlam bir temel oluşturmanıza yardımcı olacaktır. AKS'in sunduğu tüm özelliklerden tam olarak yararlanmak için Azure belgelerini ve Kubernetes topluluğunu keşfetmeye devam etmenizi öneririz.

SSS (Sık Sorulan Sorular)

AKS ücretsiz mi?

AKS'in kontrol düzlemi (master node'lar) ücretsizdir. Ancak, kümenizdeki sanal makineler (node'lar), depolama, ağ kaynakları ve diğer Azure hizmetleri için kullandığınız kadar ödeme yaparsınız.

AKS'te kaç node olmalı?

Başlangıç için genellikle 1 ila 3 node ile başlanır. Üretim ortamları için yüksek erişilebilirlik sağlamak amacıyla en az 3 node önerilir. Uygulamanızın yüküne ve gereksinimlerine göre bu sayıyı otomatik ölçeklendirme ile artırabilir veya azaltabilirsiniz.

AKS'i neden kullanmalıyım?

AKS, Kubernetes yönetiminin karmaşıklığını azaltır, operasyonel yükü hafifletir ve uygulamalarınıza odaklanmanızı sağlar. Azure ekosistemiyle entegrasyonu, otomatik ölçeklendirme yetenekleri ve yüksek erişilebilirlik sunması, onu modern bulut uygulamaları için cazip bir seçenek haline getirir.

AKS ve diğer Kubernetes dağıtımları arasındaki fark nedir?

AKS, Azure tarafından yönetilen bir Kubernetes hizmetidir. Bu, kontrol düzleminin Azure tarafından yönetildiği ve bakımı yapıldığı anlamına gelir. Diğer dağıtımlar (örneğin, Kubeadm ile kendi sunucunuzda kurulan Kubernetes veya diğer bulut sağlayıcılarının sunduğu yönetilen hizmetler) kontrol düzlemi yönetimi ve entegrasyon açısından farklılık gösterebilir.

AKS'te maliyeti nasıl optimize edebilirim?

Maliyeti optimize etmek için Cluster Autoscaler'ı etkinleştirerek node'ları otomatik ölçeklendirebilir, spot VM'leri kullanarak daha ucuz sanal makinelerden faydalanabilir, uygun VM boyutlarını seçebilir ve kullanılmayan kaynakları düzenli olarak temizleyebilirsiniz. Ayrıca Azure Maliyet Yönetimi araçlarını kullanarak harcamalarınızı takip edebilirsiniz.

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

Gönder

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.
Mobil sürümden çık