自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

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

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

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

以上問題,我相信大多數(shù)開發(fā)者都會(huì)遇到過,而且常用的方式應(yīng)該是把服務(wù)部署到 k8s中在進(jìn)行測(cè)試,這種方式雖然簡(jiǎn)單,但是效率很低,因?yàn)槲覀兊南到y(tǒng)還在單元測(cè)試,遇到的bug會(huì)比較多,每次改動(dòng)都要重新發(fā)布,時(shí)間都花費(fèi)在系統(tǒng)打包部署上面了

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

KtConnect介紹

圖片圖片

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

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

特性

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

快速體驗(yàn)

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

安裝

brew install kt-connect

圖片圖片

部署實(shí)例應(yīng)用

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

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和服務(wù)的IP地址:

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

圖片圖片

可知Tomcat實(shí)例的Pod IP為172.18.25.22,服務(wù)的Cluster IP為192.168.220.59,記下待用。

連接集群網(wǎng)絡(luò)

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

sudo ktctl connect

圖片圖片

本地訪問集群資源

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

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

圖片圖片

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

為了驗(yàn)證集群訪問本地服務(wù)的場(chǎng)景,我們?cè)诒镜匾矄?dòng)一個(gè)Tomcat的容器,并為其創(chuàng)建一個(gè)內(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提供了兩種能夠讓集群流量重定向到本地服務(wù)的命令,使用場(chǎng)景上稍有不同。

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

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

圖片圖片

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

ktctl exchange tomcat --expose 8080

圖片圖片

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

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

curl http://tomcat:8080

圖片圖片

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

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

Mesh命令

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

圖片圖片

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

ktctl mesh tomcat --expose 8080

圖片圖片

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

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

圖片圖片

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

圖片圖片

圖片圖片

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

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

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

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

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

ktctl preview tomcat-v2 --expose 8080

圖片圖片

注冊(cè)成功以后,集群里的服務(wù)就可以通過tomcat-v2名稱來訪問本地注冊(cè)的服務(wù)實(shí)例了

圖片圖片

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

圖片圖片

Forward命令

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

圖片圖片

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

ktctl forward tomcat-v2 9090:8080

圖片圖片

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

圖片圖片

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

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

2022-09-19 13:42:11

K8Skt-connect開源

2021-05-07 09:31:33

KindK8s Operator

2021-08-10 07:57:57

k8s Nginx IngrNginx

2020-09-01 10:40:11

K8SDocker開源

2020-10-14 12:29:51

開源圖表 開發(fā)

2023-11-06 07:16:22

WasmK8s模塊

2021-01-04 15:11:57

開發(fā) IDEA代碼

2022-08-29 08:21:00

k8sDocker

2023-09-11 15:35:25

2022-04-22 13:32:01

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

2022-09-05 17:28:25

k8sNode IPClusterIP

2022-08-27 22:36:18

Kubernetes調(diào)度器

2021-09-28 09:52:08

Prometheus開源工具Kubernetes

2024-01-26 14:35:03

鑒權(quán)K8sNode

2023-11-07 07:44:55

云原生OrbStackDNS

2020-11-08 13:50:19

Kubernetes容器

2021-02-03 14:04:52

k8spermissionm管理工具

2023-01-12 11:31:00

K8sToken

2021-01-21 22:13:40

Windows微軟開發(fā)

2022-05-23 09:03:35

Heighliner開發(fā)者工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)