日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

在OpenShift上部署Java EE微服务

發布時間:2023/12/3 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在OpenShift上部署Java EE微服务 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我昨天用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注冊表,映像流,部署配置和路由到我們的服務特別重要。

基礎知識–管理界面和客戶端工具

設置無用信息框并將其啟動后,可以通過瀏覽到以下地址來訪問基于Web的管理:https:// localhost:8443。 多合一虛擬機沒有配置安全性。 這意味著將使用“全部允許”身份提供者。 您可以使用任何非空的用戶名和密碼登錄。 “管理員”用戶是具有所有權限的管理用戶。 使用“ 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上部署Java EE微服务的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。