openshift 部署

我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客。 您学习了如何使用Maven构建所谓的“胖子”,还使用Maven Docker插件对我们的微服务进行了Docker化并在Docker Machine上本地运行。 这是在本地测试事物的好方法。 到目前为止,缺少的是将其投入生产。 让我们看一下在OpenShift Origin上运行昨天的示例所需的步骤。

企业Java开发人员为什么要关心?

但首先,让我们简要地探讨为什么Enterprise Java开发人员甚至应该关心所有这些。 关于最近的炒作和嗡嗡声,我有些疑惑。 可以肯定的是,它们是一个有趣的运动场,您可以花费数小时下载容器图像并在笔记本电脑上运行它们。 但是到目前为止,将它们投入生产仍然是一个挑战。 Nigel的博客文章很好,关于Docker中不推荐使用的功能 。 它还有另一个宝石:一段叫做“企业影响力”。 主要报价是:

“我敢肯定,这类事情总是在很酷的时髦公司[...]中完成的,但是绝对不会在生锈的老公司[...]中完成。”

(奈杰尔·波顿)

我绝对可以支持。 企业开发人员,架构师和项目经理正在采用慢得多且保守的方法来采用所有这些技术。 他们正在寻找成功管理基础架构和项目的方法。 所有这些技术都将进入我们的日常工作中,但它们将以更易于管理的方式出现。 因此,我们只是在做作业,对所有这些进行自我教育,并评估可以帮助我们的解决方案。 但是足够的一般思想; 让我们开始部署和扩展Java EE应用程序。

先决条件

安装并运行OpenShift Origin,并按照以下步骤在Docker容器中构建WildFly Swarm JAX-RS微服务 。 因为这是示例,所以我将进一步部署和扩展。

注意:我同时使用OpenShift项目中的all-in-vm和Fabric8项目提供的Vagrant图像,它们可以互换。它们的工作原理几乎相同,并且都依赖于OpenShift Origin。 .f8,例如代码或示例之一中的https://vagrant.f8:8443,则可以使用localhost或其他可互换的主机映射。)

什么是OpenShift起源?

OpenShift Origin是Red Hat分布式应用程序系统OpenShift的上游开源版本。 我们启动了这个项目,以提供一个平台,开发团队可以在该平台上构建和管理基于Docker和Kubernetes的云本机应用程序。 您可以在Github上找到源代码 ,我们知道您有改善OpenShift Origin的好主意。 因此,请袖手旁观, 加入我们的社区 。

掌握所有集成技术有很多知识。 但是社区正在努力使这对我们(企业Java开发人员)尽可能地易于理解和管理。 为了给您OpenShift的简要概述,这是所有工作原理的简单示意图:

如果您一直在关注有关Docker和Kubernetes的最新消息,那么您会在这里看到很多常见的部分。 请求通过客户端进入,并在路由层结束。 它被分发到服务,并命中了一个容器,该容器在容器中运行我们的Docker映像之一。 吊舱由复制控制器控制。 当然,还有很多事情要做,但这应该是您现在需要了解的全部知识,以便对整个事情有一个初步的了解。

另一个更详细的概述为您提供了我们今天将要使用的零件的更精确的概念。

尤其是现在,集成的Docker注册表,映像流,部署配置和路由到我们的服务尤其重要。

基础知识–管理界面和客户端工具

设置无用信息框并将其启动后,您可以通过浏览到https:// localhost:8443来访问基于Web的管理。 多合一虚拟机没有配置安全性。 这意味着将使用“全部允许”身份提供者。 您可以使用任何非空的用户名和密码登录。 “管理员”用户是具有所有权限的管理用户。 使用“ admin / admin”登录可让您充分使用Origin。 基于Web的管理非常适合查看日志文件和整体情况。 它(尚未)功能齐全,并且不允许您进行调整或更改。 首先,您需要使用命令行工具:“ oc”。 与网络管理类似,您还必须登录到OpenShift:

oc login https://localhost:8443

还提示您输入用户名和密码(admin / admin),并显示项目列表:

Authentication required for https://vagrant.f8:8443 (openshift)
Username: admin
Password:
Login successful.Using project "default".
You have access to the following projects and can switch between them with 'oc project <projectname>':* default (current)* openshift* openshift-infra

现在,您可以在OpenShift中进行一些管理了。

公开内部Docker注册表

如果要在OpenShift中运行dockerized应用程序,而docker-hub中不提供该应用程序,则需要将其推送到OpenShift Docker Registry。 默认情况下,它不在外部公开,因此首先要做的是通过Route在OpenShift Docker Registry中公开该构建。

