You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Una vez creada la cuenta de almacenamiento, vamos a crear una cola de mensajes:
37
46
38
47
```bash
@@ -44,25 +53,36 @@ az storage queue create \
44
53
45
54
Con ello, lo único que nos queda es asociar un `ScaledObject` a nuestro deployment de la API. Para ello, vamos a crear un fichero `ScaledObject` con el siguiente contenido:
46
55
47
-
```yaml
48
-
apiVersion: keda.k8s.io/v1alpha1
56
+
```bash
57
+
kubectl apply -f - <<EOF
58
+
apiVersion: keda.sh/v1alpha1
49
59
kind: ScaledObject
50
60
metadata:
51
-
name: tour-of-heroes
52
-
namespace: default
61
+
name: azure-queue-scaledobject
62
+
namespace: tour-of-heroes
53
63
spec:
54
-
scaleTargetRef:
55
-
deploymentName: tour-of-heroes
56
-
pollingInterval: 5
57
-
cooldownPeriod: 30
58
-
minReplicaCount: 1
59
-
maxReplicaCount: 10
60
-
triggers:
61
-
- type: azure-queue
62
-
metadata:
63
-
queueName: $QUEUE_NAME
64
-
connectionFromEnv: STORAGE_CONNECTION_STRING
65
-
queueLength: "5"
64
+
scaleTargetRef:
65
+
name: tour-of-heroes-api
66
+
triggers:
67
+
- type: azure-queue
68
+
metadata:
69
+
# Required
70
+
queueName: $QUEUE_NAME
71
+
# Optional, required when pod identity is used
72
+
accountName: $STORAGE_ACCOUNT_NAME
73
+
# Optional: connection OR authenticationRef that defines connection
74
+
connectionFromEnv: STORAGE_CONNECTION_STRING # Default: AzureWebJobsStorage. Reference to a connection string in deployment
75
+
# or authenticationRef as defined below
76
+
#
77
+
# Optional
78
+
queueLength: "5" # default 5
79
+
EOF
80
+
```
81
+
82
+
Puedes comprobar que el mismo se ha creado sin problemas con este comando:
83
+
84
+
```bash
85
+
kubectl get scaledobject -n tour-of-heroes
66
86
```
67
87
68
88
Para que el ScaledObject funcione debemos modificar el deployment de la API para que tenga la variable de entorno que almacena la cadena de conexión a la cuenta de almacenamiento:
@@ -73,5 +93,39 @@ kubectl set env deployment/tour-of-heroes-api \
Comprueba también que la variable de entorno forma parte de tu deployment:
97
+
98
+
```bash
99
+
kubectl describe deployment/tour-of-heroes-api \
100
+
--namespace tour-of-heroes
101
+
```
102
+
103
+
Ahora, **en un nuevo terminal**, vigila los pods de la API en un terminal:
104
+
105
+
```bash
106
+
kubectl get pods -n tour-of-heroes -w
107
+
```
108
+
109
+
Y en otro vamos a insertar en bucle unos cuantos mensajes en la cola de mensajes:
110
+
111
+
```bash
112
+
whiletrue;do
113
+
az storage message put \
114
+
--queue-name $QUEUE_NAME \
115
+
--content "Hello world" \
116
+
--account-name $STORAGE_ACCOUNT_NAME
117
+
done
118
+
```
119
+
Si todo se ha configurado correctamente, verás como el número de pods de la API se incrementa en función del número de mensajes que se van insertando en la cola de mensajes.
120
+
121
+
Tadaaa! Ya tienes tu API escalando automáticamente en función de eventos externos.
122
+
123
+
Ahora elimina los mensajes de la cola de mensajes:
76
124
125
+
```bash
126
+
az storage message clear \
127
+
--queue-name $QUEUE_NAME \
128
+
--account-name $STORAGE_ACCOUNT_NAME
129
+
```
77
130
131
+
Y comprueba como los pods de la API se van eliminando.
0 commit comments