3.5. 了解自定义指标自动扩展触发器身份验证


触发器身份验证允许您在扩展对象或可供关联容器使用的扩展作业中包含身份验证信息。您可以使用触发器身份验证来传递 OpenShift Container Platform secret、平台原生 Pod 验证机制、环境变量等。

您可以在与您要缩放的对象相同的命名空间中定义一个 TriggerAuthentication 对象。该触发器身份验证只能由该命名空间中的对象使用。

另外,要在多个命名空间中对象间共享凭证,您可以创建一个可在所有命名空间中使用的 ClusterTriggerAuthentication 对象。

触发验证和集群触发器身份验证使用相同的配置。但是,集群触发器身份验证需要在扩展对象的验证引用中有一个额外的 kind 参数。

使用绑定服务帐户令牌的触发器身份验证示例

kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
  name: secret-triggerauthentication
  namespace: my-namespace 
1

spec:
  boundServiceAccountToken: 
2

    - parameter: bearerToken
      serviceAccountName: thanos 
3
Copy to Clipboard Toggle word wrap

1
指定您要缩放的对象的命名空间。
2
指定在连接到指标端点时,此触发器身份验证使用绑定服务帐户令牌进行授权。
3
指定要使用的服务帐户的名称。

使用绑定服务帐户令牌的集群触发器身份验证示例

kind: ClusterTriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
  name: bound-service-account-token-triggerauthentication 
1

spec:
  boundServiceAccountToken: 
2

    - parameter: bearerToken
      serviceAccountName: thanos 
3
Copy to Clipboard Toggle word wrap

1
指定您要缩放的对象的命名空间。
2
指定在连接到指标端点时,此集群触发器身份验证使用绑定服务帐户令牌进行授权。
3
指定要使用的服务帐户的名称。

使用 secret 进行基本身份验证的触发器身份验证示例

kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
  name: secret-triggerauthentication
  namespace: my-namespace 
1

spec:
  secretTargetRef: 
2

  - parameter: username 
3

    name: my-basic-secret 
4

    key: username 
5

  - parameter: password
    name: my-basic-secret
    key: password
Copy to Clipboard Toggle word wrap

1
指定您要缩放的对象的命名空间。
2
指定在连接到指标端点时,此触发器身份验证使用 secret 进行授权。
3
使用 secret 指定提供的身份验证参数。
4
指定要使用的 secret 的名称。有关基本身份验证,请参见以下示例 secret。
5
指定 secret 中与指定参数一起使用的密钥。

用于基本身份验证的 secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: my-basic-secret
  namespace: default
data:
  username: "dXNlcm5hbWU=" 
1

  password: "cGFzc3dvcmQ="
Copy to Clipboard Toggle word wrap

1
提供给触发器身份验证的用户名和密码。data 小节中的值必须采用 base-64 编码。

使用 secret 进行 CA 详情的触发器身份验证示例

kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
  name: secret-triggerauthentication
  namespace: my-namespace 
1

spec:
  secretTargetRef: 
2

    - parameter: key 
3

      name: my-secret 
4

      key: client-key.pem 
5

    - parameter: ca 
6

      name: my-secret 
7

      key: ca-cert.pem 
8
Copy to Clipboard Toggle word wrap

1
指定您要缩放的对象的命名空间。
2
指定在连接到指标端点时,此触发器身份验证使用 secret 进行授权。
3
指定要使用的验证类型。
4
指定要使用的 secret 的名称。
5
指定 secret 中与指定参数一起使用的密钥。
6
指定连接到指标端点时的自定义 CA 的身份验证参数。
7
指定要使用的 secret 的名称。请参阅以下带有证书颁发机构(CA)详情的 secret 示例。
8
指定 secret 中与指定参数一起使用的密钥。

带有证书颁发机构 (CA) 详细信息的 secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
  namespace: my-namespace
data:
  ca-cert.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0... 
1

  client-cert.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... 
2

  client-key.pem: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t...
Copy to Clipboard Toggle word wrap

1
指定用于验证指标端点的 TLS CA 证书。该值必须采用 base-64 编码。
2
指定 TLS 客户端身份验证的 TLS 证书和密钥。值必须采用 base-64 编码。

使用 bearer 令牌的触发器身份验证示例

kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
  name: token-triggerauthentication
  namespace: my-namespace 
1

spec:
  secretTargetRef: 
2

  - parameter: bearerToken 
3

    name: my-secret 
4

    key: bearerToken 
5
Copy to Clipboard Toggle word wrap

1
指定您要缩放的对象的命名空间。
2
指定在连接到指标端点时,此触发器身份验证使用 secret 进行授权。
3
指定要使用的验证类型。
4
指定要使用的 secret 的名称。对于 bearer 令牌,请参见以下示例 secret。
5
指定令牌中用于指定参数的密钥。

bearer 令牌的 secret 示例

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
  namespace: my-namespace
data:
  bearerToken: "<bearer_token>" 
1
Copy to Clipboard Toggle word wrap

1
指定与 bearer 身份验证一起使用的 bearer 令牌。该值必须采用 base-64 编码。

使用环境变量的触发器身份验证示例

kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
  name: env-var-triggerauthentication
  namespace: my-namespace 
1

spec:
  env: 
2

  - parameter: access_key 
3

    name: ACCESS_KEY 
