跳至主要内容

為 Rancher 做出貢獻

了解用於 Rancher 和 Rancher 文件的儲存庫、如何建置 Rancher 儲存庫,以及提交問題時應包含哪些資訊。

有關如何為 Rancher 專案的開發做出貢獻的更詳細資訊,請參閱 Rancher Developer Wiki。Wiki 包含許多主題的資源,包括以下內容:

  • 如何設定 Rancher 開發環境並執行測試
  • 問題在開發生命週期中的典型流程
  • 編碼指南和開發最佳實踐
  • 除錯和疑難排解
  • 開發 Rancher API

在 Rancher Users Slack 上,開發者的頻道是 #developer。

Rancher 文件​

如果您對本網站上的文件有建議,請在主要的 Rancher docs 儲存庫中開啟問題。此儲存庫包含 Rancher v2.0 及更高版本的文件。

有關為 Rancher v2.x 文件儲存庫做出貢獻和建置的更多詳細資訊,請參閱 Rancher docs README。

有關描述 Rancher v1.6 及更早版本的文件,請參閱 Rancher 1.x docs 儲存庫,其中包含 https://rancher.com/docs/rancher/v1.6/en/ 的原始檔案。

Rancher 儲存庫​

所有儲存庫都位於我們的主要 GitHub 組織中。Rancher 使用了許多儲存庫,但我們將提供 Rancher 中使用的一些主要儲存庫的描述。

儲存庫URL描述
Rancherhttps://github.com/rancher/rancher此儲存庫是 Rancher 2.x 的主要原始碼。
Typeshttps://github.com/rancher/types此儲存庫包含 Rancher 2.x 的所有 API 類型。
API Frameworkhttps://github.com/rancher/norman此儲存庫是一個 API 框架,用於建置由 Kubernetes Custom Resources 支援的 Rancher 風格 API。
User Interfacehttps://github.com/rancher/dashboard/此儲存庫是 Dashboard UI 的原始碼。
(Rancher) Docker Machinehttps://github.com/rancher/machine此儲存庫是使用 Node Driver 時使用的 Docker Machine 二進位檔的原始碼。這是 docker/machine 儲存庫的分支。
machine-packagehttps://github.com/rancher/machine-package此儲存庫用於建置 Rancher Docker Machine 二進位檔。
kontainer-enginehttps://github.com/rancher/kontainer-engine此儲存庫是 kontainer-engine 的原始碼,這是一個用於佈建託管 Kubernetes 叢集的工具。
CLIhttps://github.com/rancher/cli此儲存庫是 Rancher 2.x 中使用的 Rancher CLI 的原始碼。
(Rancher) Helm repositoryhttps://github.com/rancher/helm此儲存庫是打包的 Helm 二進位檔的原始碼。這是 helm/helm 儲存庫的分支。
loglevel repositoryhttps://github.com/rancher/loglevel此儲存庫是 loglevel 二進位檔的原始碼,用於動態變更日誌級別。

要查看 Rancher 中使用的所有函式庫/專案,請參閱 rancher/rancher 儲存庫中的 go.mod 檔案。

Rancher diagram
用於佈建/管理 Kubernetes 叢集的 Rancher 元件。

建置 Rancher 儲存庫​

每個儲存庫都應該有一個 Makefile,並且可以使用 make 指令進行建置。make 目標基於儲存庫中 /scripts 目錄中的腳本,每個目標都將使用 Dapper 在隔離的環境中執行目標。此過程將使用 Dockerfile.dapper,並包含所有必要的建置工具。

預設目標是 ci,將執行 ./scripts/validate、./scripts/build、./scripts/test 和 ./scripts/package。建置的結果二進位檔將位於 ./build/bin 中,通常也會打包在 Docker 映像中。

Rancher 錯誤、問題或疑問​

如果您發現任何錯誤或遇到任何問題,請搜尋已報告的問題,因為可能有人遇到過相同的問題,或者我們正在積極處理解決方案。

如果您找不到與您的問題相關的任何內容,請透過提交問題與我們聯繫。雖然我們有許多與 Rancher 相關的儲存庫,但我們希望將錯誤提交到 Rancher 儲存庫中,這樣我們就不會錯過它們!如果您想提問或向其他使用者詢問使用案例,我們建議在 Rancher Forums 上發文。

提交問題的檢查清單​

提交問題時請遵循此檢查清單,這將幫助我們調查和修復問題。更多資訊意味著我們可以使用更多資料來確定問題的原因或可能與問題相關的內容。

備註

對於大量資料,請使用 GitHub Gist 或類似服務,並在問題中連結建立的資源。

重要:

請移除任何敏感資料,因為它將公開可見。

  • 資源: 盡可能提供所使用資源的詳細資訊。由於問題的來源可能是多種多樣的,包含盡可能多的詳細資訊有助於確定根本原因。請參閱以下一些範例:
    • 主機: 主機有什麼規格,例如 CPU/記憶體/磁碟,它發生在哪個雲端上,您使用的是什麼 Amazon Machine Image,您使用的是什麼 DigitalOcean droplet,您正在佈建什麼映像,我們可以在嘗試重現時重建或使用
    • 作業系統: 您使用的是什麼作業系統?提供具體資訊有助於這裡,例如 cat /etc/os-release 的輸出以取得確切的 OS 版本,以及 uname -r 以取得確切使用的核心
    • Docker: 您使用的是什麼 Docker 版本,您是如何安裝的?大部分 Docker 的詳細資訊可以透過提供 docker version 和 docker info 的輸出來找到
    • 環境: 您是否在代理環境中,您是否使用認可的 CA/自簽憑證,您是否使用外部負載平衡器
    • Rancher: 您使用的是什麼版本的 Rancher,這可以在 UI 的左下角找到,或從您在主機上執行的映像標籤中擷取
    • 叢集: 您建立了什麼類型的叢集,您是如何建立它的,在建立時您指定了什麼
  • 重現問題的步驟: 提供盡可能多的詳細資訊,說明您如何進入所報告的情況。這有助於該人員重現您所處的情況。
    • 提供從新建立的設定到您報告的情況所使用的手動步驟或自動化腳本。
  • 日誌: 提供所使用資源的資料/日誌。
    • Rancher

      • Docker 安裝
      docker logs \
      --timestamps \
      $(docker ps | grep -E "rancher/rancher:|rancher/rancher " | awk '{ print $1 }')
      • 使用 kubectl 進行 Kubernetes 安裝
      備註

      請確保您設定了正確的 kubeconfig (例如,如果 Rancher 安裝在 Kubernetes 叢集上,則為 export KUBECONFIG=$PWD/kube_config_cluster.yml),或透過 UI 使用嵌入式 kubectl。

      kubectl -n cattle-system \
      logs \
      -l app=rancher \
      --timestamps=true
    • 系統日誌 (這些可能不全部存在,取決於作業系統)

      • /var/log/messages
      • /var/log/syslog
      • /var/log/kern.log
    • Docker 守護程序日誌 (這些可能不全部存在,取決於作業系統)

      • /var/log/docker.log
  • 指標: 如果您遇到效能問題,請提供盡可能多的指標資料 (檔案或截圖),這有助於確定正在發生的情況。如果您有與機器相關的問題,提供 top、free -m、df 的輸出會有所幫助,這些指令會顯示處理程序/記憶體/磁碟使用情況。