《OpenShift 4.x HOL教程汇总》

文章目录

  • 创建CodeReady项目
  • Live Coding
  • 打包Java应用
  • 编译成可执行应用
  • 配置服务健康检查
  • 向OpenShift部署Quarkus应用

说明:

  1. 本系列参考了https://github.com/RedHat-Middleware-Workshops/quarkus-workshop。
  2. 运行环境OpenShift 4.4+CodeReady Workspaces。
  3. 通过Operator创建CodeReady Workspaces运行环境请参见“《OpenShift 4 之 用CodeReady Workspaces开发Quarkus云原生应用》的第一节说明”。

创建CodeReady项目

  1. 登录CRW后进入“Get Start”,选中Quarkus Tools区域,然后点击CREATE & OPEN按钮右侧下拉菜单,进入Create & Processed Editing。
  2. 将NAME设为Quarkus-Workshop,在SELECT STACK区域选中Quarkus Tools。然后在PROJECTS区域点击Remove,删除quarkus-quickstarts项目。
  3. 在Add or Import Project中的Git一栏中填入“https://github.com/RedHat-Middleware-Workshops/quarkus-workshop-labs”,然后点击Add。
  4. 点击New Workspace页面上方CREATE & OPEN按钮右侧,在下拉菜单中点击Create & Proceed Editing,此时进入以下界面。在Quarkus-Worshop的Workspace中进入Devfile栏目,将以下内容替换原有“commands”的所有内容。Save内容后Open这个Workspace。
components:- id: redhat/quarkus-java11/latesttype: chePlugin- mountSources: trueendpoints:- name: quarkus-development-serverport: 8080- name: hello-greeting-endpointport: 8080attributes:path: /hello/greeting/che-usermemoryLimit: 4Gitype: dockerimagevolumes:- name: m2containerPath: /home/jboss/.m2alias: mavenimage: >-quay.io/openshiftlabs/quarkus-workshop-stack:2.1env:- value: /home/jboss/.m2name: MAVEN_CONFIG- value: >--Xmx4G -Xss128M -XX:MetaspaceSize=1G -XX:MaxMetaspaceSize=2G-XX:+CMSClassUnloadingEnabledname: MAVEN_OPTS
apiVersion: 1.0.0
commands:- name: Run Testsactions:- workdir: '${CHE_PROJECTS_ROOT}'type: execcommand: 'mvn verify -f ${CHE_PROJECTS_ROOT}/quarkus-workshop-labs'component: maven- name: Start Live Codingactions:- workdir: '${CHE_PROJECTS_ROOT}'type: execcommand: >-mvn clean compile quarkus:dev -f${CHE_PROJECTS_ROOT}/quarkus-workshop-labscomponent: maven- name: Package App for OpenShiftactions:- workdir: '${CHE_PROJECTS_ROOT}'type: execcommand: >-mvn package -DuberJar=true -DskipTests -f${CHE_PROJECTS_ROOT}/quarkus-workshop-labscomponent: maven- name: Build Native Appactions:- workdir: '${CHE_PROJECTS_ROOT}'type: execcommand: >-mvn package -Pnative -DskipTests -f${CHE_PROJECTS_ROOT}/quarkus-workshop-labscomponent: maven- name: Start Debugger on 5005actions:- referenceContent: |{"version": "0.2.0","configurations": [{"type": "java","request": "attach","name": "Attach to App","hostName": "localhost","port": 5005}]}type: vscode-launch

Live Coding

  1. 在Quakus-Workshop中打开quakus-workshop-labs项目中的src/main/java/org/acme/people/rest/GreetingResource.java文件查看代码。
  2. 击窗口右侧的Start Live Codeing,然后在下方的窗口查看编译输出。
  3. 在编译过程中打Open Link(会打开PREVIEW窗口),并允许使用5005端口。
  4. 在Workspace中的PREVIEW中的地址栏最后添加"/hello",然后确认页面返回hello。另外还可通过打开一个“_ New Terminal”,在其中运行以下命令查看运行。
$ curl http://localhost:8080/hello


5. 修改GreetingResource.java的代码,将"hello"改为“hola”。保存后按照(8)确认返回结果已经变为“Hola”。

打包Java应用

  1. 点击Workshop的“Package App for OpenShift”,OpenShift会打开新窗口将应用打包,最后在项目中的target目录中可以看到people-1.0-SNAPSHOT-runner.jar文件。
  2. 为了区别缺省使用的8080端口,运行以下命令,运行编译好的jar文件,并监听在8081端口。
