k8s集群CI&CD集成介紹四:Jenkins部署應用到rancher集群

2021-01-06 網易

  容器編排從幾年前群雄割據、各方亂戰,到如今Google的k8s一統天下。能迅速力挽狂瀾,已說明其技術實力。但k8s複雜的架構,不太友好的文檔,確實讓一些初學者望而卻步。近期正好一直在學習k8s的東西,走了一些彎路。整理出來以備參考。

  由於內容過多,本文將分多章介紹k8s集群構建過程,並發布demo到k8s集群,簡單演示一個完整CI/CD的自動化過程。各章節內容如下:

  一、k8s集群環境準備

  二、rancher搭建k8s集群環境

  三、rancher應用部署

  四、Jenkins部署應用到rancher集群

  部署資源

  centos7.7虛擬機3臺,對應ip如下:

  - 192.168.0.110- 192.168.0.111- 192.168.0.112

  192.168.0.110 : rancher和jenkins部署機器。

  192.168.0.111/192.168.0.112:k8s集群node節點。筆者機器資源所限,超過3臺虛擬機,個人筆記本電腦將無法工作。使用者可根據具體情況增加虛擬機節點。

  Jenkins安裝

  192.168.0.110 虛擬機安裝Jenkins程序

  docker run \ -u root \ --restart=always \ -d \ -p 8080:8080 \ -p 50000:50000 \ -v /data/jenkins_home:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /data/repository:/root/.m2/repository \ jenkinsci/blueocean

  啟動完成,瀏覽器訪問http://192.168.0.110:8080 地址。

  首次啟動,初始密碼位於/data/jenkins_home/secrets/initialAdminPassword文件中,設置密碼後,更新常用Jenkins插件。

  Jenkins安裝Redeploy Rancher2.x Workload 插件

  Redeploy Rancher2.x Workload插件,可通過Jenkins發布rancher集群中安裝的應用服務。

  注意該插件只支持redeploy rancher集群中的應用,不能發布新應用。即該插件只支持rancher集群中配置好的應用,插件僅通過api調用rancher中workload完成的配置,觸發rancher將應用部署到集群中。新應用需先在rancher中配置workload,然後Jenkins插件方能生效。

  插件安裝完成後,瀏覽器http://192.168.0.110:8080/restart ,重啟Jenkins使插件立即生效。

  Jenkins新建任務,輸入app-demo,並選擇自定義方式。

  

  設置git倉庫,這裡為阿里雲code倉庫。

  

  添加參數化構建配置

  

  添加boolean參數buildImage(打包鏡像)

  

  添加string參數appName(應用鏡像名稱)

  

  添加string參數version(應用版本號)

  

  添加maven構建

  

  添加shell腳本

  

  

  按上圖添加以下shell內容,其中shell變量來源於Jenkins上一步參數構建值。

  #!/bin/bash# 切換到部署jar包目錄,替換為實際項目目錄cd ****/***-demoecho "cur dir is: `pwd`"#登錄阿里雲docker鏡像倉庫,公開鏡像倉庫跳過這一步,自行替換帳號密碼docker login --username=***** registry.cn-shanghai.aliyuncs.com -p=***if [ $buildImage == true ]; then echo "start to build docker images..." #構建docker鏡像 docker build --tag=$appName:$version . #將鏡像推向阿里雲註冊倉庫 docker push $appName:$versionfi

  添加rancher插件

  添加rancher插件前,先要在rancher工具中添加api key。

  登錄rancher工具界面。點擊右上角用戶頭像 - API&Key 按鈕,添加api key。

  

  點擊 addKey。

  

  填入描述,點擊create。

  

  記住對應信息,右側按鈕複製內容。注意:秘鑰信息只有新建時明文顯示,關閉後無法查看,請提前做好保存,後續jenkins插件會用到。

  

  jenkins 中添加rancher redeploy插件

  

  註:若插件面板有亂碼,可參考後面rancher redeploy 亂碼解決

  

  上圖填寫內容說明:
