开发者openshift4使用入门教程 - 2 - 部署JAVA应用

2022-04-21 14:09:44 浏览数 (1)

前言

新的系列文章更新: 《开发者openshift4使用入门教程》

我所在的公司目前使用的K8S是RedHat的OpenShift 4, 虽然有官方文档, 并且有专门的 Develop 章节, 但是实际使用发现, 开发者(特别是中国的开发者, 传统行业金融行业的开发者)关注的功能和章节相去甚远. 所以我专门针对开发经常问我的问题, 总结出来这个系列文章.

希望对在使用OpenShift 4的开发者会有所帮助. ❤️❤️❤️

一 概述

一句话总结本文内容:

如何将以下应用部署到容器云平台:

  1. java应用
  2. 提供方式为二进制工件(war包, jar包)

二 准备工作

要部署到容器平台, 你需要有:

  1. OpenShift 4 的租户(Project) (如果你是OpenShift 4管理员,你自然就有;如果你是使用者,请向管理员申请租户)
  2. oc 命令行工具(CLI), 下载并解压, 并加入到PATH中.
    1. linux版本
    2. mac版本
    3. windows版本
    4. 互联网链接在这里
  3. 登录到容器云平台
    1. 环境命令如下: oc login -u <username> -p <password> --server=https://api.caas.example.com.cn:6443 1
  4. 跳转到对应的项目租户: oc project <your-project>

三 步骤

具体的: 将JAVA应用的二进制工件(war包, jar包)部署到OpenShift 4的步骤.

  1. 创建新应用(微服务或普通应用):
    1. Jar包: spring 微服务应用, 只需要openjdk 8: oc new-app --name=<app-name> --binary=true --image-stream=redhat-openjdk18-openshift:1.72
    2. War包: war包应用, 需要tomcat 8部署: oc new-app --name=<app-name> --binary=true --image-stream=webserver31-tomcat8-openshift:1.43
  2. 上传 JAVA应用包, 构建镜像. 构建完成后会自动触发trigger, 滚动部署java应用新版本.
    1. 命令如下: oc start-build <app-name> --from-dir </path/to/your/app-name/>
    2. </path/to/your/app-name/>最简目录结构为:
代码语言:javascript复制
$ tree .  
.
└── app-name.war(或.jar)

0 directories, 1 file
代码语言:javascript复制
Uploading directory "." as binary input for the build .....
Uploading finished
build.build.openshift.io/<app-name> started
代码语言:javascript复制
replication controller "<app-name>-x" successfully rolled out
  1. (可选): 创建域名: 要从浏览器通过网页访问部署的应用, 必须将刚部署的应用创建域名后暴露(expose)到OpenShift 4 集群外部(公司内网或互联网). 命令为: oc expose svc <app-name>
    1. 之后可以通过如下命令查看域名并访问:
代码语言:javascript复制
 $ oc get route <app-name>
NAME             HOST/PORT                                         PATH   SERVICES   PORT     TERMINATION           WILDCARD
<app-name>           <app-name>-<project-name>.caas.example.com None <app-name> 8080-tcp  

四 更新应用

<app-name>发布后, 后续更新, 执行如下命令:

代码语言:javascript复制
$ oc start-build <app-name> --from-dir </path/to/your/app-name/>
Uploading directory "." as binary input for the build .....
Uploading finished
build.build.openshift.io/<app-name> started
$ oc logs -f build/<app-name>
...
$ oc rollout status dc/<app-name>
replication controller "<app-name>-x" successfully rolled out

前提: </path/to/your/app-name/>下的java二进制包已经更新.

0 人点赞