Der Unterschied liegt darin, dass dein AKS-Cluster und der Kubelet (Node-Pool) unterschiedliche Managed Identities haben!
🔹 1. aks.identity[0].principal_id
→ Cluster-Managed Identity (System-Assigned oder User-Assigned)
Wenn du in Terraform data.azurerm_kubernetes_cluster.aks.identity[0].principal_id
nutzt, bekommst du die Managed Identity des AKS-Clusters selbst.
Wann wird diese Identity verwendet?
- Falls dein AKS-Cluster mit einer System-Assigned Identity oder einer User-Assigned Identity erstellt wurde.
- Wird oft für API-Calls oder Berechtigungen auf Subscription-/Resource-Group-Ebene genutzt.
- Diese ID wird genutzt, wenn du z. B. eine Azure Policy oder ein RBAC-Role Assignment für das AKS-Cluster machst.
💡 Beispiel:
data "azurerm_kubernetes_cluster" "aks" {
name = "aks-test"
resource_group_name = "aks-test"
}
output "aks_identity" {
value = data.azurerm_kubernetes_cluster.aks.identity[0].principal_id
}
Dieser Wert entspricht der „principalId“ des AKS-Clusters.
🔹 2. identityProfile.kubeletidentity.clientId
→ Kubelet-Managed Identity (Node Pool)
Die identityProfile.kubeletidentity.clientId
, die du mit az aks show
bekommst, gehört zur Kubelet-Managed Identity.
Wann wird diese Identity verwendet?
- Diese Managed Identity wird von den AKS-Knoten (Worker Nodes) genutzt.
- Sie wird verwendet, wenn die Nodes z. B. Azure Container Registry (ACR), Key Vault oder andere Azure-Ressourcen aufrufen.
- Falls du Azure Files oder Azure Disks als Volumes mountest, nutzt der Kubelet-Daemon diese Identity.
💡 Beispiel:
aks show --resource-group aks-test --name aks-test --query "identityProfile.kubeletidentity.clientId" --output tsv
Dieser Wert entspricht der „clientId“ der Kubelet Identity.
🔹 Unterschied in der Praxis
Identity-Typ | Terraform (azurerm_kubernetes_cluster ) | CLI (az aks show ) | Verwendung |
---|---|---|---|
Cluster-Managed Identity | aks.identity[0].principal_id | identity.principalId | Wird für Azure-Ressourcen-Berechtigungen auf Cluster-Ebene genutzt |
Kubelet-Managed Identity (Node Pool) | Nicht direkt abrufbar mit Terraform | identityProfile.kubeletidentity.clientId | Wird von Knoten für ACR, Key Vault, Azure Disks etc. genutzt |
🔹 Wie bekomme ich die Kubelet-Identity mit Terraform?
Aktuell bietet Terraform keine direkte Möglichkeit, die kubeletidentity.clientId
aus identityProfile
abzurufen.
Ein Workaround wäre, das CLI-Kommando mit data "external"
oder local-exec
auszuführen:
data "external" "kubelet_identity" {
program = ["bash", "-c", "az aks show --resource-group aks-test --name aks-test --query 'identityProfile.kubeletidentity.clientId' --output tsv"]
}
output "kubelet_identity" {
value = data.external.kubelet_identity.result["client_id"]
}
📌 Fazit
aks.identity[0].principal_id
ist die Managed Identity des Clusters.identityProfile.kubeletidentity.clientId
ist die Managed Identity der Worker Nodes (Kubelet).- Terraform kann die Kubelet Identity aktuell nicht direkt abrufen – nur über
az aks show
.
Möchtest du noch genauere Details zu deiner AKS-Konfiguration? 😊
4o
Schreibe einen Kommentar
Du musst angemeldet sein, um einen Kommentar abzugeben.