Container Series: BOS, tool yang membantu kamu menjalankan Microservice berbasis .NET ke k8s dengan mudah

Met ganti tahun kawan, eh entar malem ya ? Nah karena mager + gabut banget, kita coba belajar bikin tool yang mempermudah dev .NET untuk menjalankan aplikasi berbasis microservice ke kubernetes (k8s).

Namanya BOS yang berarti singkatan dari Banyak Orang Suka, haha maksa parah.

Nah ini tidak dimulai dari 0, tapi project ini adalah re-write dari project Tye dari Microsoft. (Introducing Project Tye – .NET Blog (microsoft.com)) Nah kenapa re-write ?

  1. Project Tye diarsipkan dan tidak dikembangkan lagi, karena sudah ada penerusnya yaitu project aspire ( .NET Aspire overview – .NET Aspire | Microsoft Learn )
  2. Kita mau lanjutkan dengan menambah fitur-fitur lagi di project ini
  3. Naikin versi .Net 8 agar kompatibel ke project-project baru yang dibuat dengan .NET terbaru
  4. Belajar bikin tool yang bagus, nah kalau lihat gimana China bisa berkembang pesat, salah satunya metode: ATM, amati tiru modifikasi. Tapi kita jangan tiru total, tapi belajar gimana bikinnya, gimana cara kerjanya, dan gimana improve lebih baik lagi.

Oke, btw tool ini untuk apa sih ?

  1. Membantu menjalankan aplikasi microservice berbasis .NET ( Microservices – Wikipedia ) di dalam kontainer (docker) dan orkestrasi kubernetes
  2. Menjalankan solusi multi-project tanpa container di lingkungan pengembangan untuk ujicoba
  3. Pembuatan file manifest yang diperlukan untuk deployment ke docker dan kubernetes secara otomatis
  4. Dukungan konfigurasi yang memudahkan komunikasi antar service/web

Nah gimana cara pakainya ?

  1. Silakan download .NET versi terbaru dan visual studio (VSCode atau VS Community)
  2. Install docker desktop dan aktifkan kubernetesnya, download dari Docker Desktop: The #1 Containerization Tool for Developers | Docker
  3. Clone projectnya dari Gravicode/Bos: Bos is a modified Tye project, the main purpose is to study how it works.. This tool is intented to help dotnet dev to run their app in container environment (docker & k8s) with ease (github.com)
  4. Build solutionnya, klik kanan lalu build project “Bos” dari visual studio
  5. Buka command line set path ke tool yang sudah dibuild sebelumnya dengan mengetikan ini di command prompt: “set PATH=%PATH%;[ganti dengan path ke root folder project Bos-nya]\src\bos\bin\Debug\net8.0” ketik tanpa kutip dan tanda kurung
  6. Lalu coba buka aplikasi sample di folder “Samples\frontend-backend” melalui command prompt
  7. lalu ketik “bos init” untuk membuat konfigurasi awal, jika sudah ada tidak perlu
  8. Lalu ketik “Bos Run” untuk running aplikasi tanpa kontainer
  9. Buka dashboardnya di localhost:8080
  10. Ada metric-nya
  11. Ada log dari masing-masing app nya
  12. Klik url dengan port untuk buka Running app
  13. Bikin container registry di lokal dengan ketik “docker run -d -p 5010:5000 –restart always –name registry registry:2”
  14. lalu ketik “bos deploy –interactive” untuk deploy ke kubernetes lokal
  15. isi container registry dengan “localhost:5010” sesuai alamat port container registry di lokal
  16. tunggu sampe proses deploy selesai, tadaaa
  17. cek dengan perintah “kubectl get pods” lihat container app kamu sudah run di container
  18. Coba akses web tersebut menggunakan command “kubectl port-forward [pod_name] 5000:80” pod name diganti nama pod front-end yang muncul dari perintah di no. 12
  19. silakan buka di browser localhost:5000 nah itu aplikasi yang sudah jalan di container
  20. nah untuk menghapus deployment tinggal ketik perintah “bos undeploy”
  21. Cek kembali dengan perintah “kubectl get pods” untuk mastiin semua app sudah dihapus dari container

Semoga tool ini bisa dikembangkan lebih lanjut, untuk kebutuhan yang lebih kompleks tentu .NET Aspire dari Microsoft akan jauh lebih mumpuni. Tapi kembali lagi tujuan dari project ini adalah ATM. Belajar by Ngoprek.

Semoga bermanfaat,

Salam Produktif ;D

Loading

You May Also Like