Bu kılavuzda, balenaCloud'u kullanmaya başlamanıza yardımcı olacağız:

  • RevPi Core 3 cihazınızı kurup balenaCloud panosunda çevrimiçi hale getirin.

  • Cihaza bir Python hello-world projesi dağıtılıyor.

  • Örnek projenin geliştirilmesi: Değişikliklerin yapılması ve bunların cihazda gerçek zamanlı olarak test edilmesi.

Balena'ya başlangıç ​​rehberini tamamladığınızda, balenaCloud kullanarak uygulamanızı geliştirmeye devam etmek ve cihaz filolarını üretime dağıtma yolunda ilerlemek için gereken temel bilgilere sahip olacaksınız. Belirli terimlerin tanımlarını arıyorsanız, sözlüğe bakın.

Ön koşullar #

Donanım #

✓ RevPi Core 3
✓ Cihazların eMMC'sini flaş etmek için mikro-USB kablosu
✓ 10,7 ile 28,2 V arasında akım taşıyan güç kablosu
✓ İsteğe bağlı: ethernet kablosu
balena hesabı.

Yazılım #

✓ Node-RED
Node-RED'i yüklemek için RevPi'deki Cockpit uygulamasını kullanabilirsiniz.

✓ Web tarayıcısı (Node-RED arayüzüne ve PiCtory'ye erişim için)

Adım 1: Bir Filo Oluşturma #

Filo, aynı mimariyi paylaşan ve aynı kodu çalıştıran bir cihaz grubudur. Cihazlar filolara eklenir ve istediğiniz zaman filolar arasında taşınabilir.

balenaCloud panonuza giriş yapın ve Create fleet'i seçin.

create-first-fleet.

▷ Bir filo adı girin.

Revolution Pi Core 3 aygıt türünü seçin.

Starter filo türünü seçin.

Create new fleet seçin:

create-fleet.

❯ Daha sonra yeni oluşturulan filonun özetine yönlendirileceksiniz ve burada ilk RevPi Core 3'ünüzü ekleyebilirsiniz.

Adım 2: Bir Aygıt Ekleme ve İşletim Sistemini İndirme #

fleet-view

balenaCloud, cihazın otomatik olarak oluşturduğunuz yeni filoya katılmasını ve bu filoyu sağlamasını sağlayan RevPi Core 3 için yapılandırılmış özel bir balenaOS görüntüsü oluşturur.

▷ Filo özetinde Add device seçin.

Cihaz türünüz, filoyu oluştururken zaten seçtiğiniz için burada önceden seçilecektir. Aynı mimariye sahip diğer cihaz türleri de filoya katılmak üzere seçilebilir.

add-device

balenaOS işletim sistemi türünü seçin.

❯ En son sürümün önceden seçili olduğu mevcut balenaOS sürümlerinin bir listesini göreceksiniz.

▷ İşletim sisteminin Development version seçin.

Üretim işletim sistemi, kullanacağımız geliştirme iş akışını kolaylaştırmaz. Geliştirme ve üretim görüntüleri arasındaki farklar hakkında daha fazla bilgi edinin.

network

▷ Kullanacağınız ağ bağlantısı türünü seçin: Ethernet Only veya Wifi + Ethernet.

Cihazın balenaCloud'a bağlanabilmesi için bir ağ bağlantısı gereklidir. Wifi + Ethernet'i seçmek, görüntüye eklenen bir Wifi SSID ve Wifi parolası girmenize olanak tanır.

download_image

▷ Son olarak, Download balenaOS seçin.

❯ İndirme tamamlandığında, balena-First-Fleet-revpi-core-3-2.80.3+rev1-v12.7.0.img.zip adında sıkıştırılmış bir görüntü dosyanız olmalı.

Adım 3: Cihazın Sağlanması #

Daha sonra indirdiğiniz görseli cihazınıza yükleyin.

▷ RevPi Core 3 kartına güç verilmediği zaman, sisteminizi bir mikro-USB kablosuyla kartın USB portuna bağlayın.

▷ RevPi Core 3’ü açın.

▷ İndirdiğiniz balenaOS dosyasını RevPi Core 3'e yazın.
Etcher'ı kullanmanızı öneririz.

▷ BalenaOS'un yazılmasının tamamlanmasını bekleyin.

▷ RevPi Core 3'ü kapatın ve mikro-USB kablosunu çıkarın.

▷ Cihazı başlatmak için RevPi Core 3'ün güç bağlantısını kesin ve yeniden bağlayın.

❯ Tamamlandığında, bir veya iki dakika sonra cihaz balenaCloud panonuzda görünmeli ve artık biraz kod dağıtmaya hazır olmalısınız.

Eğer cihazınızın kontrol panelinde görünmesini sağlayamıyorsanız, RevPi Core 3 için sorun giderme kılavuzuna göz atın veya destek kanallarımızı deneyin.

Adım 4: balena CLI'yi yükleme #

Balena CLI kod sağlamak için kullanılır. Balena CLI zaten yüklüyse bir sonraki bölümü atlayın.

▷ İndirdiğiniz dosyayı açarak yükleyiciyi çalıştırın ve yükleyicinin talimatlarını izleyin.

▷ Balena CLI komutlarını çalıştırmak için Windows Başlat Menüsünü açıp ve bir komut istemi çalıştırın: PowerShell yazın ve ardından Windows PowerShell'i seçin.

▷ Balena CLI kurulduktan sonra terminalde balena login komutunu kullanarak balena hesabınıza giriş yapın:

$ balena login
 _            _
| |__   __ _ | |  ____  _ __    __ _
| '_ \ / _` || | / __ \| '_ \  / _` |
| |_) | (_) || ||  ___/| | | || (_) |
|_.__/ \__,_||_| \____/|_| |_| \__,_|


Logging in to cloud.com
? How would you like to login? (Use arrow keys)
❯ Web authorization (recommended)
  Credentials
  Authentication token
  I don't have a balena account!

Bir kimlik doğrulama yöntemi seçmeniz istenecektir.

Web authorization seçin.

❯ Bu, balenaCloud hesabınıza giriş yapmanızı sağlayan bir web tarayıcısı penceresi açar.

Authorize'i seçin ve oturum açma başarılı mesajı göründükten sonra terminale geri dönün.

web_authorization

Adım 5: Bir Sürüm Oluşturma #

▷ Giriş yaptıktan sonra balena fleets komutunu çalıştırarak balena CLI'yi test edin.

Bu, önceki adımda oluşturduğunuz filoyla ilgili bilgileri döndürmelidir.

FLEET NAME'i not edin, çünkü bir sonraki adımda kodu o filodaki cihazlarınıza göndermek için buna ihtiyacınız olacak.

$ balena fleets
ID    FLEET NAME   DEVICE TYPE          ONLINE DEVICES DEVICE COUNT
98264 First-Fleet  Revolution Pi Core 3   0              0

Denemek için güzel bir proje balena-python-hello-world projesidir. Bu, 80 numaralı portta statik bir sayfa sunan bir Python web sunucusudur.

▷ Projeyi GitHub'dan sıkıştırılmış dosya olarak indirin, sıkıştırılmış dosyayı açın ve çıkarılan proje dizininin kökünde bir terminal açın.

▷ Bir sürüm oluşturmak için First-Fleet komutunu filonuzun adıyla değiştirerek balena push First-Fleet komutunu kullanın.
Çıkarılan proje dizininin kökünde çalıştığınızdan emin olun.

Komut

$ balena push First-Fleet
Kodu balena oluşturucularına gönderir, burada derlenir, oluşturulur, bir sürüm haline getirilir ve filodaki her cihaza uygulanır.

Dost canlısı tek boynuzlu at maskotumuz terminalinizde göründüğünde kodunuzun başarıyla derlendiğini ve oluşturulduğunu anlayacaksınız:

[hello-world]  Successfully built 51bd190f7530
[Info]       Generating image deltas from release 8acfdc579f7cb0fe424d1b800588b6f5 (id: 2186018)
[Success]    Successfully generated image deltas
[Info]       Uploading images
[Success]    Successfully uploaded images
[Info]       Built on builder05
[Success]    Release successfully created!
[Info]       Release: c0c593803588a304c173124827d96b99 (id: 2186339)
[Info]       ┌────────────────────┬────────────┬────────────┐
[Info]       │ Service            │ Image Size │ Build Time │
[Info]       ├────────────────────┼────────────┼────────────┤
[Info]       │ hello-world        │ 190.04 MB  │ 50 seconds │
[Info]       └────────────────────┴────────────┴────────────┘
[Info]       Build finished in 1 minutes, 4 seconds
                            \
                             \
                              \\
                               \\
                                >\/7
                            _.-(6'  \
                           (=___._/` \
                                )  \ |
                               /   / |
                              /    > /
                             j    < _\
                         _.-' :      `.
                         \ r=._\        `.
                        <`\\_  \         .`-.
                         \ r-7  `-. ._  ' .  `\
                          \`,      `-.`7  7)   )
                           \/         \|  \'  / `-._
                                      ||    .'
                                       \\  (
                                        >\  >
                                    ,.-' >.'
                                   <.'_.''
                                     <'

Sürüm daha sonra filodaki tüm cihazlar tarafından indirilecek ve başlatılacaktır. Cihaz kodu güncellemelerinin ilerlemesini cihaz panosunda görebilirsiniz:

download-progress

İndirme işleminden sonra artık cihazınızda çalışan bir Python web sunucusuna sahip olmalı ve kontrol panelinizde bazı günlükleri görmelisiniz.

▷ Cihazınıza genel bir URL vermek için cihaz panosundaki Public Device URL geçişini seçin.

Genel cihaz URL'si, sunucu 80 numaralı portta çalıştığı sürece, yapılandırmaya gerek kalmadan cihazdan dünyaya içerik sunmanıza olanak tanır.

enable-public-url-device

▷ Ek kaynakların yer aldığı karşılama sayfasını görüntülemek için URL'yi takip edin.

Alternatif olarak, tarayıcınızı cihazınızın yerel IP adresine yönlendirerek cihazınızda çalışan sunucuya erişebilirsiniz. Cihazın IP adresini cihaz kontrol paneli sayfasında bulabilirsiniz. Görmeniz gereken şey budur.

success

Adım 6: Projenizi Geliştirme #

Şimdi, bu projede bazı değişiklikler yapıp bunları doğrudan cihazda test edelim. Proje, yukarıdakiyle aynı yöntem kullanılarak düzenlenip tekrar yüklenebilir, ancak işletim sisteminin geliştirme sürümünü kullandığımız için Yerel modu etkinleştirip doğrudan cihaza yükleyerek daha hızlı bir geliştirme döngüsü sağlayabiliriz.

▷ Cihazınızda gösterge paneli üzerinden yerel modu aktifleştirin.

enable-local-mode

Etkinleştirildikten sonra balena push'ı tekrar kullanabilirsiniz, ancak bu sefer doğrudan gösterge paneli üzerinden elde edilen cihazın yerel IP adresine push yapacağız.

local-ip-address

Yerel IP adresi

$ balena push 10.19.0.153

Daha öncekiyle aynı derleme süreci gerçekleştirilir, ancak bu kez balena derleyicileri kullanmak yerine derleme işlemi cihazın kendisinde yerel olarak gerçekleşir.

[Info]    Streaming device logs...
[Live]    Watching for file changes...
[Live]    Waiting for device state to settle...
[Logs]    [8/26/2021, 11:58:18 AM] Creating network 'default'
[Logs]    [8/26/2021, 11:58:19 AM] Installing service 'hello-world sha256:...'
[Logs]    [8/26/2021, 11:58:20 AM] Installed service 'hello-world sha256:...'
[Logs]    [8/26/2021, 11:58:20 AM] Starting service 'hello-world sha256:...'
[Logs]    [8/26/2021, 11:58:23 AM] Started service 'hello-world sha256:...'
[Logs]    [8/26/2021, 11:58:24 AM] [hello-world] Starting server on port 80
[Live]    Device state settled

Balena CLI artık projedeki tüm dosyalardaki değişiklikleri izleyecek ve tespit edildiğinde değişiklikleri otomatik olarak cihaza gönderecek.

balena Hoş Geldiniz Sayfasının Başlığını Değiştirme

▷ Projenin static dizininde bulunan index.html dosyasına gidin.

▷ Dosyayı açın ve başlığı Welcome to balena!'den Hello balena! 'ya değiştirin.

▷ Dosyayı kaydedin.
Değişiklikleri kaydettikten sonra balena CLI'nin yalnızca değiştirilen Dockerfile kısımlarını otomatik olarak yeniden oluşturmaya başladığını görebilirsiniz.

[Live]    Detected changes for container hello-world, updating...
...
[Live]    [hello-world] Restarting service...
[Logs]    [8/26/2021, 11:59:01 AM, 2:42:32 AM] Service exited 'hello-world sha256:...'
[Logs]    [8/26/2021, 11:59:04 AM, 2:42:35 AM] Restarting service 'hello-world sha256:...'
[Logs]    [8/26/2021, 11:59:05 AM, 2:42:36 AM] [hello-world] Starting server on port 80

❯ Yeniden oluşturma tamamlandığında, değişikliklerinizi görmek için genel cihaz URL'sine tekrar göz atın. Karşılama sayfası yeni başlıkla güncellenmiş olmalıdır.

success-change

Sonraki Adımlar #

▷ Değişikliklerinizi tamamladıktan sonra yerel modu devre dışı bırakın; cihaz filonuzdaki en son sürümü çalıştırmaya geri dönecektir.

▷ Filonuzu az önce üzerinde çalıştığınız en son değişikliklerle güncellemek için balena push <fleet name> komutunu kullanarak bu değişiklikleri içeren yeni bir sürüm oluşturun.

Cihaz(lar)ın oluşturulması tamamlandığında, cihaz(lar) daha önce olduğu gibi güncellenecektir.

Ayrıca bakınız:

  • Hızlı geliştirme için yerel olarak kod oluşturmanıza ve cihazınızla senkronize etmenize olanak tanıyan yerel mod hakkında daha fazla bilgi edinin.

  • Filo yönetimine daha modüler bir yaklaşım sağlamak için birden fazla konteyner içeren bir uygulama geliştirin.

  • Yapılandırma, Ortam ve hizmet değişkenleri kullanarak cihaz filonuzu yönetin.

  • balena CLI ve sunduğu işlevsellik hakkında daha fazla bilgi edinin.

  • Bazı klasik balena projelerine ilişkin adım adım eğitimleri bulmak için blogumuzu ziyaret edin.

  • Yapacağınız veya halihazırda yaptığınız şeyleri yayınlamak için balenaHub adresine gidin.

  • Kendinizi sıkışmış veya kafanız karışık hissediyorsanız, yardım sadece bir tık uzağınızda.