昨天簡介完了 telepresence 基礎應用,今天來介紹來一些筆者實務上比較常用的進階使用方式。

昨天的使用的方式是 telepresence 預設會起一個 POD 進入 k8s 的網路中,那如果今天你是要取代原本的 POD呢? 那我們來看看怎麼使用

我們一樣用前幾天的文章,所提供的 example first-helloworld

先查詢看看目前 POD 狀況

$ kubectl get pods
NAME                                         READY   STATUS    RESTARTS   AGE
first-hellworld-deployment-566d79fb7-d4vdg   2/2     Running   0          8m33s
first-hellworld-deployment-566d79fb7-bljd6   2/2     Running   0          8m33s
first-hellworld-deployment-566d79fb7-295wr   2/2     Running   0          8m33s

執行 telepresence

$ telepresence --swap-deployment first-hellworld-deployment --expose 8080 

照著下面就會發現 POD 通通都被替換掉了喔

$ kubectl get pods
NAME                                                 READY   STATUS    RESTARTS   AGE
first-hellworld-d-ed6163063b604edeabbdc6aba14b7d7e   2/2     Running   0          10m

此時可以在執行 telepresence 的那個 session 任意執行命令,甚至也可以另外起一個聽 8080 port 的服務,在你本機,原本的 first-helloworld service 都還是會把流量都導進來你這個 session 裡面。這在實務上,非常好用,你可以隨時對眾多服務中任一個服務,做本機端的開發 & 測試。

當然會有人問如果有不同 namepsace 的 pod 需要做切換要怎麼辦呢?

telepresence --namespace  --swap-deployment ${your-deployment}

在 multipass 架設下,使用 telepresence 會有網路問題,使用時本機會連不到外面網路,跟使用完畢後 multipass 裡面的虛擬機會連不到外面網路。 但是實務上 telepresence 都是用在不好的測試的外部環境,在本機環境下,應該是不會有 multipass + telepresence 的用法