成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用阿里開源的這款K8s環境本地測試聯調工具,效率高的飛起

云計算 云原生
KtConnect(Kt為Kubernetes Toolkit集群工具包的簡寫)由阿里開源,是一款基于k8s環境用于提高本地測試聯調效率的小工具,它提供了本地和測試環境集群的雙向互聯能力

在我們系統部署到 k8s集群以后,開發測試模式也會有一定變化,下面是一些常見的問題,如果處理不好,直接影響我們的效率

  • 本地服務如何訪問k8s集群里面的服務進行功能測試?
  • 本地如何快速訪問k8s集群中資源,比如訪問某個微服務的 swagger?
  • 如何把k8s集群里面流量轉發到本地服務,進行功能測試?
  • 如何臨時快速部署一個服務到 k8s集群 里面進行功能驗證?

以上問題,我相信大多數開發者都會遇到過,而且常用的方式應該是把服務部署到 k8s中在進行測試,這種方式雖然簡單,但是效率很低,因為我們的系統還在單元測試,遇到的bug會比較多,每次改動都要重新發布,時間都花費在系統打包部署上面了

下面推薦一個阿里開源的k8s工具,它可以幫助我們解決以上問題

KtConnect介紹

圖片圖片

KtConnect(Kt為Kubernetes Toolkit集群工具包的簡寫)由阿里開源,是一款基于k8s環境用于提高本地測試聯調效率的小工具,它提供了本地和測試環境集群的雙向互聯能力

地址:https://github.com/alibaba/kt-connect

特性

  • Connect:建立數據代理通道,實現本地服務直接訪問Kubernetes集群內網(包括Pod IP和Service域名)
  • Exchange:讓集群服務流量重定向到本地,實現快速驗證本地版本和調試排查問題
  • Mesh:創建路由規則重定向特定流量,實現多人協作場景下互不影響的本地調試
  • Preview:暴露本地服務到集群,實現無需發布即可在線預覽集成效果

快速體驗

在這篇文檔里,使用一個簡單的示例,來快速演示通過KtConnect完成本地直接訪問集群中的服務、以及將集群中指定服務的請求轉發到本地的過程。

安裝

brew install kt-connect

圖片圖片

部署實例應用

為了便于展示結果,首先在集群中部署一個Tomcat服務并創建一個默認首頁:

kubectl create deployment tomcat --image=tomcat:9 --port=8080
kubectl expose deployment tomcat --port=8080 --target-port=8080
kubectl exec deployment/tomcat -c tomcat -- /bin/bash -c 'mkdir webapps/ROOT; echo "hello world v1" > webapps/ROOT/index.html'

圖片圖片

查詢Pod和服務的IP地址:

kubectl get pod -o wide --selector app=tomcat
kubectl get svc tomcat

圖片圖片

可知Tomcat實例的Pod IP為172.18.25.22,服務的Cluster IP為192.168.220.59,記下待用。

連接集群網絡

使用ktctl connect命令建立從本地到集群的網絡通道,注意該命令需要管理員權限。

sudo ktctl connect

圖片圖片

本地訪問集群資源

輸出以上日志以后,就可以在本地直接訪問集群資源了,可通過瀏覽器或curl命令來驗證:

# 在本地直接訪問PodIP
curl http://172.18.25.22:8080   
#在本地訪問ClusterIP
curl http://192.168.220.59:8080
#使用<service>作為域名訪問服務
curl http://tomcat:8080
#使用<servicename>.<namespace>域名訪問服務
curl http://tomcat.default:8080
# 使用集群內完整域名訪問服務
curl http://tomcat.default.svc.cluster.local:8080

圖片圖片

將集群流量轉發到本地

為了驗證集群訪問本地服務的場景,我們在本地也啟動一個Tomcat的容器,并為其創建一個內容不同的首頁。

docker run -d --name tomcat -p 8080:8080 tomcat:9
docker exec tomcat /bin/bash -c 'mkdir webapps/ROOT; echo "hello world local v2" > webapps/ROOT/index.html'

圖片圖片

KtConnect提供了兩種能夠讓集群流量重定向到本地服務的命令,使用場景上稍有不同。

  • Exchange:將集群指定服務的所有流量轉向本地
  • Mesh:將集群指定服務的部分流量(按Header或Label規則)轉向本地
Exchange命令

將k8s集群里訪問指定服務的所有請求攔截并轉發到本地的指定端口上。通常用于調試在測試環境里,當前服務未部署到 k8s 集群,又想快速驗證的場景

圖片圖片

使用ktctl exchange命令將先前部署到集群中的tomcat服務流量全部轉到本地8080端口:

ktctl exchange tomcat --expose 8080

圖片圖片

在本地或者集群中訪問示例開始時部署到集群的tomcat服務,查看輸出結果:

如果未運行ktctl connect,只能從k8s集群內訪問

curl http://tomcat:8080

圖片圖片

可以看到,訪問集群里tomcat服務的請求轉發到了本地的Tomcat實例

如果我們微服務部署在 K8s 中還是使用的eureka或者 nacos,這種方式可能不支持,因為這種方式是服務消費方直接調用的服務提供方的 pod ip 地址

Mesh命令

