Desplegando Redis Standalone con un Operador en Kubernetes
Toda aplicación moderna necesita ser rápida. Una de las formas más efectivas de lograr velocidad es a través del caching. En nuestro ecosistema, Redis será nuestra navaja suiza para el almacenamiento en memoria.
En este tutorial, desplegaremos una instancia de Redis en nuestro clúster de Kubernetes. Pero en lugar de gestionar manualmente los complejos StatefulSets
y Services
, utilizaremos un patrón avanzado y recomendado: el Patrón Operator. Específicamente, usaremos el Redis Operator de Opstree para que gestione el ciclo de vida de nuestra instancia de Redis por nosotros.
Parte 1: Entendiendo los “Porqués”
Section titled “Parte 1: Entendiendo los “Porqués””Antes de ejecutar comandos, aclaremos algunos conceptos clave.
Parte 2: Desplegando el Operador y la Instancia de Redis
Section titled “Parte 2: Desplegando el Operador y la Instancia de Redis”-
Añadir el Repositorio de Helm Primero, le indicamos a Helm dónde encontrar los charts del Redis Operator de Opstree.
Terminal window helm repo add ot-helm https://ot-container-kit.github.io/helm-charts/ -
Instalar el Redis Operator Ahora, desplegamos el “cerebro” que gestionará nuestras instancias de Redis. Lo instalamos en su propio namespace para mantener todo organizado.
Terminal window helm install redis-operator ot-helm/redis-operator --namespace redis-operator --create-namespaceEl
STATUS: deployed
nos confirma que el Operator está instalado.En Lens, podemos verificar que la release
redis-operator
está activa y que su pod correspondiente está corriendo en el namespaceredis-operator
. -
Preparar el Archivo de Configuración de la Instancia Con el Operator esperando órdenes, ahora le diremos qué tipo de Redis queremos. Creamos un archivo
redis-standalone.yaml
con nuestros valores personalizados.redis-standalone.yaml redisStandalone:name: ""image: quay.io/opstree/redistag: v7.0.15imagePullPolicy: IfNotPresentimagePullSecrets: []serviceType: ClusterIPignoreAnnotations: []minReadySeconds: 0recreateStatefulSetOnUpdateInvalid: falseexternalService:enabled: trueserviceType: LoadBalancerport: 6379Las líneas clave aquí son
externalService.enabled: true
yserviceType: LoadBalancer
. Le estamos pidiendo al Operator que, además del servicio interno (ClusterIP
), cree un servicio externo de tipoLoadBalancer
para que podamos acceder a Redis desde fuera del clúster. -
Desplegar la Instancia de Redis Standalone Ahora, usamos Helm para crear nuestra instancia, pasándole nuestro archivo de configuración.
Terminal window helm install redis-standalone ot-helm/redis --namespace srv-redis --create-namespace -f redis-standalone.yamlEl Operator detectará esta nueva solicitud y provisionará todos los recursos necesarios (StatefulSet, Services, etc.) por nosotros.
-
Verificar el Despliegue en Lens En Lens, vemos la nueva release
redis-standalone
en el namespacesrv-redis
.Si vamos a la sección de Pods, veremos nuestro pod
redis-standalone-0
corriendo. Es unStatefulSet
, por eso el-0
al final.
Parte 3: Conexión y Verificación
Section titled “Parte 3: Conexión y Verificación”-
Analizando el Servicio
LoadBalancer
Navegamos a “Network > Services”. Vemos nuestroredis-standalone-external-service
de tipoLoadBalancer
. De nuevo, MetalLB ha hecho su trabajo y le ha asignado una IP de nuestra red local:192.168.0.31
. -
Conectarse con Redis Insight Para verificar que nuestra instancia funciona, usaremos Redis Insight, un potente cliente gráfico para Redis.
- Abrimos Redis Insight y hacemos clic en ”+ Add Redis database”.
- En el campo “Connection URL”, introducimos la IP y el puerto de nuestro servicio:
redis://default:192.168.0.31:6379
. - Hacemos clic en “Add Database”.
-
Conexión Exitosa Vemos nuestra nueva conexión en la lista, indicando que Redis Insight se ha conectado correctamente a nuestra instancia en Kubernetes.
Al hacer clic en la conexión, entramos al navegador de datos. ¡Nuestra instancia de Redis está vacía, funcionando y lista para recibir datos!
Conclusión
Section titled “Conclusión”¡Excelente trabajo! Has desplegado una pieza de infraestructura crítica utilizando un patrón moderno y robusto. Al usar el Redis Operator, hemos simplificado enormemente la gestión de una aplicación con estado como Redis.
Ahora tenemos un servicio de caché de alto rendimiento listo para ser utilizado por nuestros microservicios, lo que nos permitirá construir aplicaciones más rápidas y escalables. En los próximos artículos, continuaremos desplegando más servicios de infraestructura, como RabbitMQ y HashiCorp Vault antes de desplegar el Ecosistema completo de CodeDesignPlus.