3.5. カスタムメトリクスオートスケーラートリガー認証について
トリガー認証を使用すると、関連付けられたコンテナーで使用できるスケーリングされたオブジェクトまたはスケーリングされたジョブに認証情報を含めることができます。トリガー認証を使用して、OpenShift Container Platform シークレット、プラットフォームネイティブの Pod 認証メカニズム、環境変数などを渡すことができます。
スケーリングするオブジェクトと同じ namespace に TriggerAuthentication オブジェクトを定義します。そのトリガー認証は、その namespace 内のオブジェクトによってのみ使用できます。
または、複数の namespace のオブジェクト間で認証情報を共有するには、すべての namespace で使用できる ClusterTriggerAuthentication オブジェクトを作成できます。
トリガー認証とクラスタートリガー認証は同じ設定を使用します。ただし、クラスタートリガー認証では、スケーリングされたオブジェクトの認証参照に追加の kind パラメーターが必要です。
バインドされたサービスアカウントトークンを使用するトリガー認証の例
kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
name: secret-triggerauthentication
namespace: my-namespace
spec:
boundServiceAccountToken:
- parameter: bearerToken
serviceAccountName: thanos
バインドされたサービスアカウントトークンを使用するクラスタートリガー認証の例
kind: ClusterTriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
name: bound-service-account-token-triggerauthentication
spec:
boundServiceAccountToken:
- parameter: bearerToken
serviceAccountName: thanos
Basic 認証にシークレットを使用するトリガー認証の例
kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
name: secret-triggerauthentication
namespace: my-namespace
spec:
secretTargetRef:
- parameter: username
name: my-basic-secret
key: username
- parameter: password
name: my-basic-secret
key: password
Basic 認証のシークレットの例
apiVersion: v1
kind: Secret
metadata:
name: my-basic-secret
namespace: default
data:
username: "dXNlcm5hbWU="
password: "cGFzc3dvcmQ="
- 1
- トリガー認証に提供するユーザー名とパスワード。
dataスタンザ内の値は、Base64 でエンコードされている必要があります。
CA の詳細にシークレットを使用するトリガー認証の例
kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
name: secret-triggerauthentication
namespace: my-namespace
spec:
secretTargetRef:
- parameter: key
name: my-secret
key: client-key.pem
- parameter: ca
name: my-secret
key: ca-cert.pem
- 1
- スケーリングするオブジェクトの namespace を指定します。
- 2
- このトリガー認証では、メトリクスエンドポイントに接続するときに、認可にシークレットを使用することを指定します。
- 3
- 使用する認証の種類を指定します。
- 4
- 使用するシークレットの名前を指定します。
- 5
- 指定されたパラメーターで使用するシークレットのキーを指定します。
- 6
- メトリクスエンドポイントに接続するときに、カスタム CA の認証パラメーターを指定します。
- 7
- 使用するシークレットの名前を指定します。認証局 (CA) の詳細を含む次のシークレットの例を参照してください。
- 8
- 指定されたパラメーターで使用するシークレットのキーを指定します。
認証局 (CA) の詳細を含むシークレットの例
apiVersion: v1
kind: Secret
metadata:
name: my-secret
namespace: my-namespace
data:
ca-cert.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0...
client-cert.pem: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0...
client-key.pem: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0t...
ベアラートークンを使用するトリガー認証の例
kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
name: token-triggerauthentication
namespace: my-namespace
spec:
secretTargetRef:
- parameter: bearerToken
name: my-secret
key: bearerToken
ベアラートークンのシークレットの例
apiVersion: v1
kind: Secret
metadata:
name: my-secret
namespace: my-namespace
data:
bearerToken: "<bearer_token>"
- 1
- ベアラー認証で使用するベアラートークンを指定します。値は Base64 でエンコードされている必要があります。
環境変数を使用するトリガー認証の例
kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
name: env-var-triggerauthentication
namespace: my-namespace
spec:
env:
- parameter: access_key
name: ACCESS_KEY
containerName: my-container
Pod 認証プロバイダーを使用するトリガー認証の例
kind: TriggerAuthentication
apiVersion: keda.sh/v1alpha1
metadata:
name: pod-id-triggerauthentication
namespace: my-namespace
spec:
podIdentity:
provider: aws-eks
3.5.1. トリガー認証の使用 リンクのコピーリンクがクリップボードにコピーされました!
トリガー認証とクラスタートリガー認証は、カスタムリソースを使用して認証を作成し、スケーリングされたオブジェクトまたはスケーリングされたジョブへの参照を追加することで使用します。
前提条件
- Custom Metrics Autoscaler Operator をインストールしている。
- バインドされたサービスアカウントトークンを使用している場合は、サービスアカウントが存在している必要があります。
バインドされたサービスアカウントトークンを使用している場合は、Custom Metrics Autoscaler Operator がサービスアカウントからサービスアカウントトークンを要求できるようにするロールベースのアクセス制御 (RBAC) オブジェクトが存在する必要があります。
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: - thanos2 --- 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-
シークレットを使用している場合は、
Secretオブジェクトが存在している必要があります。
手順
TriggerAuthenticationまたはClusterTriggerAuthenticationオブジェクトを作成します。オブジェクトを定義する YAML ファイルを作成します。
バインドされたサービスアカウントトークンを使用したトリガー認証の例
kind: TriggerAuthentication apiVersion: keda.sh/v1alpha1 metadata: name: prom-triggerauthentication namespace: my-namespace1 spec: boundServiceAccountToken:2 - parameter: token serviceAccountName: thanos3 TriggerAuthenticationオブジェクトを作成します。$ oc create -f <filename>.yaml
トリガー認証を使用する
ScaledObjectYAML ファイルを作成または編集します。次のコマンドを実行して、オブジェクトを定義する 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-triggerauthentication1 kind: TriggerAuthentication2 クラスタートリガー認証を使用したスケーリングされたオブジェクトの例
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-triggerauthentication1 kind: ClusterTriggerAuthentication2 次のコマンドを実行して、スケーリングされたオブジェクトを作成します。
$ oc apply -f <filename>