Hızlı Başlangıç: K3s ile GitHub Codespaces'ta Azure IoT İşlemlerini çalıştırma
Bu hızlı başlangıçta, cihazlarınızı ve iş yüklerinizi uzaktan yönetebilmeniz için Azure IoT İşlemlerini Azure Arc özellikli bir Kubernetes kümesine dağıtacaksınız. Hızlı başlangıcın sonunda, buluttan yönetebileceğiniz bir kümeniz vardır. Bu uçtan uca serideki hızlı başlangıçların geri kalanı örnek varlıkları, veri işleme işlem hatlarını ve görselleştirmeleri tanımlamak için bunu temel alır.
Başlamadan önce
Bu hızlı başlangıç serisi, uçtan uca senaryoları değerlendirebilmeniz için Azure IoT İşlemleri'ne mümkün olan en kısa sürede başlamanıza yardımcı olmak için tasarlanmıştır. Gerçek bir geliştirme veya üretim ortamında, birlikte çalışan birden çok ekip bu görevleri gerçekleştirir ve bazı görevler yükseltilmiş izinler gerektirebilir.
En iyi yeni kullanıcı deneyimi için, bu hızlı başlangıçlarda kaynaklar üzerinde sahip izinlerine sahip olmanız için ücretsiz bir Azure hesabı kullanmanızı öneririz.
Ayrıca github codespaces'i bu hızlı başlangıç için sanal bir ortam olarak kullanırız, böylece senaryoyu kendi makinelerinize yeni araçlar yüklemeden test edebilirsiniz. Ancak, Azure IoT İşlemlerini Ubuntu veya Azure Kubernetes Service (AKS) üzerindeki yerel bir kümeye dağıtmak istiyorsanız bkz . Azure Arc özellikli Kubernetes kümenizi hazırlama.
Önkoşullar
Başlamadan önce aşağıdaki önkoşulları hazırlayın:
Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir abonelik oluşturun.
Bir GitHub hesabı.
Geliştirme makinenizde yüklü Visual Studio Code. Daha fazla bilgi için bkz . Visual Studio Code'ı indirme.
Kaynak grubu düzeyinde Microsoft.Authorization/roleAssignments/write izinleri.
Hangi sorunu çözeceğiz?
Azure IoT İşlemleri, Kubernetes kümelerinde çalışan bir veri hizmetleri paketidir. Bu kümelerin buluttan uzaktan yönetilmesini ve bulut kaynakları ve uç noktalarıyla güvenli bir şekilde iletişim kurabilmesini istiyorsunuz. Bu hızlı başlangıçta bu endişeleri aşağıdaki görevlerle ele alıyoruz:
- GitHub Codespaces'ta bir Kubernetes kümesi oluşturun.
- Uzaktan yönetim için kümeyi Azure Arc'a bağlayın.
- Şema kayıt defteri oluşturun.
- Azure IoT İşlemlerini kümenize dağıtın.
Küme oluşturma
Azure IoT İşlemleri Ubuntu'da K3'lere, Azure Kubernetes Service (AKS) Edge Essentials'a ve Azure Local üzerinde AKS'ye dağıtılabilir. Ancak, hız ve kolaylık sağlamak için bu hızlı başlangıçta kümenizi barındırmak için GitHub Codespaces kullanılmaktadır. Bunun yerine Azure IoT İşlemlerini Windows veya Ubuntu'da bir kümeye dağıtmayı öğrenmek için bkz . Azure Arc özellikli Kubernetes kümenizi hazırlama.
Not
Kod alanları kolayca ayarlanabilir ve daha sonra açılır ancak performans değerlendirmesi veya ölçek testi için uygun değildir. Yalnızca araştırma için GitHub Codespaces'i kullanın.
Codespaces ortamı hızlı başlangıç adımlarını tamamlamak için yeterlidir ancak gelişmiş yapılandırmaları desteklemez.
Bu bölümde yeni bir küme oluşturacaksınız. Azure IoT İşlemlerini daha önce dağıttığınız bir kümeyi yeniden kullanmak istiyorsanız devam etmeden önce Azure IoT İşlemlerini kaldırmak için Kaynakları temizleme başlığı altında yer alan adımlara bakın.
Azure-Samples/explore-iot-operations kod alanı aşağıdakilerle önceden yapılandırılmıştır:
- Basit bir Kubernetes kümesi için K3d'de çalışan K3'ler
- Azure CLI
- Kubernetes kaynaklarını yönetmek için Kubectl
- Helm ve k9s gibi diğer kullanışlı araçlar
Codespace ve kümenizi oluşturmak için aşağıdaki adımları kullanın:
GitHub Codespaces'ta bir kod alanı oluşturun.
Codespace'iniz için aşağıdaki önerilen gizli dizileri sağlayın:
Parametre Value SUBSCRIPTION_ID Azure abonelik kimliğiniz. RESOURCE_GROUP Kümenizin oluşturulacağı yeni bir Azure kaynak grubunun adı. KONUM Size yakın bir Azure bölgesi. Şu anda desteklenen bölgelerin listesi için bkz . Desteklenen bölgeler. İpucu
Bu adımda gizli dizi olarak sağladığınız değerler, bu ve gelecekteki kod boşluklarında kullanılmak üzere GitHub hesabınıza kaydedilir. Bunlar kod alanı terminalinde ortam değişkenleri olarak eklenir ve bu ortam değişkenlerini sonraki bölümdeki CLI komutlarında kullanabilirsiniz.
Buna ek olarak, bu kod alanı codespace adıyla ayarlanmış bir
CLUSTER_NAME
ortam değişkeni oluşturur.Yeni kod alanı oluştur'u seçin.
Kod alanı hazır olduğunda sol üstteki menü düğmesini seçin ve ardından VS Code Desktop'ta Aç'ı seçin.
İstenirse Visual Studio Code için GitHub Codespaces uzantısını yükleyin ve GitHub'da oturum açın.
Visual Studio Code'da Terminali Görüntüle'yi>seçin.
Kümenizi yönetmek için tüm CLI komutlarını çalıştırmak için bu terminali kullanın.
Kümeyi Azure Arc'a bağlama
Kümenizi Azure Arc'a bağlamak için:
Kod alanı terminalinizde Azure CLI'da oturum açın:
az login
İpucu
VS Code masaüstü yerine bir tarayıcıda GitHub codespace ortamını kullanıyorsanız, çalıştırma
az login
bir localhost hatası döndürür. Hatayı düzeltmek için:- VS Code masaüstünde codespace'i açın ve ardından tarayıcı terminaline dönün ve komutunu yeniden çalıştırın
az login
. - Alternatif olarak, tarayıcıda localhost hatasını aldıktan sonra tarayıcıdan URL'yi kopyalayın ve yeni bir terminal sekmesinde çalıştırın
curl "<URL>"
. "Microsoft Azure'da oturum açtınız!" iletisini içeren bir JSON yanıtı görmeniz gerekir.
- VS Code masaüstünde codespace'i açın ve ardından tarayıcı terminaline dönün ve komutunu yeniden çalıştırın
Oturum açtığınızda Azure CLI tüm aboneliklerinizi görüntüler ve varsayılan aboneliğinizi yıldız
*
işaretiyle gösterir. Varsayılan aboneliğinizle devam etmek için öğesini seçinEnter
. Aksi takdirde, kullanmak istediğiniz Azure aboneliğinin numarasını yazın.Gerekli kaynak sağlayıcılarını aboneliğinize kaydedin:
Not
Bu adımın abonelik başına yalnızca bir kez çalıştırılması gerekir. Kaynak sağlayıcılarını kaydetmek için, abonelik Katkıda Bulunanı ve Sahip rollerine dahil edilen işlemi gerçekleştirme
/register/action
izniniz olmalıdır. Daha fazla bilgi için bkz . Azure kaynak sağlayıcıları ve türleri.az provider register -n "Microsoft.ExtendedLocation" az provider register -n "Microsoft.Kubernetes" az provider register -n "Microsoft.KubernetesConfiguration" az provider register -n "Microsoft.IoTOperations" az provider register -n "Microsoft.DeviceRegistry" az provider register -n "Microsoft.SecretSyncController"
Azure aboneliğinizde tüm kaynakları depolamak üzere bir kaynak grubu oluşturmak için az group create komutunu kullanın:
az group create --location $LOCATION --resource-group $RESOURCE_GROUP
Kubernetes kümenizi arc-enable için az connectedk8s connect komutunu kullanın ve Azure kaynak grubunuzun bir parçası olarak yönetin:
az connectedk8s connect --name $CLUSTER_NAME --location $LOCATION --resource-group $RESOURCE_GROUP
İpucu
değeri
$CLUSTER_NAME
otomatik olarak kod alanınızın adına ayarlanır. Farklı bir ad kullanmak istiyorsanız ortam değişkenini değiştirin.objectId
Azure Arc hizmetinin kiracınızda kullandığı Microsoft Entra ID uygulamasını alın ve bir ortam değişkeni olarak kaydedin. GUID değerini değiştirmeden aşağıdaki komutu tam olarak yazıldı olarak çalıştırın.export OBJECT_ID=$(az ad sp show --id bc313c14-388c-4e7d-a58e-70017303ee3b --query id -o tsv)
Kümenizde özel konum desteğini etkinleştirmek için az connectedk8s enable-features komutunu kullanın. Bu komut, Azure Arc hizmetinin kullandığı Microsoft Entra ID uygulamasını kullanır
objectId
. Kubernetes kümesini dağıttığınız makinede şu komutu çalıştırın:az connectedk8s enable-features -n $CLUSTER_NAME -g $RESOURCE_GROUP --custom-locations-oid $OBJECT_ID --features cluster-connect custom-locations
Depolama hesabı ve şema kayıt defteri oluşturma
Şema kayıt defteri, ileti tanımlarını hem bulutta hem de uçta depolayan eşitlenmiş bir depodur. Azure IoT İşlemleri, kümenizde bir şema kayıt defteri gerektirir. Şema kayıt defteri, bulutta depolanan şema bilgileri için bir Azure depolama hesabı gerektirir.
Bu bölümde şema kayıt defteri oluşturma komutu, kaynak grubu düzeyinde Microsoft.Authorization/roleAssignments/write izni gerektirir. Bu izin, şema kayıt defterine depolama hesabına yazabilmesi için katkıda bulunan rolü vermek için kullanılır.
Codespaces terminalinizde aşağıdaki CLI komutlarını çalıştırın.
Bu bölümde oluşturduğunuz kaynaklar için ortam değişkenlerini ayarlayın.
Yer tutucu Değer <STORAGE_ACCOUNT_NAME> Depolama hesabınızın adı. Depolama hesabı adları 3 ila 24 karakter uzunluğunda olmalı ve yalnızca sayı ve küçük harf içermelidir. <SCHEMA_REGISTRY_NAME> Şema kayıt defteriniz için bir ad. <SCHEMA_REGISTRY_NAMESPACE> Şema kayıt defteri ad alanınız için bir ad. Ad alanı, kiracı içindeki bir şema kayıt defterini benzersiz olarak tanımlar. STORAGE_ACCOUNT=<STORAGE_ACCOUNT_NAME> SCHEMA_REGISTRY=<SCHEMA_REGISTRY_NAME> SCHEMA_REGISTRY_NAMESPACE=<SCHEMA_REGISTRY_NAMESPACE>
Hiyerarşik ad alanı etkinleştirilmiş bir depolama hesabı oluşturun.
az storage account create --name $STORAGE_ACCOUNT --location $LOCATION --resource-group $RESOURCE_GROUP --enable-hierarchical-namespace
Depolama hesabınıza bağlanan bir şema kayıt defteri oluşturun. Bu komut, depolama hesabında şemalar adlı bir blob kapsayıcısı da oluşturur.
az iot ops schema registry create --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP --registry-namespace $SCHEMA_REGISTRY_NAMESPACE --sa-resource-id $(az storage account show --name $STORAGE_ACCOUNT -o tsv --query id)
Azure IoT İşlemlerini dağıtma
Bu bölümde, kümenizi Azure IoT İşlemleri bileşenlerinizin bağımlılıklarıyla yapılandıracaksınız ve ardından Azure IoT İşlemleri'ni dağıtacaksınız.
Codespaces terminalinizde aşağıdaki CLI komutlarını çalıştırın.
Azure IoT İşlemleri için kümenizi başlatın.
İpucu
Komutun
init
küme başına yalnızca bir kez çalıştırılması gerekir. Üzerinde en son Azure IoT İşlemleri sürümü dağıtılmış olan bir kümeyi yeniden kullanıyorsanız bu adımı atlayabilirsiniz.az iot ops init --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Bu komutun tamamlanması birkaç dakika sürebilir. Terminalde dağıtım ilerleme durumu ekranında ilerleme durumunu izleyebilirsiniz.
Azure IoT İşlemlerini dağıtma.
az iot ops create --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP --name ${CLUSTER_NAME}-instance --sr-resource-id $(az iot ops schema registry show --name $SCHEMA_REGISTRY --resource-group $RESOURCE_GROUP -o tsv --query id) --broker-frontend-replicas 1 --broker-frontend-workers 1 --broker-backend-part 1 --broker-backend-workers 1 --broker-backend-rf 2 --broker-mem-profile Low
Bu komutun tamamlanması birkaç dakika sürebilir. Terminalde dağıtım ilerleme durumu ekranında ilerleme durumunu izleyebilirsiniz.
Kaynağınıza erişmek için cihazınızın yönetilmesi gerektiğini belirten bir hata alırsanız yeniden çalıştırın
az login
ve bir tarayıcıyla etkileşimli olarak oturum açtığınızdan emin olun.
Kümedeki kaynakları görüntüleme
Dağıtım tamamlandıktan sonra kubectl komutlarını kullanarak kümedeki değişiklikleri gözlemleyebilir veya küme Arc özellikli olduğundan Azure portalını kullanabilirsiniz.
Kümenizdeki podları görüntülemek için aşağıdaki komutu çalıştırın:
kubectl get pods -n azure-iot-operations
Kaynaklarınızı Azure portalında görüntülemek için aşağıdaki adımları kullanın:
Azure portalında Azure IoT İşlemleri örneğinizi içeren kaynak grubuna gidin veya Azure IoT İşlemleri'ni arayıp seçin.
Azure IoT İşlemleri örneğinizin adını seçin.
Örneğinizin Genel Bakış sayfasında Kaynak özeti sekmesini seçerek kümenize dağıtılan kaynakların sağlama durumunu görüntüleyin.
Sorunu nasıl çözdük?
Bu hızlı başlangıçta Arc özellikli Kubernetes kümenizi Azure IoT İşlemleri bileşenlerinizle güvenli bir şekilde iletişim kurabilecek şekilde yapılandırmışsınız. Ardından bu bileşenleri kümenize dağıttınız. Bu test senaryosu için Codespaces'ta çalışan tek bir Kubernetes kümeniz vardır. Ancak bir üretim senaryosunda, iş yüklerini birçok sitedeki birçok kümeye dağıtmak için aynı adımları kullanabilirsiniz.
Kaynakları temizleme
Sonraki hızlı başlangıçta devam ediyorsanız tüm kaynaklarınızı koruyun.
Azure IoT İşlemleri dağıtımını kaldırmak ancak kümenizi korumak istiyorsanız az iot ops delete komutunu kullanın:
az iot ops delete --cluster $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Bu hızlı başlangıç için oluşturduğunuz tüm kaynakları silmek istiyorsanız, Azure IoT İşlemlerini dağıttığınız Kubernetes kümesini silin ve ardından kümeyi içeren Azure kaynak grubunu kaldırın.
Bu hızlı başlangıçlar için Codespaces kullandıysanız Codespace'ınızı GitHub'dan silin.