$ java -Dquarkus.http.port=8081 -jar $CHE_PROJECTS_ROOT/quarkus-workshop-labs/target/*-runner.jar
  1. 打开另一个Terminal,然后运行以下命令,确认可正常返回结果。
$ curl http://localhost:8081/hello

编译成可执行应用

  1. 点击Workshop的“Build Native
    App”,OpenShift会打开新窗口将应用打包,最后在项目中的target目录中可以看到people-1.0-SNAPSHOT-runner可执行程序。
  2. 打开一个Terminal,然后运行可执行程序。
$ $CHE_PROJECTS_ROOT/quarkus-workshop-labs/target/people-1.0-SNAPSHOT-runner -Dquarkus.http.port=8081
  1. 在打开一个新的Terminal,然后运行以下命令,确认可以返回结果。
$ curl http://localhost:8081/hello

配置服务健康检查

  1. 在Terminal中执行以下命令,为项目添加health的扩展。
$ mvn quarkus:add-extension -Dextensions="health" -f $CHE_PROJECTS_ROOT/quarkus-workshop-labs

在添加为后,在项目的pom.xml文件中确认增加了以下代码。

<dependency><groupId>io.quarkus</groupId><artifactId>quarkus-smallrye-health</artifactId>
</dependency>
  1. 在Terminal中执行以下命令,确认返回结果。
$ curl http://localhost:8080/health/ready
{"status": "UP","checks": []
}
$ curl http://localhost:8080/health/live
{"status": "UP","checks": []
}


2. 在org.acme.people.health中增加以下内容的SimpleHealthCheck.java,然后再次执行上一步确认live和ready。

package org.acme.people.health;import org.eclipse.microprofile.health.HealthCheck;
import org.eclipse.microprofile.health.HealthCheckResponse;
import org.eclipse.microprofile.health.Readiness;
import javax.enterprise.context.ApplicationScoped;@ApplicationScoped
@Readiness
public class SimpleHealthCheck implements HealthCheck {@Overridepublic HealthCheckResponse call() {return HealthCheckResponse.named("Simple health check").up().build();}
}

向OpenShift部署Quarkus应用

  1. 打开一个新的Terminal,然后执行以下命令登录OpenShift。
$ oc login https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT --insecure-skip-tls-verify=true
  1. 创建一个新项目。
$ oc new-project <USER_ID>-project
  1. 执行命令,基于ubi-quarkus-native-binary-s2i:19.3.1镜像,部署和运行people-1.0-SNAPSHOT-runner可执行应用。
$ oc new-build quay.io/quarkus/ubi-quarkus-native-binary-s2i:19.3.1 --binary --name=people -l app=people
$ oc start-build people --from-file $CHE_PROJECTS_ROOT/quarkus-workshop-labs/target/*-runner --follow
$ oc new-app people -l "app.openshift.io/runtime=quarkus,app.kubernetes.io/part-of=people"
$ oc expose svc/people
$ oc rollout status -w dc/people
  1. 访问部署的应用。
$ curl $(oc get route people --template='{{ .spec.host }}')/hello
  1. 在该用户的OpenShift的Developer控制台中,可以在Topology视图中看到该部署的基于Quarkus应用。
  2. 执行命令,配置健康检查。
$ oc set probe dc/people --readiness --initial-delay-seconds=5 --period-seconds=5 --failure-threshold=20 --get-url=http://:8080/health/ready
$ oc set probe dc/people --liveness --initial-delay-seconds=5 --period-seconds=5 --failure-threshold=20  --get-url=http://:8080/health/live

OpenShift - 用CodeReady开发云原生应用(1)- 将可执行Quarkus应用部署到OpenShift相关推荐

  1. 【云原生之Docker实战】在Docker环境部署Answer问答平台

    [云原生之Docker实战]在Docker环境部署Answer问答平台 一.Answer介绍 二.检查本地Docker环境 1.检查本地Docker版本 2.检查Docker状态 3.检查docker ...

  2. 第一个云原生步骤:自动化构建、测试和部署(二)

    目录 设置项目 创建构建管道 使用TypeScript创建Azure Function 这个怎么运作 发布管道 下一步 下载源文件 - 8.1 KB 云原生开发不仅仅涉及在云中运行代码.正如我们在本系 ...

  3. 【云原生】第一篇--应用(Application)部署容器化演进之路

    应用(Application)部署容器化演进之路 一.应用程序部署痛点 1.1 应用程序部署流程 1.2 应用程序扩缩容 1.3 应用程序多环境部署 二. 计算资源应用演进过程 2.1 使用物理服务器 ...

  4. k8s挂载目录_拥抱云原生,如何将开源项目用k8s部署?

    k8s以及云原生相关概念近年来一直比较火热,阿丸最近搞了个相关项目,小结一下. 本文将重点分享阿里开源项目otter适配k8s部署的改造过程,其中的改造过程和技巧应该适用于将大多数开源项目改造到k8s ...

  5. 【云原生 | Kubernetes 系列】--持续交付和持续部署GITOPS(上)

    1. 持续交付和持续部署 Continuous Integration Continuous Delivery Continuous Deployment Plan Code Build Test R ...

  6. Nocalhost: 云原生开发新体验

    文章目录 1. 云原生场景下的开发痛点 本地部署 VS 集群部署 2. 目前主流的云原生开发方式 手动打包推送镜像 CI/CD 流水线 流量转发 在容器里进行开发 3. Nocalhost 初体验 4 ...

  7. 开放下载 | 《Knative 云原生应用开发指南》开启云原生时代 Serverless 之门

    点击下载<Knative 云原生应用开发指南> 自 2018 年 Knative 项目开源后,就得到了广大开发者的密切关注.Knative 在 Kubernetes 之上提供了一套完整的应 ...

  8. 云原生全景图之五:应用程序定义和开发层

    作者 | Catherine Paganini.Jason Morgan 来源 | K8sMeetup 头图 | 下载于视觉中国 前文介绍了如何将所有应用程序组件作为整体来编排和管理(编排和管理层). ...

  9. 基于Rainbond开发Python云原生应用

    组件开发 这里使用 基于源码中的 Dockerfile 创建组件,因为这种方式能兼容所有类型的项目. 识别为 Dockerfile 类型的源码将使用类似于 docker build -t xxx/xx ...

最新文章

  1. 数据库如何生成sql语句
  2. centos7中安装RocketMQ4.7版本
  3. 一个前端岗位电话面试所带来的问题的思考
  4. linux system函数传参,Linux系统调用例程system_call和参数传递
  5. excel表格打印每页都有表头_这么漂亮的Excel表格,用黑白打印机打印真是可惜了...
  6. 《精通ArcGIS Server 应用与开发》——1.3 ArcGIS 10 Mobile新特性1
  7. 实战 | 后端日志的前世今生
  8. linux换源_Win10子系统(linux)安装及迁移
  9. 怎样用DNSPod做负载均衡?
  10. 【刘润五分钟商学院】-151幸存者偏见
  11. HTML-淘宝导航条
  12. ecshop与java的关系_ecshop模板的原理分析
  13. Folium库使用心得(二)
  14. 从mysql2ch到synch,一次重构与升级
  15. 苹果或研发第二代智能手表
  16. 适合中小企业的项目管理系统有哪些?
  17. Canny边缘检测算法(python 实现)
  18. 有计算机考试励志的文案,抖音冲刺高考励志文案
  19. 用jQuery实现qq音乐播放器
  20. 数据分析步骤——《谁说菜鸟不会数据分析》的总结

热门文章

  1. Oracle中怎么设置一列的列宽,oracle - 所有列的Oracle列宽 - 堆栈内存溢出
  2. spring 扫描所有_自定义Spring事件监听机制
  3. php修改学生信息代码_PHP程序员从入门到佛系第二十八弹:PHP $_POST 变量
  4. 防qq页面多边形html5,高仿QQ Xplan的H5页面
  5. jsp mysql更新表数据库_一个关于JSP更新数据库MySQL中的表的问题!
  6. python数据类型可变和不可变_python可变数据类型vs不可变数据类型
  7. zipkin使用_我的Spring Cloud(十):Zipkin 服务跟踪
  8. keil5函数 默认返回值_Python列表有什么内置函数可以使用,怎么使用这些函数
  9. 山东外贸职业学院王彩霞老师网上考试系统及c语言考试题库》,2019年山东外贸职业学院单独招生考试测试内容及安排...
  10. 米筐量化不支持c语言_AQ答疑:三分钟入门量化投资