做网站需要懂什么软件,wordpress 礼物说模板,如何自己做门户网站,用asp做网站出现空白这是我对Knative服务进行实验的延续#xff0c;这次是围绕在Knative服务应用程序之上构建网关。 这是基于我之前的两篇文章- 使用Knative部署Spring Boot App以及在Knative中进行服务到服务的调用 。 为什么在Knative应用程序之上使用网关 为了解释这一点#xff0c;让我谈谈… 这是我对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[?(.port80)].nodePort})) 现在请求必须经过入口并且入口使用Host http标头将请求路由到应用。 可以使用以下bash脚本获取已部署服务的主机头 export APP_DOMAIN$(kubectl get services.serving.knative.dev sample-boot-knative-service -ojsonpath{.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} id1 payloadtest delay1 通过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[?(.port80)].nodePort}))http http://${AMB_URL}/messages id1 payloadtest delay1 在真实的代码上尝试此操作可能会更容易可在我的github存储库中找到该代码。 翻译自: https://www.javacodegeeks.com/2018/09/knative-serving-using-ambassador-gateway.html