oc create -f registry-route.json

json文件包含路由的定义,并签入我的Github存储库。 确保根据需要调整第8行中的主机名 。 为了使该示例正常工作,我在Windows上的主机文件中添加了以下映射:

172.28.128.4 registry.vagrant.f8

成功创建路由后,您要做的就是相应地设置环境(在关注我的介绍性博客文章时,您已经完成了此操作。这仅是提醒):

set DOCKER_HOST=tcp://vagrant.f8:2375

创建一个项目和一个用户

让我们为示例创建一个新项目。 由于命名空间的原因,我们将在用户名和图像名后精确命名项目:在本示例中为“ myfear”。

oc new-project myfear --description="WildFly Swarm Docker Image on OpenShift v3" --display-name="WildFly Swarm Project"

描述和显示名称是可选的,但可以使其在Web界面中看起来更好。

让我们通过简单地以以下身份登录来创建用户“ myfear”:

c login https://vagrant.f8:8443 -u myfear

调整示例

我们需要从昨天的示例中更改pom.xml的某些部分。 首先,我们需要告诉Docker Maven插件,它应该使用运行在Registry.vagrant.f8:80的私有注册表。 想知道为什么不是5000端口? 因为,我们通过OpenShift公开了服务,而HAProxy通过端口80公开了该服务。取消注释pom.xml中的两行 :

<docker.host>tcp://vagrant.f8:2375</docker.host>
<docker.registry>registry.vagrant.f8:80</docker.registry>

并通过oc客户端工具获取用户myfear的登录令牌:

$oc whoami -t

这将输出如下内容:

ykHRzUGGu-FAo_ZS5RJFcndjYw0ry3bskMgFjqK1SZk

现在,在pom的<authConfig>元素中更新令牌。 基本上就是这样。

建立并推动形象

该图像已经在我之前的博客文章中构建,但是让我们在这里再次做一次:

mvn clean install docker:build

现在将映像推送到我们的OpenShift Docker Registry:

mvn docker:push

它将输出将映像推送到registry.vagrant.f8:80 / myfear / swarm-sample的过程。

在OpenShift上运行Docker映像

现在,我们仅使用常规方法在OpenShift上启动新的Docker映像:

oc new-app --docker-image=myfear/swarm-sample:latest

观察发生了什么:OpenShift实际上在幕后创建了一些资源,以便处理部署和运行此Docker映像。 首先,它创建了一个服务,该服务标识它将代理和负载平衡的一组Pod。 服务分配IP地址和端口对,访问时将重定向到适当的后端。您关心服务的原因是,它们基本上充当Pod与需要使用内部运行Pod的任何事物之间的代理/负载平衡器。 OpenShift环境。 使用describe命令获取有关从我们的映像创建的OpenShift的完整描述:

oc describe service swarm-sample

哪个输出:

Name:                   swarm-sample
Namespace:              myfear
Labels:                 app=swarm-sample
Selector:               app=swarm-sample,deploymentconfig=swarm-sample
Type:                   ClusterIP
IP:                     172.30.25.44
Port:                   8080-tcp        8080/TCP
Endpoints:              172.17.0.5:8080
Session Affinity:       None
No events.

到目前为止,我们缺少的一件事是通过路线的外部映射。 您还记得我们为Docker Registry做的事情吗? 这是到目前为止的下一步也是最后一步。

oc expose service swarm-sample --hostname=wildfly-swarm.vagrant.f8

您可能已经猜到了,我们还需要在主机文件中映射主机名:

172.28.128.4    wildfly-swarm.vagrant.f8

我们完成了。 为什么我没有使用json文件创建路由? 因为我想向您展示,只要图像为端口使用正确的EXPOSE定义,它就会更容易,因此ocpose命令可以完成此工作而不必弄乱json。 这是相同的结果。

浏览至:http://wildfly-swarm.vagrant.f8/rs/customer并查看输出:

{"text":"WildFly Swarm Docker Application on OpenShift at http://wildfly-swarm.vagrant.f8/rs/ - Hostname: swarm-sample-1-7mmd7"}

主机名是容器,容器在其上运行。

翻译自: https://www.javacodegeeks.com/2015/10/deploying-java-ee-microservices-on-openshift.html

openshift 部署

