0

我无法使用 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.publisherroles/pubsub.subscriberroles/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 按预期工作,可以从订阅中提取。

所以这里有两件事,

  1. 我有一个身份验证问题,我很好奇工作设置是什么样的?
  2. 为什么在身份验证失败的情况下将部署缩减为零?

谢谢

4

0 回答 0