0°

基于阿里云k8s的配置实例

阿里云配置k8s会简单很多并且更加稳定。可以直接用SLB、ECS等现有资源做k8s组成,搭配gitlab和jenkins做自动发布。

一.新环境起源

彩票项目中,有了测试和生产环境,现在需要在中间加一个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: 'git@1.1.1.1/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研发团队 <edas-dev@list.alibaba-inc.com>

#同步时间
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映射为公网地址

0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论