Velero 二次開發-02
三 使用 Tilt 進行快速迭代 velero 開發
3.1 概要
本文檔描述了如何將 Tilt 與任何集群一起使用,以實現簡化的工作流,從而提供簡單的部署和快速的迭代構建。這種設置允許繼續部署 velero 服務器,如果指定,則允許任何提供程序插件或 restic daemonset。它通過以下方式完成這項工作:
部署必要的 Kubernetes 資源,例如 Velero CRD 和 Velero 部署
為 Velero 和(如果指定)提供程序插件構建本地二進制文件作為 local_resource
調用 docker_build 將任何二進制文件實時更新到容器/初始化容器中并觸發重新啟動
Tilt 會在 velero/tilt-resources 下尋找配置文件。此目錄中的大多數文件都被 gitignored 忽略,因此您可以根據需要配置您的設置。
3.2 先決條件
Docker v19.03或更新的
Kubernetes cluster v1.10或更高版本(不一定是 Kind)
Tilt v0.12.0或更新版本
在本地克隆 Velero 項目存儲庫
訪問 S3 對象存儲
克隆您想要更改和部署的任何提供程序插件 (可選的,必須配置為由 Velero Tilt 的設置部署,更多信息見下)
注意: 要正確配置你使用的任何插件,請參考插件文檔。
3.3 入門
3.3.1 配置
將 velero/tilt-resources/examples 下的所有示例文件復制到 velero/tilt-resources 中。
配置 velero_v1_backupstoragelocation.yaml 文件和存儲憑證/密鑰的云文件。
運行tilt up
3.3.2 創建 tilt 設置文件
創建一個名為tilt-settings.json 的配置文件,并將其放在velero/tilt-resources 的本地副本中。或者,您可以復制并粘貼在 velero/tilt-resources/examples 中找到的示例文件。
例如:
{ "default_registry": "", "enable_providers": [ "aws", "gcp", "azure", "csi" ], "providers": { "aws": "../velero-plugin-for-aws", "gcp": "../velero-plugin-for-gcp", "azure": "../velero-plugin-for-microsoft-azure", "csi": "../velero-plugin-for-csi" }, "allowed_contexts": [ "development" ], "enable_restic": false, "create_backup_locations": true, "setup-minio": true, "enable_debug": false, "debug_continue_on_start": true }
3.3.3 tilt-settings.json 字段
default_registry:(String, default=”"),如果你需要推送鏡像到鏡像倉庫需要改字段,更詳細可參考:Tilt *documentation
provider_repos:(Array[]String, default=[]),您要更改的所有提供程序插件的路徑列表。每個提供者必須有一個tilt-provider.json 文件來描述如何構建提供者。
enable_providers (Array[]String, default=[]):要啟用的提供程序插件列表。更多詳細信息請參閱提供程序插件。注意: 當不對插件進行更改時,不需要將它們加載到 Tilt 中: 可以在 Velero 部署中指定一個現有的映像和版本,Tilt 將加載這些內容。
allowed_contexts (Array, default=[]):允許 Tilt 使用的 kubeconfig 上下文列表。有關更多詳細信息,請參閱關于 *allow_k8s_contexts 的 Tilt 文檔。注意: Kind 是自動允許的。
enable_restic (Bool, default=false):指示是否部署restic Daemonset。如果設置為 true,Tilt 將查找包含 Velero restic DaemonSet 配置的 velero/tilt-resources/restic.yaml 文件。
create_backup_locations (Bool, default=false):指示是否創建一個或多個備份存儲位置。如果設置為 true,Tilt 將查找 velero/tilt-resources/velero_v1_backupstoragelocation.yaml 文件,其中至少包含一個 Velero 備份存儲位置的配置。
setup-minio (Bool, default=false):如果要在集群內運行的 Minio 實例中配置備份存儲位置,請將此配置為 true。
enable_debug (Bool, default=false):如果要使用 Delve 調試 velero 進程,請將此配置為 true。
debug_continue_on_start (Bool, default=true):如果您希望 velero 進程在調試模式下在啟動時繼續,請將此配置為 true。請參閱 Delve CLI documentation 文檔。
3.4 創建要部署的 Kubernetes 資源文件
在 velero/tilt-resources/examples 目錄中,提供了所有需要的 Kubernetes 資源文件,以便隨時使用示例。你只需要將它們移動到 velero/tilt-resources 級別。
因為 Velero Kubernetes 的部署和恢復的 DaemonSet 包含所有要使用的插件的配置,所以這些資源的文件應該由用戶提供,因此您可以選擇加載哪個提供者插件作為 init 容器。目前,所提供的樣例文件已經配置了 Velero 支持的所有插件,可以根據需要隨意刪除任何插件。
為了使 Velero 完全運行,它還需要至少一個備份存儲位置。提供了一個示例文件,需要使用對象存儲的特定配置對其進行修改。請參閱下一小節以獲得更多關于此的詳細信息。
3.5 配置一個backup storage location
您必須配置 velero/tilt-resources/velero _ v1 _ backupstoragellocation。根據您的存儲提供程序使用適當的值。參考plugin documentation,了解特定提供者的備份存儲位置配置需要哪些字段/值對。
下面是為 Velero 配置備份存儲位置的一些方法。
3.5.1 使用公有云存儲
按照提供程序文檔來配置存儲。我們有一個所有已知對象存儲提供程序的列表,以及相應的 Velero 插件。list of all known object storage providers
3.5.2 使用MinIO作為對象存儲
注意:要將 MinIO 用作對象存儲,您需要使用 AWS plugin,并將存儲位置配置為將 spec.provider 設置為 aws,將 spec.config.region 設置為 minio。例子:
spec: config: region: minio s3ForcePathStyle: "true" s3Url: http://minio.velero.svc:9000 objectStorage: bucket: velero provider: aws
以下是使用 MinIO 作為存儲的兩種方法:
作為在集群內運行的 MinIO 實例(不要在生產環境中這樣做!)
在tilt-settings.json 文件中,設置“setup-minio”:true。這將配置一個 Kubernetes 部署,其中包含集群內正在運行的 MinIO 實例。在集群外公開 MinIO 需要額外的步驟( extra steps)。
要訪問這個存儲,您需要使用 kubectl port-forward-n svc/MinIO 9000將 MinIO 端口轉發到本地計算機,從而在集群之外暴露 MinIO。通過在 BSL 配置中添加 publicUrl: http://localhost:9000,更新 BSL 配置,將其作為其“公共 URL”。這對于下載備份文件是必要的。
注意:使用此設置,當您的集群終止時,其中的存儲和任何備份/恢復也會終止。
作為在 Docker 容器中本地運行的獨立 MinIO 實例 請參閱these instructions以在您的計算機上本地運行 MinIO,作為獨立的而不是在 Pod 上運行它。
請參閱我們的locations documentation以了解更多備份位置的工作原理。
3.6 配置提供者憑據(secret)
無論您使用什么對象存儲提供程序,都要在 velero/tilt-resources/cloud 文件中配置憑據。閱讀插件文檔,了解提供者的憑據需要哪些字段/值對。Tilt 文件將調用 Kustomize 在硬編碼的密鑰 secret.cloud-credentials 下創建秘密。名稱空間中的 data.cloud。在 velero/tilt-resources/examples/cloud 中,有一個為 MinIO 存儲憑證正確格式化的示例憑證文件。
3.7 使用 Delve 配置調試
如果您希望調試 Velero 進程,可以通過將字段 enable _ debug 設置為 true 在 tilt-resources/tile-settings 中啟用調試模式。Json 文件。這將使您能夠使用深入來調試進程。通過啟用調試模式,將在調試模式下構建 Velero 可執行文件(使用 flags-gcflags = “-n-l”禁用優化和內聯) ,并在使用 dlv exec的 Velero 部署中啟動該進程。
調試服務器將接受端口2345上的連接,而 Tilt 被配置為將該端口轉發到本地計算機。一旦 Tilt 運行并且 Velero 資源準備就緒,您就可以連接到調試服務器開始調試。要連接到會話,可以通過在本地運行 dlv connect 127.0.0.1:2345來使用深入的 CLI。有關如何使用深入研究的更多指導,請參閱 Delve CLI documentation。鉆研也可以在許多editors and IDEs.
默認情況下,當處于調試模式時,Velero 進程將在啟動時繼續。這意味著進程將一直運行,直到設置了斷點。可以通過在傾斜資源/平鋪設置中將字段 debug _ continue _ on _ start 設置為 false 來禁用此選項。Json 文件。當此設置被禁用時,Velero 進程將不會繼續運行,直到通過您的深入會話發出一個 continue 指令。
退出調試會話時,CLI 和編輯器集成通常會詢問是否應該停止遠程進程。保持遠程進程運行并斷開與調試會話的連接非常重要。通過停止遠程進程,這將導致 Velero 容器停止和莢重新啟動。如果正在進行備份,那么這些備份將處于不新鮮狀態,因為在 Velero pod 重新啟動時它們不會恢復。
3.8 運行Tilt
要啟動您的開發環境,請運行:
tilt up
這將輸出地址到一個網絡瀏覽器界面,在那里你可以監視傾斜的狀態和每個傾斜資源的日志。經過短暫的時間后,您應該已經有了一個正在運行的開發環境,現在應該能夠創建備份/恢復并完全操作 Velero 了。
注意:退出 Tilt 后運行傾斜向下將 Tiltfile 中指定的will delete all resources
提示:為 velero/_tuiltbuild/local/velero 創建別名,您不必運行 make local 來獲得 Velero CLI 的更新版本,只需使用別名即可。
請參閱文檔how Velero works.
3.9 提供插件
提供者必須提供一個tilt-provider.json 文件來描述如何構建它。下面是一個例子:
{ "plugin_name": "velero-plugin-for-aws", "context": ".", "image": "velero/velero-plugin-for-aws", "live_reload_deps": [ "velero-plugin-for-aws" ], "go_main": "./velero-plugin-for-aws" }
3.10 實時更新
每個配置為由 Velero 的 Tilt 設置部署的提供者插件都有一個 live _ reload_deps 列表。這定義了 Tilt 應該監視的文件和/或目錄的更改。修改依賴項后,Tilt 在本地計算機上重新構建提供程序的二進制文件,將二進制文件復制到 init 容器,并觸發 Velero 容器的重新啟動。這比為每次更改重新生成容器映像要快得多。它還有助于保持每個開發映像的大小盡可能小(容器映像不需要整個 go 工具鏈、源代碼、模塊依賴性等)。
Kubernetes 對象存儲服務 OBS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。