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>

    <namespace > 替换为创建 IntegrationSink 资源的命名空间,并将 < accessKey& gt; 和 & lt;secretKey& gt; 替换为适当的 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 以传送到此接收器。

流程

  1. 将以下 YAML 清单保存为 integration-sink-aws-s3.yaml

    apiVersion: sinks.knative.dev/v1alpha1
    kind: IntegrationSink
    metadata:
      name: integration-sink-aws-s3
      namespace: knative-samples
    spec:
      aws:
        s3:
          arn: "arn:aws:s3:::my-bucket"
          region: "eu-north-1"
        auth:
          secret:
            ref:
              name: "my-secret"
  2. 运行以下命令来应用清单:

    $ oc apply -f integration-sink-aws-s3.yaml

    此清单配置 IntegrationSink API,将 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 以传送到此接收器。

流程

  1. 将以下 YAML 清单保存为 integration-sink-aws-sns.yaml

    apiVersion: sinks.knative.dev/v1alpha1
    kind: IntegrationSink
    metadata:
      name: integration-sink-aws-sns
      namespace: knative-samples
    spec:
      aws:
        sns:
          arn: "arn:aws:sns:<region>:<account>:my-topic"
          region: "eu-north-1"
        auth:
          secret:
            ref:
              name: "my-secret"
  2. 运行以下命令来应用清单:

    $ oc apply -f integration-sink-aws-sns.yaml

    此清单配置 IntegrationSink API,将 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。

流程

  1. 将以下 YAML 清单保存为 integration-sink-aws-sqs.yaml

    apiVersion: sinks.knative.dev/v1alpha1
    kind: IntegrationSink
    metadata:
      name: integration-sink-aws-sqs
      namespace: knative-samples
    spec:
      aws:
        sqs:
          arn: "arn:aws:sqs:<region>:<account>:my-queue"
          region: "eu-north-1"
        auth:
          secret:
            ref:
              name: "my-secret"
  2. 运行以下命令来应用清单:

    $ oc apply -f integration-sink-aws-sqs.yaml

    此清单配置 IntegrationSink API,将 CloudEvents 发送到由 eu-north-1 区域中的 ARN 标识的 SQS 队列。auth.secret.ref.name 字段引用存储 AWS 凭证的 Kubernetes Secret (my-secret)。

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 以传送到此接收器。

流程

  1. 将以下 YAML 清单保存为 integration-log-sink.yaml

    apiVersion: sinks.knative.dev/v1alpha1
    kind: IntegrationSink
    metadata:
      name: integration-log-sink
      namespace: knative-samples
    spec:
      log:
        showHeaders: true
        level: INFO
  2. 运行以下命令来应用清单:

    $ oc apply -f integration-log-sink.yaml

    此清单配置 IntegrationSink API 资源,以记录它在 INFO 级别接收的所有 CloudEvents。showHeaders 选项设为 true,这意味着同时记录事件的 HTTP 标头。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部