天天看點

雲效釋出不同租戶 k8s 應用1. 需求2.雲效與相關配置3.鏡像倉庫配置4.開發環境 Kubernetes

1. 需求

     開發環境是開發測試人員使用的應用環境,除了應用運作依賴的雲産品,還需要購買開發人員使用的雲産品和運維産品。

主要有:

  • 雲效持續內建
  • maven  私有倉庫
  • gitlib 代碼倉庫
  • Node子產品倉庫
  • 鏡像倉庫購買
  • 開發環境應用運作環境

2.雲效與相關配置

    2.1 maven 代碼倉庫:

    私有倉庫配置:

  1. maven 工具的 profiles 節點,增加私有倉庫的 repository; 
  2. 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 代碼庫:

本地彈内代碼遷移:

  1. 從原彈内代碼位址克隆一份裸版本庫到本地;
    git clone --bare  http://gitlab.xxx-inc.com/****/****.git           
  2. 雲效上建立項目和應用,并建立git倉庫;
  3. 将本地下載下傳的裸版本庫 push到建立的政務雲 git倉庫;
    1. 清理不需要儲存到雲效的原有分支,批量删除本地分支:
      git branch -a | grep  'release' | xargs git branch -D
      git tag | xargs -I {} git tag -d {}​           
    2. 上傳本地代碼庫
      git push --mirror https://xxx.code.aliyun.com/3333-zzzz/*****.git​           
    3. 這時可以看到完整的原彈内代碼已經遷移到了政務雲倉庫,并保留了彈内所有的變更送出記錄。
  4. 下載下傳政務雲到本地開發機器:
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 通路。