You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让KEDA使用应用程序的ServiceAccount而非默认账户?

解决KEDA使用自定义托管ID的问题

1. 卸载默认KEDA实例

用az aks update --enable-keda安装的KEDA会绑定默认的kube-system/keda-operator服务账号,先卸载该实例:

az aks update --resource-group myResourceGroup --name myAKSCluster --disable-keda

2. 确认应用的ServiceAccount

确保你的应用已存在对应的ServiceAccount(比如app-namespace/app-sa),如果没有,创建一个:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: app-sa
  namespace: app-namespace

执行应用命令:

kubectl apply -f app-sa.yaml

3. 关联ServiceAccount与自定义托管ID

假设你的托管ID名称为app-managed-identity,按以下步骤配置联邦身份凭证:

  • 获取托管ID资源ID:
MI_RESOURCE_ID=$(az identity show --resource-group myResourceGroup --name app-managed-identity --query id -o tsv)
  • 获取AKS集群的OIDC发行者URL:
OIDC_ISSUER=$(az aks show --resource-group myResourceGroup --name myAKSCluster --query oidcIssuerProfile.issuerUrl -o tsv)
  • 创建联邦身份凭证,绑定ServiceAccount与托管ID:
az identity federated-credential create \
  --name keda-app-federated-cred \
  --identity-name app-managed-identity \
  --resource-group myResourceGroup \
  --issuer ${OIDC_ISSUER} \
  --subject system:serviceaccount:app-namespace:app-sa \
  --audience api://AzureADTokenExchange

4. 用Helm安装KEDA并指定自定义ServiceAccount

先添加并更新KEDA Helm仓库:

helm repo add kedacore https://kedacore.github.io/charts
helm repo update

安装KEDA时,禁用默认ServiceAccount创建,指定你的应用ServiceAccount:

helm install keda kedacore/keda \
  --namespace kube-system \
  --set operator.serviceAccount.create=false \
  --set operator.serviceAccount.name=app-sa \
  --set operator.serviceAccount.namespace=app-namespace

5. 验证配置

  • 检查KEDA Operator Pod状态:
kubectl get pods -n kube-system | grep keda-operator
  • 查看Operator日志,确认无AADSTS700213错误:
kubectl logs -n kube-system <keda-operator-pod-name>
  • 测试ScaledObject触发逻辑,验证自动扩缩容正常工作。

内容的提问来源于stack exchange,提问作者Ricardo de Vries

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 04:57:08