×

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

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

或者,要在多个命名空间中的对象之间共享凭据,您可以创建一个 `ClusterTriggerAuthentication` 对象,该对象可在所有命名空间中使用。

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

基本身份验证的示例密钥
apiVersion: v1
kind: Secret
metadata:
  name: my-basic-secret
  namespace: default
data:
  username: "dXNlcm5hbWU=" (1)
  password: "cGFzc3dvcmQ="
1 提供给触发器身份验证的用户名和密码。`data` 部分中的值必须进行 Base64 编码。
使用基本身份验证密钥的示例触发器身份验证
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
1 指定要缩放的对象的命名空间。
2 指定此触发器身份验证在连接到指标端点时使用密钥进行授权。
3 指定要使用密钥提供的身份验证参数。
4 指定要使用的密钥名称。
5 指定要与指定参数一起使用的密钥中的密钥。
使用基本身份验证密钥的示例集群触发器身份验证
kind: ClusterTriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata: (1)
  name: secret-cluster-triggerauthentication
spec:
  secretTargetRef: (2)
  - parameter: username (3)
    name: my-basic-secret (4)
    key: username (5)
  - parameter: password
    name: my-basic-secret
    key: password
1 请注意,集群触发器身份验证不使用命名空间。
2 指定此触发器身份验证在连接到指标端点时使用密钥进行授权。
3 指定要使用密钥提供的身份验证参数。
4 指定要使用的密钥名称。
5 指定要与指定参数一起使用的密钥中的密钥。
包含证书颁发机构 (CA) 详细信息的示例密钥
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...
1 指定用于指标端点身份验证的 TLS CA 证书。该值必须进行 Base64 编码。
2 指定用于 TLS 客户端身份验证的 TLS 证书和密钥。这些值必须进行 Base64 编码。
使用 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)
1 指定要缩放的对象的命名空间。
2 指定此触发器身份验证在连接到指标端点时使用密钥进行授权。
3 指定要使用的身份验证类型。
4 指定要使用的密钥名称。
5 指定要与指定参数一起使用的密钥中的密钥。
6 指定连接到指标端点时自定义 CA 的身份验证参数。
7 指定要使用的密钥名称。
8 指定要与指定参数一起使用的密钥中的密钥。
包含持有者令牌的示例密钥
apiVersion: v1
kind: Secret
metadata:
  name: my-secret
  namespace: my-namespace
data:
  bearerToken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV" (1)
1 指定要与持有者身份验证一起使用的持有者令牌。`data` 部分中的值必须进行 Base64 编码。
使用持有者令牌的示例触发器身份验证
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)
1 指定要缩放的对象的命名空间。
2 指定此触发器身份验证在连接到指标端点时使用密钥进行授权。
3 指定要使用的身份验证类型。
4 指定要使用的密钥名称。
5 指定要与指定参数一起使用的令牌中的密钥。
使用环境变量的示例触发器身份验证
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)
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)
1 指定要缩放的对象的命名空间。
2 指定此触发器身份验证在连接到指标端点时使用平台原生 Pod 身份验证。
3 指定 Pod 身份。支持的值为 `none`、`azure`、`gcp`、`aws-eks` 或 `aws-kiam`。默认为 `none`。
其他资源

使用触发器身份验证

您可以使用自定义资源创建身份验证,然后将其引用添加到缩放对象或缩放作业中来使用触发器身份验证和集群触发器身份验证。

先决条件
  • 必须安装自定义指标自动缩放运算符。

  • 如果您使用的是密钥,则 `Secret` 对象必须存在,例如

    示例密钥
    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secret
    data:
      user-name: <base64_USER_NAME>
      password: <base64_USER_PASSWORD>
步骤
  1. 创建 `TriggerAuthentication` 或 `ClusterTriggerAuthentication` 对象。

    1. 创建一个定义该对象的 YAML 文件

      使用密钥的示例触发器身份验证
      kind: TriggerAuthentication
      apiVersion: keda.sh/v1alpha1
      metadata:
        name: prom-triggerauthentication
        namespace: my-namespace
      spec:
        secretTargetRef:
        - parameter: user-name
          name: my-secret
          key: USER_NAME
        - parameter: password
          name: my-secret
          key: USER_PASSWORD
    2. 创建 `TriggerAuthentication` 对象

      $ oc create -f <filename>.yaml
  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)
      1 指定触发器身份验证对象的名称。
      2 指定 `TriggerAuthentication`。`TriggerAuthentication` 是默认值。
      使用集群触发器身份验证的示例缩放对象
      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)
      1 指定触发器身份验证对象的名称。
      2 指定ClusterTriggerAuthentication
    2. 运行以下命令创建缩放对象:

      $ oc apply -f <filename>