將 IoT Edge 上的 Azure Blob 存儲模塊部署到設(shè)備

來源: Microsoft
作者:Microsoft
時間:2021-03-01
16949
有多種方法可以將模塊部署到IoT Edge設(shè)備,并且所有這些方法都適用于IoT Edge上的Azure Blob存儲模塊。兩種最簡單的方法是使用Azure門戶或Visual Studio Code模板。

有多種方法可以將模塊部署到IoT Edge設(shè)備,并且所有這些方法都適用于IoT Edge上的Azure Blob存儲模塊。兩種最簡單的方法是使用Azure門戶或Visual Studio Code模板。

先決條件

·Azure訂閱中的IoT中心。

·IoT Edge設(shè)備。

如果未設(shè)置IoT Edge設(shè)備,可在Azure虛擬機中創(chuàng)建一個。按照創(chuàng)建虛擬Linux設(shè)備或創(chuàng)建虛擬Windows設(shè)備快速入門文章(其中一篇)中的步驟進行操作。

·Visual Studio Code和Azure IoT Tools(如果從Visual Studio Code部署)。

從Azure門戶部署

Azure門戶引導你創(chuàng)建部署清單并將部署推送到IoT Edge設(shè)備。

選擇設(shè)備

1.登錄Azure門戶,導航到IoT中心。

2.從菜單中選擇“IoT Edge”。

3.在設(shè)備列表中單擊目標設(shè)備的ID。

4.選擇“設(shè)置模塊”。

配置部署清單

部署清單是一個JSON文檔,其中描述了要部署的模塊、數(shù)據(jù)在模塊間的流動方式以及模塊孿生的所需屬性。Azure門戶提供了一個引導你完成創(chuàng)建部署清單的向?qū)?。該向?qū)⑷齻€步驟整理成多個選項卡:“模塊”、“路由”和“查看+創(chuàng)建”。

添加模塊

1.在頁面的“IoT Edge模塊”部分,單擊“添加”下拉列表并選擇“IoT Edge模塊”,顯示“添加IoT Edge模塊”頁面。

2.在“模塊設(shè)置”選項卡上,提供模塊的名稱,然后指定容器映像URI:

示例:

·IoT Edge模塊名稱:azureblobstorageoniotedge

·映像URI:mcr.microsoft.com/azure-blob-storage:latest

addmodule-tab1.png

如本程序所述,在“模塊設(shè)置”、“容器創(chuàng)建選項”和“模塊孿生設(shè)置”選項卡上指定值之前,請勿選擇“添加”。

重要

調(diào)用模塊時,Azure IoT Edge區(qū)分大小寫,存儲SDK也默認為小寫。雖然在Azure市場中此模塊的名稱為AzureBlobStorageonIoTEdge,但將名稱更改為小寫有助于確保與IoT Edge上的Azure Blob存儲模塊建立的連接不會中斷。

3.打開“容器創(chuàng)建選項”選項卡。

addmodule-tab3.png

將以下JSON復制并粘貼到框中,以便為設(shè)備上的存儲提供存儲帳戶信息和裝載。

JSON

{

"Env":[

"LOCAL_STORAGE_ACCOUNT_NAME=<your storage account name>",

"LOCAL_STORAGE_ACCOUNT_KEY=<your storage account key>"

],

"HostConfig":{

"Binds":[

"<storage mount>"

],

"PortBindings":{

"11002/tcp":[{"HostPort":"11002"}]

}

}

}

4.使用以下信息更新已復制到容器創(chuàng)建選項中的JSON:

·請將<your storage account name>替換為容易記住的名稱。帳戶名長度應為3到24個字符,并帶有小寫字母和數(shù)字。不含空格。

·將<your storage account key>;替換為64字節(jié)base64密鑰。你可以使用GeneratePlus等工具生成密鑰。你將使用這些憑據(jù)從其他模塊訪問blob存儲。

·根據(jù)容器操作系統(tǒng)替換<storage mount>。提供blob模塊將在其中存儲其數(shù)據(jù)的IoT Edge設(shè)備上卷的名稱或指向現(xiàn)有目錄的絕對路徑。存儲裝載將你在設(shè)備上提供的位置映射到模塊中設(shè)置的位置。

對于Linux容器,格式為<your storage path or volume>:/blobroot。例如:

使用卷裝載:my-volume:/blobroot

使用綁定裝載:/srv/containerdata:/blobroot。確保按步驟為容器用戶授予目錄訪問權(quán)限

對于Windows容器,格式為<your storage path or volume>:C:/BlobRoot。例如:

使用卷裝載:my-volume:C:/BlobRoot。

使用綁定裝載:C:/ContainerData:C:/BlobRoot。

可以映射SMB網(wǎng)絡(luò)位置,而不使用本地驅(qū)動器。有關(guān)詳細信息,請參閱使用SMB共享作為本地存儲

重要

請勿更改存儲裝載值的后半部分,該部分指向IoT Edge模塊上Blob存儲中的特定位置。對于Linux容器,存儲裝載必須始終以“:/blobroot”結(jié)尾;對于Windows容器,必須以“:C:/BlobRoot”結(jié)尾。

5.在“模塊孿生設(shè)置”選項卡上,復制以下JSON并將其粘貼到框中。

addmodule-tab4.png

使用適當?shù)闹蹬渲妹總€屬性,如占位符所示。如果使用IoT Edge模擬器,請按照deviceToCloudUploadProperties和deviceAutoDeleteProperties中所述,將這些屬性的值設(shè)置為相關(guān)環(huán)境變量。

JSON

{

"deviceAutoDeleteProperties":{

"deleteOn":<true,false>,

"deleteAfterMinutes":<timeToLiveInMinutes>,

"retainWhileUploading":<true,false>

},

"deviceToCloudUploadProperties":{

"uploadOn":<true,false>,

"uploadOrder":"<NewestFirst,OldestFirst>",

"cloudStorageConnectionString":"DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>",

"storageContainersForUpload":{

"<source container name1>":{

"target":"<target container name1>"

}

},

"deleteAfterUpload":<true,false>

}

}

有關(guān)在部署模塊后配置deviceToCloudUploadProperties和deviceAutoDeleteProperties的信息,請參閱編輯模塊孿生。若要詳細了解所需屬性,請參閱定義或更新所需屬性。

6.選擇“添加”。

7.在完成時選擇“下一步:路由”繼續(xù)轉(zhuǎn)到路由部分。

指定路由

保留默認路由并選擇“下一步:查看+創(chuàng)建”繼續(xù)轉(zhuǎn)到查看部分。

評審部署

評審部分介紹了根據(jù)上述兩部分中的選擇所創(chuàng)建的JSON部署清單。另外還有兩個模塊已聲明但卻未添加,它們是:$edgeAgent和$edgeHub。這兩個模塊構(gòu)成IoT Edge運行時,且是每個部署中所需的默認設(shè)置。

查看部署信息,然后選擇“創(chuàng)建”。

驗證部署

創(chuàng)建部署后,返回到IoT中心的“IoT Edge”頁。

1.選擇用作部署目標的IoT Edge設(shè)備,以打開其詳細信息。

2.在設(shè)備詳細信息,檢查Blob存儲模塊是否列出為“在部署中指定”和“由設(shè)備報告”。

可能需要等待一段時間,該模塊才會在設(shè)備上啟動并向IoT中心發(fā)回報告。刷新頁面以查看更新的狀態(tài)。

從Visual Studio Code部署

Azure IoT Edge在Visual Studio Code中提供模板,以幫助你開發(fā)邊緣解決方案。使用以下步驟創(chuàng)建帶有Blob存儲模塊的新IoT Edge解決方案,并配置部署清單。

