Azure Container Registry ve Azure Kubernetes Service Kullanımı

Şevket Yılmaz
Kodiks
Published in
5 min readMay 4, 2020
Azure Container Registry & Azure Kubernetes Service

Merhaba, bu yazıda adım adım bir ASP.NET Core projesinin Docker imajını Azure Container Registry üzerinden Azure Kubernetes Service ile nasıl ayağa kaldırabileceğimizi anlatacağım.

➀ Kaynakların oluşturulması

Öncelikle Azure portal üzerinde söz konusu kaynaklarımızı oluşturalım.

🔷 Azure Container Registry

“Create a resource” butonunu kullanarak aşağıdaki ekrana gelip Container Registry seçeneğine tıklıyoruz.

Azure Create a resource

Create diyerek ilerliyoruz..

Azure Create container registry

İlgili Azure aboneliğimizi(Subscription) seçiyoruz ve Resource Group alanına geçiyoruz.

Yeni bir Resource Group oluşturabilir veya varolan bir tane seçebiliriz.
Registry name alanına azurecr.io alan adından bize verilecek bir alt alan adı belirliyoruz.

Location alanını dilediğimiz yerden seçiyoruz (paramıza göre :)

Admin user alanında Enable seçerek Review + create butonuna tıklıyoruz.

Azure Create container registry

‘Validation passed’ mesajını görüp Create diyoruz.

Deployment sayfasına yönlendiriliyoruz.

İşlem tamamlandığında ‘Go to resource’ butonuna tıklayarak Overview sayfasına ulaşabiliriz.

Azure Container Registry

Azure Container Registry‘miz hazır. Şimdilik burada işimiz bitti.

🔷 Azure Kubernetes Service

Sırada Azure Kubernetes Service(AKS) oluşturmak var.

Tekrar anasayfadan ‘Craete a resource’ butonunu kullanarak Kubernetes Service i seçiyoruz ve create butonuna tıklıyoruz.

Basics sekmesinde Resource group seçiyoruz(veya yeni bir tane oluşturuyoruz) ve cluster ismimizi verdikten sonra Region, Kubernetes versiyonu, makine özellikleri, kaç node kullanacağımız tercihlerini yapıyoruz.

Create Kubernetes cluster

Diğer sekmelerde Kubernetes’in nasıl yetkilendirme sağlayacağı, ağ tercihleri, monitoring özelliğinin kullanılıp kullanılmayacağı gibi bazı ayarlar var. Varsayılan tercihler iş görecektir, istenirse bunlar sonradan düzenlenebilir.

‘Review + create’ ve ardından ‘create’ diyerek AKS’mizi oluşturuyoruz.

Yine deployment sayfasına yönlendiriliyoruz, bu kısım Container Registry‘den daha uzun sürecektir :)

Deployment tamamlandığında anasayfadan Resource Groups menüsüne gidecek olursak oluşan kaynakları aşağıdaki şekilde görebiliriz.

ContainerRegistryRG : Container Registry için oluşturduğumuz kaynak grubu. İçerisinde Container Registry‘miz var. Birazdan buraya bir imaj göndereceğiz.
DefaultResourceGroup-WEU : AKS oluştururken Monitoring özelliğini açık bırakmıştık. AKS’mizi loglayan ve analiz eden arkadaşlar bunlar.
KubernetesServiceRG : AKS için oluşturduğumuz kaynak grubu. AKS bu kaynak grubu içerisinde bulunmakta.
MC_KubernetesServiceRG_SimpleAppCluster_westeurope : Bu arkadaş ise içerisinde AKS’yi oluştururken hiç farketmeden oluşturduğumuz sanal makinemizi, network kaynaklarımızı, IP adresimizi vs barındırıyor.
NetworkWatcherRG : Bu arkadaş neden oluşuyor tam olarak bilmiyorum :) İsminden network kaynaklarımızı takip için bir şeyler yapılmak istendiği aşikar oluyor fakat içi boş :)

➁ Kaynaklara Erişim

Şimdi konsol tarafına geçelim ve eğer daha önce olmamışsak Azure’a login olalım.
(Azure CLI yüklü olmalı) (‘az login’ komutu ile login olunur)

Sıra geldi imajımızı Container Registry’ye göndermeye.

Bunun için zaten bilgisayarınızda Docker’ın yüklü olduğunu ve uygulamanızın imajının burada bulunduğunu varsayıyorum.

Ben DockerHub’da bulunan örnek bir uygulamanın imajını kullanacağım.
Siz de eğer sadece deneyimlemekle ilgileniyorsanız burada;

docker pull mcr.microsoft.com/dotnet/core/samples:aspnetapp

Container Registry’ye ayrıca login olmak gerekiyor. Bunun için kullanıcı adı ve şifrenizi Azure portalında Container Registry’ye girerek ‘Access keys’ menüsünde görebilirsiniz.

Container Registry Access Keys
docker login kodikscontainers.azurecr.io
docker login
docker tag ImageAdi:etiket containerRegistryURL/containerRegistryAdi:etiketdocker push containerRegistryURL/containerRegistryAdi:etiket
docker tag / push

Azure portalında imajımız;

Container registry

Şimdi ise Azure Kubernetes Service’e bağlanıyoruz..

az aks get-credentials --resource-group ResourceGroupAdi --name AKSAdi
az aks get-credentials

Bu esnada kullanıcı klasörünüzde .kube isimli bir klasör içerisinde kubectl komutlarınızı çalıştırırken kullanmak üzere bir config dosyası oluşacak.

AKS’nin Container Registry’ye bağlanıp imajımızı alabilmesi için aşağıdaki komutla bir secret oluşturuyoruz.

kubectl create secret docker-registry secretadi --docker-server=containerRegistryURL --docker-username=USERNAME --docker-password=PASSWORD --docker-email=mailiniz@asede.com
kubectl create secret

Buradaki USERNAME ve PASSWORD alanlarına az önce ‘docker login’ işleminde kullandığımız kullanıcı adı ve şifremizi yazıyoruz.

➂ Deployment

Sıra geldi deployment ve service YAML dosyalarımızı oluşturmaya

yml uzantılı dosyaları oluşturmak için Visual Studio Code gayet uygun. Başka bir araçla oluşturuyorsanız girintilerin tab veya boşluk olmadığına dikkat etmelisiniz. Aşağıdaki örneği alıp üzerinde değişiklik yaparak ilerleyebilirsiniz.

deployment.yml

Burada dikkat ederseniz ‘imagePullSecrets’ alanında biraz önce oluşturduğumuz secret ismini veriyoruz.

Oluşturduğumuz deployment dosyasını ‘apply’ komutu ile AKS’ye vereceğiz (hangi dizinde olduğumuza dikkat ediyoruz)

kubectl apply -f deployment.yml
kubectl apply deployment

Ardından hemen service dosyamızı oluşturuyoruz..

service.yml

ve ‘apply’ komutumuzu çalıştırıyoruz..

kubectl apply -f service.yml
kubectl apply service

Birkaç saniye sonra EXTERNAL-IP alanında ulaşacağımız IP adresi geliyor..

ve mutlu son..

Bu arada uygulamamız için otomatik olarak oluşturulup atanan IP adresi de burada;

kubernetes public IP adress

Okuduğunuz için teşekkürler!

Bu yazı sizin için faydalı olduysa, Medium ve Twitter’dan bizleri takip edebilirsiniz. Tartışmak istediğiniz herhangi bir sorunuz veya uygulama fikriniz varsa, bizimle e-posta yoluyla iletişime geçmekten çekinmeyin.

--

--