×

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

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

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

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

基本身份验证示例密钥
apiVersion: v1
kind: Secret
metadata:
  name: my-basic-secret
  namespace: default
data:
  username: "dXNlcm5hbWU=" (1)
  password: "cGFzc3dvcmQ="
1 要提供给触发器身份验证的用户名和密码。`data` 部分中的值必须是 base-64 编码的。
使用密钥进行基本身份验证的触发器身份验证示例
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 证书。该值必须是 base-64 编码的。
2 指定用于 TLS 客户端身份验证的 TLS 证书和密钥。这些值必须是 base-64 编码的。
使用密钥进行 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 指定要与指定参数一起使用的密钥中的密钥。
包含 bearer 令牌的示例密钥
apiVersion: v1
kind: Secret
metadata:
  name: my-secret
  namespace: my-namespace
data:
  bearerToken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXV" (1)
1 指定要与 bearer 身份验证一起使用的 bearer 令牌。`data` 部分中的值必须是 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)
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. 创建TriggerAuthenticationClusterTriggerAuthentication对象。

    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文件。

      带有触发器身份验证的ScaledObject示例
      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 指定TriggerAuthenticationTriggerAuthentication是默认值。
      带有集群触发器身份验证的ScaledObject示例
      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>