《A3-余超-多云環境中部署及管理Kubernetes 集群的測試自動化實現.pdf》由會員分享,可在線閱讀,更多相關《A3-余超-多云環境中部署及管理Kubernetes 集群的測試自動化實現.pdf(44頁珍藏版)》請在三個皮匠報告上搜索。
1、多云環境中部署及管理K8S集群的測試自動化實現余超VMWARE 技術專家余超VMWARE技術專家,多云平臺TKG產品測試開發負責人。原第四范式質量部團隊測試專家,負責實現AI平臺產品的CICD流水線搭建,實現AI微服務平臺產品的快速交付和自動化測試。曾任職于百度和freewheel資深測試開發工程師。國內QECon、MTSC、中國軟件技術大會等技術峰會演講嘉賓,知乎&TesterHome質量技術沙龍講師。軟件研發效能權威指南 副主編嘉賓照片目錄CONTENTS被測對象:VMware TKG01 TKG測試要解決的問題和解決思路03 核心解決方案04 落地效果與總結05 自動化測試框架02 01
2、被測對象:VMware TKGTKG是什么?TKG概述TKG 是 VMware 推出的一種 Kubernetes 管理平臺,旨在簡化 Kubernetes 集群的部署、管理和運維。TKG 支持多種部署模式,包括本地部署、公有云部署和私有云部署等。TKG 還提供了一些額外的功能,如自動升級、安全加固、日志監控等。TKG 使用了 Cluster API 作為其底層技術之一,以便更好地管理 Kubernetes 集群的生命周期。通過使用 Cluster API,TKG 可以實現自動化的集群創建、擴展、升級和刪除等操作,從而大大簡化了 Kubernetes 集群的管理和運維。因此針對TKG產品的測試,
3、不僅包含對Kubernetes 集群生命周期的測試,也包括其對接公有云、私有云和混合云能力的測試。TKG對接云廠商能力TKG是一個企業級的Kubernetes發行版,可用于在多個云環境和數據中心中部署和管理Kubernetes集群。它提供了一個一致的Kubernetes體驗。任何地方都可以運行與云無關并且一致的VMware基礎架構相同的操作相同的體驗01K8S發版 VS vphere發版02測試維度繁多03QA于DEV測試范疇不同各個組件的頻繁變更,支持多版本k8s測試,支持不同云廠商平臺對接考慮眾多測試維度,從操作系統到網絡,從云廠商到集群操作步驟基礎功能測試和研發定制化功能測試TKG測試現
4、狀02TKG測試需求及解決思路TKG測試需求部署需求構建對接云基礎環境,多云適配;構建TKG的管理集群和負載集群個性化測試需求云資源選擇;操作系統選擇;網絡選擇;LB 服務暴露方案選擇;集群基礎功能測試選擇(cni,csi)測試場景覆蓋覆蓋部署,升級,多版本部署和以上個性化測試需求的組合測試;TKG測試-多云環境適配問題及解決方案Deploy_AVSDeploy_GCVEDeploy_VMCDeploy_OCVS多云適配前提:在各個云環境中成功部署和運行vsphere套件,由vsphere提供計算、存儲和網絡解決方案TKG測試-多云環境適配方案(計算資源)在任意云平臺上使用vCenter對計算
5、資源進行配置,在一套SDDC環境中進行多套TKG測試環境的部署TKG測試-多云環境適配方案(網絡資源)在任意云平臺上使用NSX對網絡資源進行生成和配置,在一套SDDC環境中進行多套TKG網絡環境部署TKG測試-快速部署問題及解決方案A Avspherevsphere部署Vsphere套件部署,包括vCenter和NSXB BTestbedTestbed部署Jumper機器部署;計算/存儲資源和網絡部署C C節點部署包括TKG環境的機器節點資源部署和操作系統部署等TKG測試-快速部署問題及解決方案(1)創建vsphere創建Testbed創建集群節點一次性創建創建Jumper VM,獲取調用vC
6、enterNSX,EXSI能力對擴展 CRDs定義的自定義資源進行創建和更新,從而進行k8s集群的部署TKG測試-快速部署問題及解決方案(2)Ova文件在contentlibrary 導入的image管理節點和負載節點的設定網絡和存儲設定TKG測試-快速部署問題及解決方案(3)Tkg1.6.0為例操作系統K8S版本ova-ubuntu-2004-v1.23.8+vmwareova-ubuntu-2004-v1.21.14+vmwareova-ubuntu-2004-v1.22.11+vmwareOVA文件(包含操作系統和K8S版本)部署所需的鏡像模版TKG測試-快速部署問題及解決方案(4)一次
7、性部署vsphere自動化腳本(buttom core進行testbed部署)調用cluster-api在上述環境中進行TKG部署,包括management-cluster和workload-cluster以上步驟總耗時在30mins以內TKG測試-維度多,組合爆炸問題及解決思路操作系統,K8S版本.操作系統包括ubuntu/Rhel/photon;k8s包括近期最新三個版本.01測試操作,網絡.操作包含安裝/升級/多版本部署,網絡有Calico/flannel/Antrea.02節點大小,LB.按計算資源和內存分大中小三種節點;LB支持kube-vip和AVI03定制化測試.Sanity測試
8、、NetSmoke測試、CSI測試、Scale測試04僅僅圖中的測試維度組合就達到上千種,串行需2周以上時間才能測試完畢。TKG測試-維度多,組合爆炸問題及解決思路(1)支持全量化所有測試維度組合支持組合條件過濾,降低無效測試組合支持用戶自定義測試組合支持多個完整測試case執行的并行化支持部署冪等化,支持多部門在同一套TKG環境中進行串/并行測試支持測試場景自動回收,支持測試失敗后測試場景的自動化保留03自動化測試框架TKG-測試框架(Test infra功能介紹與執行流程)創建Testbed安裝TKG安裝K8S集群執行標準化測試cases執行自定義測試cases創建JumperVM,打通v
9、CenterNSX,EXSI;調用安裝 TKG CLI,Expose testbed env to TKG安裝Management-cluster,workload-cluster執行CNI,CSI,Network,Scale up/down,執行smoke相關cases執行All kinds of app-level cases清除環境TKG-測試框架(Test infra架構-core)BottomcoreTest codeJenkinsTestbedJumperVM,NSX,vCenter,outputs ssh執行TKG指令測試環境網絡支持返回集群所需vCenter信息;返回跳板機信息
10、;返回集群所需網絡信息MatrixTest frame測試環境主機/計算能力支持TKG-測試框架(Test infra架構-core)ButtomcoreTest codeJenkinsMatrixTest frame跳板機器可以ssh訪問Inbould ruleANYGroup-segmentSegment網段能訪問外網,而集群機器均來自此segmentOutbound ruleANYGroup-segment跳板機內外網打通NAT rule for jumperPublicIPPrivateIPNsx API實現nat/USER/nat-ruleNsx API實現/rules/displa
11、y_nameTKG-測試框架(Test frame-Test Code)BottomcoreTest codeJenkinsMatrixparameters(extraParameters+choice(name:CNI,description:Which CNI be tested,choices:”Flannel,Calico,All,),ScriptpytestArgs+=-cni=env.CNI最終會調用pytest命令,eg:pytest-os-name=ubuntu-cni=Calico /home/jenkins/test_cluster_create.pyTest frameT
12、KG-測試框架(Test frame-Test Code)BottomcoreTest codeJenkinsMatrixTest-testbed.pyTest-clustercreate.pyTest-clusterupgrade.pyTest-scale.pyTest-networksmoke.pydef test_scale_up_workers():cluster=find_cluster(mgmt_cluster)if clusterworkers!=5/5:run(ftanzu cluster scale mgmt_cluster-worker-machine-count=5)as
13、sert clusterworkers=5/5”Test frame集群節點scale 測試TKG-測試框架(Test frame-Jenkins)BottomcoreTest codeJenkinsMatrixupgrade.groovyinstall.groovymultiVersionInstall.groovyStages -stage(Create Testbed)-stage(install clusters)-stage(Run Scaling tests)-stage(Run Network Tests)when env.RUN_NETWORK-stage(Run Delete
14、 Tests)Test frame選擇需要run的caseTKG-測試框架(Test frame-Jenkins)BottomcoreTest codeJenkinsMatrixinstallTest frame04核心解決方案TKG-測試框架(全量測試場景)-Node sideNode SizeLB:kube-vip,AVITest suite:Install,Upgrade,Multi-version-installOS:Unbutu 20.04/18,RHELLaas:AWS,GCVE,AVS,OCVS測試維度測試類型的選擇操作系統的選擇Iaas平臺的選擇LB選擇節點大小選擇Netsmo
15、keCSI test caseDEV test caseTKG-測試框架(全量測試場景)-Install-Upgrade-MulversionInstall-Unbutu 18-Unbutu 20-RHEL-Photon-Amazon-AWS-Dimension-GCVE-AVS-OCVS-測試類別-操作系統-Iaas類別Matrix的組合處理,生成多套完整的測試場景。僅僅測試類別、操作系統、laas三者的組合數:3*5*5=75種BottomcoreTest codeJenkinsMatrixTest frame重寫了Matrix的能力TKG-測試框架(全量測試場景)Matrix的組合維度過
16、多,峰值達到上千條,需要剔除不重要的測試的組合場景;因此需要做到定制化靈活地組合測試場景和支持并發執行測試。測試類別安裝升級.操作系統Ubuntu,PhotoLaas類別Google云,Azure網絡CalicoAntrea.HAKube-vipAVIinstall-gcve-ubuntu_20.04-antrea-proxypipelineBottomcorecorgiJenkinsMatrixTest frame節點大小LargeMedium.TKG-測試框架(全量測試場景-axis)Matrix:在聲明性流水線中,階段可以包含一個 matrix(矩陣)部分,用于定義一個多維的名稱-值組合
17、的矩陣,下圖中多個axis的值可進行組合并支持pipeline并行運行。matrix axes axis name TEST_SUITEvalues install,upgrade,multi-version-install axis name PLATFORMvalues ubuntu,photon,redhat,Amazon./.-Install-Upgrade-MulversionInstall-Unbutu 18-Unbutu 20-RHEL-Photon-AmazonTKG-測試框架(全量測試場景-axis)Matrix:包含一個 excludes(排除項)部分,用于從矩陣中刪除無效
18、的組合。需要刪除的組合包含在excludes信息中。basic_axes:axis1:name:IAASvalues:-aws-azure axis2:name:OSvalues:-ubuntu-20.04-photonaxis3:name:TEST_SUITEvalues:-install-upgrade-multi-versions-installexcludes:exclude1:axis1:name:IAASvalues:awsaxis2:name:OSvalues:photonexclude2:axis1:name:IAASvalues:azureaxis2:name:TEST_SU
19、ITEvalues:upgrade生成laas(aws,azure),OS(ubuntu,photon)和TEST_SUITE(install,upgrade,multi-versions-install)的組合測試場景.過濾符合laas(aws)/OS(photon)和 laas(azure)/Test_suite(upgrade)的所有測試場景TKG-測試框架(全量測試場景-axis-exclude)-Install-Upgrade-MulversionInstall-Unbutu 20-Photon-AWS-Azure-Install-Upgrade-MulversionInstall-Unbutu 20-Photon-AWS-AzureTEST_SUITEOSIAAS24條測試case15條測試case執行exclude過濾條件全量測試場景利弊根據測試維度大量生成測試用例;功過exclude進行部分測試場景的過濾優 勢劣 勢TKG-測試框架(全量測試場景-axis-exclude)05落地效果與總結TKG-測試框架(發版測試)Matrix 混合模式執行發版測試,500+條測試case在一個工作日完成BottomcoreTest codeJenkinsMatrixone pipelinematrixTest frame感謝聆聽關注QECon公眾號微信號