上手Knative的 - 第2部分

上手Knative的 - 第2部分 在我之前的文章中 ,我谈到了 Knative Serving ,用于快速部署和无服务器容器的自动扩展。 如果您希望HTTP呼叫同步触发您的服务,Knative Serving非常棒。 但是,在无服务器的微服务世界中,异步触发器更常见且更有用。 那是 Knative Eventing 发挥作用的时候。 在Hands on Knative系列的第二部分中,我想介绍Knative Eventing并在我的 Knative Tutorial 中展示如何将其与各种服务集成的 一些示例 。 什么是Knative Eventing? Knative Eventing与Knative Serving携手合作,为松散耦合的事件驱动服务提供原语。 典型的Knative Eventing架构如下所示: 有4个主要组成部分: Source (aka Producer)从实际源读取事件并将下游转发到Channel或更不常见地直接转发到Service。 频道 从源接收事件,保存到其底层存储(稍后将详细介绍)并向所有订户扇出。 订阅 桥接通道和服务(或另一个通道)。 服务 (又名消费者)是消费事件流的Knative服务。 让我们更详细地看一下这些。 来源,渠道和订阅 Knative Eventing的最终目标是将事件从源路由到服务,并使用我之前提到的原语来实现:Source,Channel和Subscription。 Source 从实际源读取事件并将其转发到下游。 截至今天,Knative支持从 Kubernetes , GitHub , Google Cloud Pub / Sub , AWS SQS主题 , 容器 和 CronJobs中 读取事件 。 一旦事件被拉入Knative,它需要保存在内存中或更耐用的地方,如Kafka或Google Cloud Pub / Sub。 通道 发生了这种情况。 它有多种 实现 来支持不同的选项。 [Read More]

上手Knative的 - 第1部分

上手Knative的 - 第1部分 我最近一直在研究 Knative 。这个博客系列由3部分组成,我想解释一下我的学习内容并展示我在GitHub上发布的Knative Tutorial 中的示例 。 什么是Knative? Knative 是一个开源构建块的集合,用于在Kubernetes上运行的serverless容器。 在这一点上,你可能想知道:“Kubernetes,serverless,发生了什么?”但是,当你想到它时,它是有道理的。Kubernetes是非常受欢迎的容器管理平台。serverless是应用程序开发人员想要运行其代码的方式。Knative将两个世界与一组构建块结合在一起。 谈到构建块,它由3个主要组件组成: Knative Serving 用于快速部署和serverless容器的自动扩展。 Knative Eventing针对松散耦合的事件驱动服务的。 Knative Build 用于无痛的代码到容器的注册表工作流程。 让我们从Knative Serving开始吧。 什么是Knative Serving? 简而言之,Knative Serving允许serverless容器的快速部署和自动扩展。您只需指定要部署的容器,Knative将详细说明如何创建该容器并将流量路由到该容器。将serverless容器部署为Knative服务后,您将获得自动扩展,每个配置更改的revision,不同revision之间的流量分配等功能。 你好世界服务 要将代码部署为Knative服务,您需要: 包含您的代码并将镜像推送到公共注册表。 创建一个服务yaml文件,告诉Knative在哪里可以找到容器镜像及其具有的任何配置。 在我的Knative教程的 Hello World服务 中,我详细描述了这些步骤,但回顾一下,这是最小的Knative服务定义的 service-v1.yaml 示例: apiVersion: serving.knative.dev/v1alpha1 kind: Service metadata: name: helloworld-csharp namespace: default spec: runLatest: configuration: revisionTemplate: spec: container: # replace {username} with your DockerHub image: docker.io/{username}/helloworld-csharp:v1 env: - name: TARGET value: "C# Sample v1" runLatest 意味着我们希望使用指定的容器和配置立即部署最新版本的代码。部署服务: [Read More]