Невозможно настроить непрерывное развертывание в новом приложении-контейнере Azure из-за ошибки «отклонить назначение»

Я успешно завершил обучение по контейнерным функциям в приложениях-контейнерах Azure.

Теперь, когда я собираюсь настроить Github Actions для непрерывного развертывания из приложения-контейнера на портале Azure, я получаю такую ​​ошибку:

Не удалось настроить непрерывное развертывание с ошибкой: клиент «{email-address}» с идентификатором объекта «{user-uuid}» имеет разрешение на выполнение действия «Microsoft.Resources/deployments/write» в области «/subscriptions/{subscription». -uuid}/resourcegroups/{strange-containerapp-resource group}/providers/Microsoft.Resources/deployments/Microsoft-Continious-Deployment-cb0020a2-8aed'; однако доступ запрещен из-за запрещенного назначения с именем "{deny-assignment-uuid}" и идентификатором "{deny-assignment-uuid}" в области "/subscriptions/{subscription-uuid}/resourceGroups/{strange- контейнерное приложение-ресурсная группа}'.

Что такое «отказ в назначении» и почему он не позволяет мне настроить непрерывное развертывание?

Само приложение-контейнер находится в странной группе ресурсов с именем типа MyContainerappEnvironment_FunctionApps_{deny-assignment-uuid}. Все остальные ресурсы, созданные в соответствии с руководством, находятся в ожидаемой группе ресурсов AzureFunctionsContainers-rg, но не в самом приложении-контейнере!

Если я попытаюсь переместить приложение-контейнер в другую группу ресурсов, я получу аналогичную ошибку «запретить назначение».

О чем это? Разве мы не должны настраивать непрерывное развертывание внутри самого приложения-контейнера? Помощь!

Связанный вопрос на Github:

https://github.com/Azure/azure-functions-on-container-apps/issues/65

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не удалось настроить непрерывное развертывание с ошибкой: клиент «{email-address}» с идентификатором объекта «{user-uuid}» имеет разрешение на выполнение действия «Microsoft.Resources/deployments/write» в области «/subscriptions/{subscription». -uuid}/resourcegroups/{strange-containerapp-resource group}/providers/Microsoft.Resources/deployments/Microsoft-Continious-Deployment-cb0020a2-8aed'; однако доступ запрещен из-за запрещенного назначения с именем "{deny-assignment-uuid}" и идентификатором "{deny-assignment-uuid}" в области "/subscriptions/{subscription-uuid}/resourceGroups/{strange- контейнерное приложение-ресурсная группа}'.

Эта ошибка возникает из-за отказа в назначениях в созданной группе ресурсов, в которой размещено приложение-контейнер.

Я столкнулся с той же ошибкой при развертывании функций в приложениях-контейнерах с помощью действий GitHub.

Это связано с тем, что Azure автоматически создает запретные назначения для защиты ресурсов, и эти назначения невозможно удалить. Это не позволяет пользователям выполнять развертывания даже после получения полного доступа.

Выполните следующие шаги, чтобы настроить развертывание с помощью действий GitHub:

  1. Создайте новый Function App вместе с новым Container Apps Environment.

  2. Настройте следующие секреты в разделе GitHub=>Settings=>Secrets:

  • AZURE_RBAC_CREDENTIALS

Используйте приведенную ниже команду CLI для создания учетных данных RBAC:

 az ad sp create-for-rbac --name <appname> --role contributor \
                            --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Web/sites/{app-name} \
                            --sdk-auth

Выход:

{
  "clientId": "3d45e7b0-72d7-XXXXXX",
  "clientSecret": ".148Q~jpO4zA6vGoIdzmiXXXXv",
  "subscriptionId": "d93995e6-2XXXXX52bc",
  "tenantId": "9329cXXXXXXb6e37b19af6d",
  "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
  "resourceManagerEndpointUrl": "https://management.azure.com/",
  "activeDirectoryGraphResourceId": "https://graph.windows.net/",
  "sqlManagementEndpointUrl": "https://management.core.windows.net:8443/",
  "galleryEndpointUrl": "https://gallery.azure.com/",
  "managementEndpointUrl": "https://management.core.windows.net/"
}
  • РЕГИСТРАЦИЯ_USERNAME
  • РЕГИСТРАЦИЯ_ПАРОЛЬ

