在本機開發與除錯服務 (使用 telepresence)

Kubernetes 應用程式通常由多個獨立的服務組成,每個服務都在自己的容器中執行。在遠端 Kubernetes 叢集上開發和除錯這些服務可能很麻煩,需要您在執行中的容器上取得 Shell,才能執行除錯工具。

telepresence 是一個工具,旨在簡化在本機開發和偵錯服務的流程,同時將服務代理到遠端的 Kubernetes 叢集。使用 telepresence 讓您能為本機服務使用自訂工具,例如偵錯器和 IDE,並讓服務完整存取 ConfigMap、密鑰,以及在遠端叢集上執行的服務。

本文件說明如何使用 telepresence 在本機開發和偵錯於遠端叢集上執行的服務。

開始之前

  • 已安裝 Kubernetes 叢集
  • kubectl 已設定為與叢集通訊
  • Telepresence 已安裝

將您的本機電腦連線至遠端 Kubernetes 叢集

安裝 telepresence 之後,執行 telepresence connect 以啟動其 Daemon 並將您的本機工作站連線至叢集。

$ telepresence connect
 
Launching Telepresence Daemon
...
Connected to context default (https://<cluster public IP>)

您可以使用 Kubernetes 語法 curl 服務,例如 curl -ik https://kubernetes.default

開發或偵錯現有服務

在 Kubernetes 上開發應用程式時,您通常會程式設計或偵錯單一服務。該服務可能需要存取其他服務以進行測試和偵錯。一種選擇是使用持續部署管線,但即使是最快的部署管線也會在程式設計或偵錯週期中引入延遲。

使用 telepresence intercept $SERVICE_NAME --port $LOCAL_PORT:$REMOTE_PORT 命令來建立「攔截 (intercept)」,以重新導向遠端服務流量。

其中

  • $SERVICE_NAME 是您本機服務的名稱
  • $LOCAL_PORT 是您的服務在本機工作站上執行的埠
  • $REMOTE_PORT 是您的服務在叢集中監聽的埠

執行此命令會告知 Telepresence 將遠端流量傳送到您的本機服務,而不是遠端 Kubernetes 叢集中的服務。在本機編輯您的服務原始碼、儲存,並在存取您的遠端應用程式時立即看到對應的變更生效。您也可以使用偵錯器或任何其他本機開發工具來執行您的本機服務。

Telepresence 如何運作?

Telepresence 會在遠端叢集中執行的現有應用程式容器旁邊安裝一個 traffic-agent sidecar。然後,它會擷取所有進入 Pod 的流量請求,並且不會將其轉發到遠端叢集中的應用程式,而是將所有流量(當您建立全域攔截 (global intercept) 時)或部分流量(當您建立個人攔截 (personal intercept) 時)路由到您的本機開發環境。

接下來

如果您對實作教學課程感興趣,請查看本教學課程,其中逐步說明如何在 Google Kubernetes Engine 上本機開發 Guestbook 應用程式。

如需進一步閱讀,請造訪 Telepresence 網站

本頁面上的項目參考了第三方產品或專案,這些產品或專案提供了 Kubernetes 所需的功能。Kubernetes 專案作者不對這些第三方產品或專案負責。如需更多詳細資訊,請參閱 CNCF 網站指南

在提議新增額外的第三方連結的變更之前,您應該閱讀內容指南

上次修改時間:2023 年 11 月 24 日下午 4:55 PST:解決問題:#44034 (802dde6897)