×

触发器身份验证允许您在可缩放对象或可缩放作业中包含身份验证信息,这些信息可由关联的容器使用。您可以使用触发器身份验证来传递Red Hat OpenShift Service on AWS密钥、平台原生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身份。支持的值为noneazuregcpaws-eksaws-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文件

      带有触发器身份验证的示例可缩放对象
      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是默认值。
      带有集群触发器身份验证的示例可缩放对象
      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>