Как передать клиентский секрет субъекта службы при выполнении команды az aks create --client-secret <secret>в сценарии bash - PullRequest
1 голос
/ 02 ноября 2019

Я экспериментирую с AKS и Azure CLI. Поэтому моей первой идеей было использование команд Azure CLI для настройки кластера AKS, что прошло довольно неплохо. Следующим шагом является объединение всех этих разных команд в один скрипт bash. Используя переменные внутри скрипта, я надеялся сделать мою жизнь проще, и в начале это было сделано. Это было до тех пор, пока я не достиг команды az aks create, где я пытаюсь передать --client-secret $AKS_SP_SECRET и --service-principal $AKS_SP_APP_ID. Эти 2 переменные задаются двумя предыдущими командами интерфейса командной строки Azure (см. Сценарий)

. Это всегда приводит к ошибке, сообщающей, что «указан неверный секретный ключ клиента». Я уже проверил значение переменных, повторив переменную $ 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-скрипте?

С уважением.

1 Ответ

0 голосов
/ 04 ноября 2019

Согласно моему опыту, большинство команд верны, но некоторые из них вам лучше внести некоторые изменения, так что, наконец, скрипт будет выглядеть так:

#!/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
...