跳到内容

ApiServerSource 参考

version

本主题提供有关 ApiServerSource 对象的可配置字段的参考信息。

ApiServerSource

ApiServerSource 定义支持以下字段

字段 描述 必需或可选
apiVersion 指定 API 版本,例如 sources.knative.dev/v1 必需
kind 将此资源对象标识为 ApiServerSource 对象。 必需
metadata 指定唯一标识 ApiServerSource 对象的元数据。例如,name 必需
[metadata.annotations][#features] 指定启用某些功能的元数据。请参阅相关部分。 可选
spec 指定此 ApiServerSource 对象的配置信息。 必需
spec.resources 源跟踪的资源,以便它可以从 Kubernetes ApiServer 发送相关的生命周期事件。包括一个可选的标签选择器以帮助筛选。 必需
spec.mode EventMode 控制事件的格式。设置为 Reference 以发送正在监视资源的 dataref 事件类型。事件负载中仅包含对资源的引用。设置为 Resource 以在负载中包含完整的资源生命周期事件。默认为 Reference 可选
spec.owner ResourceOwner 是一个附加过滤器,仅跟踪由特定资源类型拥有的资源。如果 ResourceOwner 与 Resources[n] 匹配,则 Resources[n] 允许通过 ResourceOwner 过滤器。 可选
spec.serviceAccountName 用于运行此源的 ServiceAccount 的名称。如果未设置,则默认为 default 可选
spec.sink 引用一个对象,该对象解析为用作接收器的 URI。 必需
spec.ceOverrides 定义覆盖,以控制发送到接收器的事件的输出格式和修改。 可选
spec.namespaceSelector 指定一个标签选择器以跟踪多个命名空间。如果未指定,将跟踪 ApiServerSource 的命名空间。 可选

Resources 参数

resources 参数指定源跟踪的资源,以便它可以从 Kubernetes ApiServer 发送相关的生命周期事件。该参数包括一个可选的标签选择器以帮助筛选。

resources 定义支持以下字段

字段 描述 必需或可选
apiVersion 要监视的资源的 API 版本。 必需
kind 要监视的资源的类型。 必需
selector LabelSelector 将此源过滤到那些通过标签选择器的资源对象。 可选
selector.matchExpressions 标签选择器要求的列表。要求是 AND 关系。 使用 matchExpressionsmatchLabels 中的一个
selector.matchExpressions.key 选择器应用的标签键。 如果使用 matchExpressions,则为必需
selector.matchExpressions.operator 表示键与一组值的关系。有效运算符是 InNotInExistsDoesNotExist 如果使用 matchExpressions,则为必需
selector.matchExpressions.values 字符串值数组。如果 operatorInNotIn,则 values 数组必须非空。如果 operatorExistsDoesNotExist,则 values 数组必须为空。在战略合并补丁期间,此数组将被替换。 如果使用 matchExpressions,则为必需
selector.matchLabels 键值对的映射。matchLabels 映射中的每个键值对等效于 matchExpressions 的一个元素,其中键字段是 matchLabels.<key>operatorIn,并且 values 数组只包含“matchLabels”。”。要求是 AND 关系。 使用 matchExpressionsmatchLabels 中的一个

示例: Resources 参数

给定以下 YAML,ApiServerSource 对象接收命名空间中所有 Pod 和 Deployments 的事件

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
  name: <apiserversource>
  namespace: <namespace>
spec:
  # ...
  resources:
    - apiVersion: v1
      kind: Pod
    - apiVersion: apps/v1
      kind: Deployment

示例: 使用 matchExpressions 的 Resources 参数

给定以下 YAML,ApiServerSource 对象接收命名空间中所有带有标签 app=myappapp=yourapp 的 Pod 的事件

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
  name: <apiserversource>
  namespace: <namespace>
spec:
  # ...
  resources:
    - apiVersion: v1
      kind: Pod
      selector:
        matchExpressions:
          - key: app
            operator: In
            values:
              - myapp
              - yourapp

示例: 使用 matchLabels 的 Resources 参数

给定以下 YAML,ApiServerSource 对象接收命名空间中所有带有标签 app=myapp 的 Pod 的事件

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
  name: <apiserversource>
  namespace: <namespace>
spec:
  # ...
  resources:
    - apiVersion: v1
      kind: Pod
      selector:
        matchLabels:
          app: myapp

ServiceAccountName 参数

ServiceAccountName 是对 Kubernetes 服务帐户的引用。

要跟踪指定 resources 的生命周期事件,您必须为 ApiServerSource 对象分配适当的权限。

示例: 跟踪 Pod

以下 YAML 文件创建了一个 ServiceAccount、Role 和 RoleBinding,并授予 ApiServerSource 在命名空间 apiserversource-example 中获取、列出和监视 Pod 资源的权限。

示例 ServiceAccount

apiVersion: v1
kind: ServiceAccount
metadata:
  name: test-service-account
  namespace: apiserversource-example

具有获取、列出和监视 Pod 资源权限的示例角色

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: test-role
rules:
  - apiGroups:
    - ""
    resources:
    - pods
    verbs:
    - get
    - list
    - watch

示例 RoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: test-role-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: test-role
subjects:
  - kind: ServiceAccount
    name: test-service-account
    namespace: apiserversource-example

使用 test-service-account 的示例 ApiServerSource

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
 name: test-apiserversource
 namespace: apiserversource-example
spec:
  # ...
  serviceAccountName: test-service-account
  ...

Owner 参数

ResourceOwner 是一个附加过滤器,仅跟踪由特定资源类型拥有的资源。如果 ResourceOwner 与 Resources[n] 匹配,则 Resources[n] 允许通过 ResourceOwner 过滤器。

owner 定义支持以下字段

字段 描述 必需或可选
apiVersion 要监视的资源的 API 版本。 必需
kind 要监视的资源的类型。 必需

示例: Owner 参数

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
 name: <apiserversource>
 namespace: <namespace>
spec:
  ...
  owner:
    apiVersion: apps/v1
    kind: Deployment
  ...

NamespaceSelector 参数

NamespaceSelector 是一个可选的标签选择器,可用于定位多个命名空间。如果选择器未设置,则将跟踪 ApiServerSource 的命名空间。

namespaceSelector 支持以下字段

字段 描述 必需或可选
matchExpressions 标签选择器要求的列表。要求是 AND 关系。 使用 matchExpressionsmatchLabels 中的一个
matchExpressions.key 选择器应用的标签键。 如果使用 matchExpressions,则为必需
matchExpressions.operator 表示键与一组值的关系。有效运算符是 InNotInExistsDoesNotExist 如果使用 matchExpressions,则为必需
matchExpressions.values 字符串值数组。如果 operatorInNotIn,则 values 数组必须非空。如果 operatorExistsDoesNotExist,则 values 数组必须为空。在战略合并补丁期间,此数组将被替换。 如果使用 matchExpressions,则为必需
matchLabels 键值对的映射。matchLabels 映射中的每个键值对等效于 matchExpressions 的一个元素,其中键字段是 matchLabels.<key>operatorIn,并且 values 数组只包含“matchLabels”。”。要求是 AND 关系。 使用 matchExpressionsmatchLabels 中的一个

示例: 使用 matchExpressions 定位多个命名空间

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
 name: <apiserversource>
 namespace: <namespace>
spec:
  ...
  namespaceSelector:
    matchExpressions:
      - key: environment
        operator: In
        values:
          - production
          - development
  ...

示例: 使用 matchLabels 定位多个命名空间

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
 name: <apiserversource>
 namespace: <namespace>
spec:
  ...
  namespaceSelector:
    matchLabels:
      environment: production
  ...

示例: 使用空选择器定位所有命名空间

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
 name: <apiserversource>
 namespace: <namespace>
spec:
  ...
  namespaceSelector: {}
  ...

CloudEvent 覆盖

CloudEvent 覆盖定义了用于控制发送到接收器的事件的输出格式和修改的覆盖。

ceOverrides 定义支持以下字段

字段 描述 必需或可选
extensions 指定哪些属性被添加到出站事件或被其覆盖。每个 extensions 键值对作为属性扩展独立地设置在事件上。 可选

注意

只允许使用有效的 CloudEvent 属性名称 作为扩展。您不能从扩展覆盖配置中设置规范定义的属性。例如,您不能修改 type 属性。

示例:CloudEvent 覆盖

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
 name: <apiserversource>
 namespace: <namespace>
spec:
  ...
  ceOverrides:
    extensions:
      extra: this is an extra attribute
      additional: 42

契约

这将导致在 sink 容器上设置 K_CE_OVERRIDES 环境变量,如下所示

{ "extensions": { "extra": "this is an extra attribute", "additional": "42" } }

功能

ApiServerSource 使用注解来启用某些功能。

跳过权限检查

此功能禁用在创建部署之前进行的 RBAC 权限检查。默认情况下,针对每个资源和跟踪的命名空间组合创建三个 SubjectAccessReview 请求。

启用后,此功能将移除 SubjectAccessReview 的创建,从而在 ApiServerSource 跟踪大量资源或命名空间时减少对 Kubernetes API 的压力。在这种情况下,ApiServerSource 部署不会重试监视连接。

要启用它,请将其设置为 "true"

apiVersion: sources.knative.dev/v1
kind: ApiServerSource
metadata:
  name: <apiserversource>
  namespace: <namespace>
  annotations:
    features.knative.dev/apiserversource-skip-permissions-check: "true"
spec:
  ...

我们使用分析和 cookie 来了解网站流量。有关您使用我们网站的信息会与 Google 共享以达到此目的。了解更多。