印象大使_基本服务-使用大使网关

印象大使

这是我对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

印象大使

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333214.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Eclipse 如何生成项目的javadoc(API 文档)

文章目录生成 javadoc 的三种方法乱码问题生成 javadoc 的三种方法 1.在项目列表中按右键,选择 Export,然后在 Export 对话框中选择 Java 下的 Javadoc,然后点击 Next 最后按 Finish 提交即可开始生成文档。 2.用菜单选择:File…

使用注解版AOP解决事务问题

一、注解版和xml版的区别 1、 通知的四种常用类型 (1)aop:before 作用: 用于配置前置通知。指定增强的方法在切入点方法之前执行 属性: method:用于指定通知类中的增强方法名称 ponitcut-ref:用于指定切入点的表达式…

Windows系统下彻底卸载MySQL数据库

1.正常卸载MySQL数据库 2.将 C:/ProgramData 目录下的子目录 MySQL 删除 注意:目录 ProgramData 是隐藏目录,你正常情况下看不到,你可以在文件地址栏输入 C:/ProgramData 进入该目录下。

ibm收购red hat_IBM将收购Red Hat:面向Java的初衷

ibm收购red hatOracle公司近九年前完成了收购Sun Microsystems的过程。 那是当时的大新闻,今天也宣布了类似的大新闻: IBM和Red Hat已经同意IBM收购Red Hat 。 IBM主页面宣布“ IBM收购Red Hat”。 然后,它说:“这将改变一切。” …

Windows系统的MySQL目录结构

安装目录 安装 MySQL 时,如果我选择安装在 D:\develop\MySQL,那么你安装好之后点击文件夹 MySQL 可以看到如下内容: 目录 bin:存放二进制可执行文件 目录 data:存放数据库日志文件等 目录 include:C语言…

java监控数据库性能_Java:GraalVM数据库流性能

java监控数据库性能GraalVM是JVM块的新成员。 它是一个开源虚拟机,能够同时运行多种编程语言,例如Java,Rust和JavaScript。 GraalVM还具有一个新的内部代码优化器管道,与某些条件下的其他JVM相比,它可以显着提高性能。…

@Param注解注意事项(小的细节)

一、关于dao和UserDao.xml的参数问题 dao接口里是否有Param进行映射,和UserDao.xml的参数的书写格式有关系 多参数类型的时候,使用param 如果dao接口里写了Param(“uid”),UserDao.xml的参数必须要写#{uid} 或者#{p…

jep122_JEP 181不兼容,嵌套类/ 2

jep122JEP 181是基于嵌套的访问控制https://openjdk.java.net/jeps/181 。 它是在Java 11中引入的,它故意引入了与先前版本的不兼容性。 这是一个很好的例子,与Java的早期版本兼容并不是刻板的规则,而是保持语言的一致性和稳定发展。 在本文中…

文档中快速输入日期时间的方法

文章目录word文档excel表格日期输入后固定不变日期输入后会根据系统变化的输入法快速输入日期时间(推荐)word文档 输入 ctrl;,就可以直接输入当前日期 输入 ctrlshift;,就可以直接输入当前时间 如果是输入当前日期和时间&#xf…

=空值返回空值_@ParameterizedTest在@CvsSource中具有空值

空值返回空值在JUnit 4中编写参数化测试非常麻烦。 JUnit 5对框架进行了一些有用的改进,并且使用不同的参数运行相同的测试比以前的版本要简单得多。 但是,在这样的参数中传递空值存在一个小问题。 在本文中,我将向您展示如何在JUnit 5中的P…

MySQL的配置文件_选项文件_参数文件

文章目录WindowsLinux使用命令 locate 查找含有关键词 my.cnf 的文件路径查看是否使用了指定目录下的 my.cnf 文件查看 MySQL 默认读取 my.cnf 文件路径启动时没有读取任何配置文件主要的配置参数类似于 Oracle 的参数文件,MySQL 的选项文件(即配置文件&…

java url参数转换:_提示:通过URL激活并发送参数

java url参数转换:世界上最安全的密码是不存在的密码。 使用完全随机的密钥从等式中删除用户。 公平地说,这有一些缺点,并且密码仍然存在于某处(在您的电话/电子邮件中),但通常这样效果很好... 诀窍很简单&#xff0c…

简单的vue入门案例

一、 简单入门Hello World案例 二、插值表达式 三、点击事件 四、按键事件 1.如果按下不是 0 - 9 则阻止事件执行 2.打印按下什么按键 五、鼠标事件 1.打印绝对坐标 2.打印相对坐标 3.鼠标mousemove 4. 阻止冒泡(阻止事件的传播) 六、事件修饰符 1.阻止跳转页面v-on:submit.…

javafx 调用java_Java,JavaFX的流畅设计风格进度栏

javafx 调用java按照承诺,刚刚发布的Java JavaFX主题JMetro版本4.6为进度栏带来了新样式。 进度栏有两种可能的状态:确定和不确定,新的JMetro版本针对这两种具有不同的样式。 在本文中,我还将详细介绍我在JMetro中遵守的一些API设…

vue基本用法

一、v-text与v-html.html v-html 可以解析标签&#xff0c;解析样式,v-text不能解析&#xff0c;只能原样输出 二、v-bind绑定参数 v-bind简写方式 <!-- 完整语法 --> <a v-bind:href"url">...</a> <!-- 缩写 --> <a :href"url&q…

类Unix系统下,vim各种模式之间的切换

文章目录普通命令模式插入模式&#xff08;编辑模式&#xff09;临时切换到普通命令模式可视模式&#xff08;文本选择模式&#xff09;底行命令模式&#xff08;EX 命令模式&#xff09;普通命令模式 vim 的默认模式就是普通命令模式&#xff0c; 使用 vim 打开文件就进入普通…

jdk12 switch_玩JDK 12的Switch表达式

jdk12 switch在博客文章“操作中的JDK语言功能预览&#xff1a;切换表达式 ”中&#xff0c;我讨论了JEP 325 [“切换表达式&#xff08; 预览 &#xff09;”&#xff09;如何作为指定的“ 预览语言功能 ”的早期应用&#xff0c;如JEP 12所述。预览语言和VM功能”]。 JEP 325…

VueJS生命周期

一、生命周期 vue在生命周期中有这些状态&#xff0c; beforeCreate,created,beforeMount,mounted,beforeUpdate,updated,beforeDestroy,destroyed。Vue 在实例化的过程中&#xff0c;会调用这些生命周期的钩子&#xff0c;给我们提供了执行自定义逻辑的机会。 vue对象初始化过…

Linux的命令之 man -- 查看帮助文档

文章目录浏览文本内容的快捷键向前滚屏向后滚屏跳跃搜索使用这个命令可以查看任何命令的在线帮助文件&#xff0c;例如&#xff0c;查看命令 find 的在线帮助文档&#xff1a; [roothtlwk0001host ~]# man find打开命令的帮助文档后&#xff0c;可以使用鼠标滚轮上下滚动来浏览…