1. 程式人生 > 其它 >基於阿里雲k8s的配置例項

基於阿里雲k8s的配置例項

目錄

一.新環境起源

彩票專案中,有了測試和生產環境,現在需要在中間加一個UAT環境,類似於遊戲測試服的環境,用於模擬生產。

之前的專案中,均使用的jenkins+gitlab+阿里雲EDAS。jenkins使用pipline方式將gitlab的程式碼打包編譯,通過java指令碼,呼叫阿里雲API,將war包傳到EDAS服務上,EDAS服務使用這個war包啟動服務。

jenkins和gitlab組合比較常見,而EDAS是阿里的Paas服務,比較少見。EDAS將多臺ECS雲主機建立EDAS服務,阿里雲會自動在每臺ECS中安裝一個taobao-tomacat。也就是經過改造的tomacat,帶有驗證、監控等功能。如果不考慮附加功能,整體和tomcat沒區別。

UAT將採用EDAS-k8s叢集的方式,同時採用阿里雲的映象倉庫服務。

二.新環境配置

1.在gitlab中,新建二個專案:uat_pipline,uat_Dockerfile

2.uat_pipline中是用於k8s的pipline檔案,在內容上有些許變化
增加了2塊,下載了dockerfie專案,最後面釋出改了。

node () {
def dir = pwd()
def version = 'uat'

stage 'checkout'
  dir('uat_user'){
    git branch: branch, credentialsId: 'jenkins', url: 'http://1.1.1.1/test_user.git'
  }

  dir('uat_user_dockerfile'){
    git branch: 'master', credentialsId: 'jenkins', url: '[email protected]/uat_user_dockerfile.git'
  }

stage 'Build'
sh"""
  cd $dir/uat_user
  /usr/local/maven/bin/mvn clean install -Puat
"""

stage 'edas'
sh'''
  time=$(date +%m%d%H%M)
  ver=UAT
  cur_dir=uat_user
  mkdir -p /jenkins_bak/$ver/$cur_dir/$time
  mv $dir/uat_user/uat_usr.war /jenkins_bak/$ver/$cur_dir/$time

  cd $dir/uat_user_dockerfile
  /usr/local/git/bin/git pull origin master
  git tag -a release-v$time -m "docker images tag"
  git push origin master --tags
 
  /usr/bin/python3 /release-images.py
'''

}

3.在jenkins中,先將程式碼打包構建,然後去dockerfile檔案下去打一個tag標籤,這樣就會觸發映象倉庫的操作,阿里雲映象倉庫會按照Dockerfile去打映象。

FROM centos:7
MAINTAINER 企業級分散式應用服務EDAS研發團隊 <[email protected]>

#同步時間
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

#安裝打包必備軟體
RUN yum -y install wget unzip

#準備 JDK/Tomcat 系統變數與路徑
ENV JAVA_HOME /usr/java/latest
ENV CATALINA_HOME /home/admin/taobao-tomcat
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin

#設定 EDAS-Container / Pandora 應用容器版本
ENV EDAS_CONTAINER_VERSION V3.5.2
LABEL pandora V3.5.2

#下載安裝 JDK 8
RUN wget http://edas-bj.oss-cn-beijing.aliyuncs.com/agent/prod/files/jdk-8u191-linux-x64.rpm -O /tmp/jdk-8u191-linux-x64.rpm && \
  yum -y install /tmp/jdk-8u191-linux-x64.rpm && \
  rm -rf /tmp/jdk-8u191-linux-x64.rpm

#下載安裝 Ali-Tomcat 7.0.92 到 /home/admin/taobao-tomcat 目錄
RUN wget http://edas-bj.oss-cn-beijing.aliyuncs.com/edas-container/7.0.92/taobao-tomcat-production-7.0.92.tar.gz -O /tmp/taobao-tomcat.tar.gz && \
  mkdir -p ${CATALINA_HOME} && \
  tar -xvf /tmp/taobao-tomcat.tar.gz -C ${CATALINA_HOME} && \
  mv ${CATALINA_HOME}/taobao-tomcat-production-7.0.59.3/* ${CATALINA_HOME}/ && \
  rm -rf /tmp/taobao-tomcat.tar.gz ${CATALINA_HOME}/taobao-tomcat-production-7.0.59.3 && \
  chmod +x ${CATALINA_HOME}/bin/*sh

#下載war包,解壓內容到root目錄下
RUN wget http://1.1.1.1/UAT/uat_user.war -O /tmp/ROOT.war && \
  unzip /tmp/ROOT.war -d ${CATALINA_HOME}/deploy/ROOT/

#設定 Tomcat 安裝目錄為容器啟動目錄,並啟動tomcat
WORKDIR $CATALINA_HOME
CMD ["/bin/bash", "/bin/startup.sh"]

4.打包好的映象,會存放在映象倉庫,映象名就是提交的tag標籤名,也就是時間名

5.jenkins會執行python指令碼,呼叫阿里雲API去迴圈判斷映象倉庫的映象是否打成功。成功則呼叫EDAS的api去部署新的映象,若不成功則返回錯誤

6.在EDAS處可以新增services的ip

7.然後在阿里雲-容器服務k8s裡面,新增一個路徑,將servicesip對映為公網地址

本文版權歸作者所有,歡迎轉載,請務必新增原文連結。