Rancher Desktop 是一個開源項目,它將 Kubernetes 和容器管理帶入桌面。它可以在 Windows、macOS 和 Linux 上運行。本自述文件涉及 Rancher Desktop 的開發。有關 Rancher Desktop 的面向使用者的信息,請參閱 rancherdesktop.io。有關使用者導向的文檔,請參閱 docs.rancherdesktop.io。
Rancher Desktop 是一個主要以 TypeScript 編寫的 Electron 應用程式。它捆綁了多種其他技術,以提供一個有凝聚力的應用程式。它包括一個用 Go 寫的命令列工具rdctl
。大多數開發人員活動,例如執行開發建置、建置/打包 Rancher Desktop、執行單元測試和運行端到端測試,都是透過yarn
腳本完成的。存在一些例外情況,例如執行 BATS 測試。
在 Windows 上從原始碼建置有兩種選項:使用開發 VM 設定或使用現有 Windows 安裝進行手動開發環境設定。
下載 Microsoft Windows 10 開發虛擬機器。以下所有步驟都應在該虛擬機器中完成。
開啟 PowerShell 提示字元(按 Windows 鍵 + X
並開啟Windows PowerShell
)。
運行自動設定腳本:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser iwr -useb 'https://github.com/rancher-sandbox/rancher-desktop/raw/main/scripts/windows-setup.ps1' |艾克斯
關閉特權 PowerShell 提示字元。
確保.npmrc
檔案中的msbuild_path
和msvs_version
配置正確。執行以下命令來設定這些屬性:
npm config set msvs_versionnpm config set msbuild_path
例如,對於 Visual Studio 2022:
npm config set msvs_version 2022 npm config set msbuild_path "C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe"
如果您在嘗試執行npm config set...
時收到錯誤訊息,請執行npm config edit
然後新增以下行
msvs_version=2022 msbuild_path=C:Program Files (x86)Microsoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe
不要將等號右側的值引用起來。不需要引號,並且某些處理器可能會將它們視為路徑的文字部分,然後失敗。
設定git
以處理源自 linux 和 macOS 的檔案:
git config --global --replace-all core.autocrlf false git config --global --replace-all core.eol lf
如果您發現lint:go
測試神秘地失敗,則可能是行結尾不正確。
您現在可以克隆存儲庫並運行yarn
。
在電腦上安裝適用於 Linux 的 Windows 子系統 (WSL)。如果已安裝 WSL,請跳過此步驟。
開啟 PowerShell 提示字元(按 Windows 鍵 + X
並開啟Windows PowerShell
)。
透過iwr -useb get.scoop.sh | iex
。
安裝 7zip、git、go、mingw、nvm,並透過scoop install 7zip git go mingw nvm python unzip
解壓縮。使用nvm list
檢查節點版本。如果未安裝節點 v20 或將其設定為目前版本,請使用nvm install 20
安裝並使用nvm use 20.xx.xx
設定為目前版本。
透過npm install --global yarn
安裝 Yarn 套件管理器
安裝 Visual Studio 2017 或更高版本。截至撰寫本文時,最新版本可從 [https://visualstudio.microsoft.com/downloads/] 取得;如果改變了,一個好的搜尋引擎應該可以找到它。
確保您已安裝Windows SDK
元件。此 Visual Studio 文件描述了安裝元件的步驟。還需要選擇使用 C++ 工作負載的桌面開發。
設定git
以處理源自 linux 和 macOS 的檔案:
git config --global --replace-all core.autocrlf false git config --global --replace-all core.eol lf
如果您發現lint:go
測試神秘地失敗,則可能是行結尾不正確。 9. 確保在.npmrc
檔案中正確配置msbuild_path
和msvs_version
。執行以下命令來設定這些屬性:
npm config set msvs_versionnpm config set msbuild_path
例如,對於 Visual Studio 2022:
npm config set msvs_version 2022 npm config set msbuild_path "C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe"
如果您在嘗試執行npm config set...
時收到錯誤訊息,請執行npm config edit
然後新增以下行
msvs_version=2022 msbuild_path=C:Program Files (x86)Microsoft Visual Studio2022CommunityMSBuildCurrentBinMSBuild.exe
不要將等號右側的值引用起來。它們不是必需的,並且某些處理器可能會將它們視為路徑的文字部分,然後失敗。
您現在可以克隆存儲庫並運行yarn
。
安裝nvm
以取得 Node.js 和 npm:
請參閱https://github.com/nvm-sh/nvm#installing-and-updating並執行curl
或wget
指令來安裝nvm。
請注意,此腳本將處理nvm
的程式碼新增至設定檔(如~/.bash_profile
)。要將nvm
的存取權限新增至目前 shell 會話,您需要source
該檔案。
目前我們使用 Node 20 建置 Rancher Desktop。
nvm install 20.17
接下來,您需要安裝紗線包管理器:
npm install --global yarn
如果尚未安裝 go,您還需要執行brew install go
。
然後你可以使用以下命令安裝依賴項:
yarn
⚠️ 在配備 M1 晶片的 Mac 上工作?在安裝依賴項並執行任何 npm 腳本之前,您需要設定
M1
環境變數:export M1=1 yarn如果您之前安裝了依賴項而沒有先設定
M1
,那麼您需要執行git clean -fdx
來清除所有快取的資源,並在執行yarn
之前使用正確的架構重新下載。
請確定您已安裝以下軟體:
Node.js v20。確保您安裝了任何開發包。例如,在 openSUSE Leap 15.6 上,您需要安裝nodejs20
和nodejs20-devel
。
紗線經典
轉到 1.22 或更高版本。
node-gyp
文件安裝中所述的依賴項。這是安裝ffi-napi
npm 套件所必需的。這些文件提到「適當的 C/C++ 編譯器工具鏈」。您可以為此安裝gcc
和g++
。
然後你可以使用以下命令安裝依賴項:
yarn
然後,您可以按照如下所述運行 Rancher Desktop。第一次運行可能會失敗 - 如果發生這種情況,請嘗試恢復原廠設定並重新運行,這已知可以解決此問題。
安裝依賴項後,您可以使用以下命令執行 Rancher Desktop 的開發版本:
yarn dev
要運行單元測試:
yarn test
要運行整合測試:
yarn test:e2e
Rancher 可以在 Windows、macOS 或 Linux 上從原始碼建置。目前不支援交叉編譯。要運行構建,請執行以下操作:
yarn build yarn package
建置輸出轉到dist/
。
Chrome 遠端偵錯器可讓您使用 Chrome 開發者工具來偵錯 Electron 應用程式。您可以使用它來存取可能輸出到渲染器程序的開發人員控制台的日誌訊息。這對於在 Rancher Desktop 的生產版本中獲取額外的偵錯資訊特別有幫助。
若要啟用遠端偵錯,請使用--remote-debugging-port
參數啟動 Rancher Desktop。
在 Linux 上,使用以下指令啟動 Rancher Desktop:
rancher-desktop --remote-debugging-port="8315" --remote-allow-origins=http://localhost:8315
在 macOS 上,使用以下命令啟動 Rancher Desktop:
/Applications/Rancher Desktop.app/Contents/MacOS/Rancher Desktop --remote-debugging-port="8315" --remote-allow-origins=http://localhost:8315
在 Windows 上,使用下列命令啟動 Rancher Desktop:
cd 'C:Program FilesRancher Desktop'& '.Rancher Desktop.exe' --remote-debugging-port="8315" --remote-allow-origins=http://localhost:8315
Rancher Desktop 啟動後,開啟 Chrome 並導航至http://localhost:8315/
。選擇可用的目標來啟動遠端調試 Rancher Desktop。
要遠端調試擴展,請遵循與遠端調試建置相同的過程。但是,您需要在導航到http://localhost:8315/
之前載入擴充功能。 Rancher Desktop 和載入的擴充都應列為可用目標。
以下步驟已在 Linux 上使用 GoLand 進行了測試,但也可能以類似的方式適用於其他 JetBrains IDE。
安裝 Node.js 插件(透過File > Settings > Plugins
)
前往“運行/調試配置”對話框(透過Run > Edit Configurations...
)
使用以下設定新增新的 Node.js 配置:
名稱:調試配置的名稱,例如rancher desktop
節點解釋器:選擇您安裝的節點解釋器,例如/usr/bin/node
節點參數: scripts/ts-wrapper.js scripts/dev.ts
工作目錄:選擇專案的工作目錄,例如~/src/rancher-desktop
儲存配置
現在您可以設定斷點並點擊“調試'rancher Desktop'”開始調試
每次提交都會觸發 GitHub Actions 運行,從而導致應用程式包( .exe
和.dmg
)上傳為工件。如果您想測試建置系統建置的 Rancher Desktop 的最新版本,這可能會很有用。您可以從已完成的package
操作的「摘要」頁面下載這些工件。
與 Windows 和 macOS 類似,Rancher Desktop 的 Linux 版本是根據每次提交構建的。然而在 Linux 上,只有部分過程是由 GitHub Actions 完成的。最後一部分是由 Open Build Service 完成的。
Rancher Desktop 儲存庫有兩個頻道: dev
和stable
。 stable
是大多數使用者使用的管道。它是指導使用者在官方文件中新增的文檔,也是包含從官方版本建立的版本的文檔。 dev
是我們在這裡感興趣的通道:它包含從main
分支上以及與格式release-*
匹配的任何分支上進行的最新提交創建的構建。若要了解如何安裝開發儲存庫,請參閱下文。
使用dev
儲存庫時,了解dev
儲存庫中可用的 Rancher Desktop 版本的格式非常重要。版本的格式如下:
. . .
在哪裡:
priority
是一個無意義的數字,它的存在是為了在更新時賦予從main
分支構建的版本優先於從release-*
分支構建的版本。
branch
是分支名稱;由於包格式的限制,破折號被刪除。
commit_time
是用於進行建置的提交的 UNIX 時間戳記。
commit
是用於構建的提交的縮短哈希。
.deb
開發儲存庫您可以透過以下步驟新增儲存庫:
curl -s https://download.opensuse.org/repositories/isv:/Rancher:/dev/deb/Release.key | gpg --dearmor | sudo dd status=none of=/usr/share/keyrings/isv-rancher-dev-archive-keyring.gpg echo 'deb [signed-by=/usr/share/keyrings/isv-rancher-dev-archive-keyring.gpg] https://download.opensuse.org/repositories/isv:/Rancher:/dev/deb/ ./' | sudo dd status=none of=/etc/apt/sources.list.d/isv-rancher-dev.list sudo apt update
您可以透過以下方式查看可用版本:
apt list -a rancher-desktop
找到要安裝的版本後,您可以使用以下命令進行安裝:
sudo apt install rancher-desktop=
即使您已經安裝了 Rancher Desktop 的某個版本,此操作也有效。
.rpm
開發儲存庫您可以使用以下命令新增儲存庫:
sudo zypper addrepo https://download.opensuse.org/repositories/isv:/Rancher:/dev/rpm/isv:Rancher:dev.repo sudo zypper refresh
您可以透過以下方式查看可用版本:
zypper search -s rancher-desktop
最後,安裝您想要的版本:
zypper install --oldpackage rancher-desktop=
即使您已經安裝了 Rancher Desktop 的某個版本,此操作也有效。
AppImage 沒有儲存庫,但您可以在此處存取最新開發的 AppImage 版本。
Rancher Desktop 支援有限的基於 HTTP 的 API。此 API 在pkg/rancher-desktop/assets/specs/command-api.yaml
中定義,您可以在go/src/rdctl
的客戶端程式碼中查看如何呼叫它的範例。
該 API 目前處於版本 1,但仍被視為內部和實驗性的,如有更改,恕不另行通知。在某些時候,我們預計對 API 的必要變更將透過警告和棄用通知進行處理。
請參閱有關貢獻的文件。
請參閱 docs 目錄以取得更多開發人員文件。