gpt4 book ai didi

Azure DevOps,由于 AD 权限不足而无法创建管道

转载 作者:行者123 更新时间:2023-12-02 06:40:28 25 4
gpt4 key购买 nike

我正在尝试在 AzureDevOps 中创建一个新管道。在配置选项卡中,我选择部署到 Azure Kubernetes 服务并选择适当的值,例如集群名称命名空间等。

当我单击“下一步”时,azure Devops 尝试验证并创建管道,但随后显示以下错误:

Failed to create an app in Azure Active Directory. Error: Insufficientprivileges to complete the operation. Ensure that the user haspermissions to create an Azure Active Directory Application.enter image description here

该错误是不言自明的,它似乎试图在幕后创建 AD 应用程序,但用户没有这样做的权限。

经过一些研究后,我相信有两种方法可以让我的用户能够创建这样的管道:(但也许我错了)

  1. 在 AD 目录的用户设置选项卡中,启用“用户可以注册应用程序”标记。此选项对我不起作用,因为它使每个人都能够创建应用,而这不是我想要的。
  • 允许我的用户能够访问Azure Active Directory。我相信如果我能够访问 Azure Active Directory,我将能够创建应用程序,但是由于访问 Azure Active Directory 的法律限制,此选项也是不可能的。
  • 有没有一种方法可以在 AzureDevOps 中创建管道,而无需执行我描述的两个选项?

    最佳答案

    当用户没有足够的权限在 Azure AD 中创建应用程序时,会出现上述错误。请参阅here .

    如果您不想将用户可以注册应用程序更改为,这样Azure AD租户中的任何用户都可以注册应用程序。您需要要求管理员为您分配适当的管理员角色,该角色可以创建和管理应用注册的各个方面。

    例如应用程序开发人员角色。请参阅available rolesrole permissions .

    Users in this role can create application registrations when the "Users can register applications" setting is set to No.

    另一个解决方法是创建 service principal用户已在 Azure Active Directory 中拥有所需的权限。这样,您将必须手动配置管道,而无需使用部署到 Azure Kubernetes 服务管道模板。

    1,首先您需要创建以下服务连接:

    创建Azure container Registry service connection使用服务主体。

    创建Kubernetes service connection .

    2、创建新管道时,需要在Configure your pipeline页面中选择Starter pipeline。然后将 docker 和 kubernete 任务添加到 yaml 管道中。请参阅示例 Build and push to Azure Container Registry , Deploy to Kubernetes .

    您可以引用下面的管道示例,并相应地更改变量和设置。

    trigger:
    - master

    resources:
    - repo: self

    variables:

    dockerRegistryServiceConnection: 'ACRserviceConnectionName'
    kubernetesServiceConnection: "kubernetesServiceConnectionName"
    imageRepository: 'nigx'
    containerRegistry: 'leviregistry.azurecr.io'
    dockerfilePath: '**/Dockerfile'
    tag: '$(Build.BuildId)'
    imagePullSecret: 'leviregistry8720a6c7-auth'

    # Agent VM image name
    vmImageName: 'ubuntu-latest'


    stages:
    - stage: Build
    displayName: Build stage
    jobs:
    - job: Build
    displayName: Build
    pool:
    vmImage: $(vmImageName)
    steps:
    - task: Docker@2
    displayName: Build and push an image to container registry
    inputs:
    command: buildAndPush
    repository: $(imageRepository)
    dockerfile: $(dockerfilePath)
    containerRegistry: $(dockerRegistryServiceConnection)
    tags: |
    $(tag)

    - upload: manifests
    artifact: manifests

    - stage: Deploy
    displayName: Deploy stage
    dependsOn: Build

    jobs:
    - deployment: Deploy
    displayName: Deploy
    pool:
    vmImage: $(vmImageName)
    strategy:
    runOnce:
    deploy:
    steps:
    - task: KubernetesManifest@0
    displayName: Create imagePullSecret
    inputs:
    action: createSecret
    secretName: $(imagePullSecret)
    kubernetesServiceConnection: $(kubernetesServiceConnection)
    dockerRegistryEndpoint: $(dockerRegistryServiceConnection)

    - task: KubernetesManifest@0
    displayName: Deploy to Kubernetes cluster
    inputs:
    action: deploy
    kubernetesServiceConnection: $(kubernetesServiceConnection)
    manifests: |
    $(Pipeline.Workspace)/manifests/deployment.yml
    $(Pipeline.Workspace)/manifests/service.yml
    imagePullSecrets: |
    $(imagePullSecret)
    containers: |
    $(containerRegistry)/$(imageRepository):$(tag)

    关于Azure DevOps,由于 AD 权限不足而无法创建管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63900414/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com