服务性服务–服务到服务的通话
在上一篇文章中,我介紹了如何使用Knative的 Serving功能來運行示例Java應用程序。 這篇文章將介紹部署兩個應用程序的步驟,其中一個應用程序調用另一個。
樣品細節
整個示例可在我的github存儲庫中找到– https://github.com/bijukunjummen/sleuth-webflux-sample。
這些應用程序是基于Spring Boot的。 后端應用程序在用如下所示的有效負載調用時會公開一個端點“ / messages”:
{"delay": "0","id": "123","payload": "test","throw_exception": "true" }將在指定的延遲后做出響應。 如果有效負載的“ throw_exception”標志設置為true,則它將在指定的延遲后返回5XX。
客戶端應用程序公開一個“ / passthrough / messages”終結點,該終結點接收完全相同的有效負載,然后將其轉發給后端應用程序。 后端應用程序的URL作為“ LOAD_TARGET_URL”環境屬性傳遞到客戶端應用程序。
部署為基礎服務
該項目的子文件夾knative包含用于為2個應用程序部署Knative服務的清單。 后端應用程序的knative服務清單如下所示:
apiVersion: serving.knative.dev/v1alpha1 kind: Service metadata:name: sample-backend-appnamespace: default spec:runLatest:configuration:revisionTemplate:spec:container:image: bijukunjummen/sample-backend-app:0.0.1-SNAPSHOTenv:- name: VERSIONvalue: "0.0.2-SNAPSHOT"- name: SERVER_PORTvalue: "8080"客戶端應用必須指向后端服務,并在規范中指定:
apiVersion: serving.knative.dev/v1alpha1 kind: Service metadata:name: sample-client-appnamespace: default spec:runLatest:configuration:revisionTemplate:spec:container:image: bijukunjummen/sample-client-app:0.0.2-SNAPSHOTenv:- name: VERSIONvalue: "0.0.1-SNAPSHOT"- name: LOAD_TARGET_URLvalue: http://sample-backend-app.default.svc.cluster.local- name: SERVER_PORTvalue: "8080"域“ sample-backend-app.default.svc.cluster.local”指向由Knative服務服務資源創建的后端服務的dns名稱
測試中
對于我來說,簡單地用我的測試方式來制作一個小視頻就更容易了:
就像我以前的文章中一樣 ,對應用程序的請求是通過knative入口網關進行的,可以通過以下方式(對于minikube環境)獲取url:
export GATEWAY_URL=$(echo $(minikube ip):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}'))并以以下方式發出了示例請求,請注意,網關中的路由是通過主機標頭(在本例中為“ sample-client-app.default.example.com”)進行的:
export CLIENT_DOMAIN=$(kubectl get services.serving.knative.dev sample-client-app -o="jsonpath={.status.domain}")http http://${GATEWAY_URL}/passthrough/messages Host:"${CLIENT_DOMAIN}" id=1 payload=test delay=100 throw_exception=false翻譯自: https://www.javacodegeeks.com/2018/09/knative-serving-service-service-call.html
總結
以上是生活随笔為你收集整理的服务性服务–服务到服务的通话的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 无服务器-构建现代应用程序的新方法
- 下一篇: 用置换破坏您的JUnit5测试