偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

使用阿里開源的這款K8s環(huán)境本地測試聯(lián)調(diào)工具,效率高的飛起

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

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

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

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

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

KtConnect介紹

圖片圖片

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

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

特性

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

快速體驗

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

安裝

brew install kt-connect

圖片圖片

部署實例應用

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

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,記下待用。

連接集群網(wǎng)絡

使用ktctl connect命令建立從本地到集群的網(wǎng)絡通道,注意該命令需要管理員權(quán)限。

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
# 使用集群內(nèi)完整域名訪問服務
curl http://tomcat.default.svc.cluster.local:8080

圖片圖片

將集群流量轉(zhuǎn)發(fā)到本地

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

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:將集群指定服務的所有流量轉(zhuǎn)向本地
  • Mesh:將集群指定服務的部分流量(按Header或Label規(guī)則)轉(zhuǎn)向本地
Exchange命令

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

圖片圖片

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

ktctl exchange tomcat --expose 8080

圖片圖片

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

如果未運行ktctl connect,只能從k8s集群內(nèi)訪問

curl http://tomcat:8080

圖片圖片

可以看到,訪問集群里tomcat服務的請求轉(zhuǎn)發(fā)到了本地的Tomcat實例

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

Mesh命令

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

圖片圖片

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

ktctl mesh tomcat --expose 8080

圖片圖片

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

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

圖片圖片

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

圖片圖片

圖片圖片

將本地服務提供給其他開發(fā)者

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

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

將本地運行的服務實例注冊到集群上。主要用于將本地開發(fā)中的服務提供給其他開發(fā)者進行聯(lián)調(diào)和預覽。

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

ktctl preview tomcat-v2 --expose 8080

圖片圖片

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

圖片圖片

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

圖片圖片

Forward命令

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

圖片圖片

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

ktctl forward tomcat-v2 9090:8080

圖片圖片

執(zhí)行完以上命令后,開發(fā)者就可以訪問localhsot:9090 執(zhí)行

圖片圖片

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

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

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

開源圖表 開發(fā)

2020-09-01 10:40:11

K8SDocker開源

2021-01-04 15:11:57

開發(fā) IDEA代碼

2023-11-06 07:16:22

WasmK8s模塊

2023-09-11 15:35:25

2022-08-29 08:21:00

k8sDocker

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

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開發(fā)者工具

2021-01-21 22:13:40

Windows微軟開發(fā)

2024-01-26 14:35:03

鑒權(quán)K8sNode

2022-08-27 22:36:18

Kubernetes調(diào)度器

2023-11-07 07:44:55

云原生OrbStackDNS

2011-04-13 09:13:02

Java內(nèi)存

2011-09-13 09:57:25

谷歌云計算
點贊
收藏

51CTO技術棧公眾號