Bagikan melalui


Bersiaplah untuk menyebarkan solusi IoT Edge Anda dalam produksi

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5

Penting

IoT Edge 1.5 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai per 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Saat Anda siap untuk mengambil solusi IoT Edge dari pengembangan ke produksi, pastikan solusi tersebut dikonfigurasi untuk performa yang sedang berlangsung.

Tidak semua informasi dalam artikel ini sama pentingnya. Untuk membantu Anda memprioritaskan, setiap bagian dimulai dengan daftar yang membagi pekerjaan menjadi dua grup: penting untuk diselesaikan sebelum pergi ke produksi, atau berguna untuk diketahui.

Konfigurasi perangkat

Perangkat IoT Edge bisa apa saja dari Raspberry Pi hingga laptop atau komputer virtual yang berjalan di server. Anda dapat mengakses perangkat secara fisik atau melalui koneksi virtual, atau dapat diisolasi untuk jangka waktu yang lama. Bagaimanapun, pastikan dikonfigurasi agar berfungsi dengan tepat.

  • Penting

    • Menginstal sertifikat produksi
    • Memiliki rencana manajemen perangkat
    • Menggunakan Moby sebagai mesin kontainer. Jika Anda menggunakan snap Ubuntu Core, snap Docker dilayankan oleh Canonical dan didukung untuk skenario produksi.
  • Bermanfaat

    • Pilih protokol upstram

Menginstal sertifikat produksi

Setiap perangkat IoT Edge dalam produksi membutuhkan sertifikat otoritas sertifikat (CA) perangkat yang terpasang padanya. Sertifikat CA tersebut kemudian dinyatakan ke runtime IoT Edge dalam file konfigurasi. Untuk pengembangan dan pengujian, runtime IoT Edge membuat sertifikat sementara jika tidak ada sertifikat yang dideklarasikan dalam file konfigurasi. Tetapi sertifikat sementara ini kedaluwarsa setelah tiga bulan dan tidak aman untuk skenario produksi. Untuk skenario produksi, berikan sertifikat CA Edge Anda sendiri, baik dari otoritas sertifikat yang ditandatangani sendiri atau yang dibeli dari otoritas sertifikat komersial.

Untuk memahami peran sertifikat CA Edge, lihat Cara Azure IoT Edge menggunakan sertifikat.

Untuk informasi selengkapnya tentang menginstal sertifikat pada perangkat IoT Edge dan merujuknya dari file konfigurasi, lihat Mengelola sertifikat pada perangkat IoT Edge.

Memiliki rencana manajemen perangkat

Sebelum Anda menempatkan perangkat apa pun dalam produksi, pertimbangkan bagaimana Anda akan mengelola pembaruan di masa mendatang. Untuk perangkat IoT Edge, daftar komponen yang akan diperbarui dapat mencakup:

  • Firmware perangkat
  • Pustaka sistem operasi
  • Mesin kontainer, seperti Moby
  • IoT Edge
  • Sertifikat CA

Device Update for IoT Hub adalah layanan yang memungkinkan Anda menyebarkan pembaruan over-the-air (OTA) untuk perangkat IoT Edge Anda.

Cara lain untuk memperbarui IoT Edge memerlukan akses fisik atau SSH ke perangkat IoT Edge. Untuk informasi selengkapnya, lihat Perbarui runtime bahasa umum IoT Edge. Untuk memperbarui beberapa perangkat, pertimbangkan untuk menambahkan langkah-langkah pembaruan ke skrip atau menggunakan alat otomatisasi seperti Ansible.

Mesin kontainer

Mesin kontainer diperlukan untuk perangkat IoT Edge apa pun. Mesin moby didukung dalam produksi. Jika Anda menggunakan snap Ubuntu Core, snap Docker dilayankan oleh Canonical dan didukung untuk skenario produksi. Mesin kontainer lain, seperti Docker, bekerja dengan IoT Edge dan tidak apa-apa untuk menggunakan mesin ini untuk pengembangan. Mesin moby dapat didistribusikan kembali saat digunakan dengan Azure IoT Edge, dan Microsoft menyediakan layanan untuk mesin ini.

Pilih protokol upstram

Anda dapat mengonfigurasi protokol (yang menentukan port yang digunakan) untuk komunikasi upstram ke IoT Hub untuk agen IoT Edge dan hub IoT Edge. Protokol default adalah AMQP, tetapi Anda mungkin ingin mengubahnya tergantung pada penyiapan jaringan Anda.

Kedua modul runtime bahasa umum memiliki variabel lingkungan UpstreamProtocol. Nilai yang valid untuk variabel adalah:

  • MQTT
  • AMQP
  • MQTTWS
  • AMQPWS