點擊 添加 ,新增rancher api 認證。

  

  按上圖,填寫相應信息。其中endpoint 和 Bearer Token對應rancher中添加api key是預先生成的值。

  點擊 添加 完成密鑰設置。

  

  工作負載地址,可以從rancher界面app-demo應用workload列表頁 - 右側編輯 - view in api 查看。

  值為打開瀏覽器頁面url中/project/* 那部分路徑。

  

  

  點擊保存,完成jenkins任務配置。

  rancher redeploy 亂碼解決

  jenkins版本可能導致rancher redeploy亂碼問題。

  下載redeploy-rancher2-workload.jar到本地。

  https://gitee.com/eagle_daiq/pub/blob/master/redeploy-rancher2-workload.jar

  通過ftp上傳本地文件到,jenkins所在機器/data/jenkins_home/plugins/redeploy-rancher2-workload/WEB-INF/lib目錄,覆蓋redeploy-rancher2-workload.jar文件。重啟jenkins。

  jenkins部署發布

  點擊jenkins中app-demo任務,開始構建。

  

  構建完成,查看rancher app-demo workload列表頁,可見最新版本20200503版本部署已被觸發。

  
總結

  到此,通過jenkins發布app-demo項目的CI/CD自動化集成已全部完成。

  本系列文章介紹了rancher搭建k8s集群,並通過一個簡單maven app-demo示例,演示jenkins到rancher工具的集成過程。希望對初入k8s集群學習的朋友有所幫助。有任何疑問可留言討論。

  清風明月eagle

特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺「網易號」用戶上傳並發布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關焦點

  • k8s集群CI/CD集成介紹四:Jenkins部署應用到rancher集群
    容器編排從幾年前群雄割據、各方亂戰,到如今Google的k8s一統天下。能迅速力挽狂瀾,已說明其技術實力。但k8s複雜的架構,不太友好的文檔,確實讓一些初學者望而卻步。近期正好一直在學習k8s的東西,走了一些彎路。整理出來以備參考。由於內容過多,本文將分多章介紹k8s集群構建過程,並發布demo到k8s集群,簡單演示一個完整CI/CD的自動化過程。
  • k8s集群CI/CD集成介紹三:rancher應用部署
    容器編排從幾年前群雄割據、各方亂戰,到如今Google的k8s一統天下。能迅速力挽狂瀾,已說明其技術實力。但k8s複雜的架構,不太友好的文檔,確實讓一些初學者望而卻步。近期正好一直在學習k8s的東西,走了一些彎路。整理出來以備參考。由於內容過多,本文將分多章介紹k8s集群構建過程,並發布demo到k8s集群,簡單演示一個完整CI/CD的自動化過程。
  • k8s集群CI/CD集成介紹二:rancher搭建k8s集群環境
    容器編排從幾年前群雄割據、各方亂戰,到如今Google的k8s一統天下。能迅速力挽狂瀾,已說明其技術實力。但k8s複雜的架構,不太友好的文檔,確實讓一些初學者望而卻步。近期正好一直在學習k8s的東西,走了一些彎路。整理出來以備參考。由於內容過多,本文將分多章介紹k8s集群構建過程,並發布demo到k8s集群,簡單演示一個完整CI/CD的自動化過程。
  • k8s集群CI/CD集成介紹一:環境準備
    容器編排從幾年前群雄割據、各方亂戰,到如今Google的k8s一統天下。能迅速力挽狂瀾,已說明其技術實力。但k8s複雜的架構,不太友好的文檔,確實讓一些初學者望而卻步。近期正好一直在學習k8s的東西,走了一些彎路。整理出來以備參考。由於內容過多,本文將分多章介紹k8s集群構建過程,並發布demo到k8s集群,簡單演示一個完整CI/CD的自動化過程。
  • CentOS7下利用Rancher搭建K8s集群
    Rancher是一套容器管理平臺,它可以幫助組織在生產環境中輕鬆快捷的部署和管理容器Rancher用戶可以選擇使用Rancher Kubernetes Engine(RKE)創建Kubernetes集群,也可以使用GKE,AKS和EKS等雲Kubernetes服務。Rancher用戶還可以導入和管理現有的Kubernetes集群。
  • 我司基於K8s高可用集群架構
    業務全面k8s化,構建以kubernetes為核心的ci/cd流程。分支(時刻確保developer分支處於最新的代碼),developer分支合併到需要發版環境對應的分支,觸發企業微信告警,觸發部署在k8s集群的gitlab-runner pod,新啟runner pod 執行ci/cd操作。
  • Jenkins master位於k8s集群外,實現jenkins slave的動態構建
    基於&34;與k8s集成,可以使Jenkins slave以pod的形式在k8s集群內部動態構建、運行、銷毀等。通過 jenkinsci/kubernetes-plugin 了解到,Jenkins master既可以運行在k8s集群內,也可運行在k8s集群外,但是Jenkins slave的整個生命周期都是在k8s集群內,並且通過JNLP與Jenkins master連接。
  • K8S+Jenkins實現SpringBoot項目CI/CD
    K8S+Jenkins+maven基礎環境目前能夠實現:Jenkins slave在K8S集群內的動態構建;Maven實現編譯、打包、構建鏡像並push到遠程docker倉庫;剩下的工作需在Jenkins
  • 一起學習rancher-04-安裝kubernetes集群
    一起學習rancher系列: 一、環境準備系統版本:centos7.7Rancher版本:2.5.1K8s版本:1.19.3準備了4臺機器Rancher server:192.168.201.2k8s集群機器
  • 用rancher2分分鐘搭建k8s集群
    Kubernetes簡單介紹先簡單介紹下Kubernetes,簡稱k8s。k8s擴展docker單個容器的管理功能,實現誇多主機的問題,容器編排要負責網絡,存儲,安全等問題。具體來講包括以下幾點,可以讓應用的管理和部署得到巨大紅利,實現devops故障遷移:當某一個node節點關機或掛掉後,node節點上的服務會自動轉移到另一個node節點上,這個過程所有服務不中斷。
  • 記一次Gitlab-CI集成K8S實錄
    CI集成K8S跟集成其他環境步驟相同,同樣需要兩步,第一步,安裝Gitlab-Runner及註冊授權,需要注意的是,需要選擇Kubernetes執行器;第二步是還是編寫.gitlab-ci.yaml文件,只是需要Docker等容器命令的相關知識。此外,由於Kubernetes是基於RBAC角色權限設計,需要有Kubernetes Service Account具有操縱K8S集群的權限。
  • k8s管理 jenkins集群彈性伸縮
    碼雲現成https://gitee.com/q7104475/k8s-jenkins-cik8s-jenkins-ci介紹/參考文章在Kubernetes上部署和伸縮Jenkins鏡像內置常用插件/常用命令/mvn npm參考文章-在Kubernetes上部署和伸縮Jenkins安裝教程構建鏡像docker build -f Dockerfile-jenkins-master -t
  • Rancher 2.2 GA:企業進入應用跨多K8S集群、混合雲部署新時代
    Rancher Global DNS能配置和維護與應用程式的Kubernetes Ingress的IP位址對應的外部DNS記錄,從而解決上述問題。這本身並非一個新奇的概念,但Rancher的創新之處在於它可以為部署在多個集群中的應用程式執行這一操作。  用戶現在可以根據需要,將應用程式部署到任意數量的集群,並且讓DNS自動更新,以指向所有集群的應用程式入口。
  • 在MacOS上使用K3d和Rancher構建K8S集群
    在本文中,我們介紹基於K3D在macOS上本地運行Rancher以進行Kubernetes集群開發和測試。 Helm將Rancher安裝到集群中: 應該看到如下輸出:
  • MacOS上使用K3d和Rancher管理本地K8S集群環境
    在本文中,我們介紹基於K3D在macOS上本地運行Rancher以進行Kubernetes集群開發和測試。概述K3D是輕量級包裝,可在Docker中運行Rancher Labs的K3S。K3s是經過認證的Kubernetes發行版,適用於邊緣和物聯網等只具有較小的資源空間的設備。和KiND一樣,K3D使用容器運行時而不是虛擬機部署,從而節省了寶貴的資源。
  • 集群外部署Prometheus+Grafana監控K8S解析
    簡介Prometheus+Grafana作為監控K8S的解決方案,大都是在K8S集群內部部署,這樣可以直接調用集群內的cert及各種監控url,但是增加了集群的資源開銷。因此在資源有限的情況下,我更傾向於K8S集群外獨立部署Prometheus+Grafana。
  • 使用 GitLab CI 與 Argo CD 進行 GitOps 實踐
    應用程式可以通過 Argo CD 提供的 CRD 資源對象進行配置,可以在指定的目標環境中自動部署所需的應用程式。關於 Argo CD 更多的信息可以查看官方文檔了解更多。將構建應用程式,打包成 Docker 鏡像,將鏡推送到 Docker 倉庫,並自動更新 Kubernetes 資源清單,此外,一般情況下將應用部署到生產環境需要手動操作。
  • Rancher Submariner:實現K8S跨集群網絡
    2019年3月12日,業界領先的容器管理軟體提供商Rancher Labs(以下簡稱Rancher)宣布推出全新開源項目Submariner,支持多個Kubernetes集群之間的跨集群網絡連接。Submariner將為部署在需要相互通信的多個Kubernetes集群中的微服務提供網絡連接。
  • 離線安裝Spinnaker到K8S集群,你真的需要看這篇文章
    Spinnaker 使開發人員可以更輕鬆地專注於編寫代碼,而無需擔心底層的雲基礎設施,它可以和 Jenkins 以及其他流行的構建工具無縫集成。但是由於 GFW 的原因導致在國內部署Spinnaker非常困難,當然,你可以使用代理,但這就與本文的初衷不符。經過多次嘗試,終於在不使用代理的情況下安裝spinnaker,廢話不多說,直接進入正題。
  • 一起學習rancher-03-新版2.5.1和導入k8s
    一起學習rancher系列: 前面文章已經了解了rancher基本操作,我後面實驗還是以2.5為主,符合趨勢。一、Rancher2.*介紹Rancher 1.x 最初是為了支持多種容器編排引擎而構建的,其中包括自己的容器編排引擎 Cattle。