印象大使_基本服务-使用大使网关
印象大使
這是我對Knative服務進行實驗的延續,這次是圍繞在Knative服務應用程序之上構建網關。 這建立在我之前的兩篇文章的基礎上- 使用Knative部署Spring Boot App以及在Knative中進行服務到服務的調用 。
為什么要在Knative應用程序之上使用網關
為了解釋這一點,讓我談談我以前的博客文章。 假設在Kubernetes環境中已經可以使用Knative服務 ,那么部署應用程序的方式就是使用清單,如下所示:
apiVersion: serving.knative.dev/v1alpha1 kind: Service metadata:name: sample-boot-knative-servicenamespace: default spec:runLatest:configuration:revisionTemplate:spec:container:image: bijukunjummen/sample-boot-knative-app:0.0.3-SNAPSHOTenv:- name: ASAMPLE_ENVvalue: "sample-env-val"現在要調用此應用程序,我必須通過Knative服務創建的入口進行調用,可以在minikube環境中通過以下方式獲得該入口:
export GATEWAY_URL=$(echo $(minikube ip):$(kubectl get svc knative-ingressgateway -n istio-system -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}'))現在,該請求必須經過入口,并且入口使用Host http標頭將請求路由到應用。 可以使用以下bash腳本獲取已部署服務的主機頭:
export APP_DOMAIN=$(kubectl get services.serving.knative.dev sample-boot-knative-service -o="jsonpath={.status.domain}")然后使用CURL通過knative入口網關進行以下調用:
curl -X "POST" "http://${GATEWAY_URL}/messages" \-H "Accept: application/json" \-H "Content-Type: application/json" \-H "Host: ${APP_DOMAIN}" \-d $'{"id": "1","payload": "one","delay": "300" }'或使用httpie :
http http://${GATEWAY_URL}/messages Host:"${APP_DOMAIN}" id=1 payload=test delay=1通過knative入口調用應用程序涉及太多步驟:
我在這篇文章中的目的是通過使用諸如Ambassador之類的網關來簡化向應用程序撥打電話的用戶體驗。
駐基尼大使
將大使安裝到Knative環境并沒有什么特別的, 這里提供的出色說明在我的minikube環境中都能正常工作。
現在,此圖概述了我對網關的目標:
有了大使后,用戶所需要做的就是向網關大使發送請求,在向Knative Ingress提出請求之前,它將負責插入Host標頭。
那么,這是如何工作的,相當容易! 假設有大使就位,那么它所需要的就是一個配置,該配置可以通過以下方式搭載在Kubernetes服務上:
--- apiVersion: v1 kind: Service metadata:name: sample-knative-app-gatewayannotations:getambassador.io/config: |---apiVersion: ambassador/v0kind: Mappingname: sample-boot-knative-appprefix: /messagesrewrite: /messagesservice: knative-ingressgateway.istio-system.svc.cluster.local host_rewrite: sample-boot-knative-service.default.example.com spec:type: LoadBalancerports:- name: ambassadorport: 80targetPort: 80selector:service: ambassador在這里,我通過Service注釋提供配置,攔截對/ messages uri的所有調用,并將這些請求轉發至knative ingressgatway服務(knative-ingressgateway.istio-system.svc.cluster.local),并添加“ sample- boot-knative-service.default.example.com”。
現在,從用戶角度進行交互要簡單得多,我要做的就是使用以下bash腳本在minikube環境中獲取此新服務的url并進行api調用:
export AMB_URL=$(echo $(minikube ip):$(kubectl get svc sample-knative-app-gateway -n default -o 'jsonpath={.spec.ports[?(@.port==80)].nodePort}'))http http://${AMB_URL}/messages id=1 payload=test delay=1在真實的代碼上嘗試一下可能會更容易,我的github倉庫可以在這里找到 。
翻譯自: https://www.javacodegeeks.com/2018/09/knative-serving-using-ambassador-gateway.html
印象大使
總結
以上是生活随笔為你收集整理的印象大使_基本服务-使用大使网关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10无法识别的usb设备怎么解决?
- 下一篇: 汉化版符文工房3(符文工房3手机版汉化下