2.7. IntegrationSource 入门


重要

OpenShift Serverless IntegrationSource 功能只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

IntegrationSource API 是一个 Knative Eventing 自定义资源(CR),它可让您利用 Apache Camel 项目中的所选 Kamelets 连接到外部系统。

kamelets 充当可作为源或接收器(sink)的可重复使用的连接器。通过使用 IntegrationSource API,您可以消耗来自外部系统的数据,并将数据作为 CloudEvents 转发到 Knative Eventing。

OpenShift Serverless 支持以下 Kamelet 源:

  • AWS DynamoDB Streams
  • AWS S3
  • AWS SQS
  • 计时器源

2.7.1. 创建 AWS 凭证

要连接到 Amazon Web Services (AWS)资源,IntegrationSource 需要包含有效 AWS 凭证的 Kubernetes Secret。您必须在与 IntegrationSource 资源相同的命名空间中创建此 Secret,且必须包含 AWS 访问密钥和 secret 密钥。

先决条件

  • 您有一个带有访问密钥 ID 和 secret 访问密钥的 AWS 帐户,允许访问 Amazon DynamoDB Streams 服务。
  • 已安装 OpenShift CLI (oc)并登录到集群。
  • 您已识别创建 IntegrationSource 资源的命名空间。

流程

  • 运行以下命令来创建 Secret:

    $ oc -n <namespace> create secret generic my-secret \
      --from-literal=aws.accessKey=<accessKey> \
      --from-literal=aws.secretKey=<secretKey>
    Copy to Clipboard Toggle word wrap

    <namespace > 替换为 IntegrationSource 资源所在的命名空间,并将 < accessKey> 和 & lt;secretKey& gt; 替换为对应的 AWS 凭证。

2.7.2. 带有 IntegrationSource 的 AWS DynamoDB Streams

Amazon Web Services (AWS) DynamoDB Streams Kamelet 允许您消耗 Amazon DynamoDB 表中的更改,并将它们转发到 Knative Eventing。通过这种集成,可以更轻松地响应数据库更改并在无服务器应用程序中传播事件。

要为 DynamoDB Streams 配置 IntegrationSource,您必须提供有效的 AWS 凭证,指定 DynamoDB 表及其区域,并定义事件 sink,如 Knative 代理。

2.7.2.1. 为 DynamoDB Streams 创建 IntegrationSource

要创建从 Amazon DynamoDB Streams 接收事件的 IntegrationSource API,请应用 YAML 清单。

先决条件

  • 您已创建了一个 Kubernetes Secret,其中包含有效的 Amazon Web Services (AWS)凭证,并可访问 Amazon DynamoDB Streams。
  • 已安装 OpenShift CLI (oc)并登录到目标集群。
  • 您知道创建 IntegrationSource 资源的命名空间。
  • 同一命名空间中已存在 Knative 代理或另一个有效事件 sink 来接收事件。

流程

  1. 将以下 YAML 清单保存为 integration-source-aws-ddb.yaml

    apiVersion: sources.knative.dev/v1alpha1
    kind: IntegrationSource
    metadata:
      name: integration-source-aws-ddb
      namespace: knative-samples
    spec:
      aws:
        ddbStreams:
          table: "my-table"
          region: "eu-north-1"
        auth:
          secret:
            ref:
              name: "my-secret"
      sink:
        ref:
          apiVersion: eventing.knative.dev/v1
          kind: Broker
          name: default
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来应用清单:

    $ oc apply -f integration-source-aws-ddb.yaml
    Copy to Clipboard Toggle word wrap

    此清单配置 IntegrationSource API,以从 eu-north-1 区域中的 DynamoDB 表 my-table 读取更改事件。auth.secret.ref.name 字段引用存储 AWS 凭证的 Kubernetes Secret (my-secret)。事件发送到 sink 部分中定义的 默认 Knative 代理。

2.7.3. 使用 IntegrationSource 的 AWS S3

Amazon Web Services (AWS) Simple Storage Service (S3) Kamelet 允许您消耗对象存储事件,如文件上传或更新 Amazon S3 存储桶,并将它们转发到 Knative Eventing。此集成有助于 OpenShift Serverless 应用程序响应对象存储的变化,如新文件或数据更新,而无需轮询。

要为 S3 配置 IntegrationSource,您必须提供有效的 AWS 凭证,指定 Amazon S3 存储桶 Amazon Resource Name (ARN)及其区域,并定义事件 sink,如 Knative 代理。

2.7.3.1. 为 AWS S3 创建 IntegrationSource

要创建从 Amazon S3 存储桶接收数据的 IntegrationSource API,请应用 YAML 清单。

先决条件

  • 您已创建了 AWS 凭证,并将其存储在与 IntegrationSource 资源相同的命名空间中的 Kubernetes Secret 中。
  • 已安装 OpenShift CLI (oc)并登录到目标集群。
  • 您知道创建 IntegrationSource 资源的命名空间。
  • 存在 Knative 代理或另一个事件 sink 来接收 S3 事件。