Konfigurasikan variabel UpstreamProtocol untuk agen IoT Edge dalam file konfigurasi pada perangkat itu sendiri. Misalnya, jika perangkat IoT Edge Anda berada di belakang server proksi yang memblokir port AMQP, Anda mungkin perlu mengonfigurasi agen IoT Edge untuk menggunakan AMQP melalui WebSocket (AMQPWS) untuk membuat koneksi awal ke IoT Hub.

Setelah perangkat IoT Edge Anda tersambung, lanjutkan mengonfigurasi variabel UpstreamProtocol untuk kedua modul runtime dalam penyebaran di masa mendatang. Misalnya, lihat Mengonfigurasi perangkat IoT Edge untuk berkomunikasi melalui server proksi.

Penyebaran

  • Bermanfaat
    • Konsisten dengan protokol upstram
    • Siapkan penyimpanan host untuk modul sistem
    • Kurangi ruang memori yang digunakan oleh hub IoT Edge
    • Gunakan gambar modul yang benar dalam manifes penyebaran
    • Perhatikan batas ukuran kembar saat menggunakan modul kustom
    • Mengonfigurasi cara pembaruan modul diterapkan

Konsisten dengan protokol upstram

Jika Anda mengonfigurasi agen IoT Edge pada perangkat IoT Edge Anda untuk menggunakan protokol lain dari AMQP default, maka Anda harus mendeklarasikan protokol yang sama di semua penyebaran di masa mendatang. Misalnya, jika perangkat IoT Edge Anda berada di belakang server proksi yang memblokir port AMQP, Anda mungkin mengonfigurasi perangkat agar terhubung melalui AMQP melalui WebSocket (AMQPWS). Saat Anda menyebarkan modul ke perangkat, konfigurasikan protokol AMQPWS yang sama untuk agen IoT Edge dan hub IoT Edge, atau AMQP default mengambil alih pengaturan dan mencegah Anda tersambung lagi.

Anda hanya perlu mengonfigurasi variabel lingkungan UpstreamProtocol untuk agen IoT Edge dan modul hub IoT Edge. Setiap modul tambahan mengadopsi protokol mana pun yang diatur dalam modul runtime bahasa umum.

Contoh proses ini tersedia dalam Konfigurasikan perangkat IoT Edge untuk berkomunikasi melalui server proksi.

Siapkan penyimpanan host untuk modul sistem

Modul agen dan hub IoT Edge menggunakan penyimpanan lokal untuk menjaga status dan mengaktifkan pesan antara modul, perangkat, dan cloud. Demi keandalan dan performa yang lebih baik, konfigurasikan modul sistem untuk menggunakan penyimpanan pada sistem file host.

Untuk informasi selengkapnya, lihat Penyimpanan host untuk modul sistem.

Kurangi ruang memori yang digunakan oleh hub IoT Edge

Jika Anda menyebarkan perangkat yang dibatasi dengan memori terbatas yang tersedia, Anda dapat mengonfigurasi hub IoT Edge agar berjalan dalam kapasitas yang lebih efisien dan menggunakan lebih sedikit ruang disk. Konfigurasi ini membatasi performa hub IoT Edge, jadi temukan keseimbangan yang tepat yang berfungsi untuk solusi Anda.

Jangan optimalkan untuk performa pada perangkat yang dibatasi

Hub IoT Edge dioptimalkan untuk performa secara default, sehingga hub berupaya mengalokasikan potongan memori yang besar. Konfigurasi ini dapat menyebabkan masalah stabilitas pada perangkat yang lebih kecil seperti Raspberry Pi. Jika Anda menyebarkan perangkat dengan sumber daya yang dibatasi, Anda mungkin perlu mengatur variabel lingkungan OptimizeForPerformance menjadi salah pada hub IoT Edge.

Jika OptimizeForPerformance diatur ke benar, kepala protokol MQTT menggunakan PooledByteBufferAllocator, yang memiliki performa lebih baik namun mengalokasikan lebih banyak memori. Pengalokasi tersebut tidak berfungsi dengan baik pada sistem operasi 32-bit atau pada perangkat dengan memori rendah. Selain itu, jika dioptimalkan untuk performa, RocksDb mengalokasikan lebih banyak memori untuk perannya sebagai penyedia penyimpanan lokal.

Untuk informasi selengkapnya, lihat Masalah stabilitas pada perangkat yang lebih kecil.

Nonaktifkan protokol yang tidak digunakan