1.選擇“查看”>“命令面板”。

2.在“命令面板”中,輸入并運行Azure IoT Edge:New IoT Edge solution命令。

new-solution.png

按命令面板中的提示創(chuàng)建解決方案。

微信圖片_20210301141724.png

Visual Studio Code采用你提供的信息,創(chuàng)建一個IoT Edge解決方案,然后在新窗口中加載它。解決方案模板創(chuàng)建包含blob存儲模塊映像的部署清單模板,但需要配置模塊的創(chuàng)建選項。

3.在新的解決方案工作區(qū)中打開deployment.template.json,然后找到“模塊”部分。進行以下配置更改:

a.刪除SimulatedTemperatureSensor模塊,因為此部署不需要該模塊。

b.將以下代碼復制并粘貼到createOptions字段中:

JSON

"Env":[

"LOCAL_STORAGE_ACCOUNT_NAME=<your storage account name>",

"LOCAL_STORAGE_ACCOUNT_KEY=<your storage account key>"

],

"HostConfig":{

"Binds":["<storage mount>"],

"PortBindings":{

"11002/tcp":[{"HostPort":"11002"}]

}

}

create-options.png

4.請將<your storage account name>替換為容易記住的名稱。帳戶名長度應為3到24個字符,并帶有小寫字母和數(shù)字。不含空格。

5.將<your storage account key>替換為64字節(jié)base64密鑰。你可以使用GeneratePlus等工具生成密鑰。你將使用這些憑據(jù)從其他模塊訪問blob存儲。

6.根據(jù)容器操作系統(tǒng)替換<storage mount>。提供卷的名稱或IoT Edge設(shè)備上希望blob模塊在其中存儲其數(shù)據(jù)的目錄絕對路徑。存儲裝載將你在設(shè)備上提供的位置映射到模塊中設(shè)置的位置。

·對于Linux容器,格式為<your storage path or volume>:/blobroot。例如:

使用卷裝載:my-volume:/blobroot

使用綁定裝載:/srv/containerdata:/blobroot。確保按步驟為容器用戶授予目錄訪問權(quán)限

·對于Windows容器,格式為<your storage path or volume>:C:/BlobRoot。例如:

使用卷裝載:my-volume:C:/BlobRoot。

使用綁定裝載:C:/ContainerData:C:/BlobRoot。

可以映射SMB網(wǎng)絡(luò)位置,而不是使用本地驅(qū)動器。有關(guān)詳細信息,請參閱使用SMB共享作為本地存儲。

重要

請勿更改存儲裝載值的后半部分,該部分指向IoT Edge模塊上Blob存儲中的特定位置。對于Linux容器,存儲裝載必須始終以“:/blobroot”結(jié)尾;對于Windows容器,必須以“:C:/BlobRoot”結(jié)尾。

7.通過將以下JSON添加到deployment.template.json文件,為模塊配置deviceToCloudUploadProperties和deviceAutoDeleteProperties。為每個屬性配置適當?shù)闹挡⒈4嫖募?。如果使用IoT Edge模擬器,請將這些屬性的值設(shè)置為相關(guān)環(huán)境變量,可以在deviceToCloudUploadProperties和deviceAutoDeleteProperties的說明部分中找到這些值

JSON

"<your azureblobstorageoniotedge module name>":{

"properties.desired":{

"deviceAutoDeleteProperties":{

"deleteOn":<true,false>,

"deleteAfterMinutes":<timeToLiveInMinutes>,

"retainWhileUploading":<true,false>

},

"deviceToCloudUploadProperties":{

"uploadOn":<true,false>,

"uploadOrder":"<NewestFirst,OldestFirst>",

"cloudStorageConnectionString":"DefaultEndpointsProtocol=https;AccountName=<your Azure Storage Account Name>;AccountKey=<your Azure Storage Account Key>;EndpointSuffix=<your end point suffix>",

"storageContainersForUpload":{

"<source container name1>":{

"target":"<target container name1>"

}

},

"deleteAfterUpload":<true,false>

}

}

}