流程

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

    apiVersion: sources.knative.dev/v1alpha1
    kind: IntegrationSource
    metadata:
      name: integration-source-aws-s3
      namespace: knative-samples
    spec:
      aws:
        s3:
          arn: "arn:aws:s3:::my-bucket"
          region: "eu-north-1"
        auth:
          secret:
            ref:
              name: "my-secret"
      sink:
        ref:
          apiVersion: eventing.knative.dev/v1
          kind: Broker
          name: default
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来应用清单:

    $ oc apply -f integration-source-aws-s3.yaml
    Copy to Clipboard Toggle word wrap

    此清单配置 IntegrationSource API,以监控由其 Amazon Resource Name (ARN)arn:aws:s3:::my-bucketeu-north-1 区域 中标识的 Amazon S3 存储桶。auth.secret.ref.name 字段引用存储 AWS 凭证的 Kubernetes Secret (my-secret)。事件传送到 sink 部分中定义的 默认 Knative 代理。

2.7.4. 带有 IntegrationSource 的 AWS SQS

Amazon Web Services (AWS) Simple Queue Service (SQS) Kamelet 可让您使用来自 Amazon SQS 队列的消息并将其转发到 Knative Eventing。此集成允许 OpenShift Serverless 应用程序响应排队的消息,支持分离制作者和消费者的事件驱动的架构。

要为 SQS 配置 IntegrationSource,您必须提供有效的 AWS 凭证,指定 Amazon SQS 队列 Amazon Resource Name (ARN)及其区域,并定义事件 sink,如 Knative 代理。Amazon 资源名称(ARN)在所有 AWS 帐户和区域中唯一标识 SQS 队列。

2.7.4.1. 为 SQS 创建 IntegrationSource

要创建从 Amazon SQS 队列接收消息的 IntegrationSource API,请应用 YAML 清单。

先决条件

  • 您已创建了 AWS 凭证,并将其存储在与 IntegrationSource 资源相同的命名空间中的 Kubernetes Secret 中。
  • 已安装 OpenShift CLI (oc)并登录到目标集群。
  • 您知道创建 IntegrationSource 资源的命名空间。
  • 存在 Knative 代理或另一个事件 sink 来接收 SQS 事件。

流程

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

    apiVersion: sources.knative.dev/v1alpha1
    kind: IntegrationSource
    metadata:
      name: integration-source-aws-sqs
      namespace: knative-samples
    spec:
      aws:
        sqs:
          arn: "arn:aws:sqs:eu-north-1:123456789012:my-queue"
          region: "eu-north-1"
        auth:
          secret:
            ref:
              name: "my-secret"
      sink:
        ref:
          apiVersion: eventing.knative.dev/v1
          kind: Broker
          name: default
    Copy to Clipboard Toggle word wrap
    注意

    确保 ARN 准确反映 SQS 队列区域、帐户号和队列名称。例如,arn:aws:sqs:<region>:<account-id>:<queue-name>

  2. 运行以下命令来应用清单:

    $ oc apply -f integration-source-aws-sqs.yaml
    Copy to Clipboard Toggle word wrap

    此清单配置 IntegrationSource API,以监控由 eu-north-1 区域中的 ARN 标识的 Amazon SQS 队列。auth.secret.ref.name 字段引用存储 AWS 凭证的 Kubernetes Secret (my-secret)。事件传送到 sink 部分中定义的 默认 Knative 代理。

2.7.5. 使用 IntegrationSource 的计时器源

Timer Kamelet 使用自定义有效负载生成定期信息,并将其转发到 Knative Eventing。这可用于测试事件流或生成调度的事件,而不依赖于外部系统。

要为 Timer Kamelet 配置 IntegrationSource,您可以指定生成消息的时间间隔以及消息内容,然后定义事件 sink,如 Knative 代理。

2.7.5.1. 为计时器创建 IntegrationSource

要创建使用自定义有效负载生成定期消息的 IntegrationSource API,请应用 YAML 清单。

先决条件

  • 已安装 OpenShift CLI (oc)并登录到目标集群。
  • 您知道创建 IntegrationSource 资源的命名空间。
  • 存在 Knative 代理或另一个事件 sink 来接收 SQS 事件。

流程

  1. 将以下 YAML 清单保存为 integration-source-timer.yaml

    apiVersion: sources.knative.dev/v1alpha1
    kind: IntegrationSource
    metadata:
      name: integration-source-timer
      namespace: knative-samples
    spec:
      timer:
        period: 2000
        message: "Hello from Timer source"
      sink:
        ref:
          apiVersion: eventing.knative.dev/v1
          kind: Broker
          name: default
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令来应用清单:

    $ oc apply -f integration-source-timer.yaml
    Copy to Clipboard Toggle word wrap

    此清单将 IntegrationSource 配置为每 2000 毫秒发出消息 "Hello from Timer source" (2 秒)。生成的信息发送到 sink 部分中定义的 默认 Knative 代理。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat