基本服务-使用大使网关
這是我對Knative服務進行實驗的延續(xù),這次是圍繞在Knative服務應用程序之上構建網關。 這是基于我之前的兩篇文章- 使用Knative部署Spring Boot App以及在Knative中進行服務到服務的調用 。
為什么在Knative應用程序之上使用網關
為了解釋這一點,讓我談談我以前的博客文章。 假設在Kubernetes環(huán)境中已經可以使用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服務創(chuàng)建的入口進行調用,可以在minikube環(huán)境中通過以下方式獲得該入口:
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環(huán)境并沒有什么特別的, 這里提供的出色說明在我的minikube環(huán)境中可以正常工作。
現在,此圖概述了我的網關目標:
有了大使之后,用戶要做的就是將請求發(fā)送到大使網關,在向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的所有調用,并將這些請求轉發(fā)到knative ingressgatway服務(knative-ingressgateway.istio-system.svc.cluster.local),并添加“ sample- boot-knative-service.default.example.com”。
現在,從用戶的角度來看,交互要簡單得多,我要做的就是使用以下bash腳本在minikube環(huán)境中獲取此新服務的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
總結
以上是生活随笔為你收集整理的基本服务-使用大使网关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lol简单名字电脑(好听lol名字大全)
- 下一篇: 360部落冲突电脑版(360版部落冲突官