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

无需启用AKS本地账户,Azure DevOps如何实现K8s部署?

无需AKS本地账户实现Azure DevOps到AKS的部署方案

前置条件

确保你的AKS集群已启用Azure AD身份验证,这是绕开本地账户的核心前提。如果未启用,执行以下命令更新集群:

az aks update -g <你的资源组名称> -n <你的AKS集群名称> --enable-aad

步骤1:创建Azure Resource Manager服务连接

直接通过Azure AD身份让Azure DevOps访问AKS,无需手动维护ServiceAccount:

  1. 进入Azure DevOps项目 → 项目设置 → 服务连接 → 新建服务连接
  2. 选择Azure Resource Manager类型,再选**服务主体(自动)**模式
  3. 选择AKS集群所属的订阅、资源组,为服务连接命名后保存

步骤2:为服务主体配置AKS RBAC权限

之前的报错核心是服务主体无集群资源查询权限,需分配对应RBAC角色:

方案A:集群管理员权限(测试场景快速验证)

先获取服务主体的Object ID:

az ad sp list --display-name <服务连接的服务主体名称> --query "[0].id" -o tsv

将该主体绑定到cluster-admin集群角色:

kubectl create clusterrolebinding devops-cluster-admin --clusterrole=cluster-admin --user=<服务主体Object ID>

方案B:最小权限绑定(生产环境推荐)

创建仅包含部署所需权限的自定义ClusterRole,再绑定到服务主体:

  1. 创建devops-deploy-role.yaml文件:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: devops-deploy-role
rules:
- apiGroups: [""]
  resources: ["namespaces", "pods", "services", "secrets"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["apps"]
  resources: ["deployments", "replicasets"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: ["networking.k8s.io"]
  resources: ["ingresses"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  1. 应用角色并绑定服务主体:
kubectl apply -f devops-deploy-role.yaml
kubectl create clusterrolebinding devops-deploy-binding --clusterrole=devops-deploy-role --user=<服务主体Object ID>

步骤3:配置Azure DevOps流水线

使用KubernetesManifest任务,通过刚创建的ARM服务连接完成部署:

steps:
- task: KubernetesManifest@0
  displayName: 'Deploy to AKS'
  inputs:
    action: 'deploy'
    kubernetesServiceConnection: '<你的ARM服务连接名称>'
    namespace: '<目标部署命名空间>'
    manifests: '$(System.DefaultWorkingDirectory)/manifests/*.yaml'
    containers: '<你的ACR地址>/<镜像名称>:$(Build.BuildId)'

常见问题排查

  • 若仍报权限错误:确认服务主体Object ID正确,绑定的ClusterRole包含namespaces资源的get/list权限
  • 验证AKS Azure AD集成状态:执行az aks show -g <资源组> -n <集群名> --query aadProfile,确保managed字段为true
  • 网络连通性:若使用自托管代理,需确保代理能访问AKS的API服务器地址

内容的提问来源于stack exchange,提问作者Sebastian Pacheco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:15:22