日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Spring Boot是流行的JAVA微服務(wù)框架之一。Spring Cloud具有豐富的集成良好的Java庫(kù),可以解決作為Java應(yīng)用程序堆棧一部分的運(yùn)行時(shí)問(wèn)題,而Kubernetes提供了豐富的功能集來(lái)運(yùn)行多語(yǔ)言微服務(wù)。這些技術(shù)相互補(bǔ)充,為Spring Boot應(yīng)用程序提供了一個(gè)很好的平臺(tái)。

在此代碼中,我們演示了如何在Kubernetes之上部署簡(jiǎn)單的Spring Boot應(yīng)用程序。這個(gè)應(yīng)用程序,office Space,模仿電影Office Space中 Michael Bolton的虛構(gòu)應(yīng)用創(chuàng)意。該應(yīng)用程序利用財(cái)務(wù)計(jì)劃,通過(guò)將通常四舍五入的一小部分轉(zhuǎn)移到單獨(dú)的銀行賬戶來(lái)計(jì)算交易利息。

該應(yīng)用程序使用Java 8 / Spring Boot微服務(wù)來(lái)計(jì)算興趣,然后將便士的一小部分帶到數(shù)據(jù)庫(kù)。另一個(gè)Spring Boot微服務(wù)是通知服務(wù)。當(dāng)帳戶余額超過(guò)50,000美元時(shí),它會(huì)發(fā)送電子郵件。它由計(jì)算興趣的Spring Boot網(wǎng)絡(luò)服務(wù)器觸發(fā)。前端使用Node.js應(yīng)用程序,該應(yīng)用程序顯示Spring Boot應(yīng)用程序累積的當(dāng)前帳戶余額。后端使用MySQL數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)帳戶余額。

在Kubernetes上構(gòu)建和部署Java Spring Boot微服務(wù)

 

  1. 用Python編寫的Transaction Generator服務(wù)模擬事務(wù)并將它們推送到Compute Interest微服務(wù)。
  2. 計(jì)算興趣微服務(wù)計(jì)算興趣,然后將便士的分?jǐn)?shù)移動(dòng)到要存儲(chǔ)的MySQL數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)可以在同一部署中的容器內(nèi)運(yùn)行,也可以在IBM Cloud等公共云上運(yùn)行。
  3. 計(jì)算興趣微服務(wù)然后調(diào)用通知服務(wù)以通知用戶是否已將金額存入用戶的帳戶。
  4. Notification服務(wù)使用IBM Cloud Function向用戶發(fā)送電子郵件。
  5. 此外,還可以調(diào)用用于向Slack發(fā)送消息的IBM Cloud Function。
  6. 用戶通過(guò)訪問(wèn)Node.js Web界面來(lái)檢索帳戶余額。

包含的組件

  • IBM Cloud Kubernetes服務(wù):IBM Bluemix Container Service管理IBM Cloud上的Docker容器和Kubernetes集群中的高可用性應(yīng)用程序。
  • 撰寫MySQL:可能是世界上最流行的開(kāi)源關(guān)系數(shù)據(jù)庫(kù)。
  • IBM Cloud Functions:在高度可擴(kuò)展的無(wú)服務(wù)器環(huán)境中按需執(zhí)行代碼。

特色技術(shù)

  • Container Orchestration:自動(dòng)化容器化應(yīng)用程序的部署,擴(kuò)展和管理。
  • 數(shù)據(jù)庫(kù):用于存儲(chǔ)和管理數(shù)據(jù)集合的存儲(chǔ)庫(kù)。
  • 無(wú)服務(wù)器:一種事件操作平臺(tái),允許您執(zhí)行代碼以響應(yīng)事件。

條件

  • 使用Minikube進(jìn)行本地測(cè)試,使用IBM Cloud Private或使用IBM Cloud Kubernetes Service在云中部署Kubernetes集群。此處的代碼使用Travis 定期從IBM Cloud對(duì)Kubernetes Cluster進(jìn)行測(cè)試。
  • 來(lái)自 Slack團(tuán)隊(duì)的Slack Incoming Webhook。(如果要在步驟4中收到測(cè)試通知。)
  • 用于創(chuàng)建IBM Cloud Functions的IBM Cloud Function CLI。(如果你想做第4步。)

腳步

  1. 克隆回購(gòu)
  2. 創(chuàng)建數(shù)據(jù)庫(kù)服務(wù)
  3. 創(chuàng)建Spring Boot微服務(wù)
  4. 將IBM Cloud Functions與Notification服務(wù)一起使用(可選)
  5. 部署微服務(wù)
  6. 訪問(wèn)您的應(yīng)用程序

