Azure Arc özellikli veri hizmetlerini şirket içinde veya hibrit bulut senaryosunda farklı bulut sağlayıcılarına dağıtabilmek için Kubernetes üzerinde çalışan bir Data Controller’a ihtiyacınız vardır. Data Controller sayesinde Azure Arc entegrasyonunu ve yönetim hizmetleri gibi temel işlevleri kendi yapınıza uygulayabilirsiniz. Bu sebepten Azure Arc Data Controller bizler için hayati bir öneme sahiptir. Özetlemek gerekirse, alt yapınızın olduğu ve kubernetes çalıştırabildiğiniz her yerde Azure Arc Data Controller dağıtınını yaparsanız Azure Arc özellikli veri hizmetlerini kullanabilirsiniz.
Peki Azure Arc özellikli veri servislerinin kullanımında bu derece öneme sahip Data Controller nasıl çalıştırılır yada yüklenir sorusu aklınıza geliyor değil mi? Hadi cevaplayayım o zaman…
Data Controller’ın iki farklı bağlantı türü olduğunu bilerek başlamak bu noktada çok önemlidir. Bağlantı türü, Azure’a ne kadar veri gönderileceğini ve kullanıcıların Arc veri denetleyicisiyle nasıl etkileşime gireceğini seçme esnekliği sağlar ve seçilen bağlantı türüne göre Azure Arc Veri Hizmetlerinin bazı özelliklerini kullanamayabilirsiniz.
- Directly Connected Mode – Doğrudan Bağlı : Yönetim hizmetlerini Azure Portal üzerinden yönetebilir ve kullanabilirsiniz.
- Indirectly Connected Mode – Dolaylı olarak bağlı : Yönetim hizmetlerini çoğunu kendi ortamlarınızda Azure’a ihtiyaç duymadan yapmanıza imkan sunar.
Eğer ki doğrudan bağlı bağlantı türünü seçerseniz Azure Resource Manager API’lerini, Azure CLI ve Azure Arc veri hizmetlerini kullanmak için Azure Portal’ı kullanabilirsiniz, Indirectly türünü seçerseniz envanter oluşturulması ve faturalama amacıyla Azure’a en az miktarda veri göndermeniz gerekir.
Directly Mode | Indirectly Mode | |
Azure’a Veri gönderme | Azure’a doğrudan bağlantıya ihtiyaç duyulur. Bağlantılar her zaman ortamınızdan Azure’a doğru başlatılır ve https/443 gibi standart bağlantı noktalarını ve protokolleri kullanır. | Azure’a doğrudan bir bağlantıya ihtiyaç duyulmaz. Ayda en az 1 kere olmak üzere Azure’a veri gönderilmesi gerekir. Bağlantı ihtiyacı olmadan kendi ortamınızda kullandığınız da kullanıldığı için Azure Bağlantısı gerektiren özellikleri ve hizmetleri kullanabilirsiniz. |
Kullanım Örnekleri | Finans ya da sağlık kurumları ve KAMU | Ortak bulut kullanıcıları. Azure, AWS veya Google Cloud |
Bunca teori bilginin ardından şimdi sırada Azure Kubernetes clusterımıza – AKS- Data Controller’ı dağıtmaya sıra geldi. Bu işlemi iki farklı şekilde gerçekleştirebilirim.
- Powershell kullanarak
- Azure Portal kullanarak
Biz makale içerisinde işlemlerimizi her iki yöntemi de kullanarak gerçekleştiriyor olacağız. Bu sebepten ilk iş powershell açıyor ve az login ile azure hesabımıza giriş yapıyoruz. Powershell ve Azure kullanmak için bu adresten faydalanabilirsiniz. – https://docs.microsoft.com/tr-tr/powershell/azure/install-az-ps?view=azps-5.7.0 – AKS bilgilerimizi Azure Data Studio kullanarak kullanacağımız için bir noktada powershell ihtiyaç duyuyor olacağız, bu yüzden herşeyi Azure Portal üzerinden yapmıyoruz.
Az login
Resim1: Az Login ile giriş
Az login komutunu kullandığınızda varsayılan tarayıcınızda bir web sayfası açıp hesap doğrulaması yapmanızı isteyecek, bu işlemler sonrasında yukarıdaki gibi ekran ile karşılaşıyor olacaksınız.
Sonrasında çalışmalarımızı yapmak için bize bir resource group lazım olacak. Resource Group oluşturmak içinde aşağıdaki kod bloğunu kullanıyorum.
az group create --name rg-dmc-k8s --location eastus
Resim2: Resource Group oluşturma
Resource Group’ta tamam olduğuna göre şimdi Azure Kubernetes Cluster’ı oluşturuyorum. Bunun için Azure hesabıma giriş yapıp rg-dmc-k8s isimli bir resource group oluşturup içerisine de dmc-aks-arc isimli bir kubernetes clusterı oluşturuyorum. Burada AKS oluştururken bazı değişiklikler yapıyor olacağız.
Resim3: AKS Oluşturma – Basic
Resim3 de görüldüğü üzere Availability Zone kısımını Zone 1 olarak, Kubernetes version bilgisini 1.19.6 olarak değiştirdim. Zone kısımında değişilik yapma sebebim şuan için Data Controller farklı PVC dağıtımlarını desteklememesidir. Bu sebeple Data Controller’ı başarılı şekilde deploy etmek isterseniz tek zone seçmelisiniz. Kubernetes version bilgisini ben 1.19+ olarak değiştirdim, siz ihtiyacınıza göre değiştirebilirsiniz fakat azure arc desteğini kontrol etmeniz gerekli. ( Minumum kubernetes versiyonu 1.16 ve üzeridir.) “Networking” sekmesine geçiyor ve ayarlamalarımıza devam ediyoruz.
Resim4: AKS – Networking
Resim4’de görüldüğü üzere http routing kısımı aktif ediyoruz. Son AKS yapılandırmasında son adım “Integrations” sekmesi üzerinde gerçekleştiriyorum.
Resim5: AKS – Integration Sekmesi
Resim5’de görüldüğü üzere Container Monitoring kısımını kapatıyorum. Sebebi ben kendi AKS mi Grafana ile kendim monitor edeceğim. Azure Arc nimetlerinden faydalanacağım.
Diğer gördüğünüz “Node Pools”,”Authentication” gibi sekmelerde herhangi bir ayarlama yapmadım. Varsayılan olarak onları bıraktım ve artık son kontrollerimi yapıp Azure Kubernetes Cluster’ımı oluşturmaya sıra geldi. Ortalama 10 dk içerisinde istediğim cluster’ıma kavuşuyorum.
Sonra ise birinci adım olarak powershell yardımı ile AKS’mı ait credentials alıyorum. Bu işlem için aşağıdaki kod bloğu işimi görecektir.
az aks get-credentials --resource-group rg-dmc-k8s --name dmc-aks-arc
Resim6 : AKS – Kimlik bilgilerimi alıyorum.
İkinci adım; Aşağıdaki kod bloğu ile context’in adını öğreniyorum.
kubectl config view -o jsonpath='{.contexts[*].name}'
Üçüncü adım; Context bilgisini öğrendiğime aşağıdaki kod bloğu ile çalışmak istediğim context’in doğruluğunu teyit ediyorum. Birden fazla context bilgisi görebilirsiniz ve bu sebepten hangisinin aktif olduğunu görmek için aşağıdaki kod bloğunu kullanıyorum.
kubectl config current-context Resim7 de görüldüğü üzere benim bu örnekte tek bir config’im varmış. Bu sebepten context bilgisini değiştirmek zorunda değilim, fakat birden fazla config olsaydı eğer “kubectl config use-context DilediginContextYaz” komutu ile context değişikliği yapabilirdim.
Resim7 : Örnek çıktı
İstediğimiz cluster’a geçiş yaptığımıza göre artık bağlandığımız cluster’ın depolama sınıfını öğrenmemiz gerekecek. Bu bilgi daha sonra bize lazım olacaktır.
kubectl get storageclass
Resim8 : Depolama sınıf listesi
Birden fazla depolama sınıfı olan bir k8s clusterı içerisinde çalışıyorsanız hangisi üzerinde çalışmak istediğinize karar vermeniz gerekir. Bu arada farklı depolama sınıfları içerisinde kubernetes’in log, data dosyalarını barındırabilirsiniz.
Azure Data Studio aracılığı ile Data Controller’ı Yayına alma işlemi Azure Data Studio’yu açtığınızda sol tarafta yer alan menü de Connection bölümünde Azure Arc Controllers yer alıyor. O bölümde yer alan “+” işaretine tıklıyoruz.
Resim9: Azure Data Studio Add Controller
Resim10: Preview gözüken Data Controller seçilir.
Resim11: Deployment için ön ihtiyaçlar
Resim11 de görüldüğü gibi bazı ön ihtiyaçlar söz konusudur, fakat biz bu ihtiyaçları Azure Kubernetes içerisinde SQL Server kurulumu yaparken kurulumlarını yapmıştık. Bu sebepten işleme hızlıca devam ediyoruz.
Resim12: Cluster’ın seçmemizi istiyor.
Biz bu yazı özelinde dmc-aks-arc isimli bir Azure Kubernetes Cluster oluşturmuştuk. Bu sebepten bunu seçerek devam ediyoruz.
Resim13: Config profile seçimini yapıyoruz.
Resim14: Azure Hesabımıza bağlanmamızı istiyor.
Resim14 de yer alan sign in ile azure hesabımıza login oluyoruz. Sonrasında bizden kubernetes bilgilerini istiyor olacak.
Resim14_1: Tanımları yapıldı.
Eğer ki bağlantı modu olarak direct seçecek olursanız sizden bir azure service hesabı istiyor olacaktır. Azure Servis hesabının da nasıl oluşturulduğunu sonra anlatıyor olurum.
Resim15: Controller Yapılandırılması
Resim15 da gördüğünüz gibi bizden veri denetleyicimiz için bazı tanımaları istiyor.
Resim15_1 : Controller yapılandırılması için girdiğimiz veriler.
Resim16: Yapılandırma kontrollü.
Resim17 da gördüğünüz gibi Azure Data Studio ile yaptığımız yapılandırmanın son bir özet bilgilerini gösterip bizden notebook olarak bir çıktı alabilir yada deploy da edebiliriz. Biz örneğimiz için notebook olarak script aldım.
Resim18: Azure Arc Data Controller Deploy
Resim18 de gördüğünüz notebook kod bloklarını ayrı ayrı çalıştırabileceğimiz gibi yukarıda Run All diyip tamamın da çalıştırılmasını sağlayabiliriz. Fakat burada dikkat edilmesi gereken kısımlardan biri Set variables kısımda tanımlanan değişkenlerin i harfi yerine ı olarak gelmiş olmasıdır. Kod bloğunda hepsi i olarak geçiyor. Bu yüzden kodları çalıştırmadan önce değişkenlerde ı olan kısımları i olarak değiştiriyorum. Değişiklikleri tamamladıktan sonra kodları çalıştırırsanız Resim19 ile karşılaşıyor olacaksınız.
Resim19: Azure Arc Data Controller Dağıtımı
Resim19’da gördüğünüz gibi her ne kadar işlemi Azure Data Studio kullanarak gerçekleştirmiş olsak dahi bizim için bir azdata çıktısı üretiyor ve powershell üzerinden de işlemi nasıl takip edeceğimiz hakkında bilgilendirme yapıyor.
kubectl get get pods -n arc
Yukarıdaki komutu kullanarak neler olduğunu gözlemleyebiliriz.
Resim20: Kubectl get pods Arc
Resim20’de gösterildiği gibi baktık fakat Resim19’dan tekar baktığımızda işlemin devam ettiğini gördük. Sürekli Resim20’de olan kodu çalıştırıp kontrol etmek yerine aynı koda –watch eki ekleyip gözlemlemeye devam edebilirim.
Resim21: kubectl get pod arc watch
Azure Arc Data Controller’ın dağıtımı yaklaşık 30 dakika kadar sürdü. Burada ki süre sizin Azure Kubernetes Cluster’ınızı büyüklüğüne, node sayısına ve internet hızınıza göre değişkenlik gösterecektir. Azure Data Studio üzerinde Resim22 de ki ekranı görürseniz eğer Azure Arc Data Controller’ı başarılı bir şekilde deploy etmişsinizdir.
Resim22: Deploy Arc Data Controller
Dağıtımı başarılı bir şekilde gerçekleştirdikten sonra aşağıdaki kod bloğunu kullanarak giriş yapabilirsiniz. Kod bloğu sizden ADS – Azure Data Studio – da girdiğiniz Data Controller bilgilerini istiyor olacak.
azdata login -ns arc
Resim23: Login arc
Arc’a oturum açma işlemini başarılı bir şekilde gerçekleştirdiysek aşağıdaki kod bloğunu kullanarak arc üzerindeki endpoint noktalarımızı görüntüleyebiliriz.
azdata arc dc endpoint list -o table
Resim24: Endpoint listesi
Resim24 de gördüğünüz gibi Azure Arc Data Controler için bize farklı işlevleri gerçekleştireceğimiz IP adresleri verdi. Elde ettiğimiz Cluster Management Service’in Endpoint adresine ADS ile bağlantı kuralım.
Resim25: Connect Data Controller
Bağlantı başarılı olduğunda Resim26’da göreceğiniz gibi ADS’de sol alt kısımda görebilirsiniz.
Resim26: Connected Data Controller
Data Controller’ı üzerinde sağ tıkladığınız manage kısımı gelecek ve bundan sonrası Azure Arc özellikli veri hizmetlerinin bize sağladığı özellikleri kullanma vakti.
Resim27: Azure Arc Data Controller ADS görünümü
Bir sonraki yazıda Azure Arc özellikli Managed Instance kurulumunu anlatıyor olacağım. Sonrasında da size Azure Arc özellikli PostgreSQL Hyper Scale Server Group oluşturmayı anlatıyor olurum.
Dipnot: Bu yazı ve bundan önceki yazılarımda Azure kullanımları bana sponsor olan Logosoft’tan sevgili Yiğit ÖNER ve Microsoft’tan Ali Kemal KARABULUT’a ve teşvikleri ile beni destekleyen sevgili MSHOWTO grubu topluluğunun yöneticisi Mustafa KARA’ya çok teşekkür ederim.
DMC Bilgi Teknolojileri
Çağlar ÖZENÇ