我有一个ARM模板,该模板创建一个Azure密钥保管库,然后创建一个Azure Kubernetes服务。问题在于,Azure Kubernetes服务需要在我首次创建时传递的服务原则的客户端ID和客户端密钥。因此,我运行application.json
文件中没有kubernetes_servicePrincipalClientId
和kubernetes_servicePrincipalClientSecret
参数的production.parameters.json
:
{
"comments": "Kubernetes Service Principal Client ID",
"type": "Microsoft.KeyVault/vaults/secrets",
"name": "[concat(parameters('key_vault_name'), '/KubernetesServicePrincipalClientId')]",
"apiVersion": "2018-02-14",
"properties": {
"contentType": "text/plain",
"value": "[parameters('kubernetes_servicePrincipalClientId')]"
}
},
{
"comments": "Kubernetes Service Principal Client Secret",
"type": "Microsoft.KeyVault/vaults/secrets",
"name": "[concat(parameters('key_vault_name'), '/KubernetesServicePrincipalClientSecret')]",
"apiVersion": "2018-02-14",
"properties": {
"contentType": "text/plain",
"value": "[parameters('kubernetes_servicePrincipalClientSecret')]"
}
}
第二次运行ARM模板时,将以下几行添加到我的production.parameters.json
文件中,以便从我第一次运行存储库的Azure Key Vault中检索客户端ID和客户端密钥。 ARM模板。
"kubernetes_servicePrincipalClientId": {
"reference": {
"keyVault": {
"id": "/subscriptions/[Subscription Id]/resourcegroups/[Resource Group Name]/providers/Microsoft.KeyVault/vaults/[Vault Name]"
},
"secretName": "KubernetesServicePrincipalClientId"
}
},
"kubernetes_servicePrincipalClientSecret": {
"reference": {
"keyVault": {
"id": "/subscriptions/[Subscription Id]/resourcegroups/[Resource Group Name]/providers/Microsoft.KeyVault/vaults/[Vault Name]"
},
"secretName": "KubernetesServicePrincipalClientSecret"
}
}
不幸的是,您似乎无法在ARM模板中创建服务主体。是否有更好的方法来自动配置所有这些,以便无论我是第一次还是第二次运行模板,都不必执行任何手动步骤?
答案 0 :(得分:3)
不,这些API不会公开,无法使用ARM模板管理服务主体。但是,您可以创建一个脚本来配置服务主体并将其详细信息传递给arm模板,或者可以使用某种工具为您处理所有这些工作(pulumi \ terraform \ ansible)