3.5. 사용자 정의 메트릭 자동 확장기 트리거 인증 이해
트리거 인증을 사용하면 연관된 컨테이너에서 사용할 수 있는 확장된 개체나 확장된 작업에 인증 정보를 포함할 수 있습니다. 트리거 인증을 사용하여 OpenShift Container Platform 비밀, 플랫폼 기반 Pod 인증 메커니즘, 환경 변수 등을 전달할 수 있습니다.
크기를 조정하려는 개체와 동일한 네임스페이스에 TriggerAuthentication 개체를 정의합니다. 해당 트리거 인증은 해당 네임스페이스의 개체에서만 사용할 수 있습니다.
또는 여러 네임스페이스의 개체 간에 자격 증명을 공유하려면 모든 네임스페이스에서 사용할 수 있는 ClusterTriggerAuthentication 개체를 만들 수 있습니다.
트리거 인증과 클러스터 트리거 인증은 동일한 구성을 사용합니다. 그러나 클러스터 트리거 인증에는 확장된 개체의 인증 참조에 추가적인 종류 매개변수가 필요합니다.
바인딩된 서비스 계정 토큰을 사용하는 트리거 인증 예
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
기본 인증을 위해 비밀을 사용하는 트리거 인증 예시
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
기본 인증을 위한 예시 비밀번호
apiVersion: v1
kind: Secret
metadata:
name: my-basic-secret
namespace: default
data:
username: "dXNlcm5hbWU="
password: "cGFzc3dvcmQ="
- 1
- 트리거 인증에 제공할 사용자 이름과 비밀번호입니다.
데이터스탠자의 값은 Base-64로 인코딩되어야 합니다.
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
인증 기관(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
- 베어러 인증에 사용할 베어러 토큰을 지정합니다. 값은 Base-64로 인코딩되어야 합니다.
환경 변수를 사용하는 트리거 인증 예
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를 설치해야 합니다.
- 바인딩된 서비스 계정 토큰을 사용하는 경우 서비스 계정이 있어야 합니다.
바인딩된 서비스 계정 토큰을 사용하는 경우 사용자 지정 메트릭 자동 확장기 운영자가 서비스 계정에서 서비스 계정 토큰을 요청할 수 있도록 하는 역할 기반 액세스 제어(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>