我无法使用 Google PubSub Scaler 在我的私有 GKE 集群中设置Keda 。
我有一个部署,我想根据订阅中的消息数量进行扩展。我的部署正在通过Workload Identity访问 Google 资源(轮询订阅)
我目前的设置是这样的。
我的部署:(只是添加了相关部分):
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: delay-executor
name: delay-executor
namespace: workflows
spec:
template:
spec:
serviceAccountName: delay-executor-sa
automountServiceAccountToken: false
terminationGracePeriodSeconds: 70
服务帐户 yaml 如下所示:
apiVersion: v1
kind: ServiceAccount
metadata:
annotations:
iam.gke.io/gcp-service-account: delay-executor-sa@PROJECT_ID.iam.gserviceaccount.com
name: delay-executor-sa
namespace: workflows
此服务帐户具有角色roles/pubsub.publisher
:roles/pubsub.subscriber
和roles/monitoring.viewer
。
现在是 keda 部分。
我想我应该使用 TriggerAuthenticator 并将 podIdentity 设置为gcp
,这是我的设置:
apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
name: keda-trigger-auth-gcp-credentials
namespace: workflows
spec:
podIdentity:
provider: gcp
还有我的 ScaledObject yaml:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
name: delay-executor-pubsub-scaledobject
namespace: workflows
spec:
scaleTargetRef:
name: delay-executor
triggers:
- type: gcp-pubsub
authenticationRef:
name: keda-trigger-auth-gcp-credentials
metadata:
subscriptionSize: "5"
subscriptionName: "my-subscription"
应用这些设置后,我的部署缩小到零,但是在订阅中有很多消息,检查日志keda-operator
我发现了这样的错误:
ERROR controller Reconciler error {"reconcilerGroup": "keda.sh", "reconcilerKind": "ScaledObject", "controller": "scaledobject", "name": "delay-executor-pubsub-scaledobject", "namespace": "workflows", "error": "error getting scaler for trigger #0: error parsing PubSub metadata: GoogleApplicationCredentials not found"}
和
ERROR gcp_pub_sub_scaler error getting Active Status {"error": "unexpected end of JSON input"}
Pod 按预期工作,可以从订阅中提取。
所以这里有两件事,
- 我有一个身份验证问题,我很好奇工作设置是什么样的?
- 为什么在身份验证失败的情况下将部署缩减为零?
谢谢