gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:16:24 24 4
gpt4 key购买 nike

抱歉,这是一个很长的问题。

我正在学习 Git 类(class),我们正在将应用程序推送到 AKS。已通过 PluralSight 寻求支持,但尚未收到回复。有点像我自己在这里。

结果应该成功部署到 AKS。我的帐户提出此标记是没有意义的。

尝试检查我的帐户权限,事实上我确实拥有全局管理员权限。该帐户应该适用于在错误中描述得相当模糊的范围内列出凭据的操作。

完整的错误是,我的帐户 GUID 和订阅 GUID 已编辑:

错误:“错误”:“代码”:“AuthorizationFailed”,“消息”:“客户端“”,对象 ID ' ' 无权在范围 '/subscriptions//resourceGroups//providers/Microsoft.ContainerService/managedClusters//accessProfiles/clusterAdmin' 或范围无效。如果最近授予了访问权限,请刷新您的凭据。”*

我很惊讶地使用对象 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 }}

最佳答案

您可以将两个 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。

Note:

  1. On clusters that use Azure AD, users with the clusterUser role have an empty kubeconfig file that prompts a login. Once logged in, users have access based on their Azure AD user or group settings. Users with the clusterAdmin role have admin access.
  2. On clusters that don’t use Azure AD, the clusterUser role has same effect of clusterAdmin role.

当您为 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

关于azure - 将应用程序部署到 Azure Kubernetes 服务失败。我的全局管理员帐户缺少权限/范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76762318/

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