大約在一年多之前,因為公司的開發環境都是Macbook,所以一些好用的開發工具資源都很好找,但在Windows平台上,沒有什麼好用的工具,最近因為一些需求導致要協助幫忙尋找,然後就有了這篇文章
在以往使用Macbook的時候,都會使用telepresence作為本地與kubernetes cluster的串接工具,而在windows上目前我只找到bridge to kubernetes這個附屬在visual studio與visual studio code下的套件,加上vs code在macbook也可以使用,所以這篇文章就以Macbook為基礎驗證,當然windows也是可行的
以下預設已經設定完kubernetes cluster的連線,並且vs code已經可以連上kubernetes cluster
首先打開vs code,安裝bridge to kubernetes,之後按下command +⇧+P,開始設定

接著會直接讀取連線的namespace的設定,直接讀出namespace中的service,這裡只有設定了一個service,選擇他

接著輸入你要串接此service到本地的port號,我本地會使用docker啟動一個nginx,設定8080

然後選取config設定,這裡因為我不是藉由執行程式啟動,所以我選擇 with out lauch configuration,要注意的是,選擇此設定要連接至cluster需要手動執行task

然後是選擇需要全部導流(for 開發)還是隔離導流(for 正式),這裡選擇全部導流

這時右下角會顯示已經設定完成,此時專案內也會出現一個.vscode的資料夾,其中有一份tasks.json,內容就是我們剛剛設定的相關參數

接著我們先打開kubernetes上的service ip看看


接著本地執行docker 設定首頁,後面我修改成456

然後回到vs code 選擇tasks.json 然後到上方的terminal 下拉選擇run tasks

接著就會開始執行橋接導流工作,工作原理是會將原本的nginx containers替換掉,將流量導流到本地,並且同namespace內的其他service也會被接至本地虛擬ip上,讓本地的服務也可以連接上其他的service

然後我們再回去打開剛剛kubernetes上的service ip

然後去檢查本地的docker log

到目前已經確認將kubernetes上的nginx導流至本地了,但官方文件說明這個只適用於單一Pod的服務,所以以方便性來看,只能算克難的使用,只能等看看telepresence 2.0是否能如期推出windows的版本了
然後如果要中斷導流,在vs code下方有個cluster的連接符號,像是天線的那個,點開他

選擇Disconnect current session 即可中斷導流,讓kubernetes的導流恢復正常

最後分析一下優缺點,優點是windows可以使用,linux與mac有更好用的telepresence,缺點的話,只適用於單一pod的服務,並且如果有跨namespace的其他服務,是無法被連接到的,telepresence反而比較可以適用整套cluster的導流,如果非windows不可的話,才建議使用bridge to kubernetes,因為沒得選…
參考資料
近期留言