Команда CLI для получения имени пользователя и пароля:

az acr credential show -n <registryname> --query "[username, passwords[0].value]" -o tsv

  1. Создайте рабочий процесс в своем репозитории GitHub и добавьте приведенный ниже код yml с правильными значениями.

Рабочий процесс:

name: Deploy container to Azure Functions App

on:
  push:
    branches: [ main ]

permissions:
  contents: read
  
# set up the environment variables

env: 
  AZURE_FUNCTION_APP_NAME: 'your-app-name'   
  LOGIN_SERVER: 'login-server'                 
  REGISTRY: 'your-registry'                       
  NAMESPACE: 'your-namespace'                     
  IMAGE: 'your-image'                             
  TAG: ${{ github.sha }}                          

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout to the branch
        uses: actions/checkout@v3

      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1

      - name: Log in to container registry
        uses: docker/login-action@v1
        with:
          registry: ${{ env.LOGIN_SERVER }}
          username: ${{ secrets.REGISTRY_USERNAME }}
          password: ${{ secrets.REGISTRY_PASSWORD }}

      - name: Build and push container image to registry
        uses: docker/build-push-action@v2
        with:
          push: true
          tags: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/${{ env.IMAGE }}:${{ env.TAG }}
          file: ./Dockerfile
          context: ./

  deploy:
    runs-on: ubuntu-latest
    needs: build
    
    steps:
      - name: Azure Login
        uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_RBAC_CREDENTIALS }}

      - name: 'Run Azure Functions Container Action'
        uses: Azure/functions-container-action@v1
        id: fa
        with:
          app-name: ${{ env.AZURE_FUNCTION_APP_NAME }}
          image: ${{ env.REGISTRY }}/${{ env.NAMESPACE }}/${{ env.IMAGE }}:${{ env.TAG }}

      - name: Azure logout
        run: |
          az logout

Статус развертывания:

Спасибо, я задал тот же вопрос на Github, и они дали аналогичный ответ: github.com/Azure/azure-functions-on-container-apps/issues/…

Peter Radocchia 12.07.2024 00:26

Я столкнулся с той же проблемой. Я даже не могу создать новую версию своего приложения-контейнера для развертывания на портале. И он не будет автоматически обновляться, когда я добавляю новое изображение. Является ли единственный способ создать новую версию или обновить образ путем создания учетных данных RBAC и использования рабочего процесса действий GitHub?

Matt 16.07.2024 06:30

Другие вопросы по теме

Сбой привязки управляемого сертификата к личному домену для приложения-контейнера Azure с помощью az CLI
Получить имя шаблона из переменной и запустить шаблон?
Как переключить профиль рабочей нагрузки приложения-контейнера Azure с потребления на выделенный профиль рабочей нагрузки?
Azure Loadbalancer с пересылкой трафика по общедоступному IP-адресу в приложения-контейнеры
Передать список объектов в модуль Terraform в качестве параметра
Разрешение приложению-контейнеру Azure взаимодействовать с SQL Server и хранилищем BLOB-объектов через группу безопасности сети
Обновление правила масштабирования приложения-контейнера Azure с помощью PowerShell
Можно ли заполнить секреты приложения-контейнера Azure значениями из AppConfiguration?
Невозможно создать частную ссылку для шлюза приложений Azure, поскольку мне нужно удалить внешние ресурсы перед развертыванием в этой подсети
Сбой контейнера Grobid при использовании приложений-контейнеров Azure

Похожие вопросы

Как удалить файлы, хранящиеся в хранилище Службы приложений Azure, с помощью функций Azure?
Проблема с PIP Python в функциях Azure
Получение TaskCanceledException при использовании проверки подлинности без пароля с помощью функций Azure и Entity Framework с SQL Server
Почему моя функция Azure не может прочитать переменную среды, определенную в классе запуска?
Функция Azure, работающая в виртуальной сети, не может подключиться к кэшу Redis Azure, занесенному в белый список
Функции Azure в Python: ошибка «Требуется дуплексный режим»
Ошибка авторизации при отправке большого двоичного объекта с управляемой идентификацией
Приложение-функция Azure — нет настройки непрерывного развертывания для плана хостинга «Гибкое потребление»?
Как настроить проверку утверждения конвейера Azure для развертывания в приложениях-функциях Azure?
Как получить доступ к строке подключения с помощью Python