将应用程序部署到Azure Kubernetes Service失败,我的全局管理员帐户缺少权限/范围

bd1hkmkf  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(81)

这是一个很长的问题,对不起。
我正在做一个Git的课程,我们正在把一个应用程序推到AKS。已通过PluralSight请求支持,但尚未收到回复。我一个人在这里。
结果应该是成功展开至AKS。我的帐户没有理由会升起这个标志。
已尝试查看我的帐户权限,但我确实具有全局管理员权限。该帐户应适用于在错误中描述得相当模糊得范围内列出凭据得操作.
完整的错误是,我的帐户GUID和订阅GUID已编辑:
错误:“错误”:“代码”:“授权失败”,“消息”:“对象ID为”“的客户端”"无权在范围“/订阅//资源组//提供者/Microsoft.ContainerService/managedClusters//访问配置文件/群集管理员”上执行操作“Microsoft.ContainerService/managedClusters/accessProfiles/listCredential/action",或者该范围无效。”如果访问权限是最近授予的,请刷新您的凭据。"**
我很惊讶地使用对象ID(guid)并在Azure门户中搜索它,发现它是我的帐户,并分配了全局管理员角色。全局管理员角色应该能够完成所有操作。
env和secrets变量都在第一个作业中使用,并且这些变量都有效。第一个作业build-deploy-image可以完美地运行。
工作流程中第二个工作的YAML为:
部署到aks:

runs-on: ubuntu-latest
  
  if: github.ref == 'refs/heads/master'

  needs: build-deploy-image
      
  #env:
    #NAMESPACE: dummy
  
  steps:
  
  - uses: actions/checkout@main
  
  # Set the target Azure Kubernetes Service (AKS) cluster. 
  - uses: azure/aks-set-context@v1
    with:
      creds: '${{ secrets.AZURE_CREDENTIALS_DEMO }}'
      cluster-name: ${{ secrets.AKS_NAME_DEMO }}
      resource-group: ${{ secrets.AKS_RESOURCE_GROUP }}

  # Create namespace if doesn't exist
  # - run: |
  #    kubectl create namespace ${{ env.NAMESPACE }} --dry-run -o json | kubectl apply -f -

  # Create image pull secret for ACR
  - uses: azure/k8s-create-secret@v1
    with:
      container-registry-url: ${{ env.ACR_LOGON_SERVER }}
      container-registry-username: ${{ secrets.SERVICE_PRINCIPAL_ID_DEMO }}
      container-registry-password: ${{ secrets.SERVICE_PRINCIPAL_PASSWORD_DEMO }}
      secret-name: ${{ secrets.AKS_SECRET }}
      # namespace: ${{ env.NAMESPACE }}

  # Deploy app to AKS
  - uses: azure/k8s-deploy@v1
    with:
      manifests: |
        manifests/deployment.yml
        manifests/service.yml
      images: |
        ${{ env.IMAGE_NAME }}
      imagepullsecrets: |
        ${{ secrets.AKS_SECRET }}
      #namespace: ${{ env.NAMESPACE }}

字符串

8fsztsew

8fsztsew1#

有两种Azure角色可以应用于Azure Active Directory(Azure AD)用户或组:

Azure Kubernetes服务群集管理员角色

允许访问
Microsoft.ContainerService/managedClusters/listClusterAdminCredential/action API调用。此API调用将列出群集管理员凭据。为clusterAdmin角色下载kubeconfig。

Azure Kubernetes服务集群用户角色

允许访问Microsoft.ContainerService/managedClusters/listClusterUserCredential/action API调用。此API调用将列出群集用户凭据。为clusterUser角色下载kubeconfig。
注意事项:
1.在使用Azure AD的群集上,具有clusterUser角色的用户具有提示登录的空kubeconfig文件。登录后,用户可以根据其Azure AD用户或组设置进行访问。具有clusterAdmin角色的用户具有管理员访问权限。
1.在不使用Azure AD的群集上,clusterUser角色与clusterAdmin角色具有相同的效果。
当您为Azure Kubernetes使用基于Azure AD的RBAC时,您需要通过引用此Document为您的Kubernetes启用Azure AD集成的rbac。
您可以使用以下命令或从门户创建具有Azure AD RBAC的群集:-

az aks create -g myResourceGroup -n myManagedCluster --enable-aad --enable-azure-rbac

字符串
然后将Azure Kubernetes服务RBAC群集管理员角色分配给Azure AD用户或服务主体,如下所示:

az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID


您可以在github操作工作流中运行Azure CLI命令来创建和管理kubernetes集群,而不是使用

azure/k8s-deploy@v1


任务如下:-

Github动作工作流脚本:-

runs-on: ubuntu-latest
    steps:

      # Checkout code
      - uses: actions/checkout@main

      # Log into Azure
      - uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

      - name: "Run az commands"
        run: |
              az group create --name myResourceGroup --location westus2
              az aks create -g myResourceGroup -n myManagedCluster --enable-aad --enable-azure-rbac
              AKS_ID=$(az aks show -g myResourceGroup -n myManagedCluster --query id -o tsv)
              az role assignment create --role "Azure Kubernetes Service RBAC Admin" --assignee <AAD-ENTITY-ID> --scope $AKS_ID

相关问题