4

    containerName: my-container 
5
Copy to Clipboard Toggle word wrap

1
指定您要缩放的对象的命名空间。
2
指定在连接到指标端点时,此触发器身份验证使用环境变量进行授权。
3
指定要使用此变量设置的参数。
4
指定环境变量的名称。
5
可选:指定需要身份验证的容器。容器必须与扩展对象中的 scaleTargetRef 引用的资源相同。

使用 pod 身份验证供应商的触发器身份验证示例

kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
  name: pod-id-triggerauthentication
  namespace: my-namespace 
1

spec:
  podIdentity: 
2

    provider: aws-eks 
3
Copy to Clipboard Toggle word wrap

1
指定您要缩放的对象的命名空间。
2
指定此触发器身份验证在连接到指标端点时使用平台原生 pod 身份验证。
3
指定 pod 身份。支持的值为 none,azure,gcp,aws-eks, 或 aws-kiam。默认为 none

3.5.1. 使用触发器身份验证

您可以使用触发器验证和集群触发器身份验证,方法是使用自定义资源来创建身份验证,然后添加对扩展对象或扩展任务的引用。

先决条件

  • 必须安装 Custom Metrics Autoscaler Operator。
  • 如果您使用绑定的服务帐户令牌,则服务帐户必须存在。
  • 如果您使用绑定服务帐户令牌,则必须存在一个基于角色的访问控制(RBAC)对象,使自定义 Metrics Autoscaler Operator 从服务帐户请求服务帐户令牌。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: Role
    metadata:
      name: keda-operator-token-creator
      namespace: <namespace_name> 
    1
    
    rules:
    - apiGroups:
      - ""
      resources:
      - serviceaccounts/token
      verbs:
      - create
      resourceNames:
      - thanos 
    2
    
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: keda-operator-token-creator-binding
      namespace: <namespace_name> 
    3
    
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: Role
      name: keda-operator-token-creator
    subjects:
    - kind: ServiceAccount
      name: keda-operator
      namespace: openshift-keda
    Copy to Clipboard Toggle word wrap
    1
    指定服务帐户的命名空间。
    2
    指定服务帐户的名称。
    3
    指定服务帐户的命名空间。
  • 如果使用 secret,Secret 对象必须存在。

流程

  1. 创建 TriggerAuthenticationClusterTriggerAuthentication 对象。

    1. 创建定义对象的 YAML 文件:

      带有绑定服务帐户令牌的触发器身份验证示例

      kind: TriggerAuthentication
      apiVersion: keda.sh/v1alpha1
      metadata:
        name: prom-triggerauthentication
        namespace: my-namespace 
      1
      
        spec:
        boundServiceAccountToken: 
      2
      
          - parameter: token
            serviceAccountName: thanos 
      3
      Copy to Clipboard Toggle word wrap

      1
      指定您要缩放的对象的命名空间。
      2
      指定在连接到指标端点时,此触发器身份验证使用绑定服务帐户令牌进行授权。
      3
      指定要使用的服务帐户的名称。
    2. 创建 TriggerAuthentication 对象:

      $ oc create -f <filename>.yaml
      Copy to Clipboard Toggle word wrap
  2. 创建或编辑使用触发器身份验证的 ScaledObject YAML 文件:

    1. 运行以下命令,创建定义对象的 YAML 文件:

      使用触发器身份验证的扩展对象示例

      apiVersion: keda.sh/v1alpha1
      kind: ScaledObject
      metadata:
        name: scaledobject
        namespace: my-namespace
      spec:
        scaleTargetRef:
          name: example-deployment
        maxReplicaCount: 100
        minReplicaCount: 0
        pollingInterval: 30
        triggers:
        - type: prometheus
          metadata:
            serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9092
            namespace: kedatest # replace <NAMESPACE>
            metricName: http_requests_total
            threshold: '5'
            query: sum(rate(http_requests_total{job="test-app"}[1m]))
            authModes: "basic"
          authenticationRef:
            name: prom-triggerauthentication 
      1
      
            kind: TriggerAuthentication 
      2
      Copy to Clipboard Toggle word wrap

      1
      指定触发器身份验证对象的名称。
      2
      指定 TriggerAuthenticationTriggerAuthentication 是默认值。

      使用集群触发器身份验证的扩展对象示例

      apiVersion: keda.sh/v1alpha1
      kind: ScaledObject
      metadata:
        name: scaledobject
        namespace: my-namespace
      spec:
        scaleTargetRef:
          name: example-deployment
        maxReplicaCount: 100
        minReplicaCount: 0
        pollingInterval: 30
        triggers:
        - type: prometheus
          metadata:
            serverAddress: https://thanos-querier.openshift-monitoring.svc.cluster.local:9092
            namespace: kedatest # replace <NAMESPACE>
            metricName: http_requests_total
            threshold: '5'
            query: sum(rate(http_requests_total{job="test-app"}[1m]))
            authModes: "basic"
          authenticationRef:
            name: prom-cluster-triggerauthentication 
      1
      
            kind: ClusterTriggerAuthentication 
      2
      Copy to Clipboard Toggle word wrap

      1
      指定触发器身份验证对象的名称。
      2
      指定 ClusterTriggerAuthentication
    2. 运行以下命令来创建扩展的对象:

      $ oc apply -f <filename>
      Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat