• 自建K8S-devops自动化流程


    在前文已经提到了关于自建k8s的文章。而且还涉及到如何搭建基于springcloud alibaba提下的微服务的基础服务。

    那现在面临的问题就是如何进行发布应用到集群。以下正文即是关于devops的整体搭建过程

    1、jenkins

    1)部署

    这里部署jenkins的服务使用的是docker,docker-compose如下

    1. version: "3" # docker-compose的版本
    2. services:
    3. app: # 服务名称
    4. image: jenkins/jenkins # 镜像
    5. container_name: jenkins # 容器名
    6. restart: always # 自动重启
    7. environment: # 环境
    8. TZ: Asia/Shanghai
    9. volumes: # 数据卷
    10. - /mnt/jenkins/jenkins_home:/var/jenkins_home
    11. ports: # 端口映射
    12. - "1080:8080"
    13. - "50000:50000"

    注意映射的目录一定要在宿主机存在。还有映射出来的端口一定别被别的服务占用 。这样映射出的jenkins的web端口是1080。

    后面就是按照jenkins的提示流程进行安装即可。这里面还需要一个插件。需要在 

    系统管理->插件管理->可选插件 中进行搜索“build-timestamp”,安装后重启jenkins后插件安装完成。

    2)配置插件

    系统管理->系统配置 中搜索 “Build Timestamp”,修改时间格式为无分隔符的效果

     

    3)配置节点 

    配置jenkins的node节点

    配置节点这里使用ssh进行通信,需要注意的按照贴图记性补充即可 【工作目录需要提前创建好】

     

    配置好了节点之后。节点能正常保持在线状态即可。

    4)配置git服务key

    这里配置拉取git的权限并没有在jenkins的插件中进行【当然通过插件也是可以的。】这里是在jenkins的docker服务中生成了密码加到了git服务中。

    进入jenkins 

    docker exec -it [container_id] /bin/bash

    按照这篇文件进行生成ssh公钥,并加到gitlab.com或者其他版本托管服务中去。

    centos下生成ssh公钥_匿称s的博客-CSDN博客_centos生成ssh密钥一 、设置git的user name和email:$ git config --global user.name "test"$ git config --global user.email "test@gmail.com"二、生成SSH密钥过程:1.查看是否已经有了ssh密钥:cd ~/.ssh如果没有密钥则不会有此文件夹,有则备份删除2.生存密钥:$ sshhttps://blog.csdn.net/bh451326803/article/details/52687449 配置好公钥之后需要在jenkins内部先拉取一下【一定要先拉取一下,因为有个confrm需要确认下...

    2、开通阿里云镜像仓库 

    先注册一个阿里云的账号。之后开通阿里云的镜像仓库,个人版即可。设置访问凭证密码-用于后期k8s拉取镜像服务使用

     

    3、打包服务器配置maven

    下载后maven后。解压到服务器中的一个目录即可,在构建流程中就直接写的绝对路径来使用maven的,所以没配置环境变量。

    4、构建基础镜像

    下载jdk包 jdk-8u201-linux-x64.tar.gz,并写好Dockerfile,dockerfile的内容如下

    1. FROM centos:centos7
    2. MAINTAINER ******
    3. RUN mkdir /usr/local/jdk
    4. WORKDIR /usr/local/jdk
    5. ADD jdk-8u201-linux-x64.tar.gz /usr/local/jdk
    6. ENV JAVA_HOME /usr/local/jdk/jdk1.8.0_201
    7. ENV JRE_HOME /usr/local/jdk/jdk1.8.0_201/jre
    8. ENV PATH $JAVA_HOME/bin:$PATH

     在dockerfile所在目录执行命令生成镜像

    docker build  -t jdk:1.8 .

     5、生成k8s拉取镜像仓库的凭证

    在k8s集群的master节点进行生成凭证。命令如下

     kubectl create secret docker-registry my-aliyun --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> --namespace=<namespace>

    your-name:登录阿里云用的账号【我的阿里云账号是邮箱】

    your-pwd: 在阿里云镜像仓库中设置的凭证密码

    your-email: 非必须

    namespace: 必须 需要与应用部署镜像对应的命名空间一致

    6、打包服务器安装sshpass

    sshpass这里用于给k8s主节点发送deployment.yaml文件使用。

    yum -y install sshpass

    至此需要安装和配置的都已经完成.....

    ----------------------------------------------------------------------------------------

    下面即是关键

    7、配置jenkins的构建流程

     检出:拉取服务git地址的代码到本地。

    打包:进入到指定的项目目录进行maven打包

    生成镜像:进入到项目中的dockerflile所给在目录后将jar包打包成docker镜像。【这里项目用到的dockerfile会在后面贴出示例】

    推送到阿里云镜像仓库:先登录阿里云镜像服务,后续再给镜像进行打tag,之后把镜像推送到阿里云镜像仓库。最后删除本地镜像【2个镜像】。

    生成k8s的deployment参数模板:依据项目中提前写好的deployment.yaml模板进行生成自己项目的deployment.yaml。【先复制出来一个deployment.yaml,通过sed进行模板中的镜像版本号进行替换】,替换成功后推送deployment.yaml到集群的主节点。

    启动镜像:根据deploy进行启动服务。

    以下是项目中用到的dockfile和deployment.yaml模板

    dockerfile模板。 【copy的目录要按照自己项目的实际情况进行替换】

    deployment.yaml的模板。如果启动需要增加额外的参数的话请在 containers 下的 args中进行增加即可。 

     

  • 相关阅读:
    阿里云服务器不能访问网络之安装mysql 提示连接超时
    技术人必读!一文读懂数据存储!
    spring cache (默认方式)
    windows nignx 常用操作命令(启动、停止、重启服务)
    央国企、金融信创改造必备的Windows AD域控国产替代方案
    互联网大厂测开领域调研
    Elasticsearch--easy-ES框架使用,轻松操作查询Elasticsearch,简化开发
    Excel和Chatgpt是最好的组合。
    金融领域:产业链知识图谱包括上市公司、行业和产品共3类实体,构建并形成了一个节点10w+,关系边16w的十万级别产业链图谱
    Spring整合RabbitMQ-配制文件方式-2-推模式消费者
  • 原文地址:https://blog.csdn.net/bh451326803/article/details/125404856