🔹 AKS에서 Admin VM에 RBAC 권한을 할당하는 방법
사용자가 아니라 Admin VM 자체에 AKS 권한을 부여하려면 Azure RBAC를 통해 Managed Identity 또는 Service Principal을 활용해야 합니다.
즉, Admin VM이 AKS에 직접 접근할 수 있도록 RBAC를 설정하는 방법을 설명하겠습니다.
✅ 1. Admin VM의 Managed Identity 확인
Admin VM이 Managed Identity (시스템 할당 또는 사용자 할당)을 사용하고 있는지 확인해야 합니다.
🔹 1-1. Managed Identity가 설정되었는지 확인 (Azure CLI)
az vm identity show --resource-group <resource_group> --name <admin_vm_name>
✅ 출력 예시 (Managed Identity 활성화됨)
{
"principalId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "SystemAssigned"
}
➡ "principalId" 값이 Admin VM의 Identity ID입니다.
❌ 출력 결과가 비어 있다면, Managed Identity가 활성화되지 않은 상태입니다.
➡ 아래 명령어로 활성화해야 합니다.
✅ 2. Admin VM에 Managed Identity 활성화
Admin VM이 Managed Identity를 사용하지 않는 경우, 아래 명령어를 실행하여 활성화합니다.
🔹 2-1. 시스템 할당 ID(System Assigned Identity) 활성화
az vm identity assign --resource-group <resource_group> --name <admin_vm_name>
➡ 이 작업을 수행하면 VM에 자동으로 ID가 할당됨.
🔹 2-2. 사용자 할당 ID(User Assigned Identity) 추가 (선택)
사용자 지정 ID를 사용할 경우:
az vm identity assign --resource-group <resource_group> --name <admin_vm_name> --identities <user_assigned_identity_id>
➡ <user_assigned_identity_id> 부분에 미리 생성된 사용자 ID를 입력.
✅ 3. Admin VM에 AKS 접근 권한 할당 (Azure RBAC)
Admin VM이 AKS에 접근하려면 적절한 Azure RBAC 권한을 부여해야 합니다.
🔹 3-1. Kubernetes Cluster - Admin Role 할당
AKS에 Admin VM의 Managed Identity를 Kubernetes 관리자로 추가합니다.
az role assignment create --assignee <vm_principal_id> --role "Kubernetes Cluster - Admin Role" --scope /subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_name>
✅ vm_principal_id는 Admin VM의 Managed Identity (Principal ID) 값입니다.
✅ "Kubernetes Cluster - Admin Role"은 AKS 관리 권한을 의미합니다.
➡ 이 명령어를 실행하면 Admin VM이 AKS 클러스터를 제어할 수 있도록 권한이 부여됨.
✅ 4. Kubernetes RBAC 설정 (ClusterRoleBinding)
Azure RBAC을 설정했어도, Kubernetes 내부에서도 RBAC 권한을 부여해야 합니다.
🔹 4-1. Admin VM의 Managed Identity를 cluster-admin으로 지정
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: admin-vm-cluster-admin
subjects:
- kind: User
name: "<vm_principal_id>" # Admin VM의 Managed Identity ID
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
➡ 이 설정을 적용하면 Admin VM이 클러스터 관리자 역할을 갖게 됨.
✅ Kubernetes에 적용
kubectl apply -f admin-vm-rbac.yaml
✅ 5. Admin VM에서 AKS 접근 테스트
권한이 제대로 부여되었는지 확인하려면 Admin VM에서 직접 AKS에 접근해 봅니다.
🔹 5-1. Admin VM에서 AKS 인증 정보 가져오기
az aks get-credentials --resource-group <resource_group> --name <aks_name> --admin
➡ Admin VM이 AKS 클러스터에 접근할 수 있도록 인증 정보를 다운로드함.
🔹 5-2. Kubernetes API 접근 테스트
kubectl get nodes
✅ 출력 예시 (정상)
NAME STATUS ROLES AGE VERSION
aks-nodepool1-12345678-1 Ready agent 10d v1.24.6
aks-nodepool1-12345678-2 Ready agent 10d v1.24.6
➡ 정상적으로 노드 목록이 보이면 성공! 🎯
📌 결론 – Admin VM이 AKS에 접근할 수 있도록 RBAC 권한 부여하기
✅ 1. Admin VM이 Managed Identity를 사용하는지 확인
✅ 2. Managed Identity가 없으면 추가 (az vm identity assign)
✅ 3. Azure RBAC에서 Kubernetes Cluster - Admin Role을 Admin VM에 부여
✅ 4. Kubernetes RBAC에서 cluster-admin 권한 추가 (ClusterRoleBinding)
✅ 5. Admin VM에서 kubectl get nodes로 테스트
이 설정을 적용하면 Admin VM이 직접 AKS 클러스터를 관리할 수 있습니다! 🚀😊