Hızlı Başlangıç: Bağlı kayıt defterini bir IoT Edge cihazına dağıtma
Bu hızlı başlangıçta, bağlı bir kayıt defterini Bir Azure IoT Edge cihazına modül olarak dağıtmak için Azure CLI'yi kullanacaksınız. IoT Edge cihaz, buluttaki üst Azure kapsayıcı kayıt defterine erişebilir.
IoT Edge ile bağlı kayıt defteri kullanmaya genel bakış için bkz. Azure IoT Edge ile bağlı kayıt defterini kullanma. Bu senaryo, IoT Edge hiyerarşisinin en üst katmanındaki bir cihaza karşılık gelir.
Önkoşullar
Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz. Azure Cloud Shell'de Bash için hızlı başlangıç.
CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yi yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz. Azure CLI'yi Docker kapsayıcısında çalıştırma.
Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz. Azure CLI ile oturum açma.
İstendiğinde ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.
Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.
cihazı Azure IoT Hub ve IoT Edge. Dağıtım adımları için bkz. Hızlı Başlangıç: İlk IoT Edge modülünüzü bir sanal Linux cihazına dağıtma.
Önemli
IoT Edge cihazda dağıtılan modüllere daha sonra erişmek için cihazda 8000, 5671 ve 8883 bağlantı noktalarını açtığınızdan emin olun. Yapılandırma adımları için bkz. Azure portal ile sanal makineye bağlantı noktaları açma.
Azure'da bağlı kayıt defteri kaynağı. Dağıtım adımları için bkz. Azure CLI veya Azure portal kullanan hızlı başlangıçlar.
- Ya da
ReadWrite
ReadOnly
modunda bağlı bir kayıt defteri bu senaryoda kullanılabilir. - Bu makaledeki komutlarda, bağlı kayıt defteri adı CONNECTED_REGISTRY_RW ortam değişkeninde depolanır.
- Ya da
Görüntüleri bulut kayıt defterinize aktarma
az acr import komutunu kullanarak aşağıdaki kapsayıcı görüntülerini bulut kayıt defterinize aktarın. Bu görüntüleri zaten içeri aktardıysanız bu adımı atlayın.
Bağlı kayıt defteri görüntüsü
İç içe IoT Edge senaryolarını desteklemek için, bağlı kayıt defteri çalışma zamanı için kapsayıcı görüntüsünün özel Azure kapsayıcı kayıt defterinizde kullanılabilir olması gerekir. Bağlı kayıt defteri görüntüsünü özel kayıt defterinize aktarmak için az acr import komutunu kullanın.
# Use the REGISTRY_NAME variable in the following Azure CLI commands to identify the registry
REGISTRY_NAME=<container-registry-name>
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/acr/connected-registry:0.8.0
IoT Edge ve API proxy görüntüleri
İç içe IoT Edge bağlı kayıt defterini desteklemek için IoT Edge ve API ara sunucusu için modüller dağıtmanız gerekir. Bu görüntüleri özel kayıt defterinize aktarin.
IoT Edge API proxy modülü, IoT Edge bir cihazın 443 gibi aynı bağlantı noktasında HTTPS protokolünü kullanarak birden çok hizmeti kullanıma sunmasına olanak tanır.
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-agent:1.2.4
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-hub:1.2.4
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-api-proxy:1.1.2
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/azureiotedge-diagnostics:1.2.4
Hello-world resmi
Bağlı kayıt defterini test için görüntüyü içeri aktarın hello-world
. Bu depo, bağlı kayıt defteriyle eşitlenir ve bağlı kayıt defteri istemcileri tarafından çekilir.
az acr import \
--name $REGISTRY_NAME \
--source mcr.microsoft.com/hello-world:1.1.2
Bağlı kayıt defteri yapılandırmasını alma
Bağlı kayıt defterini IoT Edge cihaza dağıtmadan önce Azure'daki bağlı kayıt defteri kaynağından yapılandırma ayarlarını almanız gerekir.
Bağlı kayıt defterini yüklemek için gereken ayarlar bilgilerini almak için az acr connected-registry get-settings komutunu kullanın. Aşağıdaki örnek, üst protokol olarak HTTPS'yi belirtir. Üst kayıt defteri bir bulut kayıt defteri olduğunda bu protokol gereklidir.
az acr connected-registry get-settings \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--parent-protocol https
Varsayılan olarak, ayarlar bilgileri, bağlı kayıt defterini dağıtmak için de gereken eşitleme belirteci parolasını içermez. İsteğe bağlı olarak, veya generate-password 2
parametresini geçirerek --generate-password 1
parolalardan birini oluşturun. Oluşturulan parolayı güvenli bir konuma kaydedin. Yeniden alınamaz.
Uyarı
Parolayı yeniden oluşturmak eşitleme belirteci kimlik bilgilerini döndürür. Önceki parolayı kullanarak bir cihaz yapılandırdıysanız yapılandırmayı güncelleştirmeniz gerekir.
Komut çıktısı, kayıt defteri bağlantı dizesini ve ilgili ayarları içerir. Aşağıdaki örnek çıktı, contosoregistry üst kayıt defteriyle myconnectedregistry adlı bağlı kayıt defterinin bağlantı dizesini gösterir:
{
"ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=xxxxxxxxxxxxxxxx;ParentGatewayEndpoint=contosoregistry.eastus.data.azurecr.io;ParentEndpointProtocol=https"
}
IoT Edge için dağıtım bildirimi yapılandırma
Dağıtım bildirimi, IoT Edge cihaza dağıtılacak modülleri açıklayan bir JSON belgesidir. Daha fazla bilgi için bkz. IoT Edge modüllerinin nasıl kullanılabileceğini, yapılandırılabileceğini ve yeniden kullanılabileceğini anlama.
Azure CLI kullanarak bağlı kayıt defteri ve API proxy modüllerini dağıtmak için aşağıdaki dağıtım bildirimini yerel olarak dosya manifest.json
olarak kaydedin. Yapılandırmayı cihazınıza uygulamak için komutunu çalıştırdığınızda sonraki bölümde dosya yolunu kullanacaksınız.
Bağlı kayıt defteri modülü ayarları
Düğümdeki ilgili JSON değerlerini güncelleştirmek için önceki bölümlerde yer alan belirteç kimlik bilgilerini ve bağlantı dizesini
env
kullanın.Aşağıdaki ortam değişkenleri düğümde
env
isteğe bağlıdır:Değişken Açıklama ACR_REGISTRY_LOGIN_SERVER
Benzersiz bir konak adı veya FQDN belirtir. Kullanılırsa, bağlı kayıt defteri yalnızca bu oturum açma sunucusu değerine yapılan istekleri kabul eder.
Değer sağlanmazsa, bağlı kayıt defterine herhangi bir oturum açma sunucusu değeriyle erişilebilir.ACR_REGISTRY_CERTIFICATE_VOLUME
Bağlı kayıt defterinize HTTPS üzerinden erişilebilecekse, HTTPS sertifikalarının depolandığı birime işaret eder.
Ayarlanmadıysa, varsayılan konum olur/var/acr/certs
.ACR_REGISTRY_DATA_VOLUME
Görüntülerin bağlı kayıt defteri tarafından depolandığı varsayılan konumun /var/acr/data
üzerine yazar.
Bu konum, kapsayıcının birim bağlaması ile eşleşmelidir.Önemli
Bağlı kayıt defteri 80 ve 443'ten farklı bir bağlantı noktasında dinliyorsa, değerin
ACR_REGISTRY_LOGIN_SERVER
(belirtilmişse) bağlantı noktasını içermesi gerekir. Örnek:192.168.0.100:8080
.HostPort
API ara sunucusu modülü kullanılmıyorsa bağlı kayıt defteri için bir bağlama ayarlanmalıdır. Örnek:"createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}"
API proxy modülü ayarları
- API proxy'si olarak
NGINX_DEFAULT_PORT
yapılandırılmış 8000 numaralı bağlantı noktasını dinler. API proxy ayarları hakkında daha fazla bilgi için GitHub deposu IoT Edge bakın.
{
"modulesContent": {
"$edgeAgent": {
"properties.desired": {
"modules": {
"connected-registry": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/acr/connected-registry:0.8.0",
"createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"]}}"
},
"type": "docker",
"env": {
"ACR_REGISTRY_CONNECTION_STRING": {
"value": "ConnectedRegistryName=<REPLACE_WITH_CONNECTED_REGISTRY_NAME>;SyncTokenName=<REPLACE_WITH_SYNC_TOKEN_NAME>;SyncTokenPassword=REPLACE_WITH_SYNC_TOKEN_PASSWORD;ParentGatewayEndpoint=<REPLACE_WITH_CLOUD_REGISTRY_NAME>.<REPLACE_WITH_CLOUD_REGISTRY_REGION>.data.azurecr.io;ParentEndpointProtocol=https"
}
},
"status": "running",
"restartPolicy": "always",
"version": "1.0"
},
"IoTEdgeAPIProxy": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-api-proxy:1.1.2",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}"
},
"type": "docker",
"env": {
"NGINX_DEFAULT_PORT": {
"value": "8000"
},
"CONNECTED_ACR_ROUTE_ADDRESS": {
"value": "connected-registry:8080"
},
"BLOB_UPLOAD_ROUTE_ADDRESS": {
"value": "AzureBlobStorageonIoTEdge:11002"
}
},
"status": "running",
"restartPolicy": "always",
"version": "1.0"
}
},
"runtime": {
"settings": {
"minDockerVersion": "v1.25",
"registryCredentials": {
"cloudregistry": {
"address": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io",
"password": "<REPLACE_WITH_SYNC_TOKEN_PASSWORD>",
"username": "<REPLACE_WITH_SYNC_TOKEN_NAME>"
}
}
},
"type": "docker"
},
"schemaVersion": "1.1",
"systemModules": {
"edgeAgent": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-agent:1.2.4",
"createOptions": ""
},
"type": "docker",
"env": {
"SendRuntimeQualityTelemetry": {
"value": "false"
}
}
},
"edgeHub": {
"settings": {
"image": "<REPLACE_WITH_CLOUD_REGISTRY_NAME>.azurecr.io/azureiotedge-hub:1.2.4",
"createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
},
"type": "docker",
"status": "running",
"restartPolicy": "always"
}
}
}
},
"$edgeHub": {
"properties.desired": {
"routes": {
"route": "FROM /messages/* INTO $upstream"
},
"schemaVersion": "1.1",
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
}
}
}
Bağlı kayıt defteri ve API proxy modüllerini IoT Edge dağıtma
Önceki bölümde oluşturulan dağıtım bildirimini kullanarak bağlı kayıt defteri ve API ara sunucusu modüllerini IoT Edge cihaza dağıtmak için aşağıdaki komutu kullanın. IoT Edge üst katman cihazının kimliğini ve gösterildiği yerde IoT Hub adını belirtin.
# Set the IOT_EDGE_TOP_LAYER_DEVICE_ID and IOT_HUB_NAME environment variables for use in the following Azure CLI command
IOT_EDGE_TOP_LAYER_DEVICE_ID=<device-id>
IOT_HUB_NAME=<hub-name>
az iot edge set-modules \
--device-id $IOT_EDGE_TOP_LAYER_DEVICE_ID \
--hub-name $IOT_HUB_NAME \
--content manifest.json
Ayrıntılar için bkz. Azure CLI ile Azure IoT Edge modüllerini dağıtma.
Bağlı kayıt defterinin durumunu denetlemek için aşağıdaki az acr connected-registry show komutunu kullanın. Bağlı kayıt defterinin adı $CONNECTED_REGISTRY_RW değeridir.
az acr connected-registry show \
--registry $REGISTRY_NAME \
--name $CONNECTED_REGISTRY_RW \
--output table
Başarılı bir dağıtımdan sonra, bağlı kayıt defteri durumunu Online
gösterir.
Sonraki adımlar
Bu hızlı başlangıçta, bağlı bir kayıt defterini bir IoT Edge cihazına dağıtmayı öğrendiniz. Yeni dağıtılan bağlı kayıt defterinden görüntü çekmeyi veya bağlı kayıt defterini iç içe IoT Edge cihazlara dağıtmayı öğrenmek için sonraki kılavuzlara geçin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin