java项目规范
- 项目中必须存在dockerfile文件,可以存放项目根目录也可以在其他目录,点击查看模板
- 项目中必须存在deployment.yaml文件(kind: Deployment),点击查看模板
- 项目中必须存在service.yaml文件(kind: Service),点击查看模板
- 如果需要均衡负载项目中可以创建ingress.yaml(kind:Ingress)
- 如果需要存储项目中可以创建pvc.yaml(kind:PersistentVolumeClaim),点击查看模板
- maven编译方式pom.xml,点击查看模板
- 项目中必须存在就绪探针,可以是http协议,无需参数,返回状态码200
也可以使用一个文件:点击查看一个文件部署
前期准备
- dockerhub中必须提前有对应的仓库地址或位置
- devops运维用户必须在devops项目中,并赋予 operator 角色(否则只能创建无法运行)
修改settings.xml使编译加速(非必须)
- 点击平台管理进入集群管理或者进入系统企业工作空间(system-workspace)进入kubesphere-devops-worker项目
- 在配置字典中搜索ks-devops-agent配置文件,该文件中包含maven的settings.xml配置修改保存即可
步骤1: 创建凭证
进入devops项目创建相关凭证
凭证名称 | 凭证类型 | 凭证用途 |
---|---|---|
dockerhub-id | 用户名和密码 | 登录docker镜像仓库,上传镜像使用 |
kubeconfig | kubeconfig | 不需要修改内容,操作Kubernetes接口的凭证,最后要运行yaml创建相关资源对象使用 |
git-id | 用户名和密码 | 访问源代码git仓库的账号密码,拉取源代码使用 |
步骤2: 创建流水线
- 点击创建填写基本信息,代码仓库不用选择,点击下一步。
- 高级设置中添加四个构建参数,参数可以传入到流水线中 $参数名称 的方式引用,添加完成后点击创建。
类型 | 名称 | 值 | 描述 |
---|---|---|---|
字符串 | REGISTRY | docker.io | docker镜像仓库地址,改为自己的地址带端口号 |
字符串 | DOCKERHUB_NAMESPACE | javademo | docker镜像在dockerhub中的明明控件或位置 ,需要提前在dockerhub中创建 |
字符串 | APP_NAME | devops-sample | java项目名称:用于docker镜像名称,配置文件名称,k8s的lable名称等 |
字符串 | IMAGE_TAG | 1.0.0 | docker镜像的版本 |
字符串 | STORAGE_CLASS_NAME | local | 存储卷类型 |
步骤3: 创建java项目配置文件
- 在配置字典中创建项目配置文件:名称为 $APP_NAME-config点击下一步(如javademo-config,需要手动替换APP_NAME)
- 配置文件中添加数据:键:application-k8s.yml 值:java项目实际配置文件内容,将配置文件内容粘贴进来
步骤3:拉取源代码
- 编辑流水线时不选择流水线模板,选择自定义流水线
- 在图形编辑面板上,点击空白处,从类型下拉列表中选择 node,从 Label 下拉列表中选择 maven
- 点击➕图标,添加步骤,选择git
步骤4:编译java源代码
- 点击➕图标添加步骤,选择指定容器,将其命名为 maven(暂不可为其他,由podTemplate决定),然后点击确定
- 点击 maven 容器下的添加嵌套步骤添加一个嵌套步骤。在列表中选择 shell 并在弹出窗口中输入以下命令,点击确定完成操作。
//跳过单元测试,使用自定义settings.xml文件进行打包
mvn -Dmaven.test.skip=true -gs `pwd`/configuration/settings.xml clean package
- 点击 maven 容器下的添加嵌套步骤添加一个嵌套步骤。在列表中选择 shell 并在弹出窗口中输入以下命令,点击确定完成操作。
//替换dockerfile中的环境变量后生成新的dockerfile文件
envsubst < Dockerfile-online > Dockerfile-online-re
4. 点击 maven 容器下的添加嵌套步骤添加一个嵌套步骤。在列表中选择 shell 并在弹出窗口中输入以下命令,点击确定完成操作。
//用新的dockerfile编译daocker镜像
docker build -f Dockerfile-online-re -t $REGISTRY/$DOCKERHUB_NAMESPACE/$APP_NAME:$IMAGE_TAG .