將集群里訪問指定服務的部分請求攔截并轉發到本地的指定端口。通常用于團隊協作時,需要定向調試調用鏈中間位置的服務,又不希望影響其他開發者正常使用測試環境的場景。

圖片圖片

Mesh命令,能夠直接實現HTTP請求的自動按需路由,為了便于驗證結果,先停止ktctl exchange 命令。然后通過ktctl mesh命令創建代理Pod:

ktctl mesh tomcat --expose 8080

圖片圖片

查看以上紅色標記部分,輸出了一個特定的Header值。此時,直接訪問集群里的tomcat服務,流量將正常進入集群的服務實例,若請求包含Mesh命令輸出的Header,則會轉發流量到本地服務實例

curl http://tomcat:8080
curl -H 'VERSION: feo3x' http://tomcat:8080

圖片圖片

實際測試中可以使用ModHeader插件,在瀏覽器發起http中自動追加自定義 header

圖片圖片

圖片圖片

將本地服務提供給其他開發者

在開發過程中,也可以利用KtConnect將本地服務快速"部署"到集群,變成一個臨時的服務,供其他開發者或集群中的其他服務臨時使用。

  • Preview:將本地服務注冊為集群里的Service
  • Forward:將集群服務映射到本地,結合Preview命令可實現開發者之間跨主機使用Localhost地址互訪
Preview命令

將本地運行的服務實例注冊到集群上。主要用于將本地開發中的服務提供給其他開發者進行聯調和預覽。

下面使用ktctl preview命令將運行在本地8080端口的服務注冊到測試集群,命名為tomcat-v2。

ktctl preview tomcat-v2 --expose 8080

圖片圖片

注冊成功以后,集群里的服務就可以通過tomcat-v2名稱來訪問本地注冊的服務實例了

圖片圖片

其他開發者也可以在執行ktctl connect后,直接通過tomcat-v2服務名稱來預覽該服務的實時情況:

圖片圖片

Forward命令

將任意IP或集群中的服務映射到本地的指定端口。用于在測試時,使用localhost地址便捷的訪問集群中的特定IP或服務,典型場景是是訪問其他開發者通過Preview命令注冊的本地服務。

圖片圖片

如上圖當開發者A運行了前述的Preview命令后,開發者B可以使用ktctl forward命令將它映射到自己本地的9090端口,然后進行調用

ktctl forward tomcat-v2 9090:8080

圖片圖片

執行完以上命令后,開發者就可以訪問localhsot:9090 執行

圖片圖片

是不是感覺forward命令與kubectl port-forward命令相似,其實這塊只是額外增加了斷網自動重連的能力。

責任編輯:武曉燕 來源: 架構成長指南
相關推薦

2022-09-19 13:42:11

K8Skt-connect開源

2021-08-10 07:57:57

k8s Nginx IngrNginx

2021-05-07 09:31:33

KindK8s Operator

2020-10-14 12:29:51

開源圖表 開發

2020-09-01 10:40:11

K8SDocker開源

2021-01-04 15:11:57

開發 IDEA代碼

2023-11-06 07:16:22

WasmK8s模塊

2022-08-29 08:21:00

k8sDocker

2023-09-11 15:35:25

2022-04-22 13:32:01

K8s容器引擎架構

2020-11-08 13:50:19

Kubernetes容器

2022-09-05 17:28:25

k8sNode IPClusterIP

2021-09-28 09:52:08

Prometheus開源工具Kubernetes

2022-05-23 09:03:35

Heighliner開發者工具

2021-01-21 22:13:40

Windows微軟開發

2024-01-26 14:35:03

鑒權K8sNode

2022-08-27 22:36:18

Kubernetes調度器

2023-11-07 07:44:55

云原生OrbStackDNS

2011-04-13 09:13:02

Java內存

2011-09-13 09:57:25

谷歌云計算
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一区二区三区国产精品 | 三级av在线| 一区二区精品在线 | 国产精品久久久久久久久久久久 | 在线观看中文字幕 | 中文字幕日韩欧美一区二区三区 | 狠狠婷婷综合久久久久久妖精 | 天堂在线免费视频 | 一区二区三区视频在线观看 | 韩日精品一区 | 天天躁日日躁xxxxaaaa | 国产精品三级 | 国产传媒毛片精品视频第一次 | 精品日韩在线 | 黄色国产在线视频 | 亚洲精品国产电影 | 99精品久久久 | 日本久久久久久 | 美国黄色毛片 | 亚洲日韩中文字幕一区 | 欧美一级毛片免费观看 | 午夜电影网址 | 91免费在线 | 男人的天堂亚洲 | wwww.8888久久爱站网 | 中文字幕国产视频 | 人人射人人 | 羞羞视频网站免费观看 | 欧美精品乱码久久久久久按摩 | 久久久久久蜜桃一区二区 | 在线播放一区 | 亚洲欧美中文日韩在线v日本 | 亚洲天堂久久 | 懂色一区二区三区免费观看 | 欧美一区二区三区电影 | 亚洲精品乱码久久久久久黑人 | 中文字幕在线视频免费视频 | www.婷婷 | 久久久久免费精品国产小说色大师 | 日韩有码一区二区三区 | 日韩在线视频免费观看 |