Cara lain untuk mengoptimalkan performa hub IoT Edge dan mengurangi penggunaan memorinya adalah dengan menonaktifkan kepala protokol untuk setiap protokol yang tidak Anda gunakan dalam solusi.

Kepala protokol dikonfigurasi dengan mengatur variabel lingkungan boolean untuk modul hub IoT Edge dalam manifes penyebaran Anda. Tiga variabel tersebut adalah:

  • amqpSettings__enabled
  • PengaturanMQTT__diaktifkan
  • httpSettings__enabled

Ketiga variabel memiliki dua garis bawah dan dapat diatur ke benar atau salah.

Kurangi waktu penyimpanan untuk pesan

Modul hub IoT Edge menyimpan pesan untuk sementara jika tidak dapat dikirim ke IoT Hub karena alasan apa pun. Anda dapat mengonfigurasi durasi hub IoT Edge menyimpan pesan yang tidak terkirim sebelum membiarkannya kedaluwarsa. Jika Anda memiliki masalah memori di perangkat, Anda dapat menurunkan nilai timeToLiveSecs di kembaran modul hub IoT Edge.

Nilai default parameter timeToLiveSecs adalah 7200 detik, yaitu dua jam.

Gunakan gambar modul yang benar dalam manifes penyebaran

Jika gambar modul kosong atau salah digunakan, agen Edge mencoba kembali memuat gambar, yang menyebabkan lalu lintas tambahan dihasilkan. Tambahkan gambar yang benar ke manifes penyebaran untuk menghindari menghasilkan lalu lintas yang tidak perlu.

Jangan gunakan versi debug gambar modul

Saat berpindah dari skenario pengujian ke skenario produksi, ingatlah untuk menghapus konfigurasi debug dari manifes penyebaran. Periksa apakah tidak ada gambar modul dalam manifes penyebaran yang memiliki akhiran .debug . Jika Anda menambahkan opsi pembuatan untuk mengekspos port dalam modul untuk debugging, hapus opsi pembuatan tersebut juga.

Perhatikan batas ukuran kembar saat menggunakan modul kustom

Manifes penyebaran yang berisi modul kustom adalah bagian dari kembar EdgeAgent. Tinjau batasan pada ukuran kembar modul.

Jika Anda menyebarkan sejumlah besar modul, Anda mungkin menghabiskan batas ukuran kembar ini. Pertimbangkan beberapa mitigasi umum untuk batas keras ini:

  • Simpan konfigurasi apa pun di kembar modul kustom, yang memiliki batasnya sendiri.
  • Simpan beberapa konfigurasi yang menunjuk ke lokasi yang tidak terbatas ruang (yaitu, ke penyimpanan blob).

Mengonfigurasi cara pembaruan modul diterapkan

Saat penyebaran diperbarui, Edge Agent menerima konfigurasi baru sebagai pembaruan kembar. Jika konfigurasi baru memiliki gambar modul baru atau yang diperbarui, secara default, Agen Edge secara berurutan memproses setiap modul:

  1. Gambar yang diperbarui diunduh
  2. Modul yang sedang berjalan dihentikan
  3. Instans modul baru dimulai
  4. Pembaruan modul berikutnya diproses

Dalam beberapa kasus, misalnya ketika dependensi ada di antara modul, mungkin diinginkan untuk terlebih dahulu mengunduh semua gambar modul yang diperbarui sebelum memulai ulang modul yang sedang berjalan. Perilaku pembaruan modul ini dapat dikonfigurasi dengan mengatur variabel ModuleUpdateMode lingkungan Agen IoT Edge ke nilai WaitForAllPullsstring . Untuk informasi selengkapnya, lihat Variabel Lingkungan IoT Edge.

