1. 需求
開發環境是開發測試人員使用的應用環境,除了應用運作依賴的雲産品,還需要購買開發人員使用的雲産品和運維産品。
主要有:
- 雲效持續內建
- maven 私有倉庫
- gitlib 代碼倉庫
- Node子產品倉庫
- 鏡像倉庫購買
- 開發環境應用運作環境
2.雲效與相關配置
2.1 maven 代碼倉庫:
私有倉庫配置:
- maven 工具的 profiles 節點,增加私有倉庫的 repository;
- settings 檔案加入代碼庫根目錄或者根目錄下 pom.xml 增加 repository節點,指向私有倉庫。
上傳私有倉庫:
使用migrate-local-repo-tool.jar(來自開源工具) 上傳:
$ java -jar migrate-local-repo-tool.jar -cd "/$HOME/.m2/repository/" -t "http://10.21.11.11/repository/releases/" -u admin -p admin123
踩坑與優化:
- 避免使用上傳單個檔案方式,該方式上傳 jar的話,不要使用預設的生成 pom.xml 方式,此方式容易覆寫原來已有 pom.xml 導緻依賴問題。
- 開發人員使用migrate-local-repo-tool.jar 批量上傳的時候,可能會把開發人員本地的 老版本的 jar 包直接覆寫倉庫的對應 jar,導緻其它使用到該依賴 jar 包的系統打包時候,出現故障。
優化:
開發人員使用通用依賴 Jar 使用正式版本,避免使用 snapshot 版本;
優化改造migrate-local-repo-tool.jar 工具,其來自以下開源代碼,可以通過修改代碼,在運維平台開發對比上傳子產品,首先比對開發人員本地和線上私有倉庫依賴包,經過使用者在運維平台确認後釋出。
https://github.com/simpligility/maven-repository-tools/tree/master/maven-repository-provisioner
2.2 gitlib 代碼庫:
本地彈内代碼遷移:
- 從原彈内代碼位址克隆一份裸版本庫到本地;
git clone --bare http://gitlab.xxx-inc.com/****/****.git
- 雲效上建立項目和應用,并建立git倉庫;
- 将本地下載下傳的裸版本庫 push到建立的政務雲 git倉庫;
- 清理不需要儲存到雲效的原有分支,批量删除本地分支:
git branch -a | grep 'release' | xargs git branch -D git tag | xargs -I {} git tag -d {}
- 上傳本地代碼庫
git push --mirror https://xxx.code.aliyun.com/3333-zzzz/*****.git
- 這時可以看到完整的原彈内代碼已經遷移到了政務雲倉庫,并保留了彈内所有的變更送出記錄。
- 清理不需要儲存到雲效的原有分支,批量删除本地分支:
- 下載下傳政務雲到本地開發機器:
git clone -b myTag https://ttt.code.aliyun.com/3333-zzzz/*****.git
2.3 雲效配置
1. 【雲效企業設定】-->【容器服務賬号】-->【kubernetes 叢集證書導入】-->【手動導入證書】
從建立的 k8s 叢集獲驗證書資訊,導入,注意:k8s 叢集的 apiserver 的 公網 slb 通路控制增加雲效 IP 段。
2.【雲效企業設定】-->【容器服務賬号】-->【docker 鏡像賬戶管理】
綁定經常倉庫的賬戶與密碼,雲效通過 docker login 登入鏡像倉庫來拉取鏡像。
3. 應用 環境配置:
- 部署方式為 kubernetes 部署,目标叢集選擇叢集證書導入中顯示的叢集,設定相應命名空間等,配置釋出環境
- 建立流水線,釋出應用到各租戶的各個環境。
kubernetes 的命名空間和 Service 盡量使用容器服務控制台建立或者修改為規範命名和設定,如果使用雲效生成是預設的模闆配置,其設定與生産環境不怎麼符合。
3.鏡像倉庫配置
鏡像倉庫有條件的話,盡量采購企業版執行個體,企業版執行個體有完整的安全設定和通路控制。
隻要設定有:
命名空間,設定為私有,授權給專屬鏡像倉庫登入的阿裡雲子賬号;
設定通路憑證(密碼)
命名空間下的鏡像子倉庫,雲效在 docker push 時會自動建立為私有的鏡像倉庫
企業版執行個體有安全掃描,安全通路控制設定等功能,配置鏡像通路控制到辦公區域。
4.開發環境 Kubernetes
根據需求建立1-多個 k8s 叢集,k8s 叢集會預設建立apiserver 的 SLB,預設名稱為 K8sMasterSlbIntranet。
如果需要雲效直接釋出到 kubernetes 叢集,需要 kubernetes 叢集必須建立公網 SLB 提供給雲效通路,可以設立通路控制,隻允許雲效的 IP 通路。