openshift 部署_在OpenShift上部署Java EE微服务相关推荐

  1. openshift_在OpenShift上扩展Java EE微服务

    openshift 这个小系列的前两个部分介绍了如何使用WildFly Swarm构建一个小型的JAX-RS服务并将其打包到Docker映像中 . 您学习了如何将此示例部署到OpenShift ,现在 ...

  2. 在OpenShift上扩展Java EE微服务

    这个小系列的前两个部分介绍了如何使用WildFly Swarm构建一个微型JAX-RS服务并将其打包到Docker映像中 . 您学习了如何将此示例部署到OpenShift ,现在该进行一点扩展了. 为 ...

  3. 在OpenShift上部署Java EE微服务

    我昨天用WildFly Swarm在博客上发布了有关简单JAX-RS微服务的博客. 您学习了如何使用Maven构建一个所谓的"胖子",还使用Maven Docker插件对我们的微服 ...

  4. Apache OpenWebBeans 发布适用于 Java EE 微服务的 Meecrowave 服务器 1.0

    Apache OpenWebBeans,JSR 365 依赖注入(CDI 2.0)的一种实现,最近发布的 Meecrowave 微服务器的服务器 1.0 为 Java Persistence API( ...

  5. 计算机毕业设计JAVA基于微服务架构的设备管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw

    计算机毕业设计JAVA基于微服务架构的设备管理系统的设计与实现mybatis+源码+调试部署+系统+数据库+lw 计算机毕业设计JAVA基于微服务架构的设备管理系统的设计与实现mybatis+源码+调 ...

  6. jboss4 java_带有JBoss工具的OpenShift 3上的Java EE 7应用程序

    jboss4 java 您可以使用最新版本的JBoss Tools OpenShift插件在Eclipse中创建和管理OpenShift应用程序. 他们要么预先捆绑了最新的 JBoss Develop ...

  7. 带有JBoss工具的OpenShift 3上的Java EE 7应用程序

    您可以使用最新版本的JBoss Tools OpenShift插件在Eclipse中创建和管理OpenShift应用程序. 他们要么预先捆绑了最新的 JBoss Developer Studio(9. ...

  8. OpenShift上的Java EE工作流(技术提示#64)

    该网络研讨会展示了如何使用WildFly , JBoss Tools , Forge , Arquillian和OpenShift在OpenShift上创建Java EE工作流. 具体来说,它谈论: ...

  9. 基于java基于微服务架构的设备管理系统的设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java基于微服务架构的设备管理系统的设计与实现计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java基于微服务架构的设备管理系统的设计与实现计算机毕业设计源码+系统+lw文 ...

最新文章

  1. C#调用C++dll
  2. windows7环境下的http-server的问题 排查
  3. 中级软考 计算机指令执行过程(取指、分析、执行)计算机重叠流水线问题
  4. 一个虐你千百遍的问题:“RPC好,还是RESTful好?”
  5. Docker入门系列之一:在一个Docker容器里运行指定的web应用
  6. vh,vw单位你知道多少?
  7. Dediprog EM100Pro-G2 安装与配置教程
  8. gnome2 恢复默认 panel
  9. 数据网格组件 Handsontable 不再开源,采用自拟的非商业许可证
  10. 使用javascript、Ajax制作前端拟态风格天气预报功能
  11. 对于高等代数一下比较基础的概念的认识
  12. 古建筑测绘任重道远,三维实景建模是唯一突破口?
  13. 在Word中使用EndNote插入参考文献
  14. 戴尔服务器uefi安装win7系统,Dell Latitude 3490 使用 UEFI+GPT 安装 Win7 x64
  15. 菜鸡前端面试题整理日记
  16. 论文阅读:(arXiv 2022) MINER: Multiscale Implicit Neural Representations
  17. 艾美捷Bio-Helix CCH321 超敏ECL化学发光试剂盒(皮克级)特点
  18. 七十年代译制片机器人的_老电影合集,怀旧经典电影,50,60,70,80年代,战争片,故事片,译制片...
  19. 联合作战态势可视化决策系统
  20. 第四季中餐厅4站点线路

热门文章

  1. bzoj#4722-由乃【倍增,抽屉原理,bitset】
  2. AT4119-[ARC096C]Everything on It【斯特林数,容斥】
  3. P4852-yyf hates choukapai【单调队列优化dp】
  4. P5304-[GXOI/GZOI2019]旅行者【最短路】
  5. 2021牛客暑期多校训练营7 F-xay loves trees(线段树+滑动窗口)
  6. ICPC 2019-2020 North-Western Russia Regional Contest 补题部分
  7. 初一模拟赛总结(6.6 my brother高考前一天,加油!(。・`ω´・。))
  8. Jsoup代码解读之二-DOM相关对象
  9. Maven精选系列--POM文件解析
  10. JDK,JRE,JVM三者的关系