"modulesContent": {
    "$edgeAgent": {
        "properties.desired": {
            ...
            "systemModules": {
                "edgeAgent": {
                    "env": {
                        "ModuleUpdateMode": {
                            "value": "WaitForAllPulls"
                        }
                    ...

Pengelolaan kontainer

  • Penting
    • gunakan tag untuk mengelola versi
    • Kelola volume
  • Bermanfaat
    • simpan kontainer runtime bahasa umum dalam registri privat Anda
    • Mengonfigurasi pengumpulan sampah gambar

gunakan tag untuk mengelola versi

Tag adalah konsep docker yang dapat Anda gunakan untuk membedakan antara versi kontainer docker. Tag adalah akhiran seperti 1,5 yang berada di akhir repositori kontainer. Misalnya, mcr.microsoft.com/azureiotedge-agent:1.5. Tag dapat diubah dan dapat diganti agar mengarah ke kontainer lain kapan pun, sehingga tim Anda perlu menyetujui konvensi untuk diikuti saat Anda memperbarui gambar modul Anda.

Tag juga membantu Anda memberlakukan pembaruan pada perangkat IoT Edge Anda. Saat Anda mendorong versi modul yang diperbarui ke registri kontainer Anda, buat tahapan tag. Kemudian, dorong penyebaran baru ke perangkat Anda dengan tag yang bertahap. Mesin kontainer mengenali tag yang dinaikkan sebagai versi baru dan menarik versi modul terbaru ke perangkat Anda.

Tag untuk runtime bahasa umum{i>

Gambar hub IoT Edge dan agen IoT Edge ditandai dengan versi IoT Edge yang terkait dengannya. Ada dua cara berbeda untuk menggunakan tag dengan gambar runtime bahasa umum:

  • Tag bergulir - Gunakan hanya dua nilai pertama dari nomor versi untuk mendapatkan gambar terbaru yang cocok dengan digit tersebut. Misalnya, 1.5 diperbarui setiap kali ada rilis baru untuk menunjuk ke versi 1.5.x terbaru. Jika runtime bahasa umum kontainer pada perangkat IoT Edge Anda menarik gambar lagi, modul runtime bahasa umum diperbarui ke versi terbaru. Penyebaran dari portal Microsoft Azure default ke tag bergulir. Pendekatan ini disarankan untuk tujuan pengembangan.

  • Tag tertentu - Gunakan ketiga nilai nomor versi untuk mengatur versi gambar secara eksplisit. Misalnya, 1.5.0 tidak akan berubah setelah rilis awal. Anda dapat mendeklarasikan nomor versi baru dalam manifes penyebaran saat Anda siap untuk memperbarui. Pendekatan ini disarankan untuk keperluan produksi.

Kelola volume

IoT Edge tidak menghapus volume yang terpasang pada kontainer modul. Perilaku ini adalah bagian rencana, karena memungkinkan mempertahankan data di seluruh instans kontainer seperti skenario peningkatan. Namun, jika volume ini dibiarkan tidak digunakan, maka dapat menyebabkan kelelahan ruang disk dan kesalahan sistem berikutnya. Jika Anda menggunakan volume docker dalam skenario Anda, maka kami mendorong Anda untuk menggunakan alat docker seperti pangkas volume docker dan rm volume docker untuk menghapus volume yang tidak digunakan, terutama untuk skenario produksi.

simpan kontainer runtime bahasa umum dalam registri privat Anda

Anda tahu cara menyimpan gambar kontainer untuk modul kode kustom di registri Azure privat Anda, tetapi Anda juga dapat menggunakannya untuk menyimpan gambar kontainer publik seperti modul runtime edgeAgent dan edgeHub . Melakukannya mungkin diperlukan jika Anda memiliki batasan firewall yang ketat karena kontainer runtime ini disimpan di Microsoft Container Registry (MCR).

Langkah-langkah berikut mengilustrasikan cara menarik gambar Docker edgeAgent dan edgeHub ke komputer lokal Anda, memasukkannya kembali, mendorongnya ke registri privat Anda, lalu memperbarui file konfigurasi Anda sehingga perangkat Anda tahu untuk menarik gambar dari registri privat Anda.

  1. Tarik gambar EdgeAgent Docker dari registri Microsoft. Perbarui nomor versi jika diperlukan.

    # Pull edgeAgent image
    docker pull mcr.microsoft.com/azureiotedge-agent:1.5
    
    # Pull edgeHub image
    docker pull mcr.microsoft.com/azureiotedge-hub:1.5
    
  2. Cantumkan semua gambar Docker Anda, temukan gambar edgeAgent dan edgeHub , lalu salin ID gambar mereka.

    docker images
    
  3. Masukkan kembali gambar edgeAgent dan edgeHub Anda. Ganti nilai dalam tanda kurung siku dengan nilai Anda sendiri.

    # Retag your edgeAgent image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-agent:1.5
    
    # Retag your edgeHub image
    docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.5
    
  4. Dorong gambar edgeAgent dan edgeHub Anda ke registri privat Anda. Ganti nilai dalam tanda kurung siku dengan nilai Anda sendiri.

    # Push your edgeAgent image to your private registry
    docker push <registry-name/server>/azureiotedge-agent:1.5
    
    # Push your edgeHub image to your private registry
    docker push <registry-name/server>/azureiotedge-hub:1.5
    
  5. Perbarui referensi gambar dalam file deployment.template.json untuk modul sistem edgeAgent dan edgeHub , dengan mengganti mcr.microsoft.com dengan "registry-name/server" Anda sendiri untuk kedua modul.

  6. Buka editor teks di perangkat IoT Edge Anda untuk mengubah file konfigurasi sehingga tahu tentang gambar registri privat Anda.

    sudo nano /etc/aziot/config.toml
    
  7. Di editor teks, ubah nilai gambar Anda di bawah [agent.config]. Ganti nilai dalam tanda kurung siku dengan nilai Anda sendiri.

    [agent.config]
    image = "<registry-name/server>/azureiotedge-agent:1.5"
    
  8. Jika registri privat Anda memerlukan autentikasi, atur parameter autentikasi di [agent.config.auth].

    [agent.config.auth]
    serveraddress = "<login-server>" # Almost always equivalent to <registry-name/server>
    username = "<username>"
    password = "<password>"
    
  9. Simpan perubahan Anda dan keluar dari editor teks Anda.

  10. Terapkan perubahan konfigurasi IoT Edge.

    sudo iotedge config apply
    

    Runtime IoT Edge Anda dimulai ulang.

Untuk informasi selengkapnya, lihat:

Mengonfigurasi pengumpulan sampah gambar

Pengumpulan sampah gambar adalah fitur di IoT Edge v1.4 dan yang lebih baru untuk membersihkan gambar Docker secara otomatis yang tidak lagi digunakan oleh modul IoT Edge. Ini hanya menghapus gambar Docker yang ditarik oleh runtime IoT Edge sebagai bagian dari penyebaran. Menghapus gambar Docker yang tidak digunakan membantu menghemat ruang disk.

Fitur ini diimplementasikan dalam komponen host IoT Edge, aziot-edged layanan dan diaktifkan secara default. Pembersihan dilakukan setiap hari pada tengah malam (waktu lokal perangkat) dan menghapus gambar Docker yang tidak digunakan yang terakhir digunakan tujuh hari yang lalu. Parameter untuk mengontrol perilaku pembersihan diatur di config.toml dan dijelaskan nanti di bagian ini. Jika parameter tidak ditentukan dalam file konfigurasi, nilai default akan diterapkan.

Misalnya, berikut ini adalah config.toml bagian pengumpulan sampah gambar menggunakan nilai default:

[image_garbage_collection]
enabled = true
cleanup_recurrence = "1d"
image_age_cleanup_threshold = "7d" 
cleanup_time = "00:00"

Tabel berikut menjelaskan parameter pengumpulan sampah gambar. Semua parameter bersifat opsional dan dapat diatur satu per satu untuk mengubah pengaturan default.

Pengaturan Deskripsi Wajib diisi Nilai default
enabled Mengaktifkan pengumpulan sampah gambar. Anda dapat memilih untuk menonaktifkan fitur dengan mengubah pengaturan ini ke false. Opsional TRUE
cleanup_recurrence Mengontrol frekuensi pengulangan tugas pembersihan. Harus ditentukan sebagai beberapa hari dan tidak boleh kurang dari satu hari.

Misalnya: 1d, 2d, 6d, dll.
Opsional 1 hari
image_age_cleanup_threshold Menentukan ambang batas usia minimum gambar yang tidak digunakan sebelum mempertimbangkan untuk pembersihan dan harus ditentukan dalam hari. Anda dapat menentukan sebagai 0d untuk membersihkan gambar segera setelah dihapus dari penyebaran.

Gambar dianggap tidak digunakan setelah dihapus dari penyebaran.
Opsional 7h terakhir
cleanup_time Waktu hari, di waktu lokal perangkat, saat tugas pembersihan berjalan. Harus dalam format HH:MM 24 jam. Opsional 00:00

Jaringan

  • Bermanfaat
    • Tinjau konfigurasi keluar/masuk
    • Izinkan koneksi dari perangkat IoT Edge
    • Konfigurasikan komunikasi melalui proksi
    • Mengatur server DNS dalam pengaturan mesin kontainer

Tinjau konfigurasi keluar/masuk

Saluran komunikasi antara Azure IoT Hub dan IoT Edge selalu dikonfigurasi untuk keluar. Untuk sebagian besar skenario IoT Edge, hanya tiga koneksi yang diperlukan. Mesin kontainer perlu tersambung dengan registri kontainer (atau registri) yang menyimpan gambar modul. Runtime bahasa umum IoT Edge perlu tersambung dengan IoT Hub untuk mengambil informasi konfigurasi perangkat, serta untuk mengirim pesan dan telemetri. Dan jika Anda menggunakan provisi otomatis, IoT Edge perlu tersambung ke Layanan Provisi Perangkat. Untuk informasi selengkapnya, lihat Firewall dan aturan konfigurasi port.

Izinkan koneksi dari perangkat IoT Edge

Jika penyiapan jaringan mewajibkan agar Anda secara eksplisit mengizinkan koneksi yang dibuat dari perangkat IoT Edge, tinjau daftar komponen IoT Edge berikut ini:

  • Agen IoT Edge membuka koneksi AMQP / MQTT persisten ke IoT Hub, kemungkinan melalui WebSockets.
  • Hub IoT Edge membuka satu koneksi AMQP persisten atau beberapa koneksi MQTT ke IoT Hub, kemungkinan melalui WebSocket.
  • Layanan IoT Edge melakukan panggilan HTTPS terputus-terputus ke IoT Hub.

Dalam ketiga kasus, nama domain yang sepenuhnya memenuhi syarat (FQDN) akan cocok dengan pola \*.azure-devices.net.

Registri kontainer

Mesin Kontainer melakukan panggilan ke registri kontainer melalui HTTPS. Untuk mengambil gambar kontainer runtime IoT Edge, FQDN adalah mcr.microsoft.com. Mesin kontainer tersambung ke registri lain seperti yang dikonfigurasi dalam penyebaran.

Daftar periksa ini adalah titik awal untuk aturan firewall:

FQDN (* = kartubebas) Port TCP Keluar Penggunaan
mcr.microsoft.com 443 Microsoft Container Registry
*.data.mcr.microsoft.com 443 Titik akhir data yang menyediakan pengiriman konten
*.cdn.azcr.io 443 Menyebarkan modul dari Marketplace ke perangkat
global.azure-devices-provisioning.net 443 Akses Device Provisioning Service (opsional)
*.azurecr.io 443 Registri kontainer pribadi dan pihak ketiga
*.blob.core.windows.net 443 Unduh delta gambar Azure Container Registry dari penyimpanan blob
*.azure-devices.net 5671, 8883, 4431 Akses IoT Hub
*.docker.io 443 Akses Hub Docker (opsional)

1Buka port 8883 untuk MQTT aman atau port 5671 untuk AMQP yang aman. Jika Anda hanya dapat membuat koneksi melalui port 443 maka salah satu protokol ini dapat dijalankan melalui terowongan WebSocket.

Karena alamat IP hub IoT dapat berubah tanpa pemberitahuan, selalu gunakan FQDN untuk mengizinkan konfigurasi. Untuk mempelajari lebih lanjut, lihat Memahami alamat IP IoT Hub Anda.

Beberapa aturan firewall ini diwarisi dari Azure Container Registry. Untuk informasi selengkapnya, lihat Konfigurasikan aturan untuk mengakses registri kontainer Azure di balik firewall.

Anda dapat mengaktifkan titik akhir data khusus di registri Azure Container Anda untuk menghindari daftar kartubebas yang diizinkan dari *.blob.core.windows.net FQDN. Untuk informasi selengkapnya, lihat Mengaktifkan titik akhir data khusus.

Catatan

Untuk menyediakan FQDN yang konsisten antara REST dan titik akhir data, mulai 15 Juni 2020 titik akhir data Microsoft Container Registry akan berubah dari *.cdn.mscr.io menjadi *.data.mcr.microsoft.com
Untuk informasi selengkapnya, lihat Konfigurasi aturan firewall klien Microsoft Container Registry

Jika Anda tidak ingin mengonfigurasi firewall Anda untuk mengizinkan akses ke registri kontainer publik, Anda dapat menyimpan gambar di registri kontainer privat Anda, seperti yang dijelaskan dalam Menyimpan kontainer runtime bahasa umum di registri privat Anda.

Azure IoT Identity Service

IoT Identity Service menyediakan provisi dan layanan kriptografi untuk perangkat Azure IoT. Layanan identitas memeriksa apakah versi yang diinstal adalah versi terbaru. Pemeriksaan menggunakan FQDN berikut untuk memverifikasi versi.

FQDN (Fully Qualified Domain Name) Port TCP Keluar Penggunaan
aka.ms 443 URL Vanity yang menyediakan pengalihan ke file versi
raw.githubusercontent.com 443 File versi layanan identitas yang dihosting di GitHub

Konfigurasikan komunikasi melalui proksi

Jika perangkat Anda akan digunakan pada jaringan yang menggunakan server proksi, perangkat ini harus dapat berkomunikasi melalui proksi untuk menjangkau IoT Hub dan registri kontainer. Untuk informasi selengkapnya, lihat Mengkonfigurasi perangkat Azure IoT Edge untuk berkomunikasi melalui server proksi.

Mengatur server DNS dalam pengaturan mesin kontainer

Tentukan server DNS untuk lingkungan Anda di pengaturan mesin kontainer. Pengaturan server DNS berlaku untuk semua modul kontainer yang dimulai oleh mesin.

  1. /etc/docker Di direktori di perangkat Anda, edit daemon.json file. Buat file jika tidak tersedia.

  2. Tambahkan kunci dns dan atur alamat server DNS ke layanan DNS yang dapat diakses publik. Jika perangkat edge Anda tidak dapat mengakses server DNS publik, gunakan alamat server DNS yang dapat diakses di jaringan Anda. Contohnya:

    {
        "dns": ["1.1.1.1"]
    }
    

Manajemen solusi

  • Bermanfaat
    • Siapkan log dan diagnostik
    • Menyiapkan driver pengelogan default
    • Pertimbangkan pengujian dan alur CI/CD

Siapkan log dan diagnostik

Di Linux, daemon IoT Edge menggunakan jurnal sebagai driver pencatatan log default. Gunakan alat journalctl baris perintah untuk mengkueri log daemon.

Dimulai dari versi 1.2, IoT Edge mengandalkan beberapa daemon. Meskipun Anda dapat mengkueri setiap log daemon satu per satu dengan journalctl, gunakan iotedge system perintah untuk mengkueri log gabungan.

  • Perintah iotedge konsolidasi:

    sudo iotedge system logs
    
  • Perintah journalctl yang setara:

    journalctl -u aziot-edge -u aziot-identityd -u aziot-keyd -u aziot-certd -u aziot-tpmd
    

Saat menguji penyebaran IoT Edge, Anda biasanya mengakses perangkat untuk mengambil log dan memecahkan masalah. Dalam skenario penyebaran, Anda mungkin tidak memiliki opsi tersebut. Pertimbangkan bagaimana Anda akan mengumpulkan informasi tentang perangkat Anda dalam produksi. Salah satu opsinya adalah menggunakan modul pengelogan yang mengumpulkan informasi dari modul lain dan mengirimkannya ke cloud. Misalnya, gunakan logspout-loganalytics, atau rancang sendiri.

Menyiapkan driver pengelogan default

Secara default, mesin kontainer Moby tidak mengatur batas ukuran log kontainer. Seiring waktu, ini dapat menyebabkan perangkat dipenuhi log dan kehabisan ruang penyimpanan. Atur mesin kontainer Anda untuk menggunakan driver pengeloganlocal sebagai mekanisme pengelogan Anda. Driver local pengelogan menawarkan batas ukuran log default, melakukan rotasi log secara default, dan menggunakan format file yang lebih efisien, yang membantu mencegah kelelahan ruang disk. Anda juga dapat menggunakan driver pencatatan log yang berbeda dan menetapkan batas ukuran yang berbeda sesuai kebutuhan Anda.

Opsi: Mengonfigurasi driver pengelogan default untuk semua modul kontainer

Atur mesin kontainer Anda untuk menggunakan penggerak log tertentu log driver dengan mengatur nilai ke nama penggerak log dalam berkas daemon.json. Contoh berikut mengatur driver pengelogan default ke local driver log (disarankan).

{
    "log-driver": "local"
}

Anda juga dapat mengonfigurasi log-opts kunci untuk menggunakan nilai yang sesuai dalam daemon.json file. Contoh berikut mengatur driver log ke local dan mengatur max-size opsi dan max-file .

{
    "log-driver": "local",
    "log-opts": {
        "max-size": "10m",
        "max-file": "3"
    }
}

Tambahkan atau tambahkan informasi ini ke file bernama daemon.json dan letakkan di lokasi berikut:

  • /etc/docker/

Mulai ulang mesin kontainer agar perubahan diterapkan.

Opsi: Sesuaikan pengaturan log untuk setiap modul kontainer

Atur opsi ini di createOptions dari setiap modul. Contohnya:

"createOptions": {
    "HostConfig": {
        "LogConfig": {
            "Type": "local",
            "Config": {
                "max-size": "10m",
                "max-file": "3"
            }
        }
    }
}

Opsi tambahan pada sistem Linux

  • Konfigurasikan mesin kontainer untuk mengirim log ke systemdjurnal dengan mengatur journald sebagai driver pengelogan default.

  • Hapus log lama secara berkala dari perangkat Anda dengan memasang alat logrotate. Gunakan spesifikasi file berikut:

    /var/lib/docker/containers/*/*-json.log{
         copytruncate
         daily
         rotate7
         delaycompress
         compress
         notifempty
         missingok
    }
    

Pertimbangkan pengujian dan alur CI/CD

Untuk penyebaran IoT Edge yang paling efisien, integrasikan penyebaran produksi Anda ke dalam pengujian dan alur CI/CD Anda. Azure IoT Edge mendukung beberapa platform CI/CD, termasuk Azure DevOps. Untuk informasi selengkapnya, lihat Integrasi dan penyebaran berkelanjutan ke Azure IoT Edge.

Pertimbangan keamanan

  • Penting
    • Kelola akses ke registri kontainer Anda
    • Membatasi akses kontainer ke sumber daya host

Kelola akses ke registri kontainer Anda

Sebelum Anda menyebarkan modul ke perangkat IoT Edge produksi, pastikan Anda mengontrol akses ke registri kontainer sehingga orang luar tidak dapat mengakses atau mengubah gambar kontainer Anda. Gunakan registri kontainer privat untuk mengelola citra kontainer.

Dalam tutorial dan dokumentasi lainnya, kami memberi tahu Anda untuk menggunakan kredensial registri kontainer yang sama di perangkat IoT Edge Anda seperti pada komputer pengembangan Anda. Instruksi ini membantu Anda menyiapkan lingkungan pengujian dan pengembangan dengan lebih mudah dan bukan untuk penggunaan produksi.

Untuk akses yang lebih aman ke registri Anda, pilih dari beberapa opsi autentikasi. Menggunakan prinsipal layanan Active Directory adalah metode yang populer dan direkomendasikan bagi aplikasi atau layanan untuk mengambil gambar kontainer secara otomatis dan tanpa pengawasan, misalnya pada perangkat IoT Edge. Anda juga dapat menggunakan token dengan cakupan repositori, yang memungkinkan Anda membuat identitas yang berumur panjang atau pendek yang hanya ada di Azure Container Registry tempat Anda membuatnya dan membatasi akses pada tingkat repositori.

Untuk membuat perwakilan layanan, jalankan dua skrip yang dijelaskan dalam membuat perwakilan layanan. Skrip ini melakukan hal berikut:

  • Skrip pertama membuat perwakilan layanan. Ini menunjukkan ID perwakilan layanan dan kata sandi perwakilan layanan. Simpan nilai ini dengan aman dalam rekaman Anda.

  • Skrip kedua membuat penetapan peran untuk diberikan kepada perwakilan layanan. Jalankan selanjutnya jika diperlukan. Gunakan peran pengguna acrPull untuk role parameter . Untuk daftar peran, lihat Peran dan izin Azure Container Registry.

Untuk mengautentikasi menggunakan prinsipal layanan, berikan ID prinsipal layanan dan kredensial kata sandi dari skrip pertama dalam manifest penyebaran.

  • Untuk nama pengguna atau ID klien, tentukan ID perwakilan layanan.

  • Untuk kata sandi atau rahasia klien, tentukan kata sandi perwakilan layanan.

Untuk membuat token yang dicakup repositori, ikuti membuat token yang dicakup repositori.

Untuk mengautentikasi menggunakan token yang dicakup repositori, berikan nama token dan kredensial kata sandi yang Anda dapatkan setelah membuat token cakupan repositori Anda dalam manifes penyebaran.

  • Untuk nama pengguna, tentukan nama pengguna token.

  • Untuk kata sandi, tentukan salah satu kata sandi token.

Catatan

Setelah menerapkan autentikasi keamanan yang ditingkatkan, nonaktifkan pengaturan pengguna Admin sehingga akses nama pengguna dan kata sandi default tidak tersedia. Anda dapat menemukan pengaturan untuk registri kontainer Anda di portal Microsoft Azure, di bawah Pengaturan, pilih Kunci Akses.

Membatasi akses kontainer ke sumber daya host

Untuk menyeimbangkan sumber daya host bersama di seluruh modul, tetapkan batasan penggunaan sumber daya untuk setiap modul. Batas ini memastikan satu modul tidak dapat menggunakan terlalu banyak memori atau CPU dan mencegah proses lain berjalan di perangkat. Secara default, platform IoT Edge tidak membatasi sumber daya untuk modul karena Anda perlu menguji untuk mengetahui berapa banyak sumber daya yang perlu dijalankan modul dengan baik.

Docker memungkinkan Anda membatasi sumber daya seperti memori dan penggunaan CPU. Untuk informasi selengkapnya, lihat Opsi runtime dengan memori, CPU, dan GPU.

Anda dapat menerapkan batasan ini ke modul individual dengan menggunakan opsi buat dalam manifes penyebaran. Untuk informasi selengkapnya, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.

Langkah berikutnya