1.克隆回購(gòu)

克隆此存儲(chǔ)庫(kù)。在終端中,運(yùn)行:

$ git clone https://github.com/IBM/spring-boot-microservices-on-kubernetes

2.創(chuàng)建數(shù)據(jù)庫(kù)服務(wù)

后端由MySQL數(shù)據(jù)庫(kù)和Spring Boot應(yīng)用程序組成。每個(gè)微服務(wù)都有部署和服務(wù)。部署管理為每個(gè)微服務(wù)啟動(dòng)的pod。該服務(wù)為每個(gè)微服務(wù)創(chuàng)建一個(gè)穩(wěn)定的DNS條目,以便它們可以按名稱引用它們的依賴項(xiàng)。

  • 有兩種方法可以創(chuàng)建MySQL數(shù)據(jù)庫(kù)后端: 在容器中使用MySQL  使用IBM Cloud Compose for MySQL
  • 在容器中使用MySQL (選項(xiàng)1)
$ kubectl create -f account-database.yaml
服務(wù)“帳戶數(shù)據(jù)庫(kù)”已創(chuàng)建
部署“帳戶數(shù)據(jù)庫(kù)”創(chuàng)建

默認(rèn)憑據(jù)已在secrets.yaml中的base64中編碼。

base64中的編碼不會(huì)加密或隱藏您的秘密。不要把它放在你的Github中。

$ kubectl Apply -f secrets.yaml
secret "demo-credentials" created

繼續(xù)執(zhí)行第3步。

  • 使用IBM Cloud Compose for MySQL (選項(xiàng)2)

為MySQL提供IBM Cloud Compose。轉(zhuǎn)到服務(wù)憑據(jù)并查看憑據(jù)。您的MySQL主機(jī)名,端口,用戶和密碼位于您的憑證uri下,它應(yīng)如下所示

在Kubernetes上構(gòu)建和部署Java Spring Boot微服務(wù)

 

您需要在Kubernetes集群中將這些憑據(jù)作為機(jī)密應(yīng)用。它應(yīng)該base64編碼。使用腳本./scripts/create-secrets.sh。系統(tǒng)將提示您輸入憑據(jù)。這將對(duì)您輸入的憑據(jù)進(jìn)行編碼,并將其作為Secrets應(yīng)用于您的群集中。

$ ./scripts/create-secrets.sh
輸入MySQL用戶名:
管理
輸入MySQL密碼:
密碼
輸入MySQL主機(jī):
主機(jī)名
輸入MySQL端口:
23966創(chuàng)建了
秘密的“演示憑證”

您還可以使用該secrets.yaml文件并將其中的數(shù)據(jù)值編輯為您自己的base64編碼憑據(jù)。然后呢kubectl apply -f secrets.yaml。

3.創(chuàng)建Spring Boot微服務(wù)

您需要在您的環(huán)境中安裝Maven。如果要修改Spring Boot應(yīng)用程序,則需要在構(gòu)建Java項(xiàng)目和docker鏡像之前執(zhí)行此操作。

Spring Boot微服務(wù)是Compute-Interest-API和Send-Notification。

Compute-Interest-API是一個(gè)配置為使用MySQL數(shù)據(jù)庫(kù)的Spring Boot應(yīng)用程序。配置位于compute-interest-api/src/main/resources/application.properties在spring.datasource.*

該application.properties配置為使用MYSQL_DB_ *環(huán)境變量。這些是在compute-interest-api.yaml文件中定義的。它已經(jīng)配置為從先前創(chuàng)建的Kubernetes Secrets中獲取值。

可以將Send-Notification配置為通過(guò)gmail和/或Slack發(fā)送通知。當(dāng)MySQL數(shù)據(jù)庫(kù)上的帳戶余額超過(guò)50,000美元時(shí),將發(fā)送通知。

  • 使用Maven構(gòu)建項(xiàng)目

在Maven成功構(gòu)建Java項(xiàng)目之后,您需要使用Dockerfile各自文件夾中提供的構(gòu)建Docker鏡像。

注意:為了模擬目的,compute-interest-api將便士的分?jǐn)?shù)乘以x100,000。

轉(zhuǎn)到containers / compute-interest-api
$ mvn包
轉(zhuǎn)到容器/發(fā)送通知
$ mvn包
  • 為Spring Boot服務(wù)構(gòu)建Docker鏡像

注意:這是在IBM Cloud Container Registry中推送的。

