如何将存储在库中的服务主体密码传递给az aks create --client-secret参数

时间:2018-12-30 21:01:32

标签: azure-keyvault azure-cli azure-aks

对于az aks create --client-secret参数,我无法通过存储在保管库中的服务主体密码

复制 1.)创建一个库

az keyvault create \
    --name ${AZURE_VAULT_NAME} \
    --resource-group ${AZURE_RESOURCE_GROUP} \
    --location ${AZURE_LOCATION} \
    --enabled-for-deployment 'true'

2。)使用保管库创建服务主体帐户

az ad sp create-for-rbac \
    --skip-assignment \
    --name ${AZURE_SERVICE_PRINCIPAL_NAME} \
    --create-cert \
    --cert ${AZURE_VAULT_SERVICE_PRINCIPAL_KEY_NAME} \
    --keyvault ${AZURE_VAULT_NAME}

3。)输出到az ad sp创建显示为

{
  "appId": "d216c019-cd17-4350-a467-77be6e76c135",
  "displayName": "aksServicePrincipalPOC",
  "name": "http://aksServicePrincipalPOC",
  "password": null,
  "tenant": "06dd2342-6928-44d9-bd0f-bfb06b15a097"
}

注释密码为空。

4。)使用服务主体创建aks集群。似乎没有一种方法可以传递az aks create命令的密钥或保管库名称。我没有设置--client-secret的值,因为创建服务主体帐户时未将其返回。

az aks create \
    --resource-group ${AZURE_RESOURCE_GROUP} \
    --name ${AKS_CLUSTER_NAME} \
    --admin-username ${AKS_NODE_ADMIN_USERNAME} \
    --node-count ${AKS_MIN_NUMBER_OF_NODES} \
    --service-principal ${AZURE_SERVICE_PRINCIPAL} \
    --client-secret ??????????? \
    --ssh-key-value ${AKS_VM_SSH_KEY_FILE_DIR}/${AKS_VM_SSH_KEY_FILE_NAME}.pub \    
    --network-plugin azure \
    --vnet-subnet-id ${AZURE_PRIVATE_SUBNET_ID} \
    --docker-bridge-address ${AZURE_AKS_DOCKER_BRIDGE_ADDRESS} \
    --dns-service-ip ${AZURE_AKS_DNS_SERVICE_IP} \
    --service-cidr ${AZURE_AKS_SERVICE_CIDR}

预期的行为: 应当使用az aks create选项,使其从保管库中拉出服务主体密码,以保持该机密。

1 个答案:

答案 0 :(得分:0)

这将不起作用,因为它将为服务主体而不是密码auth创建证书认证(因此它不返回任何密码值)。

因为您要它创建启用了证书身份验证的服务主体。