Azure Portal Üzerinden AKS Kurulumu

Çiğdem Kadakoğlu
KoçSistem
Published in
5 min readDec 16, 2021

Azure

Herkese merhaba, bu yazıda Azure Portal’den yeni bir Kubernetes Cluster kurulumu yapılırken çok fazla detaylarda kaybolmadan uygulanacak adımlar konusunu ele alacağım.

  • Create a resource → Containers → Kubernetes Service
cidokimi
  • Aşağıdaki açılan ekranda öncelikle hangi “Subscription” da olması gerektiği seçilir. “Resource Group” için ya var olanlardan biri kullanılır ya da yeni oluşturmak için “Create new” a tıklanıp oluşturulur. “Kubernetes cluster name” kısmında ilgili K8s clustera hangi isim verilmek isteniyorsa o yazılır. “Region” için genellikle clusterda yönetilecek uygulamaların kullanıldığı yerlere yakın bölgeler seçilir. Bu yüzden “(Europe) West Europe” olarak seçilebilir. “Availability Zones”, high availability için sağlanır. Burada seçilen zonedaki datacenter fail olduğunda uygulamaların hala çalışır halde olmasını sağlar. Bu yüzden önerilen “Zones 1,2,3” şeklindedir. “Kubernetes version” da ise Azure, default olarak kullandığı stable versionu önerir. İstenirse farklı versionlardan biri seçilebilir.
cidokimi
  • “Primary Node Pool” adımında cluster poolundaki nodeların sayısı ve size ı vardır. Production ortamlar için en az 3 node önerilir. Development ya da test ortamları için 1 node yeterlidir. Farklı node poolları oluşturmak için ise sonraki adımda bulunan “Node pools” tabına bakılır.
cidokimi
  • “Node pools” tabında “Add node pool” seçilir.
cidokimi

Yeni bir node pool eklenirken, sisteme; aynı size a, labela, taint e sahip worker nodelar eklenebilir. Burada “Scale Method” için kaç tane node olacağı belli ve direkt olarak kullanmak isteniyorsa “manual” seçilip kaç tane olacağı yazılır. Clustera gelen yüke göre otomatik olarak node ekleyip yapması için ise “Autoscale” özelliği seçilir. Autoscale de node sayısı min-max şeklinde bir aralık verilebilir. “Node size” kısmı için vCPU, memory, disk özelliklerine göre size seçilir.

cidokimi

Oluşturulacak olan pool için nodelarda maximum kaç tane podun çalıştırılacağı configüre edilebilir.

cidokimi

Kubernetes kurulumları sonunda verilecek olan label ve taintler, direkt olarak bu poollara verilebilir. Tekrardan konfigüre etmeye gerek kalmaz.

cidokimi
  • “Authentication” tabında Kubernetes clusterına erişim için “RBAC” Enabled olması gerekmektedir. Eğer Azure Active Directory grubundakiler erişecek ise Kubernetes RBAC ile konfigüre edilebilir. Burada belirli namespacelere istenilen userlar erişebilir.
cidokimi
  • “Networking” kısmında iki tane önemli network konfigürasyon vardır. Birincisi “kubenet” network plugini, cluster için default değerlerle yeni bir VNet oluşturur. İkincisi “Azure CNI” network plugini, cluster için adreslerin customize edilebildiği yeni bir VNet oluşturmayı ya da var olan bir VNeti konfigüre edebilmeyi sağlar. Uygulama podları direkt olarak burada oluşturulan VNet’e bağlanır. Genellikle dev ya da lokal ortamlar için “kubenet” kullanılabilir. Production ortamlarda özellikle cluster nodelarına bağlanmak, farklı konfigürasyonlar yapmak için “Azure CNI” kullanılabilir.
cidokimi
  • “Integrations” kısmında eğer bir container registry kullanılacaksa yeni bir registry oluşturulur ya da var olanlardan biri entegre edilebilir. Diğer kısımlarda ise Azure’un önerdiği şekilde “Container Monitoring” Enabled edilir ve “Log Analytics workspace” için var olan bir workspace seçilir ya da yeni bir tane oluşturulur.
cidokimi
  • “Tags” kısmında name/value pairleri ile kullanılacak resourcelar aynı tag ile gruplanabilir.
cidokimi
  • En son adımda tüm bilgiler doğru ise “Create” butonuna tıklanır.
cidokimi
  • Deploymentın tamamlanması beklenir.
cidokimi
  • Clustera erişmek için “Cloud Shell” açılır. Aşağıdaki komutlar çalıştırılır. Bu sayede bulunulan subscription ayarlanmış ve clusterın config iyle beraber erişim sağlanmış olur.
az account set --subscription $SUBSCRIPTION_ID
az aks get-credentials --resource-group rg-cgdm --name aks-cgdm
  • Bu adımdan sonra “kubectl” komutları çalıştırılabilir.
cidokimi
  • Clusterda bir uygulama çalıştırmayı denemek için:
sudo cat <<EOF > test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.16
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx-svc
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx
EOF
kubectl create -f test.yaml
  • Uygulamanın çalışıp çalışmayı kontrol edilir.
cidokimi
  • Lokalden browser üzerinden kontrol etmek için oluşturulan service deki “EXTERNAL-IP” ile 80 portuna bakılır.
cidokimi
  • Clusterdaki nodelardan birine bağlanmak için;
kubectl debug node/NODE-NAME -it --image=mcr.microsoft.com/aks/fundamental/base-ubuntu:v0.0.11
  • Clusterı silmek için ilgili Kubernetes Service açılır ve Stop-Delete yapılır.
cidokimi

Umarım faydalı bir yazı olmuştur. Her türlü önerinizi ve sorunuzu bana bildirmekten ve sormaktan çekinmeyin lütfen.

Herkese iyi günler diliyorum!

--

--

Çiğdem Kadakoğlu
KoçSistem

Docker Captain🐳🇹🇷👩‍✈️ | Microsoft MVP | Instructor | Senior Cloud&DevOps Engineer | CK{A|AD}-AZ{104|204|305|400|800|801|900}-DP900-AI{900|102}-PL900🐧🐳🌼☕