如果您計(jì)劃使用IBM Cloud Container Registry,則需要先設(shè)置帳戶。按照這里的教程。

我們將使用IBM Cloud容器注冊(cè)表來(lái)推送圖像(因此命名圖像),但圖像也可以在Docker hub中推送。

$ docker build -t registry.ng.bluemix.net/ < YOUR_NAMESPACE > / compute-interest-api 。
$ docker build -t registry.ng.bluemix.net/ < YOUR_NAMESPACE > / send-notification 。
$ docker push registry.ng.bluemix.net/ < YOUR_NAMESPACE > / compute-interest-api
$ docker push registry.ng.bluemix.net/ < YOUR_NAMESPACE > / send-notification
  • 修改compute-interest-api.yamlsend-notification.yaml以使用您的圖像

成功推送圖像后,您需要修改yaml文件以使用圖像。

# compute-interest-api.yaml 
 spec:
 containers:
 - image:registry.ng.bluemix.net/< namespace>/ compute - interest- api #替換為您的圖像名稱
# send-notification.yaml 
 spec:
 containers:
 - image:registry.ng.bluemix.net/< namespace>/ send - notification #替換為您的圖像名稱

可能有兩種類型的通知,Using default email service with Notification service或者Use IBM Cloud Functions with Notification Service

  • 使用默認(rèn)電子郵件服務(wù)(gmail)和Notification服務(wù)

您將需要修改環(huán)境變量中send-notification.yaml:

 環(huán)境:
 - 名稱:GMAIL_SENDER_USER 
 值:“ [email protected] ” #更改為Gmail的將發(fā)送電子郵件 
 - 名稱:GMAIL_SENDER_PASSword 
 值:“密碼” #更改為上述的Gmail密碼 
 - 名稱:EMAIL_RECEIVER 
 值:“ [email protected] ” #更改為接收器的電子郵件

如果您不想使用IBM Cloud Functions,現(xiàn)在可以繼續(xù)執(zhí)行步驟5。

4.將IBM Cloud Functions與Notification服務(wù)一起使用

如果您想嘗試IBM Cloud Functions,這是一個(gè)可選步驟

  • 創(chuàng)建操作此存儲(chǔ)庫(kù)的根目錄包含用于創(chuàng)建IBM Cloud Functions的必需代碼。您可以使用ibmcloud wskor wsk命令創(chuàng)建Actions 。

創(chuàng)建發(fā)送Slack通知的操作

$ wsk action create sendSlackNotification sendSlack.js --param url https://hooks.slack.com/services/XXXX/YYYY/ZZZZ --web true 
#用你的Slack團(tuán)隊(duì)的傳入webhook網(wǎng)址替換網(wǎng)址。

創(chuàng)建發(fā)送Gmail通知的操作

$ wsk action create sendEmailNotification sendEmail.js --web true
  • 測(cè)試行動(dòng)

您可以使用測(cè)試IBM Cloud Function Actions wsk action invoke [action name] [add --param to pass parameters]

調(diào)用Slack通知

$ wsk action調(diào)用sendSlackNotification --param text “ Hello from OpenWhisk ”

調(diào)用電子郵件通知

$ wsk action invoke sendEmailNotification --param sender [sender email] - param password [sender password] - param receiver [receiver email] - param subject [Email subject] - param text [Email Body]

您應(yīng)該收到一個(gè)松弛的消息并分別收到一封電子郵件。

  • 為Actions創(chuàng)建REST API

您可以使用為您創(chuàng)建的操作映射REST API端點(diǎn)wsk api create。它的語(yǔ)法是wsk api create [base-path] [api-path] [verb (GET PUT POST etc)] [action name]

為Slack Notification創(chuàng)建端點(diǎn)

$ wsk api create / v1 / slack POST sendSlackNotification
ok:為 action / _ / sendEmailNotification 創(chuàng)建了API / v1 / slack POST
https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/.../v1/slack

為Gmail通知?jiǎng)?chuàng)建端點(diǎn)

$ wsk api create / v1 / email POST sendEmailNotification
ok:為 action / _ / sendEmailNotification 創(chuàng)建了API / v1 / email POST
https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/.../v1/email

您可以使用以下命令查看API列表:

$ wsk api列表
好的:API
動(dòng)作動(dòng)詞API名稱URL
/Anthony.Amanse_dev/sendEmailNotificatio post / v1 https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/.../v1/email
/Anthony.Amanse_dev/testDefault post / v1 https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/.../v1/slack

記下您的API網(wǎng)址。您將在以后使用它們。

  • 測(cè)試REST API URL