devicetocloud-deviceautodelete.png

有關(guān)在部署模塊后配置deviceToCloudUploadProperties和deviceAutoDeleteProperties的信息,請參閱編輯模塊孿生。若要詳細了解容器創(chuàng)建選項、重啟策略和所需狀態(tài),請參閱EdgeAgent所需屬性。

8.保存deployment.template.json文件。

9.右鍵單擊“deployment.template.json”并選擇“生成IoT Edge部署清單”。

10.Visual Studio Code會獲取你在deployment.template.json中提供的信息,并使用它來創(chuàng)建新的部署清單文件。在解決方案工作區(qū)中的新config文件夾中創(chuàng)建部署清單。獲得該文件后,可以按照從Visual Studio Code中部署Azure IoT Edge模塊或使用Azure CLI 2.0部署Azure IoT Edge模塊中的步驟進行操作。

部署多個模塊實例

若要在IoT Edge模塊上部署Azure Blob存儲的多個實例,需要提供不同的存儲路徑,并更改模塊綁定到的HostPort值。Blob存儲模塊始終在容器中公開端口11002,但你可以聲明它在主機上綁定到的端口。

編輯“容器創(chuàng)建選項”(在Azure門戶中)或createOptions字段(在Visual Studio Code的deployment.template.json文件中),更改HostPort值:

JSON

"PortBindings":{

"11002/tcp":[{"HostPort":"<port number>"}]

}

連接到其他blob存儲模塊時,請將終結(jié)點更改為指向更新的主機端口。

配置代理支持

如果組織使用代理服務器,則需要為edgeAgent和edgeHub運行時模塊配置代理支持。此過程涉及兩項任務:

·在設(shè)備上配置運行時守護程序和IoT Edge代理。

·為部署清單JSON文件中的模塊設(shè)置HTTPS_PROXY環(huán)境變量。

將IoT Edge設(shè)備配置為通過代理服務器進行通信中介紹了此過程。

此外,blob存儲模塊還需要清單部署文件中的HTTPS_PROXY設(shè)置??梢灾苯泳庉嫴渴鹎鍐挝募?,也可以使用Azure門戶。

1.在Azure門戶中導航到IoT中心,然后從左窗格菜單中選擇IoT Edge。

2.選擇要配置模塊的設(shè)備。

3.選擇“設(shè)置模塊”。

4.在此頁的“IoT Edge模塊”部分,選擇blob存儲模塊。

5.在“更新IoT Edge模塊”頁上,選擇“環(huán)境變量”選項卡。

6.添加HTTPS_PROXY作為“名稱”,添加代理URL作為“值”。

https-proxy-config.png

7.單擊“更新”,然后單擊“查看+創(chuàng)建”。

8.請注意,代理會添加到部署清單中的模塊,此時請選擇“創(chuàng)建”。

9.通過從設(shè)備詳細信息頁中選擇模塊來驗證設(shè)置,然后在“IoT Edge模塊詳細信息”頁的下半部分選擇“環(huán)境變量”選項卡。

verify-proxy-config.png

立即登錄,閱讀全文
版權(quán)說明:
本文內(nèi)容來自于Microsoft,本站不擁有所有權(quán),不承擔相關(guān)法律責任。文章內(nèi)容系作者個人觀點,不代表快出海對觀點贊同或支持。如有侵權(quán),請聯(lián)系管理員(zzx@kchuhai.com)刪除!
掃碼登錄
打開掃一掃, 關(guān)注公眾號后即可登錄/注冊
加載中
二維碼已失效 請重試
刷新
賬號登錄/注冊
個人VIP
小程序
快出海小程序
公眾號
快出海公眾號
商務合作
商務合作
投稿采訪
投稿采訪
出海管家
出海管家