当您完成对应用程序的测试后,可以使用kubectl delete -f knative/kservice.yml命令将其删除。最后,您可以使用以下命令停止并删除本地集群:

Knative Service资源代表了一个完整的应用服务。由于这种抽象,我们不再需要直接处理Deployments、Services和Ingresses。Knative会处理所有这些工作。它在幕后创建和管理它们,同时使我们摆脱了处理Kubernetes提供的这些低级资源的负担。默认情况下,Knative甚至可以在不需要配置Ingress资源的情况下将应用程序暴露到集群外部,直接提供一个URL来调用应用程序。

由于其着重于开发者体验和生产力的特点,Knative可以用于在Kubernetes上运行和管理任何类型的工作负载,仅将其规模缩小到仅支持它的应用程序(例如使用Spring Native)。我们可以轻松地在Knative上运行整个Polar Bookshop系统。我们可以使用autoscaling.knative.dev/minScale注解来标记我们不希望被缩小到零的应用程序:

Knative提供了如此出色的开发者体验,以至于它正在成为在Kubernetes上部署工作负载的事实抽象,不仅适用于无服务器应用程序,还适用于更标准的容器化应用程序。每当我创建一个新的Kubernetes集群时,我都会首先安装Knative。它也是Tanzu Community Edition、Tanzu Application Platform、Red Hat OpenShift和Google Cloud Run等平台的基础部分。

注意 Tanzu Community Edition(https://tanzucommunityedition.io)是一个在Knative之上提供出色开发者体验的Kubernetes平台。它是开源且免费使用的。

Knative提供的另一个伟大功能是通过同一Knative Service资源提供直观且开发者友好的采用部署策略,如蓝/绿部署、金丝雀部署或A/B部署。在普通的Kubernetes中实现这些策略需要大量手动工作。而Knative则直接支持它们。

注意 要获取有关无服务器应用程序和Knative的更多信息,可以参考官方文档(https://knative.dev)。另外,我推荐阅读Manning目录上的几本关于这个主题的书籍:《Knative in Action》(Jacques Chester著,Manning出版社,2021年;https://www.manning.com/books/knative-in-action)和《Continuous Delivery for Kubernetes》(Mauricio Salatino著,www.manning.com/books/continuous-delivery-for-kubernetes)。

请随意将您在前几节中学到的知识应用于Quote Service。

定义一个提交阶段的工作流程,包括编译和测试应用程序作为本机可执行文件的步骤。

将更改推送到GitHub,并确保工作流成功完成并发布了应用程序的容器镜像。

通过Knative CLI在Kubernetes上部署Quote Service。

通过Knative Service清单,使用Kubernetes CLI在Kubernetes上部署Quote Service。

您可以参考附带本书的代码存储库中的Chapter16/16-end文件夹,以查看最终结果(https://github.com/ThomasVitale/cloud-native-spring-in-action)。

通过用GraalVM替换标准的OpenJDK分发版作为Java应用程序的运行环境,可以提高其性能和效率,这要归功于一种用于执行JIT编译(GraalVM编译器)的优化技术。

使GraalVM在无服务器环境中如此创新和受欢迎的是其原生镜像模式。

与将Java代码编译成字节码并依靠JVM在运行时解释并将其转换为机器代码的方式不同,GraalVM提供了一种新技术(原生镜像构建器)来直接将Java应用程序编译为机器代码,从而获得本机可执行文件或原生镜像。

作为原生镜像编译的Java应用程序具有更快的启动时间、优化的内存消耗以及即时的最高性能,而不同于JVM选项。

Spring Native的主要目标是使任何Spring应用程序都能够在没有任何代码更改的情况下使用GraalVM编译为本机可执行文件。

Spring Native提供了一个AOT基础设施(从专用的Gradle/Maven插件调用)来为GraalVM提供AOT编译Spring类所需的所有配置。

将Spring Boot应用程序编译为本机可执行文件有两种方法。第一种选项会产生一个特定于操作系统的可执行文件,并直接在计算机上运行应用程序。第二种选项依赖于Buildpacks将原生可执行文件包装为容器,并在像Docker这样的容器运行时上运行。

无服务器是在虚拟机和容器之上的另一层抽象,将更多的责任从产品团队转移到平台上。

遵循无服务器计算模型,开发人员专注于实现应用程序的业务逻辑。

无服务器应用程序由传入请求或特定事件触发。我们将这样的应用程序称为请求驱动或事件驱动。

使用Spring Cloud Function的应用程序可以以几种不同的方式部署。

当包含Spring Native时,您还可以将应用程序编译为本机镜像并在服务器或容器运行时上运行。由于即时的启动时间和减少的内存消耗,您可以无缝地在Knative上部署此类应用程序。

Knative是一个“基于Kubernetes的平台,用于部署和管理现代无服务器工作负载”(https://knative.dev)。您可以使用它来部署标准的容器化工作负载和事件驱动应用程序。

Knative项目为开发人员提供了更好的用户体验和更高级的抽象,使其更容易在Kubernetes上部署应用程序。

Knative提供了如此出色的开发者体验,以至于它正在成为在Kubernetes上部署工作负载的事实抽象,不仅适用于无服务器应用程序,还适用于更标准的容器化应用程序


原文地址: https://www.cveoy.top/t/topic/iu8n 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录