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


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

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

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

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

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

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

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

使用 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

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

使用用于基本身份验证的 secret 的集群触发器身份验证示例

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
指定在连接到指标端点时,此触发器身份验证使用 secret 进行授权。
3
使用 secret 指定提供的身份验证参数。
4
指定要使用的 secret 的名称。
5
指定 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...

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

1
指定您要缩放的对象的命名空间。
2
指定在连接到指标端点时,此触发器身份验证使用 secret 进行授权。
3
指定要使用的验证类型。
4
指定要使用的 secret 的名称。
5
指定 secret 中与指定参数一起使用的密钥。
6
指定连接到指标端点时的自定义 CA 的身份验证参数。
7
指定要使用的 secret 的名称。
8
指定 secret 中与指定参数一起使用的密钥。

带有 bearer 令牌的 secret 示例

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
指定在连接到指标端点时,此触发器身份验证使用 secret 进行授权。
3
指定要使用的验证类型。
4
指定要使用的 secret 的名称。
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

其他资源

3.5.1. 使用触发器身份验证

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

先决条件

  • 必须安装 Custom Metrics Autoscaler Operator。
  • 如果使用 secret,Secret 对象必须存在,例如:

    secret 示例

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secret
    data:
      user-name: <base64_USER_NAME>
      password: <base64_USER_PASSWORD>

流程

  1. 创建 TriggerAuthenticationClusterTriggerAuthentication 对象。

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

      使用 secret 的触发器验证示例

      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>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.