Bersiaplah untuk menyebarkan solusi IoT Edge Anda dalam produksi
Berlaku untuk: IoT Edge 1.1
Penting
Tanggal akhir dukungan IoT Edge 1.1 adalah 13 Desember 2022. Periksa Siklus Hidup Produk Microsoft untuk mendapatkan informasi tentang bagaimana produk, layanan, teknologi, atau API ini didukung. Untuk informasi selengkapnya tentang memperbarui ke IoT Edge versi terbaru, lihat Memperbarui IoT Edge.
Jika Anda siap untuk mengambil solusi IoT Edge Anda dari pengembangan ke produksi, pastikan solusi terkonfigurasi untuk performa yang sedang berlangsung.
Informasi yang diberikan dalam artikel ini tidak semuanya sama. Untuk membantu Anda memprioritaskan, setiap bagian dimulai dengan daftar yang membagi pekerjaan menjadi dua bagian: penting untuk diselesaikan sebelum melanjutkan ke produksi, bermanfaat, yang mana perlu Anda ketahui.
Konfigurasi perangkat
Perangkat IoT Edge dapat berupa apa saja mulai dari Raspberry Pi hingga laptop hingga komputer virtual yang berjalan di server. Anda mungkin memiliki akses ke perangkat baik secara fisik atau melalui koneksi virtual, atau mungkin diisolasi untuk jangka waktu yang lama. Bagaimanapun, Anda perlu memastikan bahwa ini telah dikonfigurasi agar berfungsi dengan tepat.
Penting
- Menginstal sertifikat produksi
- Memiliki rencana manajemen perangkat
- Gunakan Moby sebagai mesin kontainer
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 dideklarasikan ke runtime bahasa umum IoT Edge dalam file konfigurasi. Untuk skenario pengembangan dan pengujian, runtime bahasa umum IoT Edge membuat sertifikat sementara jika tidak ada sertifikat yang dideklarasikan dalam file konfigurasi. Namun, sertifikat sementara ini akan kedaluwarsa setelah tiga bulan dan tidak aman untuk skenario produksi. Untuk skenario produksi, Anda harus menyediakan sertifikat CA perangkat Anda sendiri, baik dari otoritas sertifikat yang ditandatangani sendiri atau dibeli dari otoritas sertifikat komersial.
Catatan
Saat ini, pembatasan libiothsm mencegah penggunaan sertifikat yang kedaluwarsa pada atau setelah 1 Januari 2038.
Untuk memahami peran sertifikat CA perangkat, lihat Cara Azure IoT Edge menggunakan sertifikat.
Untuk informasi selengkapnya tentang cara memasang sertifikat di perangkat IoT Edge dan mereferensikannya dari file konfigurasi, lihat Kelola sertifikat pada perangkat IoT Edge.
Memiliki rencana manajemen perangkat
Sebelum menyertakan perangkat apa pun dalam produksi, Anda harus tahu cara Anda akan mengelola pembaruan di masa mendatang. Untuk perangkat IoT Edge, daftar komponen yang akan diperbarui meliputi:
- Firmware perangkat
- Pustaka sistem operasi
- Mesin kontainer, seperti Moby
- IoT Edge
- Sertifikat CA
Device Update for IoT Hub (Pratinjau) adalah layanan yang memungkinkan Anda menyebarkan pembaruan over-the-air (OTA) untuk perangkat IoT Edge Anda.
Metode alternatif 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.
Gunakan Moby sebagai mesin kontainer
Mesin kontainer adalah prasyarat untuk perangkat IoT Edge apa pun. Hanya mesin moby yang didukung dalam produksi. Mesin kontainer lainnya, seperti Docker, berfungsi dengan IoT Edge dan tidak masalah untuk menggunakan mesin ini dalam 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 defaultnya adalah AMQP, tetapi Anda mungkin ingin mengubahnya tergantung pada pengaturan jaringan.
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) agar dapat membangun koneksi awal ke IoT Hub.
Setelah perangkat IoT Edge Anda tersambung, pastikan untuk terus mengonfigurasi variabel UpstreamProtocol untuk kedua modul runtime bahasa umum dalam penyebaran di masa mendatang. Contoh proses ini tersedia dalam Konfigurasikan 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 akan 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
- mqttSettings__enabled
- 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).
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.1 yang ada di akhir repositori kontainer. Misalnya, mcr.microsoft.com/azureiotedge-hub:1.1-rc4. 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 akan mengenali tag yang bertahap sebagai versi baru dan akan 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.1 diperbarui setiap kali ada rilis baru agar mengarah ke versi 1.1.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.1.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 . Hal ini mungkin diperlukan jika Anda memiliki batasan firewall yang sangat 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.
Tarik gambar EdgeAgent Docker dari registri Microsoft. Perbarui nomor versi jika diperlukan.
# Pull edgeAgent image docker pull mcr.microsoft.com/azureiotedge-agent:1.1 # Pull edgeHub image docker pull mcr.microsoft.com/azureiotedge-hub:1.1
Cantumkan semua gambar Docker Anda, temukan gambar edgeAgent dan edgeHub , lalu salin ID gambar mereka.
docker images
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.1 # Retag your edgeHub image docker tag <my-image-id> <registry-name/server>/azureiotedge-hub:1.1
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.1 # Push your edgeHub image to your private registry docker push <registry-name/server>/azureiotedge-hub:1.1
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.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
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.1"
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>"
Simpan perubahan Anda dan keluar dari editor teks Anda.
Terapkan perubahan konfigurasi IoT Edge.
sudo iotedge config apply
Runtime IoT Edge Anda dimulai ulang.
Untuk informasi selengkapnya, lihat:
Jaringan
- Bermanfaat
- Tinjau konfigurasi keluar/masuk
- Izinkan koneksi dari perangkat IoT Edge
- Konfigurasikan komunikasi melalui proksi
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
.
Selain itu, 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.
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.
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. Anda dapat menggunakan alat baris perintah journalctl
untuk melakukan kueri log daemon.
Di Windows, daemon IoT Edge menggunakan diagnostik PowerShell. Gunakan Get-IoTEdgeLog
untuk melakukan kueri log dari daemon. Modul IoT Edge menggunakan driver JSON untuk pengelogan, yang merupakan defaultnya.
. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog
Saat menguji penyebaran IoT Edge, Anda biasanya dapat 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. Salah satu contoh modul pencatatan log adalah logspout-loganalytics, atau Anda dapat merancang sendiri.
Menyiapkan driver pengelogan default
Secara default, mesin kontainer Moby tidak mengatur batas ukuran log kontainer. Seiring waktu, hal ini dapat menyebabkan perangkat terisi dengan log dan kehabisan ruang disk. Konfigurasikan mesin kontainer Anda untuk menggunakan driver pengelogan local
sebagai mekanisme pengelogan Anda. Local
driver 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 memilih untuk menggunakan driver pengelogan yang berbeda dan menetapkan batas ukuran yang berbeda berdasarkan kebutuhan Anda.
Opsi: Mengonfigurasi driver pengelogan default untuk semua modul kontainer
Anda dapat mengonfigurasi mesin kontainer Anda untuk menggunakan driver pengelogan log driver
tertentu dengan mengatur nilai ke nama driver log di 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 sertakan) informasi ini ke file bernama daemon.json
dan letakkan di lokasi berikut:
Platform | Lokasi |
---|---|
Linux | /etc/docker/ |
Windows | C:\ProgramData\iotedge-moby\config\ |
Mesin kontainer harus dimulai ulang agar perubahan diterapkan.
Opsi: Sesuaikan pengaturan log untuk setiap modul kontainer
Anda dapat melakukannya di createOptions pada 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
systemd
jurnal dengan mengaturjournald
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 skenario penyebaran IoT Edge yang paling efisien, pertimbangkan untuk mengintegrasikan penyebaran produksi Anda ke dalam pengujian dan pipeline 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 menerapkan modul untuk produksi perangkat IoT Edge, pastikan Anda mengontrol akses ke registri kontainer Anda sehingga orang luar tidak dapat mengakses atau melakukan perubahan pada gambar kontainer Anda. Gunakan registri kontainer privat untuk mengelola citra kontainer.
Dalam tutorial dan dokumentasi lainnya, kami menginstruksikan Anda untuk menggunakan informasi masuk registri kontainer yang sama pada perangkat IoT Edge Anda seperti yang Anda gunakan pada mesin pengembangan Anda. Instruksi ini hanya ditujukan untuk membantu Anda mengatur lingkungan pengujian dan pengembangan dengan lebih mudah, dan tidak boleh diikuti dalam skenario produksi.
Untuk akses yang lebih aman ke registri, Anda memiliki pilihan opsi autentikasi. Autentikasi yang populer dan direkomendasikan adalah menggunakan perwakilan layanan Direktori Aktif yang sangat cocok untuk aplikasi atau layanan untuk menarik gambar kontainer secara otomatis atau tanpa pengawasan (headless), seperti yang dilakukan perangkat IoT Edge. Pilihan lain adalah menggunakan token yang dicakup repositori, yang memungkinkan Anda membuat identitas panjang atau pendek yang hanya ada di Azure Container Registry tempat mereka diciptakan dan akses cakupan ke tingkat repositori.
Untuk membuat perwakilan layanan, jalankan dua skrip seperti yang dijelaskan dalam membuat perwakilan layanan. Skrip ini melakukan tugas berikut:
Skrip pertama membuat perwakilan layanan. Ini akan menghasilkan 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, yang dapat dijalankan selanjutnya jika diperlukan. Sebaiknya terapkan peran pengguna acrPull untuk parameter
role
. Untuk daftar peran, lihat Peran dan izin Azure Container Registry.
Untuk mengautentikasi menggunakan perwakilan layanan, masukkan ID dan kata sandi perwakilan layanan yang Anda peroleh dari skrip pertama. Tentukan informasi masuk ini dalam manifes 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 kata sandi yang Anda peroleh setelah membuat token yang dicakup repositori Anda. Tentukan informasi masuk ini 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/kata sandi default tidak lagi tersedia. Dalam registri kontainer Anda di portal Microsoft Azure, dari menu panel kiri pada Pengaturan, pilih Kunci Akses.
Membatasi akses kontainer ke sumber daya host
Untuk menyeimbangkan sumber daya host bersama di seluruh modul, kami sarankan untuk membatasi konsumsi sumber daya per modul. Batasan ini memastikan bahwa satu modul tidak dapat mengkonsumsi terlalu banyak memori atau penggunaan CPU dan mencegah proses lain berjalan pada perangkat. Platform IoT Edge tidak membatasi sumber daya untuk modul secara default, karena untuk mengetahui berapa banyak sumber daya yang dibutuhkan modul tertentu untuk berjalan secara optimal memerlukan pengujian.
Docker memberikan beberapa batasan yang dapat Anda gunakan untuk membatasi sumber daya seperti memori dan penggunaan CPU. Untuk informasi selengkapnya, lihat Opsi runtime dengan memori, CPU, dan GPU.
Batasan ini dapat diterapkan pada modul individu dengan menggunakan opsi buat dalam manifes penyebaran. Untuk informasi selengkapnya, lihat Cara mengonfigurasi opsi pembuatan kontainer untuk modul IoT Edge.
Langkah berikutnya
- Pelajari selengkapnya tentang penyebaran otomatis IoT Edge.
- Lihat bagaimana IoT Edge mendukung Integrasi berkelanjutan dan penyebaran berkelanjutan.