我正在尝试AKS和Azure CLI。因此,我的第一个想法是使用Azure CLI命令设置AKS群集,一切顺利。下一步是将所有这些不同的命令捆绑到一个bash脚本中。通过在脚本中使用变量,我希望让生活变得更轻松,并且一开始就做到了。直到我到达az aks create
命令,然后才试图传递--client-secret $AKS_SP_SECRET
和--service-principal $AKS_SP_APP_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 \
如果将上面的脚本分成2个不同的脚本,并且像这样AKS_SP_PASSWORD=99173ccb-5f2a-4eab-b367-3257fd9627ac
在第二个脚本中设置AKS_SP_SECRET变量的值,那么我不会收到错误,一切都会按预期进行。
有人看到我在做什么错吗?并且可以通过bash脚本中的变量传递秘密吗?
亲切的问候。
答案 0 :(得分:0)
根据我的经验,大多数命令是正确的,但是您最好对其中一些命令进行一些更改,因此最终,脚本将如下所示:
#!/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