Sidecar
Sidecar adalah komponen pelengkap dari DataFlux Func.
Karena DataFlux Func biasanya berjalan di dalam container, perintah Shell tidak dapat langsung dieksekusi di host. Sidecar adalah program yang berjalan di host dan, sebagai proxy DataFlux Func, mengeksekusi perintah Shell langsung di host.
Perintah Unduh
| Bash | |
|---|---|
1 | |
0. Catatan Sebelum Membaca
Fitur ini memerlukan hak akses root
Semua perintah shell yang dibahas dalam dokumen ini dapat langsung dijalankan oleh pengguna root; pengguna non-root perlu menambahkan sudo saat menjalankannya.
1. Persyaratan Sistem dan Lingkungan
Host yang dapat menjalankan DataFlux Func biasanya juga dapat menjalankan Sidecar.
1.1 Persyaratan Versi DataFlux Func
Sidecar harus digunakan bersama DataFlux Func 1.3.5 dan versi yang lebih tinggi
2. Instalasi Cepat
Dalam keadaan normal, Sidecar akan diinstal pada host yang sama dengan DataFlux Func. Operasi berikut diasumsikan dilakukan pada host yang telah menginstal DataFlux Func.
Jika Sidecar dan DataFlux Func berjalan di host yang berbeda, konfigurasi terkait perlu diubah
2.1 Instalasi Offline
Sebelum menginstal Sidecar, Anda perlu mengunduh sumber daya yang diperlukan.
Untuk host di lingkungan tanpa jaringan publik, Anda dapat menyalin file ke host melalui perangkat portabel seperti USB flash drive.
File sumber daya yang diunduh sudah disertai skrip instalasi otomatis; cukup jalankan untuk melakukan instalasi (lihat detail di bawah).
2.1.1 Unduh Berkas Sumber Daya dengan Satu Perintah
Untuk sistem seperti Linux, macOS, disarankan menggunakan perintah shell resmi untuk mengunduh paket instalasi.
Jalankan perintah berikut untuk otomatis mengunduh file yang diperlukan Sidecar. Skrip pengunduh akan otomatis memilih versi arsitektur x86_64 atau aarch64 berdasarkan lingkungan saat ini:
| Bash | |
|---|---|
1 | |
Jika perlu mengunduh versi dengan arsitektur tertentu, Anda dapat menggunakan perintah berikut untuk mengunduhnya:
- Prosesor
Intel x86_64
| Bash | |
|---|---|
1 | |
- Prosesor
ARM aarch64(yaitu ARM64v8, seperti Raspberry Pi, dll.)
| Bash | |
|---|---|
1 | |
Setelah perintah selesai dijalankan, semua file yang diperlukan akan disimpan dalam direktori dataflux-func-sidecar yang baru dibuat di direktori saat ini.
- Jika Sidecar perlu diinstal ke server tanpa jaringan publik, Anda dapat mengunduhnya terlebih dahulu di mesin lokal, lalu menyalin seluruh direktori ke mesin target menggunakan perangkat penyimpanan portabel seperti USB flash drive, atau alat seperti
scp. - Jika Sidecar perlu diinstal ke server yang dapat mengakses jaringan publik, cukup unduh langsung di server tersebut.
2.1.2 Unduh Berkas Sumber Daya Secara Manual
Untuk sistem yang tidak mudah menggunakan perintah shell, file sumber daya yang diperlukan dapat diunduh secara manual.
Jika perlu mengunduh secara manual, berikut adalah daftar semua file:
| # | Konten | Nama File | Arsitektur x86_64 | Arsitektur aarch64 |
|---|---|---|---|---|
| 1 | Program biner Sidecar | dataflux-func-sidecar.tar.gz |
Unduh | Unduh |
| 2 | File konfigurasi layanan Sidecar | dataflux-func-sidecar.service |
Unduh | Unduh |
| 3 | Skrip instalasi Sidecar | run-sidecar.sh |
Unduh | Unduh |
| 4 | Informasi versi | version |
Unduh | Unduh |
Setelah semua file diunduh secara manual, cukup letakkan ke dalam direktori dataflux-func-sidecar yang baru dibuat.
Jika ada pembaruan, Anda harus mengunduh ulang semua file. Jangan menebak sendiri file mana yang berubah dan mana yang tidak
Saat mengunduh secara manual, misalnya menggunakan browser, perhatikan agar tidak mengunduh konten lama dari cache!!
2.1.3 Melakukan Instalasi Menggunakan Skrip yang Disertakan
Di direktori dataflux-func-sidecar yang telah diunduh,
jalankan perintah berikut untuk otomatis mengonfigurasi dan memulai seluruh Sidecar:
Sidecar tidak mendukung Mac, salin ke sistem Linux terlebih dahulu lalu jalankan instalasi
| Bash | |
|---|---|
1 | |
Dengan menggunakan skrip instalasi otomatis, Anda dapat menginstal dan menjalankannya dengan cepat dalam hitungan detik. Konten yang dikonfigurasi otomatis adalah sebagai berikut:
- Membuat file yang dapat dieksekusi
/usr/local/bin/dataflux-func-sidecar - Membuat file konfigurasi
/etc/dataflux-func-sidecar - Membuat pengguna
dffsuntuk menjalankan program Sidecar - Membuat file konfigurasi Systemd
/etc/systemd/system/dataflux-func-sidecardan menyetelnya agar mulai otomatis saat boot
Setelah instalasi selesai, informasi instalasi berikut akan ditampilkan:
| Text Only | |
|---|---|
1 2 3 4 5 6 7 8 9 10 | |
Arti dari konten keluaran adalah sebagai berikut:
| Item | Keterangan | Item File Konfigurasi Terkait |
|---|---|---|
| Bind | Alamat listen. Mendukung banyak alamat, dipisahkan dengan koma bahasa Inggris | BIND |
| Secret Key | Kunci rahasia. Digunakan untuk memverifikasi permintaan | SECRET_KEY |
Dalam hal instalasi default, Bind akan memiliki 2 alamat:
127.0.0.1:8099: jaringan lokal172.17.0.1:8099:docker0, digunakan untuk berkomunikasi dengan DataFlux Func
2.2. Verifikasi Instalasi
Setelah instalasi default Sidecar selesai, Anda dapat memverifikasi instalasi dengan perintah berikut:
| Bash | |
|---|---|
1 | |
Jika informasi berikut dikembalikan, maka Sidecar berjalan normal:
| Text Only | |
|---|---|
1 2 3 | |
2.3. Opsi Instalasi
Skrip instalasi otomatis mendukung beberapa opsi instalasi untuk menyesuaikan dengan kebutuhan instalasi yang berbeda.
Saat instalasi, cukup tambahkan --{parameter}[ konfigurasi parameter (jika ada)] setelah perintah instalasi otomatis untuk menentukan opsi instalasi
Misalnya, untuk menentukan alamat listen:
| Bash | |
|---|---|
1 | |
2.3.1 Opsi Instalasi yang Tersedia
Detail parameter selengkapnya lihat di bawah ini.
--bind: Menentukan alamat listen
Secara default, Sidecar mendengarkan di 127.0.0.1:8099,172.17.0.1:8099. Jika port sudah digunakan, Anda dapat memilih alamat listen yang lain.
--secret-key: Menentukan Secret Key
Pada instalasi default, DataFlux Func Sidecar akan otomatis menghasilkan Secret Key acak. Anda dapat menggunakan parameter ini untuk menentukan Secret Key secara manual.
3. Memanggil Sidecar di DataFlux Func
Di DataFlux Func tersedia Konektor DataFlux Func Sidecar yang dapat digunakan untuk mengoperasikan Sidecar.
3.1. Membuat Konektor Sidecar
Buka "Konektor / Tambah Konektor / DataFlux Func Sidecar (HTTP)", isi Secret Key dengan benar, lalu buat.
Jika Anda menentukan alamat listen yang berbeda saat menginstal Sidecar (mengubah parameter Bind), maka saat membuat Konektor juga perlu disesuaikan.
3.2. Menulis Kode
Berikut adalah contoh kode:
| Python | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
3.3. Mengonfigurasi Fungsi
Pada contoh kode di atas:
Fungsi eksekusi utama adalah "Test Sidecar", yang dapat dikonfigurasi sebagai "API Fungsi" atau "Tugas Terjadwal" untuk dieksekusi.
"Test Sidecar callback" adalah fungsi yang menerima callback setelah eksekusi, dan perlu dikonfigurasi sebagai "API Fungsi"
Dalam contoh kode, bagian ID alamat API Fungsi pada parameter callback_url adalah sidecar-callback, jadi saat mengonfigurasi API Fungsi untuk fungsi callback, tentukan juga ID yang sama untuk memastikan alamat URL konsisten
Untuk kasus di mana Sidecar dan DataFlux Func diinstal pada host yang sama, keduanya dapat saling mengakses melalui docker0, yaitu alamat IP 172.17.0.1
Untuk detail tentang "Objek Operasi Konektor Sidecar", lihat di bawah ini.
4. API Objek Operasi Konektor Sidecar
Dengan menggunakan objek operasi Konektor Sidecar, pengguna dapat memanggil Sidecar untuk mengeksekusi perintah Shell.
Parameter DFF.CONN(...) adalah sebagai berikut:
| Parameter | Tipe | Wajib / Nilai Default | Deskripsi |
|---|---|---|---|
data_source_id |
str | Wajib | ID Konektor |
SidecarHelper.shell(...)
Memanggil Sidecar untuk mengeksekusi perintah Shell, parameter sebagai berikut:
| Parameter | Tipe | Wajib / Nilai Default | Deskripsi |
|---|---|---|---|
cmd |
str | Wajib | Perintah Shell yang akan dieksekusi Contoh: "ls -l" |
wait |
bool | True |
Apakah menunggu hingga eksekusi selesai Jika diatur ke False, fungsi ini akan segera kembali dan tidak akan mengembalikan output terminal |
workdir |
str | None |
Direktori kerja untuk eksekusi perintah Shell Contoh: "/home/dev" |
envs |
dict | None |
Variabel lingkungan, kunci dan nilai semuanya berupa string Contoh: {"MY_NAME": "Tom"} |
callback_url |
str | None |
Alamat callback. Setelah perintah dieksekusi, stdout dan stderr akan dikirim ke URL yang ditentukan menggunakan metode POSTBiasanya digunakan bersama parameter wait=False untuk mewujudkan callback asinkron |
timeout |
int | 3 |
Waktu tunggu permintaan Catatan: parameter ini bukan waktu tunggu perintah Shell, melainkan waktu tunggu permintaan Func ke Sidecar Artinya, permintaan Func ke Sidecar mungkin mengalami timeout, tetapi perintah Shell yang dieksekusi tidak akan berhenti karenanya |
Callback Setelah Eksekusi
Setelah memanggil SidecarHelper.shell(...) dan menentukan parameter callback_url, Sidecar akan mengirimkan output standar stdout dan error standar stderr ke alamat tersebut menggunakan metode POST setelah selesai mengeksekusi perintah Shell.
Struktur spesifiknya adalah sebagai berikut:
| Text Only | |
|---|---|
1 2 3 4 5 6 7 8 9 | |
Struktur ini cocok dengan metode POST standar dari "API Fungsi" DataFlux Func, sehingga Anda dapat langsung menggunakan "API Fungsi" untuk menerima callback setelah eksekusi
5. Perawatan Rutin
Secara default, lokasi pemasangan program yang dapat dieksekusi adalah /usr/local/bin/dataflux-func-sidecar
5.1 Memutakhirkan Sistem
Cukup jalankan kembali proses instalasi; Skrip instalasi otomatis akan mengganti program yang dapat dieksekusi dan me-restart layanan.
Selain itu, isi file konfigurasi sebelumnya akan dipertahankan.
5.2 Memulai/Menutup/Merestart Layanan
Layanan Sidecar dikelola menggunakan systemd, cukup gunakan systemctl untuk mengoperasikannya:
| Bash | |
|---|---|
1 2 3 | |
5.3 Melihat Konfigurasi
File konfigurasi terletak di /etc/dataflux-func-sidecar.
6. Penghapusan Instalasi
Jalankan perintah-perintah berikut secara berurutan:
| Bash | |
|---|---|
1 2 3 4 5 6 | |
6.1 Verifikasi
| Bash | |
|---|---|
1 2 3 4 | |
/etc/dataflux-func-sidecarberisiBINDdanSECRET_KEY. Jika Anda ingin mempertahankan konfigurasi untuk instalasi ulang, cadangkan file tersebut sebelum penghapusan instalasi.Jika pengguna
dffsmasih digunakan oleh program lain, jangan jalankansudo userdel dffs.
7. Catatan Keamanan
Karena pola penggunaan Sidecar pada dasarnya adalah mengirimkan kode yang dapat dieksekusi secara arbitrer ke host tempatnya berjalan, hal ini bersifat berbahaya.
Oleh karena itu, Sidecar memiliki batasan-batasan berikut dalam implementasi dan penerapannya:
- Layanan Sidecar berjalan sebagai pengguna
dffs(yaitu singkatan dari DataFlux Func Sidecar) - Sidecar harus dikonfigurasi dengan SecretKey agar dapat memanggil dan mengeksekusi perintah Shell secara normal.
SidecarHelper.shell(...)secara internal mengimplementasikan tanda tangan HmacSha1 untuk mencegah manipulasi dan serangan replay.
Karena layanan Sidecar berjalan sebagai pengguna dffs, layanan ini tidak dapat menjalankan perintah yang memerlukan hak akses root atau mengakses file milik pengguna lain. Jika diperlukan, pengguna dffs dapat ditambahkan ke dalam grup pengguna, atau izin terkait file dapat diubah.