Slack Notification的測(cè)試端點(diǎn)。將URL替換為您自己的API URL。

$卷曲-X POST -H '內(nèi)容類型:應(yīng)用程序/ JSON的' -d ' { “文”: “從OpenWhisk你好”} ' https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api /.../v1/slack
在Kubernetes上構(gòu)建和部署Java Spring Boot微服務(wù)

 

測(cè)試Gmail通知的終結(jié)點(diǎn)。將URL替換為您自己的API URL。用您自己的參數(shù)替換參數(shù)發(fā)送者,密碼,接收者,主題的值。

$卷曲-X POST -H '內(nèi)容類型:應(yīng)用程序/ JSON的' -d “ { ”文“: ”你好,從OpenWhisk“, ”主題“: ”電子郵件通知“, ”發(fā)件人“: ”[email protected]“ ,“password”:“passwordOfSender”,“receiver”:“receiversEmail”} ' https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/.../v1/email
在Kubernetes上構(gòu)建和部署Java Spring Boot微服務(wù)

 

  • 將REST API URL添加到y(tǒng)aml文件

確認(rèn)您的API正常工作后,請(qǐng)將URL放入您的send-notification.yaml文件中

環(huán)境:
- 名稱:GMAIL_SENDER_USER 
 值:“ [email protected] ” #發(fā)件人的電子郵件 
- 名稱:GMAIL_SENDER_PASSWORD 
 值:“密碼” #發(fā)件人的密碼 
- 名稱:EMAIL_RECEIVER 
 值:“ [email protected] ” #接收的電子郵件 
- 名稱:OPENWHISK_API_URL_SLACK 
 值:' https : //service.us.apiconnect.ibmcloud.com/gws/apigateway/api/.../v1/slack“ #松弛通知你的API端點(diǎn) 
-名稱: SLACK_MESSAGE 
 值: ”您的余額超過(guò)50,000.00 $ “ #你的自定義消息 
-名稱: OPENWHISK_API_URL_EMAIL 
 值: ” https://service.us.apiconnect.ibmcloud.com/gws/apigateway/ api /.../v1 / email ' #您的電子郵件通知的API端點(diǎn)

5.部署微服務(wù)

  • 部署Spring Boot微服務(wù)
$ kubectl apply -f compute-interest-api.yaml
服務(wù)“ compute-interest-api ”創(chuàng)建
部署“ compute-interest-api ”創(chuàng)建
$ kubectl apply -f send-notification.yaml
服務(wù)“發(fā)送通知”已創(chuàng)建
部署“發(fā)送通知”已創(chuàng)建
  • 部署前端服務(wù)

UI是一個(gè)Node.js應(yīng)用程序,提供顯示總帳戶余額的靜態(tài)文件(html,css,JavaScript)。

$ kubectl apply -f account-summary.yaml
服務(wù)“帳戶摘要”已創(chuàng)建
部署“帳戶摘要”已創(chuàng)建
  • 部署事務(wù)生成器服務(wù)事務(wù)生成器是一個(gè)Python應(yīng)用程序,可生成累積興趣的隨機(jī)事務(wù)。

創(chuàng)建事務(wù)生成器Python應(yīng)用程序:

$ kubectl apply -f transaction-generator.yaml
服務(wù)“事務(wù)生成器”創(chuàng)建
部署“事務(wù)生成器”創(chuàng)建

6.訪問(wèn)您的應(yīng)用程序

您可以通過(guò)群集IP和NodePort公開(kāi)訪問(wèn)您的應(yīng)用程序。NodePort應(yīng)該是30080。

  • 要找到你的IP:
$ ibmcloud cs workers < cluster-name >
ID公共IP專用IP機(jī)器類型狀態(tài) 
kube-dal10-paac005a5fa6c44786b5dfb3ed8728548f-w1 169.47.241.213 10.177.155.13 free normal Ready 
  • 要查找?guī)粽?wù)的NodePort:
$ kubectl獲取svc
NAME CLUSTER-IP EXTERNAL-IP PORT(S)AGE
...
account-summary 10.10.10.74 < nodes > 80:30080 / TCP 2d
...
  • 在您的瀏覽器上,轉(zhuǎn)到 http://<your-cluster-IP>:30080
在Kubernetes上構(gòu)建和部署Java Spring Boot微服務(wù)

 

故障排除

  • 重新開(kāi)始,刪除所有內(nèi)容: kubectl delete svc,deploy -l app=office-space

分享到:
標(biāo)簽:Spring Boot
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定