Azure aks 在执行az-aks create时,如何传递服务主体的客户机机密--client secret<;秘密>;bash脚本中的命令

Azure aks 在执行az-aks create时,如何传递服务主体的客户机机密--client secret<;秘密>;bash脚本中的命令,azure-aks,azure-cloud-shell,Azure Aks,Azure Cloud Shell,我正在试验AKS和Azure CLI。因此,我的第一个想法是使用Azure CLI命令来设置AKS群集,这非常顺利。下一步是将所有这些不同的命令捆绑到一个bash脚本中。通过在脚本中使用变量,我希望能让我的生活变得更轻松,一开始就做到了。这是直到我到达az aks create命令,在那里我试图传递--客户机密$aks\u SP\u secret和--服务负责人$aks\u SP\u APP\u ID。这两个变量由之前的两个Azure CLI命令设置(请参见脚本) 这总是导致一个错误,告诉我“提

我正在试验AKS和Azure CLI。因此,我的第一个想法是使用Azure CLI命令来设置AKS群集,这非常顺利。下一步是将所有这些不同的命令捆绑到一个bash脚本中。通过在脚本中使用变量,我希望能让我的生活变得更轻松,一开始就做到了。这是直到我到达
az aks create
命令,在那里我试图传递
--客户机密$aks\u SP\u secret
--服务负责人$aks\u SP\u APP\u ID
。这两个变量由之前的两个Azure CLI命令设置(请参见脚本)

这总是导致一个错误,告诉我“提供了无效的客户端密码”。我已经通过回显$AKS_SP_SECRET变量检查了变量的值,该变量包含密码值

这就是我目前正在尝试运行的脚本,它总是导致一个错误,告诉我提供的客户机机密无效

#!/bin/bash

LOCATION="westeurope"
RESOURCEGROUP_NAME="MyResourcegroup"
AKS_NAME="MyCluster"
AKS_SP_NAME='AksServicePrincipal'

# Create a service principal
az ad sp create-for-rbac \
    --name http://$AKS_SP_NAME \
    --skip-assignment

# Retrieve Service principal APPID and Client Secret
AKS_SP_APP_ID=$(az ad app list --display-name $AKS_SP_NAME --query "[].appId" -o tsv)
AKS_SP_SECRET=$(az ad sp credential reset --name http://$AKS_SP_NAME --query "password" -o tsv)

# Create Azure Kubernetes Cluster
az aks create --resource-group $RESOURCEGROUP_NAME \
    --name $AKS_NAME \    
    --client-secret $AKS_SP_SECRET \
    --service-principal $AKS_SP_APP_ID \
    --generate-ssh-keys \
    --location $LOCATION \
    --kubernetes-version 1.13.11 \
如果我将上述脚本拆分为两个不同的脚本,并在第二个脚本中设置AKS_SP_SECRET变量的值,如下面所示
AKS_SP_PASSWORD=99173ccb-5f2a-4eab-b367-3257fd9627ac
,那么我不会得到错误,一切正常

有人知道我做错了什么吗?是否可以通过bash脚本中的变量传递秘密


问候您。

根据我的经验,大多数命令都是正确的,但其中一些命令您最好进行一些更改,因此最后,脚本如下所示:

#!/bin/bash

LOCATION="westeurope"
RESOURCEGROUP_NAME="MyResourcegroup"
AKS_NAME="MyCluster"
AKS_SP_NAME='AksServicePrincipal'

# Create a service principal
AKS_SP_APP_ID=$(az ad sp create-for-rbac --name $AKS_SP_NAME --skip-assignment --query appId)

# Retrieve Service principal APPID and Client Secret
AKS_SP_SECRET=$(az ad sp credential reset --name $AKS_SP_NAME --query "password")

# Create Azure Kubernetes Cluster
az aks create --resource-group $RESOURCEGROUP_NAME \
    --name $AKS_NAME \
    --client-secret $AKS_SP_SECRET \
    --service-principal $AKS_SP_APP_ID \
    --generate-ssh-keys \
    --location $LOCATION \
    --kubernetes-version 1.13.11

根据我的经验,大多数命令都是正确的,但其中一些命令您最好进行一些更改,因此最后,脚本如下所示:

#!/bin/bash

LOCATION="westeurope"
RESOURCEGROUP_NAME="MyResourcegroup"
AKS_NAME="MyCluster"
AKS_SP_NAME='AksServicePrincipal'

# Create a service principal
AKS_SP_APP_ID=$(az ad sp create-for-rbac --name $AKS_SP_NAME --skip-assignment --query appId)

# Retrieve Service principal APPID and Client Secret
AKS_SP_SECRET=$(az ad sp credential reset --name $AKS_SP_NAME --query "password")

# Create Azure Kubernetes Cluster
az aks create --resource-group $RESOURCEGROUP_NAME \
    --name $AKS_NAME \
    --client-secret $AKS_SP_SECRET \
    --service-principal $AKS_SP_APP_ID \
    --generate-ssh-keys \
    --location $LOCATION \
    --kubernetes-version 1.13.11

还有问题吗?它解决了你的问题吗?嗨@Charles,我试过了,但仍然收到一个错误,说在Active Directory租户中找不到服务主体。但是如果我检查门户,主体存在,并且clientId和TenantID正确。您是否在我的回答中尝试脚本?我在测试中遇到了同样的错误,但没有在其中使用
--query
,而是解决了它。您将停留在哪一步?我没有看到该问题的任何更新,是否仍要解决该问题?是否还有其他问题?它解决了你的问题吗?嗨@Charles,我试过了,但仍然收到一个错误,说在Active Directory租户中找不到服务主体。但是如果我检查门户,主体存在,并且clientId和TenantID正确。您是否在我的回答中尝试脚本?我在测试中遇到了同样的错误,但没有在其中使用
--query
,而是解决了它。您将停留在哪一步?我没有看到该问题的任何更新,是否仍要解决该问题?