栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

k8s上使用流水线部署应用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s上使用流水线部署应用

k8s上使用流水线部署应用 1. 部署流程

    为每一个项目准备一个Dockerfile;Docker按照这个Dockerfile将项目制作成镜像为每一个项目生成k8s的部署描述文件Jenkins编写好Jenkinsfile
2. 抽取生产环境配置

以gulimall-cart服务为例

    首先创建application-prod.properties文件,也可以使用yaml,但是我觉得yaml对格式的要求太高了就使用properties

    将之前的yaml文件转为properties文件,再复制到application-prod.properties,此处我使用的在线网站的方式https://www.toyaml.com/index.html

    更换成功后先测试本地环境是否能起来,排查是否有转换上的问题

    再将本地测试的mysql,redis,elasticsearch,nacos,rabbitmq,zipkin,sentinel链接换成线上的域名

    测试成功后再将所有服务的ip做域名替换

    将所有服务的正式环境端口都设为8080或者你喜欢的

    原因:这样的话我们就不需要在部署的时候关注服务本来的端口,服务被打成了镜像,在不同的容器中使用相同的端口是被允许的.而我们访问服务是通过注册中心,只关注服务名.

3. 开通阿里云容器镜像服务

此处设置的密码就是以后的登录密码

创建镜像仓库,选择代码源未本地仓库

3.1 本镜像仓库操作指南 3.1.1 登录阿里云Docker Registry
$ docker login --username=院长大人9 registry.cn-hangzhou.aliyuncs.com

用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。

您可以在访问凭证页面修改凭证密码。

3.1.2 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/zr-dev/gulimall-dev:[镜像版本号]
3.1.3 将镜像推送到Registry
$ docker login --username=院长大人9 registry.cn-hangzhou.aliyuncs.com
#docker tag镜像打一个新的标签,`registry.cn-hangzhou.aliyuncs.com/zr-dev/`前缀需要与阿里云的一致
#gulimall-dev是一个镜像仓库,就是我之前创建的仓库,可以随意修改,如果推送时没有该仓库,会自动创建
#例如我要打nginx的镜像:docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zr-dev/gulimall-nginx:[镜像版本
#号],主要将后缀修改即可
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/zr-dev/gulimall-dev:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/zr-dev/gulimall-dev:[镜像版本号]

请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。

3.1.4 选择合适的镜像仓库地址

从ECS推送镜像时,可以选择使用镜像仓库内网地址。推送速度将得到提升并且将不会损耗您的公网流量。

如果您使用的机器位于VPC网络,请使用 registry-vpc.cn-hangzhou.aliyuncs.com 作为Registry的域名登录。

3.1.5 示例

使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

$ docker imagesREPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZEregistry.aliyuncs.com/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB$ docker tag 37bb9c63c8b2 registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816

使用 “docker push” 命令将该镜像推送至远程。

$ docker push registry-vpc.cn-hangzhou.aliyuncs.com/acs/agent:0.7-dfb6816
4. 创建微服务Dockerfile
#构建的镜像设置基础镜像
FROM java:8
#为构建的镜像设置监听端口
EXPOSE 8080
#指定镜像内的目录为数据卷
VOLUME /tmp
#构建镜像时,复制上下文中的文件到镜像内
ADD target
        }
      }
      steps {
        container ('maven') {
          input(id: 'release-image-with-tag', message: '是否发布当前版本?')
          sh 'docker tag  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:SNAPSHOT-$BRANCH_NAME-$BUILD_NUMBER $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION '
          sh 'docker push  $REGISTRY/$DOCKERHUB_NAMESPACE/$PROJECT_NAME:$PROJECT_VERSION'
          withCredentials([usernamePassword(credentialsId: "$GITEE_CREDENTIAL_ID",
          passwordVariable: 'GIT_PASSWORD', usernameVariable: 'GIT_USERNAME')]) {
            sh 'git config --global user.email "2437264464@qq.com" '
            sh 'git config --global user.name "eric_zhou" '
            sh 'git tag -a $PROJECT_NAME-$PROJECT_VERSION -m "$PROJECT_VERSION" '
            sh 'git push http://$GIT_USERNAME:$GIT_PASSWORD@gitee.com/$GITEE_ACCOUNT/gulimall.git --tags --ipv4'
          }
        }
      }
    }
  }
  environment {
    DOCKER_CREDENTIAL_ID = 'alidockerhub'
    GITEE_CREDENTIAL_ID = 'gitee-id'
    KUBECONFIG_CREDENTIAL_ID = 'demo-kubeconfig'
    REGISTRY = 'registry.cn-hangzhou.aliyuncs.com'
    DOCKERHUB_NAMESPACE = 'zr-dev'
    GITEE_ACCOUNT = 'zhourui815'
    SONAR_CREDENTIAL_ID = 'sonar-qube'
    BRANCH_NAME = 'master'
  }
  parameters {
    string(name: 'PROJECT_VERSION', defaultValue: 'v0.0Beta', description: '项目版本')
    string(name: 'PROJECT_NAME', defaultValue: 'gulimall-gateway', description: '构建模块')
  }
}

最终效果

git上有对应的标签版本,镜像仓库中也会有对应的版本,并且最新的版本也是该版本

7. 读取远程代码中的流水线部署

7.1 第一次执行参数输入不显示,报错问题

当我们运行分支时需要填写参数,如下图但第一次运行不会弹出来

原因:因为我们输入参数是在拉取代码之前,还没有拉取到代码,Jenkinsfile中的参数配置自然没有办法生效

解决:只需要在第一次执行后拉取代码步骤后执行后,再次运行即可

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号