1

我正在试验 AKS 和 Azure CLI。所以我的第一个想法是使用 Azure CLI 命令来设置 AKS 集群,效果非常好。下一步是将所有这些不同的命令捆绑到一个 bash 脚本中。通过在脚本中使用变量,我希望让我的生活更轻松,并且在一开始就做到了。直到我到达az aks create命令,我试图通过--client-secret $AKS_SP_SECRET--service-principal $AKS_SP_APP_ID. 这 2 个变量由 2 个之前的 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_SECRET 变量的值,AKS_SP_PASSWORD=99173ccb-5f2a-4eab-b367-3257fd9627ac那么我不会收到错误消息,并且一切都按预期工作。

有谁看到我做错了什么?是否可以通过 bash 脚本中的变量传递秘密?

亲切的问候。

4

1 回答 1

1

根据我的经验,大多数命令都是正确的,但其中一些你最好做一些改变,所以最后,脚本如下所示:

#!/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
于 2019-11-04T08:23:08.523 回答