3.5. IntegrationSink 入门
OpenShift Serverless IntegrationSink 功能只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
IntegrationSink API 是一个 Knative Eventing 自定义资源(CR),可让您将事件从 Knative 发送到外部系统。它利用 Apache Camel 项目中的所选的 Kamelets。
kamelets 充当可重复使用的连接器,它们可以使用 IntegrationSink API 作为源或 sink.By,您可以可靠地将 Knative Eventing 中生成的 CloudEvents 传送到第三方服务和外部系统。
OpenShift Serverless 支持以下 Kamelet sink:
- AWS Simple Storage Service (S3)
- AWS Simple Notification Service (SNS)
- AWS Simple Queue Service (SQS)
- 通用日志记录器接收器
3.5.1. 创建 AWS 凭证 复制链接链接已复制到粘贴板!
几个 IntegrationSink API 资源需要访问 Amazon Web Services (AWS)服务,如 S3、SNS 和 SQS。要安全地连接,您必须在创建 IntegrationSink API 资源的命名空间中创建一个包含有效 AWS 凭证的 Kubernetes Secret。
Secret 必须包含 AWS 访问密钥 ID 和具有足够权限的 secret 访问密钥来访问目标 AWS 服务。然后,每个 IntegrationSink 配置中都会引用此 Secret。
先决条件
- 您有一个带有访问密钥 ID 和 secret 访问密钥的 AWS 帐户,它提供对相关服务的访问。
- 已安装 OpenShift CLI (oc)并登录到集群。
-
您已找出在其中创建
IntegrationSink资源的命名空间。
流程
运行以下命令来创建 secret:
oc -n <namespace> create secret generic my-secret \ --from-literal=aws.accessKey=<accessKey> \ --from-literal=aws.secretKey=<secretKey>
$ oc -n <namespace> create secret generic my-secret \ --from-literal=aws.accessKey=<accessKey> \ --from-literal=aws.secretKey=<secretKey>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<namespace> 替换为创建IntegrationSink资源的命名空间,并将 <accessKey> 和 <secretKey> 替换为适当的 AWS 凭证。
3.5.2. 带有 IntegrationSink 的 AWS S3 复制链接链接已复制到粘贴板!
Amazon Web Services (AWS) Simple Storage Service (S3) Kamelet 允许您将来自 Knative Eventing 的 CloudEvents 传送到 Amazon S3 存储桶。通过这种集成,可以将事件存储为长期存储、分析或下游处理的对象。
要为 AWS S3 配置 IntegrationSink API,您必须使用有效的 AWS 凭证引用 Kubernetes Secret,指定 Amazon S3 存储桶 Amazon 资源名称(ARN)及其区域,并配置生成 CloudEvents 的源。
3.5.2.1. 为 AWS S3 创建 IntegrationSink 复制链接链接已复制到粘贴板!
您可以创建一个 IntegrationSink API 资源,将来自 Knative Eventing 的 CloudEvents 传送到 Amazon Simple Storage Service (S3)存储桶。这可让您将事件数据持久化为 S3 中的对象,用于存储长期使用、由分析工具处理或由下游应用程序使用。您可以通过应用 YAML 清单,创建一个 IntegrationSink 来将 CloudEvents 传送到 Amazon S3 存储桶。
先决条件
- 您已创建了 AWS 凭证,并将其存储在与资源相同的命名空间中的 Kubernetes Secret 中。
- 已安装 OpenShift CLI (oc)并登录到集群。
-
您知道创建
IntegrationSink资源的命名空间。 - Knative 代理或另一个事件源存在来生成 CloudEvents 以传送到此接收器。
流程
将以下 YAML 清单保存为
integration-sink-aws-s3.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用清单:
oc apply -f integration-sink-aws-s3.yaml
$ oc apply -f integration-sink-aws-s3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此清单配置
IntegrationSinkAPI,将 CloudEvents 传送到由eu-north-1区域中的 ARN (arn:aws:s3:::my-bucket)标识的 Amazon S3 存储桶。auth.secret.ref.name字段引用存储 AWS 凭证的 Kubernetes Secret (my-secret)。
3.5.3. 带有 IntegrationSink 的 AWS SNS 复制链接链接已复制到粘贴板!
Amazon Web Services (AWS) Simple Notification Service (SNS) Kamelet 允许您将 CloudEvents 从 Knative Eventing 传送到 SNS 主题。当您需要广泛发布,如电子邮件、SMS、HTTP 订阅者、SQS 队列、Lambda 功能等时,此集成很有用。
要为 AWS SNS 配置 IntegrationSink API 资源,请使用有效的 AWS 凭证引用 Kubernetes Secret,指定 SNS 主题 Amazon Resource Name (ARN)和区域,并配置将生成 CloudEvents 的事件源。
3.5.3.1. 为 AWS SNS 创建 IntegrationSink 复制链接链接已复制到粘贴板!
您可以通过应用 YAML 清单,创建一个 IntegrationSink API 资源,将来自 Knative Eventing 的 CloudEvents 发布到 Amazon Simple Notification Service (SNS)主题。
先决条件
- 您已创建了 AWS 凭证,并将其存储在与资源相同的命名空间中的 Kubernetes Secret 中。
- 已安装 OpenShift CLI (oc)并登录到集群。
-
您知道创建
IntegrationSink资源的命名空间。 - Knative 代理或另一个事件源存在来生成 CloudEvents 以传送到此接收器。
流程
将以下 YAML 清单保存为
integration-sink-aws-sns.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用清单:
oc apply -f integration-sink-aws-sns.yaml
$ oc apply -f integration-sink-aws-sns.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此清单配置
IntegrationSinkAPI,将 CloudEvents 发布到eu-north-1区域中的 ARN 标识的 SNS 主题。auth.secret.ref.name字段引用存储 AWS 凭证的 Kubernetes Secret (my-secret)。
3.5.4. 带有 IntegrationSink 的 AWS SQS 复制链接链接已复制到粘贴板!
Amazon Web Services (AWS) Simple Queue Service (SQS) Kamelet 允许您将 CloudEvents 从 Knative Eventing 发送到 SQS 队列。当您需要事件生成者和用户之间的可靠、分离的消息交付,或者下游系统从队列异步处理事件时,此集成很有用。
要为 AWS SQS 配置 IntegrationSink API 资源,您必须使用有效的 AWS 凭证引用 Kubernetes Secret,指定队列 Amazon Resource Name (ARN)和区域,并配置生成 CloudEvents 的事件源。
3.5.4.1. 为 AWS SQS 创建 IntegrationSink 复制链接链接已复制到粘贴板!
您可以通过应用 YAML 清单来创建 IntegrationSink API 资源,将 CloudEvents 发送到 Amazon SQS 队列。
先决条件
- 您已创建了 AWS 凭证,并将其存储在与资源相同的命名空间中的 Kubernetes Secret 中。
- 已安装 OpenShift CLI (oc)并登录到集群。
-
您知道创建
IntegrationSink资源的命名空间。 - Knative 代理或另一个事件源存在来生成将发送到此 sink 的 CloudEvents。
流程
将以下 YAML 清单保存为
integration-sink-aws-sqs.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用清单:
oc apply -f integration-sink-aws-sqs.yaml
$ oc apply -f integration-sink-aws-sqs.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此清单配置
IntegrationSinkAPI,将 CloudEvents 发送到由eu-north-1区域中的 ARN 标识的 SQS 队列。auth.secret.ref.name字段引用存储 AWS 凭证的 Kubernetes Secret (my-secret)。
3.5.5. 使用 IntegrationSink 的通用日志记录器接收器 复制链接链接已复制到粘贴板!
Log Sink Kamelet 允许您将 Knative Eventing 中的 CloudEvents 直接输出到应用程序日志中。此 sink 主要用于调试或测试事件流,因为它可以在不需要外部系统的情况下了解事件有效负载和元数据。
要为日志记录器配置 IntegrationSink API 资源,您可以设置日志记录级别和可选的显示事件标头。
3.5.5.1. 为 Logger 创建 IntegrationSink 复制链接链接已复制到粘贴板!
您可以通过应用 YAML 清单来创建 IntegrationSink API 资源来记录 CloudEvents。
先决条件
- 已安装 OpenShift CLI (oc)并登录到集群。
-
您知道创建
IntegrationSink资源的命名空间。 - Knative 代理或另一个事件源存在来生成 CloudEvents 以传送到此接收器。
流程
将以下 YAML 清单保存为
integration-log-sink.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来应用清单:
oc apply -f integration-log-sink.yaml
$ oc apply -f integration-log-sink.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此清单配置
IntegrationSinkAPI 资源,以记录它在INFO级别接收的所有 CloudEvents。showHeaders选项设为true,这意味着同时记录事件的 HTTP 标头。