Sidecar
Sidecar 是 DataFlux Func 的一個附帶組件。
由於通常 DataFlux Func 運行在容器內,無法直接在宿主機上執行 Shell 命令。而 Sidecar 的是一個運行於宿主機上的程序,作為 DataFlux Func 的代理直接在宿主機上執行 Shell 命令。
下載命令
Bash | |
---|---|
1 |
|
0. 閲讀前提示
本文所有涉及到的 shell 命令,在 root 用户下可直接運行,非 root 用户下需要添加 sudo 運行
1. 系統及環境要求
可以運行 DataFlux Func 的主機正常都能運行 Sidecar。
1.1 DataFlux Func 版本要求
Sidecar 必須與 DataFlux Func 1.3.5
及更高版本配合才能使用
2. 快速安裝
正常情況下,Sidecar 會和 DataFlux Func 安裝在同一台主機上。以下操作假設在已經安裝好 DataFlux Func 的主機上進行。
如果 Sidecar 和 DataFlux Func 運行在不同主機上,需要修改相應配置
2.1 離線安裝
安裝 Sidecar 之前,需要下載所需資源。
對於無公網環境的主機,可以通過 U 盤等移動設備拷貝至主機上。
下載的資源文件附帶了自動安裝腳本,執行即可進行安裝(詳情見下文)
2.1.1 一鍵命令下載資源文件
對於 Linux、macOS 等系統,推薦使用官方提供的 shell 命令下載安裝包。
運行以下命令,即可自動下載 Sidecar 的所需文件,下載腳本會自動根據當前環境選擇下載 x86_64
或 aarch64
架構版本:
Bash | |
---|---|
1 |
|
如需要下載指定架構的版本,可以使用以下命令下載:
Intel x86_64
處理器
Bash | |
---|---|
1 |
|
ARM aarch64
處理器(即 ARM64v8,如:樹莓派等)
Bash | |
---|---|
1 |
|
命令執行完成後,所有所需文件都保存在當前目錄下新創建的 dataflux-func-sidecar
目錄下。
- 對於需要將 Sidecar 安裝到無公網的服務器時,可以先在本機下載,之後將整個目錄通過 U 盤等移動存儲設備,或
scp
工具等複製到目標機器中 - 對於需要將 Sidecar 安裝到可以訪問公網的服務器,直接在服務器上下載即可
2.1.2 手工下載資源文件
對於不便使用 shell 命令的系統,可手工下載所需資源文件。
如需要手工下載,以下是所有的文件列表:
# | 內容 | 文件名 | x86_64 架構 | aarch64 架構 |
---|---|---|---|---|
1 | Sidecar 二進制程序 | dataflux-func-sidecar.tar.gz |
下載 | 下載 |
2 | Sidecar 服務配置文件 | dataflux-func-sidecar.service |
下載 | 下載 |
3 | Sidecar 安裝腳本 | run-sidecar.sh |
下載 | 下載 |
4 | 版本信息 | version |
下載 | 下載 |
手工下載所有文件後,放入新建的 dataflux-func-sidecar
目錄下即可。
如有更新,【重新下載所有文件】。請勿自行猜測哪些文件有變動,哪些沒有變動
手工下載時,如使用瀏覽器等下載時,請注意不要下載到緩存的舊內容!!
2.1.3 使用附帶的腳本執行安裝
在已經下載的 dataflux-func-sidecar
目錄下,
運行以下命令,即可自動配置並最終啓動整個 Sidecar:
Sidecar 不支持 Mac,請拷貝到 Linux 系統下再運行安裝
Bash | |
---|---|
1 |
|
使用自動安裝腳本可以實現幾秒內快速安裝運行,自動配置的內容如下:
- 創建
/usr/local/bin/dataflux-func-sidecar
可執行文件 - 創建
/etc/dataflux-func-sidecar
配置文件 - 創建
dffs
用户用於運行 Sidecar 程序 - 創建
/etc/systemd/system/dataflux-func-sidecar
Systemd 配置文件,並設置為開機啓動
安裝完畢後,會展示如下安裝信息:
Text Only | |
---|---|
1 2 3 4 5 6 7 8 9 10 |
|
輸出內容意義如下:
項目 | 説明 | 對應配置文件項目 |
---|---|---|
Bind | 監聽地址。支持多個,英文逗號分割 | BIND |
Secret Key | 密鑰。用於驗證請求 | SECRET_KEY |
其中,默認安裝情況下,Bind 會有 2 個地址:
127.0.0.1:8099
:本地網絡172.17.0.1:8099
:docker0
,用於和 DataFlux Func 通訊
2.2. 驗證安裝
Sidecar 默認安裝完成後,可以使用以下命令驗證安裝:
Bash | |
---|---|
1 |
|
如返回如下信息,則表示 Sidecar 正常運行:
Text Only | |
---|---|
1 2 3 |
|
2.3. 安裝選項
自動安裝腳本支持一些安裝選項,用於適應不同的安裝需求
安裝時,只需要在自動安裝命令後添加 --{參數}[ 參數配置(如有)]
,即可指定安裝選項
如,指定監聽地址:
Bash | |
---|---|
1 |
|
2.3.1 可用安裝選項
具體參數詳情見下文
--bind
:指定監聽地址
Sidecar 默認監聽 127.0.0.1:8099,172.17.0.1:8099
。如端口被佔用,可以選擇其他監聽地址。
--secret-key
:指定密鑰
DataFlux Func Sidecar 默認安裝時會自動生成隨機密鑰,可使用本參數手工指定密鑰。
3. 在 DataFlux Func 中調用 Sidecar
在 DataFlux Func 中提供了 DataFlux Func Sidecar 的連接器,可以用於操作 Sidecar。
3.1. 創建 Sidecar 連接器
前往「連接器 / 添加連接器 / DataFlux Func Sidecar(HTTP)」,正確填寫 Secret Key
創建即可。
如果安裝 Sidecar 時指定了不同的監聽地址(修改了 Bind 參數),那麼創建連接器時也需要做相應的修改。
3.2. 編寫代碼
以下為示例代碼:
Python | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
3.3. 配置函數
上述代碼示例中:
「Test Sidecar」為主要執行函數,可以配置為「函數 API」或者「定時任務」執行。
「Test Sidecar callback」為接收執行後回調的函數,需要配置為「函數 API」
示例代碼中,callback_url 參數中的函數 API 地址 ID 部分為 sidecar-callback
,那麼為回調函數配置「函數 API」時也要指定相同的 ID,保證 URL 地址一致
對於 Sidecar 和 DataFlux Func 安裝在同一台主機的情況,雙方可以通過 docker0 相互訪問,即 IP 地址為 172.17.0.1
有關「Sidecar 連接器操作對象」詳情見下文
4. Sidecar 連接器操作對象 API
使用 Sidecar 連接器操作對象允許用户調用 Sidecar 執行 Shell 命令。
DFF.CONN(...)
參數如下:
參數 | 類型 | 必須 / 默認值 | 説明 |
---|---|---|---|
data_source_id |
str | 必須 | 連接器 ID |
SidecarHelper.shell(...)
執行調用 Sidecar 執行 Shell 命令,參數如下:
參數 | 類型 | 必須 / 默認值 | 説明 |
---|---|---|---|
cmd |
str | 必須 | 需要執行的 Shell 命令 如: "ls -l" |
wait |
bool | True |
是否等待執行完成 設置為 False 時,本函數會立刻返回,並且不會返回終端輸出 |
workdir |
str | None |
Shell 命令執行的工作目錄 如: "/home/dev" |
envs |
dict | None |
環境變量,鍵和值都為字符串 如: {"MY_NAME": "Tom"} |
callback_url |
str | None |
回調地址,命令執行後,將 stdout 和 stderr 使用 POST 方式發送至指定 URL一般和 wait=False 參數一起使用,實現異步回調 |
timeout |
int | 3 |
請求超時時間 注意:本參數並不是 Shell 命令的超時時間,而是 Func 請求 Sidecar 的超時時間 即 Func 請求 Sidecar 可能會超時,但所執行的 Shell 命令並不會因此停止 |
執行後回調
調用 SidecarHelper.shell(...)
並指定 callback_url
參數後,Sidecar 會在執行完 Shell 命令後將標準輸出 stdout
和標準錯誤 stderr
以 POST 方式發送至此地址。
具體結構如下:
Text Only | |
---|---|
1 2 3 4 5 6 7 8 9 |
|
此結構與 DataFlux Func 的「函數 API」標準 POST 方式 匹配,可直接使用「函數 API」接收執行後的回調
5. 日常維護
默認情況下,可執行程序安裝位置為 /usr/local/bin/dataflux-func-sidecar
5.1 升級系統
重複執行安裝過程即可,自動安裝腳本會自動替換可執行程序並重啓服務。
同時,以前的配置文件內容會保留。
5.2 啓動/關閉/重啓服務
Sidecar 服務使用 systemd 管理,直接使用 systemctl
操作即可:
Bash | |
---|---|
1 2 3 |
|
5.3 查看配置
配置文件位於 /etc/dataflux-func-sidecar
。
6. 安全性保障
由於 Sidecar 的使用模式本質上就是向所在主機發送任意可執行代碼,具有危險性。
因此 Sidecar 在實現和部署上具有以下限制條件:
- Sidecar 服務
dffs
用户運行(即 DataFlux Func Sidecar 首字母縮寫) - Sidecar 必須配置了 SecretKey 才能正常調用執行 Shell 命令
SidecarHelper.shell(...)
內部實現了 HmacSha1 簽名,以防止篡改、重放攻擊
由於 Sidecar 服務以 dffs
用於運行,無法執行需要 root 權限的命令或操作其他用户的文件。如有需要,可以將 dffs
用户加入用户組、或修改文件相關權限。