gpt4 book ai didi

azure - Terraform Azure如何获取AKS服务主体对象ID

转载 作者:行者123 更新时间:2023-12-03 01:36:12 26 4
gpt4 key购买 nike

我正在尝试使用 Terraform 创建 AKS、ACR 和 AKS 服务主体的角色分配。在这里我想利用用 AKS 创建的 SP。

我指的是AKS Create cluster它说在创建 aks 集群时会用它创建一个 SP。

 provider "azurerm" {
version = "~> 1.31.0"
client_id = ""
client_secret = ""
tenant_id = ""
subscription_id = ""

}

variable "tftranining_rg_name" {}

variable "tftranining_rg_location" {}

resource "azurerm_resource_group" "terraform_training_rg" {
name = "${var.tftranining_rg_name}"
location = "${var.tftranining_rg_location}"
}

resource "azurerm_kubernetes_cluster" "k8s_gateway" {
resource_group_name = "${var.tftranining_rg_name}"
name = "terraform_training_aks"
location = "${var.tftranining_rg_location}"
dns_prefix = "terraform_training_aks_dns"

agent_pool_profile {
name = "agentpool"
count = "1"
vm_size = "Standard_DS1_v2"
os_type = "Linux"
os_disk_size_gb = 10
}
}

resource "azurerm_container_registry" "terraform_training_acr" {
# registry name can only contain alpha numeric characters
name = "terraformtrainingacr"
location = "${var.tftranining_rg_location}"
resource_group_name = "${var.tftranining_rg_name}"
sku = "Basic"
admin_enabled = true
}

#We need to give AKS's Service principal "Contributor" role for accessing ACR
resource "azurerm_role_assignment" "aks_acr_pullimage" {
#scope on which we are to assign this role
scope = "${azurerm_container_registry.lterraform_training_acr.id}"
#this refers to a builtin role definition
role_definition_name = "AcrPull"
#passing AKS's service principal's object id
principal_id = "AKS SP Object ID"
}

是否可以在角色分配中引用 AKS 服务主体的对象 ID,而不将其作为变量传递。

我希望使用通过 AKS 创建的默认 SP。

这可以使用命令来完成。我们可以使用 terraform 做同样的事情吗? Get SP using az cli

最佳答案

创建 AKS 群集时,服务主体是必需的。在 Terraform 中,它也是必需的参数。而且 AKS 集群也不会在 Terraform 中公开主体 Id,因此您无法通过其中的 AKS 资源引用 AKS 主体 Id。

据我所知,有两种方法可以使用服务主体而不将其作为变量传递。

一种方法是创建 service principalpassword 。然后,您可以在 AKS 集群中引用其服务主体 ID 和密码以及角色分配。

另一种方法是使用 Terraform external data resource运行包含 the Azure CLI command to create a service principal 的脚本。然后您还可以根据需要引用服务主体 ID 和密码。

关于azure - Terraform Azure如何获取AKS服务主体对象ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57753666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com