Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
IoT Edge 1.5
Penting
IoT Edge 1.5 LTS adalah rilis didukung. IoT Edge 1.4 LTS mencapai akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Update IoT Edge.
Tutorial ini memandu Anda untuk mengembangkan, melakukan debugging, dan menyebarkan kode Anda sendiri ke perangkat Azure IoT Edge dengan IoT Edge untuk Linux di Windows dan Visual Studio 2022. Anda akan mempelajari skenario pengembang yang paling umum untuk solusi IoT Edge dengan menyebarkan modul C# ke perangkat Linux. Anda akan menyebarkan dan men-debug modul IoT Edge kustom yang berjalan di kontainer Linux di Windows. Bahkan jika Anda berencana untuk menggunakan bahasa yang berbeda atau menyebarkan layanan Azure, tutorial ini masih berguna untuk mempelajari tentang alat dan konsep pengembangan.
Tutorial ini mencakup langkah-langkah untuk dua alat pengembangan IoT Edge:
- Antarmuka baris perintah (CLI) Azure IoT Edge Dev Tool CLI, yang merupakan alat pilihan untuk pengembangan
- Ekstensi Azure IoT Edge Tools untuk Visual Studio, yang berada dalam mode pemeliharaan
Gunakan tombol pemilih di awal tutorial ini untuk memilih versi alat.
Dalam tutorial ini, Anda akan mempelajari cara:
- Siapkan komputer pengembangan Anda.
- Gunakan alat pengembangan IoT Edge untuk membuat proyek baru.
- Bangun proyek Anda sebagai kontainer dan simpan dalam Azure Container Registry.
- Sebarkan kode Anda ke perangkat IoT Edge.
Prasyarat
Tutorial ini mengasumsikan bahwa Anda menggunakan mesin yang berjalan Windows sebagai mesin pengembangan Anda. Di komputer Windows, Anda dapat mengembangkan modul Windows atau Linux. Tutorial ini memandu Anda melalui pengembangan kontainer Linux, dengan menggunakan IoT Edge untuk Linux di Windows untuk membangun dan menyebarkan modul.
Sebelum Anda mulai:
Instal IoT Edge untuk Linux di Windows.
Baca panduan memulai cepat Terapkan modul IoT Edge Anda yang pertama ke perangkat Windows.
Unduh .NET Core SDK.
Instal atau ubah Visual Studio 2022 di komputer pengembangan Anda. Pilih pengembangan Azure dan pengembangan Desktop dengan opsi beban kerja C++.
Setelah penginstalan Visual Studio 2022 Anda siap, unduh dan instal Azure IoT Edge Tools dari Visual Studio Marketplace.
Anda dapat menggunakan ekstensi Azure IoT Edge Tools untuk membuat dan membangun solusi IoT Edge Anda. Alat pengembangan yang disukai adalah Azure IoT Edge Dev Tool CLI. Ekstensi ini mencakup templat proyek Azure IoT Edge yang Anda gunakan untuk membuat proyek Visual Studio. Saat ini, Anda perlu menginstal ekstensi terlepas dari alat pengembangan yang Anda gunakan.
Petunjuk / Saran
Jika Anda menggunakan Visual Studio 2019, unduh dan instal Azure IoT Edge Tools untuk Visual Studio 2019 dari Visual Studio Marketplace.
- Instal Azure CLI.
- Buat IoT hub gratis atau standar di Azure sebagai sumber daya cloud.
Jika Anda tidak memiliki akun Azure, buat akun free sebelum Memulai.
Konsep kunci
Tutorial ini menjelaskan pengembangan modul IoT Edge. Modul IoT Edge adalah kontainer yang memiliki kode yang dapat dieksekusi. Anda dapat menyebarkan satu atau beberapa modul ke perangkat IoT Edge. Modul melakukan tugas tertentu seperti menyerap data dari sensor, membersihkan dan menganalisis data, atau mengirim pesan ke hub IoT. Untuk informasi selengkapnya, lihat modul Azure IoT Edge Understand.
Saat Anda mengembangkan modul IoT Edge, penting untuk memahami perbedaan antara mesin pengembangan dan perangkat IoT Edge target tempat modul pada akhirnya akan disebarkan. Kontainer yang Anda bangun untuk menampung kode modul harus cocok dengan sistem operasi (OS) perangkat target.
Misalnya, skenario yang paling umum adalah seseorang mengembangkan modul pada komputer Windows yang ingin menargetkan perangkat Linux yang menjalankan IoT Edge. Dalam hal ini, OS kontainer adalah Linux.
Saat Anda mengikuti tutorial ini, ingatlah perbedaan antara OS komputer pengembangan dan OS kontainer. Untuk tutorial ini, Anda akan menggunakan host Windows untuk pengembangan dan IoT Edge untuk Linux di Windows komputer virtual (VM) untuk membangun dan menyebarkan modul.
Tutorial ini menargetkan perangkat yang berjalan IoT Edge dengan kontainer Linux. Anda dapat menggunakan sistem operasi pilihan Anda selama komputer pengembangan menjalankan kontainer Linux. Sebaiknya gunakan Visual Studio untuk mengembangkan dengan kontainer Linux, jadi itulah yang digunakan tutorial ini. Anda juga dapat menggunakan Visual Studio Code, meskipun ada perbedaan dukungan antara kedua alat tersebut. Untuk informasi selengkapnya, lihat modul Develop Azure IoT Edge menggunakan Visual Studio Code.
Menyiapkan mesin Docker CLI dan Docker untuk koneksi jarak jauh
IoT Edge modul-modul dikemas sebagai kontainer, jadi Anda memerlukan mesin container pada mesin pengembangan Anda untuk membangun dan mengelolanya.
IoT Edge untuk Linux pada VM Windows sudah berisi instans mesin Docker. Tutorial ini menunjukkan kepada Anda cara terhubung dari jarak jauh dari komputer pengembang Windows ke IoT Edge untuk Linux pada instans Docker VM Windows. Dengan menggunakan koneksi jarak jauh ini, Anda menghapus dependensi pada Docker Desktop untuk Windows.
Mengonfigurasi Docker CLI
Langkah pertama adalah mengonfigurasi Docker CLI pada mesin pengembangan Windows untuk dapat terhubung ke mesin Docker jarak jauh:
Unduh versi Docker CLI yang telah dikommpilasikan
docker.exesebelumnya dari Chocolatey. Anda juga dapat mengunduh proyek resmi cli dari GitHub dan mengkompilasinya dengan mengikuti instruksi repositori.Ekstrak
docker.exeke direktori di komputer pengembangan Anda; misalnya,C:\Docker\bin.Buka Tentang PC Anda>Info Sistem>Pengaturan sistem tingkat lanjut.
Pilih Advanced>Variabel lingkungan. Di bawah Variabel pengguna, pilih Jalur.
Edit variabel Jalur dan tambahkan lokasi
docker.exe.Buka sesi PowerShell yang ditinggikan.
Periksa apakah Docker CLI dapat diakses dengan menggunakan perintah ini:
docker --versionJika Anda berhasil mengonfigurasi semuanya, output perintah akan menampilkan versi Docker. Ini seharusnya terlihat seperti
Docker version 20.10.12, build e91ed57.
Mengonfigurasi mesin Docker
Langkah kedua adalah mengonfigurasi IoT Edge untuk Linux pada mesin Docker VM Windows untuk menerima koneksi eksternal, dan menambahkan aturan firewall yang sesuai.
Peringatan
Mengekspos mesin Docker ke koneksi eksternal dapat meningkatkan risiko keamanan. Anda harus menggunakan konfigurasi ini hanya untuk tujuan pengembangan. Pastikan untuk mengembalikan konfigurasi ke pengaturan default setelah pengembangan selesai.
Buka sesi PowerShell yang ditingkatkan dan jalankan perintah berikut:
# Configure the IoT Edge for Linux on Windows VM Docker engine to accept external connections, and add the appropriate firewall rules. Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT" # Create a copy of the IoT Edge for Linux on Windows VM _docker.service_ in the system folder. Invoke-EflowVmCommand "sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service" # Replace the service execution line to listen for external connections. Invoke-EflowVmCommand "sudo sed -i 's/-H fd:\/\// -H fd:\/\/ -H tcp:\/\/0.0.0.0:2375/g' /etc/systemd/system/docker.service" # Reload the IoT Edge for Linux on Windows VM services configurations. Invoke-EflowVmCommand "sudo systemctl daemon-reload" # Reload the Docker engine service. Invoke-EflowVmCommand "sudo systemctl restart docker.service" # Check that the Docker engine is listening to external connections. Invoke-EflowVmCommand "sudo netstat -lntp | grep dockerd"Berikut adalah contoh output:
PS C:\> # Configure the IoT Edge for Linux on Windows virtual machine Docker engine to accept external connections, and add the appropriate firewall rules. PS C:\> Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 2375 -j ACCEPT" PS C:\> PS C:\> # Create a copy of the IoT Edge for Linux on Windows VM docker.service in the system folder. PS C:\> Invoke-EflowVmCommand "sudo cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service" PS C:\> PS C:\> # Replace the service execution line to listen for external connections. PS C:\> Invoke-EflowVmCommand "sudo sed -i 's/-H fd:\/\// -H fd:\/\/ -H tcp:\/\/0.0.0.0:2375/g' /etc/systemd/system/docker.service" PS C:\> PS C:\> # Reload the IoT Edge for Linux on Windows VM services configurations. PS C:\> Invoke-EflowVmCommand "sudo systemctl daemon-reload" PS C:\> PS C:\> # Reload the Docker engine service. PS C:\> Invoke-EflowVmCommand "sudo systemctl restart docker.service" PS C:\> PS C:\> # Check that the Docker engine is listening to external connections. PS C:\> Invoke-EflowVmCommand "sudo netstat -lntp | grep dockerd" tcp6 0 0 :::2375 :::* LISTEN 2790/dockerd
Menguji koneksi
Langkah penyiapan terakhir adalah menguji koneksi Docker ke IoT Edge untuk Linux pada mesin Docker VM Windows:
Dapatkan alamat IP IoT Edge untuk Linux di VM Windows:
Get-EflowVmAddrPetunjuk / Saran
Jika IoT Edge untuk Linux pada VM Windows dijalankan tanpa IP statis, alamat IP mungkin berubah setelah Windows host OS di-restart atau perubahan jaringan terjadi. Pastikan Anda menggunakan alamat IP yang benar untuk IoT Edge untuk Linux di Windows VM setiap kali Anda ingin membuat koneksi jarak jauh ke mesin Docker.
Berikut adalah contoh output:
PS C:\> Get-EflowVmAddr [03/15/2022 15:22:30] Querying IP and MAC addresses from virtual machine (DESKTOP-J1842A1-EFLOW) - Virtual machine MAC: 00:15:5d:6f:da:78 - Virtual machine IP : 172.31.24.105 retrieved directly from virtual machine 00:15:5d:6f:da:78 172.31.24.105Sambungkan ke IoT Edge untuk Linux pada mesin Docker VM Windows dan jalankan kontainer sampel
hello-world. Ganti<EFLOW-VM-IP>dengan IoT Edge untuk Linux pada alamat IP VM Windows yang Anda peroleh di langkah sebelumnya.docker -H tcp://<EFLOW-VM-IP>:2375 run --rm hello-worldKetika pengunduhan kontainer selesai, kontainer berjalan dan menghasilkan output ini:
PS C:\> docker -H tcp://172.31.24.105:2375 run --rm hello-world Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 2db29710123e: Pull complete Digest: sha256:4c5f3db4f8a54eb1e017c385f683a2de6e06f75be442dc32698c9bbe6c861edd Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you're currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
Membuat proyek Azure IoT Edge
Templat proyek IoT Edge di Visual Studio membuat solusi yang dapat Anda sebarkan ke perangkat IoT Edge. Gunakan langkah-langkah berikut untuk membuat solusi Azure IoT Edge lalu hasilkan modul pertama dalam solusi tersebut. Setiap solusi IoT Edge dapat berisi lebih dari satu modul.
Penting
Struktur proyek IoT Edge yang Visual Studio buat tidak sama dengan yang ada di Visual Studio Code.
Saat ini, Azure IoT Edge Dev Tool CLI tidak mendukung pembuatan jenis proyek Visual Studio. Anda perlu menggunakan ekstensi Azure IoT Edge Tools untuk membuat proyek Visual Studio.
Di Visual Studio, buat proyek baru dengan memilih Buat proyek baru di halaman mulai atau dengan memilih tombol Proyek Baru pada toolbar.
Pada halaman Buat proyek baru, cari Azure IoT Edge. Pilih proyek yang cocok dengan platform (modul IoT Edge Linux) dan arsitektur untuk perangkat IoT Edge Anda, lalu pilih Baru.
Pada halaman Konfigurasikan proyek baru Anda, masukkan nama untuk proyek Anda dan tentukan lokasinya, lalu pilih Buat.
Dalam dialog Tambahkan Modul, pilih jenis modul yang ingin Anda kembangkan. Anda juga dapat memilih modul Eksisting untuk menambahkan modul IoT Edge yang ada ke penyebaran Anda.
Di Nama Modul, tentukan nama modul Anda.
Di Url Repositori, berikan nama repositori gambar modul. Visual Studio secara otomatis mengisi nama modul dengan localhost:5000/<nama modul Anda>. Ganti dengan informasi registri Anda sendiri.
Gunakan localhost jika Anda menggunakan registri Docker lokal untuk pengujian. Jika Anda menggunakan Azure Container Registry, gunakan server masuk dari pengaturan registri Anda. Server login terlihat seperti <nama registri>.azurecr.io. Ganti hanya bagian 'localhost:5000' dalam string, sehingga hasil akhirnya terlihat seperti <nama registri>.azurecr.io/<nama modul Anda>.
Pilih Tambahkan untuk menambahkan modul Anda ke proyek.
Catatan
Jika Anda memiliki proyek IoT Edge yang sudah ada, Anda dapat mengubah URL repositori dengan membuka file
module.json. URL repositori terletak pada propertirepositorydalam file JSON.
Sekarang, Anda memiliki proyek IoT Edge dan modul IoT Edge dalam solusi Visual Studio Anda.
Struktur proyek
Solusi Anda memiliki dua folder tingkat proyek: folder proyek utama dan folder modul. Misalnya, Anda mungkin memiliki folder proyek utama bernama AzureIotEdgeApp1 dan folder modul bernama IotEdgeModule1.
Folder proyek utama berisi manifes penyebaran Anda. Manifes penyebaran adalah dokumen JSON yang menjelaskan modul yang akan dikonfigurasi pada perangkat IoT Edge yang ditargetkan.
Folder modul berisi file untuk kode modul Anda. Ini dinamai entah Program.cs atau main.c, tergantung pada bahasa yang Anda pilih. Folder ini juga berisi file bernama module.json yang menjelaskan metadata modul Anda. Berbagai file Docker menyediakan informasi yang diperlukan untuk membangun modul Anda sebagai kontainer Windows atau Linux.
Manifest penerapan proyek Anda
Manifes penerapan yang Anda sunting diberi nama deployment.debug.template.json. File ini adalah templat manifes penyebaran IoT Edge yang menentukan semua modul yang berjalan pada perangkat. File juga menentukan bagaimana modul berkomunikasi satu sama lain. Untuk informasi selengkapnya tentang manifes penyebaran, lihat Pelajari cara menyebarkan modul dan menetapkan rute.
Templat penyebaran meliputi:
- Dua modul runtime,
edgeAgentdanedgeHub. - Modul kustom yang Anda buat dalam proyek Visual Studio ini.
- Modul bernama
SimulatedTemperatureSensor. Modul default ini menghasilkan data simulasi yang dapat Anda gunakan untuk menguji modul Anda (atau menghapus jika tidak diperlukan). Untuk melihat cara kerja sensor suhu yang disimulasikan, lihat kode sumber SimulatedTemperatureSensor.csproj.
Mengatur versi runtime IoT Edge
Saat ini, versi runtime stabil terbaru adalah 1.5. Perbarui versi runtime IoT Edge ke rilis stabil terbaru atau versi yang ingin Anda targetkan untuk perangkat Anda:
Di Solution Explorer, klik kanan nama proyek utama Anda dan pilih Set IoT Edge versi runtime.
Gunakan menu dropdown untuk memilih versi runtime yang dijalankan perangkat IoT Edge Anda. Lalu pilih OK untuk menyimpan perubahan Anda. Jika Anda tidak membuat perubahan apa pun, pilih Batalkan.
Saat ini, ekstensi tidak menyertakan pilihan untuk versi runtime terbaru. Jika Anda ingin mengatur versi runtime yang lebih tinggi dari 1.2, buka
deployment.debug.template.jsonfile manifes penyebaran. Ubah versi runtime untuk modul runtime sistem gambaredgeAgentdanedgeHub. Misalnya, jika Anda ingin menggunakan runtime IoT Edge versi 1.5, ubah baris berikut dalam file manifes penyebaran:"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5" //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...Jika Anda mengubah versi, regenerasi manifes penyebaran dengan mengklik kanan nama proyek Anda dan memilih Buat penyebaran untuk IoT Edge. Langkah ini menghasilkan manifes penyebaran berdasarkan templat penyebaran Anda. Manifes muncul di folder
configproyek Visual Studio Anda.
Buka file manifes penyebaran
deployment.debug.template.json.Ubah versi runtime untuk modul runtime sistem gambar
edgeAgentdanedgeHub. Misalnya, jika Anda ingin menggunakan IoT Edge runtime versi 1.5, ubah baris berikut dalam file manifes penyebaran:"systemModules": { "edgeAgent": { //... "image": "mcr.microsoft.com/azureiotedge-agent:1.5", //... "edgeHub": { //... "image": "mcr.microsoft.com/azureiotedge-hub:1.5", //...
Menyiapkan instans mesin remote Docker untuk Visual Studio 2022
Konfigurasikan ekstensi Azure IoT Edge Tools untuk menggunakan mesin Docker jarak jauh yang berjalan di dalam IoT Edge untuk Linux pada VM Windows:
Pilih Tools>Alat Azure IoT Edge>Pengaturan Alat IoT Edge.
Ganti nilai localhost DOCKER_HOST dengan alamat IP untuk IoT Edge untuk Linux di VM Windows. Jika Anda tidak ingat alamat IP, gunakan IoT Edge untuk Linux pada cmdlet PowerShell Windows
Get-EflowVmAddruntuk mendapatkannya. Misalnya, jika IoT Edge untuk Linux pada alamat IP VM Windows adalah 172.20.1.100, nilai baru harus tcp://172.20.1.100:2375.
Pilih OK.
Mengembangkan modul Anda
Saat Anda menambahkan modul baru, modul tersebut dilengkapi dengan kode default yang siap dibuat dan disebarkan ke perangkat sehingga Anda dapat mulai menguji tanpa menyentuh kode apa pun. Kode modul terletak di dalam folder modul dalam file bernama Program.cs (untuk C#) atau main.c (untuk C).
Dalam solusi default, data simulasi dari modul SimulatedTemperatureSensor dirutekan ke modul Anda. Modul mengambil input dan kemudian mengirimkannya ke Azure IoT Hub.
Saat Anda siap untuk menyesuaikan templat modul dengan kode Anda sendiri, gunakan SDK Azure IoT Hub untuk membangun modul lain yang memenuhi kebutuhan utama untuk solusi IoT. Kebutuhan ini dapat mencakup keamanan, manajemen perangkat, dan keandalan.
Membangun dan mengunggah satu modul
Biasanya, Anda ingin menguji dan men-debug setiap modul sebelum menjalankannya dalam seluruh solusi dengan beberapa modul. Karena solusi akan build atau debug dengan menggunakan mesin Docker yang berjalan dalam IoT Edge untuk Linux dalam VM Windows, langkah pertama adalah membangun dan menerbitkan modul untuk mengaktifkan debug jarak jauh.
Di Solution Explorer, pilih folder proyek modul (misalnya,
myIotEdgeModule).Atur modul kustom sebagai proyek startup. Pada menu, pilih Project>Set sebagai Proyek StartUp.
Untuk men-debug modul C# Linux, Anda perlu memperbarui
Dockerfile.amd64.debugfile untuk mengaktifkan layanan SSH. Perbarui fileDockerfile.amd64.debuguntuk menggunakan templat berikut: Dockerfile untuk modul AMD64 C# Azure IoT Edge dengan Dukungan Debug Jarak Jauh.Catatan
Saat Anda memilih Debug, Visual Studio menggunakan
Dockerfile.(amd64|windows-amd64).debuguntuk membangun gambar Docker. File ini mencakup debugger baris perintah .NET Core VSDBG dalam gambar kontainer Anda saat proses pembangunannya. Untuk modul IoT Edge siap produksi, kami sarankan Anda menggunakan konfigurasi Release, yang menggunakanDockerfile.(amd64|windows-amd64)tanpa VSDBG.Pastikan bahwa di baris terakhir templat,
ENTRYPOINT ["dotnet", "IotEdgeModule1.dll"], nama DLL cocok dengan nama proyek modul IoT Edge Anda.Untuk membuat koneksi SSH dengan modul Linux, Anda perlu membuat kunci RSA. Buka sesi PowerShell yang ditingkatkan dan jalankan perintah berikut untuk membuat kunci RSA baru. Simpan kunci RSA di bawah folder modul IoT Edge yang sama, dan pastikan bahwa nama kunci
id_rsa.ssh-keygen -t RSA -b 4096 -m PEM
Jika Anda menggunakan registri privat seperti Azure Container Registry, gunakan perintah Docker berikut untuk masuk ke registri tersebut. Anda bisa mendapatkan nama pengguna dan kata sandi dari halaman Kunci Akses di registri Anda di portal Azure. Jika Anda menggunakan registri lokal, Anda dapat menjalankan registri lokal.
docker -H tcp://<EFLOW-VM-IP>:2375 login -u <Container Registry username> -p <Container Registry password> <Container Registry login server>
Di Solution Explorer, klik kanan folder proyek dan pilih Bangun dan Push Modul IoT Edge. Perintah ini membangun dan mengunggah image Docker untuk setiap modul.
Jika Anda menggunakan registri privat seperti Azure Container Registry, Anda perlu menambahkan informasi masuk registri ke pengaturan runtime yang ditemukan dalam file
deployment.template.json. Ganti placeholder dengan nama pengguna admin Container Registry yang sesungguhnya, kata sandi, dan nama registri Anda."settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "registry1": { "username": "<username>", "password": "<password>", "address": "<registry name>.azurecr.io" } } }Catatan
Artikel ini menggunakan kredensial masuk admin untuk Azure Container Registry, yang nyaman untuk skenario pengembangan dan pengujian. Saat Anda siap untuk skenario produksi, kami merekomendasikan opsi autentikasi dengan hak paling rendah seperti perwakilan layanan. Untuk informasi selengkapnya, lihat Kelola akses ke registri kontainer Anda.
Anda perlu mengekspos port 22 untuk mengakses layanan SSH modul. Tutorial ini menggunakan 10022 sebagai port host, tetapi Anda dapat menentukan port yang berbeda. Port yang Anda tentukan akan digunakan sebagai port SSH untuk terhubung ke modul Linux C# . Anda perlu menambahkan informasi port SSH ke
createOptionsuntuk pengaturan modul Linux ini dalam filedeployment.debug.template.json."createOptions": { "HostConfig": { "Privileged": true, "PortBindings": { "22/tcp": [ { "HostPort": "10022" } ] } } }Di Solution Explorer, klik kanan folder proyek dan pilih Buat Penyebaran untuk IoT Edge untuk membangun JSON penyebaran IoT Edge baru.
Pilih Tampilkan>Cloud Explorer. Pastikan Anda masuk ke Visual Studio 2019.
Di Cloud Explorer, perluas langganan Anda, lalu temukan Azure IoT Hub dan perangkat Azure IoT Edge yang ingin Anda sebarkan.
Klik kanan perangkat IoT Edge dan pilih Buat penyebaran. Buka manifes penyebaran debug yang dikonfigurasi untuk platform Anda. Ini ada di folder
configdi solusi Visual Studio Anda, sepertideployment.amd64.json.
Membangun image Docker untuk modul
Setelah mengembangkan modul, Anda dapat membuat gambar modul untuk disimpan di registri kontainer untuk penyebaran ke perangkat IoT Edge Anda.
Gunakan Dockerfile modul untuk membangun gambar Docker modul:
docker build --rm -f "<DockerFilePath>" -t <ImageNameAndTag> "<ContextPath>"
Misalnya, asumsikan bahwa shell perintah Anda ada di direktori proyek Anda dan nama modul Anda adalah IotEdgeModule1. Untuk membangun gambar untuk registri lokal atau Azure Container Registry, gunakan perintah berikut:
# Build the image for the local registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t localhost:5000/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
# Or build the image for an Azure Container Registry
docker build --rm -f "./IotEdgeModule1/Dockerfile.amd64.debug" -t myacr.azurecr.io/iotedgemodule1:0.0.1-amd64 "./IotEdgeModule1"
Unggah gambar Docker modul
Dorong gambar modul Anda ke registri lokal atau registri kontainer:
docker push <ImageName>
Contohnya:
# Push the Docker image to the local registry
docker push localhost:5000/iotedgemodule1:0.0.1-amd64
# Or push the Docker image to an Azure Container Registry
az acr login --name myacr
docker push myacr.azurecr.io/iotedgemodule1:0.0.1-amd64
Menyebarkan modul ke perangkat IoT Edge
Di Visual Studio, buka file manifes penyebaran deployment.debug.template.json di proyek utama.
Sebelum penyebaran, Anda perlu memperbarui kredensial Azure Container Registry, gambar modul, dan nilai createOptions yang tepat. Untuk informasi selengkapnya tentang nilai createOption, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.
Jika Anda menggunakan Azure Container Registry untuk menyimpan citra modul, tambahkan kredensial Anda ke
deployment.debug.template.jsondalam pengaturanedgeAgent. Contohnya:"modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "myacr": { "username": "myacr", "password": "<your_acr_password>", "address": "myacr.azurecr.io" } } } }, //...Gantilah nilai properti
imagedengan nama gambar modul yang Anda unggah ke registri. Misalnya, jika Anda mengunggah gambar bertandamyacr.azurecr.io/iotedgemodule1:0.0.1-amd64untuk modul kustomIotEdgeModule1, ganti nilai properti gambar dengan nilai tag.Tambahkan atau ganti nilai
createOptionsdengan konten yang diubah menjadi string untuk setiap sistem dan modul kustom dalam template penyebaran.Misalnya, pengaturan
imagedancreateOptionsuntukIotEdgeModule1akan mirip dengan contoh berikut:"IotEdgeModule1": { "version": "1.0.0", "type": "docker", "status": "running", "restartPolicy": "always", "settings": { "image": "myacr.azurecr.io/iotedgemodule1:0.0.1-amd64", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}" }Gunakan perintah IoT Edge Azure CLI set-modules untuk menyebarkan modul ke Azure IoT hub. Misalnya, untuk menyebarkan modul yang ditentukan dalam file
deployment.debug.amd64.jsonke hub IoTmy-iot-hubuntuk perangkat IoT Edgemy-device, gunakan perintah berikut:az iot edge set-modules --hub-name my-iot-hub --device-id my-device --content ./deployment.debug.template.json --login "HostName=my-iot-hub.azure-devices.net;SharedAccessKeyName=iothubowner;SharedAccessKey=<SharedAccessKey>"Petunjuk / Saran
Anda dapat menemukan IoT Hub connection string Anda di portal Azure di bawah Azure IoT Hub>Pengamanan keamanan>Kebijakan akses berbagi.
Di Cloud Explorer, klik kanan perangkat edge Anda dan segarkan untuk mengonfirmasi bahwa modul baru berjalan, bersama dengan modul
$edgeAgentdan modul$edgeHub.
Memperbaiki solusi
Dalam sesi PowerShell yang ditingkatkan, jalankan perintah berikut:
Dapatkan nilai
moduleId, berdasarkan nama modul Linux C#.<iot-edge-module-name>Ganti tempat penampung dengan nama modul Anda.$moduleId = Invoke-EflowVmCommand "sudo docker ps -aqf name=<iot-edge-module-name>"Periksa apakah
$moduleIdbenar. Jika variabel kosong, pastikan Anda menggunakan nama modul yang benar.Mulai layanan SSH di dalam kontainer Linux:
Invoke-EflowVmCommand "sudo docker exec -it -d $moduleId service ssh start"Buka port SSH modul pada IoT Edge untuk Linux di VM Windows. (Tutorial ini menggunakan port 10022.)
Invoke-EflowVmCommand "sudo iptables -A INPUT -p tcp --dport 10022 -j ACCEPT"
Peringatan
Untuk alasan keamanan, setiap kali IoT Edge untuk Linux pada Windows VM dimulai ulang, aturan tabel IP dihapus dan kembali ke pengaturan asli. Selain itu, Anda harus memulai layanan SSH modul lagi secara manual.
Setelah Anda berhasil memulai layanan SSH, pilih Debug>Lampirkan ke Proses, atur Connection Type ke SSH, dan atur Target Koneksi ke alamat IP IoT Edge Anda pada Linux di VM Windows. Jika Anda tidak tahu alamat IP IoT Edge Anda untuk Linux di VM Windows, Anda dapat menggunakan cmdlet PowerShell
Get-EflowVmAddr.Ketik IP lalu pilih tombol Enter. Di jendela pop-up, masukkan konfigurasi berikut:
Bidang Nilai Host Name Alamat IP untuk IoT Edge untuk Linux di VM Windows Port 10022 (atau yang Anda gunakan dalam konfigurasi penyebaran Anda) Nama pengguna root Jenis autentikasi Kunci privat File Kunci Privat Jalur lengkap menuju nilai id_rsayang Anda buat di langkah sebelumnyaFrase Sandi Frase sandi yang digunakan untuk kunci yang Anda buat di langkah sebelumnya Setelah berhasil menyambungkan ke modul dengan menggunakan SSH, Anda dapat memilih proses dan memilih Lampirkan. Untuk modul C#, Anda perlu memilih proses dotnet dan Melampirkan ke Terkelola (CoreCLR). Mungkin perlu waktu 10 hingga 20 detik untuk pertama kalinya.
Atur titik henti untuk memeriksa modul:
- Jika Anda mengembangkan di C#, atur titik henti dalam
PipeMessage()fungsi diModuleBackgroundService.cs. - Jika Anda menggunakan C, atur titik henti dalam
InputQueue1Callback()fungsi dimain.c.
- Jika Anda mengembangkan di C#, atur titik henti dalam
Output
SimulatedTemperatureSensorharus dialihkan keinput1modul Linux C# kustom. Titik henti harus dipicu. Anda dapat menonton variabel di jendela Visual Studio Locals.
Untuk menghentikan penelusuran kesalahan, pilih Ctrl+F5 atau pilih tombol Hentikan .
Membersihkan sumber daya
Jika berencana untuk melanjutkan ke artikel yang disarankan berikutnya, Anda dapat menyimpan sumber daya dan konfigurasi yang Anda buat dan menggunakannya kembali. Anda juga dapat terus menggunakan perangkat IoT Edge yang sama dengan perangkat pengujian.
Jika tidak, hapus konfigurasi lokal dan sumber daya Azure yang Anda gunakan dalam artikel ini untuk menghindari biaya.
Menghapus sumber daya Azure
Anda tidak dapat membatalkan penghapusan Azure sumber daya dan grup sumber daya. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat IoT Hub di dalam grup sumber daya yang ada yang memiliki sumber daya yang ingin Anda simpan, hapus hanya sumber daya IoT Hub itu sendiri, bukan grup sumber daya.
Untuk menghapus sumber daya:
- Masuk ke portal Azure, lalu pilih grup Resource.
- Pilih nama grup sumber daya yang berisi sumber daya pengujian IoT Edge Anda.
- Tinjau daftar sumber daya yang dimuat grup sumber daya Anda. Jika Anda ingin menghapus semuanya, Anda dapat memilih Hapus grup sumber daya. Jika Anda hanya ingin menghapus beberapa sumber daya, pilih setiap sumber daya untuk menghapusnya satu per satu.
Langkah selanjutnya
Dalam tutorial ini, Anda menyiapkan Visual Studio di komputer pengembangan Anda, dan Anda menyebarkan dan men-debug modul IoT Edge pertama Anda darinya. Sekarang setelah Anda mengetahui konsep dasar, coba tambahkan fungsionalitas ke modul sehingga dapat menganalisis data yang melewatinya: