Skip to content

Commit e874a83

Browse files
committed
Añadida demo de Azure AD con AKS
1 parent d799ae1 commit e874a83

File tree

6 files changed

+144
-0
lines changed

6 files changed

+144
-0
lines changed
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
#Variables
2+
RESOURCE_GROUP="AKS-Loves-AzureAD"
3+
AKS_NAME="lemoncode-azuread"
4+
LOCATION="northeurope"
5+
6+
# Crear un grupo de recursos
7+
az group create --name $RESOURCE_GROUP --location $LOCATION
8+
9+
#Crear un cluster integrado con Azure AD
10+
az aks create -g $RESOURCE_GROUP -n $AKS_NAME --enable-aad
11+
12+
#Recuperar las credenciales de administrador para acceder al cluster
13+
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
14+
15+
#Comprueba que puedes acceder a los recursos del cluster
16+
kubectl get nodes
17+
18+
### Escenario 1: Soy Gisela y quiero tener permisos de administrador dentro del cluster
19+
kubectl apply -f 04-cloud/00-aks/04-azure-active-directory/manifests/cluster-role-binding.yaml
20+
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --overwrite-existing
21+
22+
#Ahora pruebo con un usario que no tiene credenciales de admin total
23+
kubectl get pods #ESTO NO VA
24+
25+
#Para que un usuario pueda interactuar con el clúster debemos asignar el Id del grupo de Azure AD al que pertenece al role
26+
#Estos son los ids de todos los grupos de mi directorio activo:
27+
az ad group list -o table
28+
#Almaceno el id del grupo llamado Stark
29+
GROUP_ID=$(az ad group show --group Stark --query objectId -o tsv)
30+
31+
#Recupero también el ID del clúster de AKS
32+
AKS_ID=$(az aks show -g ${RESOURCE_GROUP} -n ${AKS_NAME} --query id -o tsv)
33+
34+
#Asigno el grupo al rol "Azure Kubernetes Service Cluster User Role" en este cluster, porque no todos los grupos de Azure AD tienen por qué tener acceso a mi clúster
35+
az role assignment create \
36+
--assignee $GROUP_ID \
37+
--role "Azure Kubernetes Service Cluster User Role" \
38+
--scope $AKS_ID
39+
40+
#Hago lo mismo con los Lanisters
41+
GROUP_TWO_ID=$(az ad group show --group Lannister --query objectId -o tsv)
42+
43+
#De nuevo, asigno el grupo al rol "Azure Kubernetes Service Cluster User Role" en este cluster, porque no todos los grupos de Azure AD tienen por qué tener acceso a mi clúster
44+
az role assignment create \
45+
--assignee $GROUP_TWO_ID \
46+
--role "Azure Kubernetes Service Cluster User Role" \
47+
--scope $AKS_ID
48+
49+
#Si lo ves desde el portal tendríamos que tener estos dos grupos asignados a este rol en el cluster.
50+
51+
# Namespace para los Stark #
52+
53+
#Ahora vamos a crear dos namespaces como admin
54+
az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_NAME --admin
55+
56+
#Creamos el role
57+
kubectl apply -f 04-cloud/00-aks/04-azure-active-directory/manifests/role-the-north-remembers-ns.yaml
58+
#Hacemos la asociación del role a un grupo, en este caso los Stark
59+
kubectl apply -f 04-cloud/00-aks/04-azure-active-directory/manifests/ns-the-north-remembers-and-role-binding.yml
60+
61+
# Namespace para los Lanister #
62+
63+
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: ClusterRoleBinding
3+
metadata:
4+
name: returngis-cluster-admins
5+
roleRef:
6+
apiGroup: rbac.authorization.k8s.io
7+
kind: ClusterRole
8+
name: cluster-admin
9+
subjects:
10+
- apiGroup: rbac.authorization.k8s.io
11+
kind: User
12+
name: 4acb2121-3409-4679-aaf5-395ab0c2f406 # gisela.torres.buitrago@gmail.com
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: rbac.authorization.k8s.io/v1beta1
2+
kind: RoleBinding
3+
metadata:
4+
name: stark-access
5+
namespace: the-north-remembers
6+
roleRef:
7+
apiGroup: rbac.authorization.k8s.io
8+
kind: Role
9+
name: the-north-remembers-full-access
10+
subjects:
11+
- kind: Group
12+
namespace: the-north-remembers
13+
name: fd11b685-082e-408f-9f71-447caaaf85d4 #Stark's ObjectId
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: kings-landing
5+
6+
---
7+
8+
apiVersion: rbac.authorization.k8s.io/v1beta1
9+
kind: Role
10+
metadata:
11+
name: kings-landing-full-access
12+
namespace: kings-landing
13+
rules:
14+
- apiGroups: ["","extensions","apps"]
15+
resources: ["*"]
16+
verbs: ["*"]
17+
- apiGroups: ["batch"]
18+
resources:
19+
- jobs
20+
- cronjobs
21+
verbs: ["*"]
22+
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
apiVersion: v1
2+
kind: Namespace
3+
metadata:
4+
name: the-north-remembers
5+
6+
---
7+
8+
apiVersion: rbac.authorization.k8s.io/v1beta1
9+
kind: Role
10+
metadata:
11+
name: the-north-remembers-full-access
12+
namespace: the-north-remembers
13+
rules:
14+
- apiGroups: ["","extensions","apps"]
15+
resources: ["*"]
16+
verbs: ["*"]
17+
- apiGroups: ["batch"]
18+
resources:
19+
- jobs
20+
- cronjobs
21+
verbs: ["*"]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
apiVersion: rbac.authorization.k8s.io/v1beta1
2+
kind: RoleBinding
3+
metadata:
4+
name: lanister-access
5+
namespace: kings-landing
6+
roleRef:
7+
apiGroup: rbac.authorization.k8s.io
8+
kind: Role
9+
name: kings-landing-full-access
10+
subjects:
11+
- kind: Group
12+
namespace: kings-landing
13+
name: fe055b1b-2df8-44bc-8a3b-292608ca4702 #Lanister's Object Id

0 commit comments

Comments
 (0)