Skip to content

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.

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”
  1. 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/
    Añadiendo el repositorio de Helm de Opstree
  2. 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-namespace

    El STATUS: deployed nos confirma que el Operator está instalado.

    Instalando el Redis Operator con Helm

    En Lens, podemos verificar que la release redis-operator está activa y que su pod correspondiente está corriendo en el namespace redis-operator.

    Verificando la release del Operator en Lens Verificando el pod del Operator en Lens
  3. 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/redis
    tag: v7.0.15
    imagePullPolicy: IfNotPresent
    imagePullSecrets: []
    serviceType: ClusterIP
    ignoreAnnotations: []
    minReadySeconds: 0
    recreateStatefulSetOnUpdateInvalid: false
    externalService:
    enabled: true
    serviceType: LoadBalancer
    port: 6379

    Las líneas clave aquí son externalService.enabled: true y serviceType: LoadBalancer. Le estamos pidiendo al Operator que, además del servicio interno (ClusterIP), cree un servicio externo de tipo LoadBalancer para que podamos acceder a Redis desde fuera del clúster.

  4. 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.yaml

    El Operator detectará esta nueva solicitud y provisionará todos los recursos necesarios (StatefulSet, Services, etc.) por nosotros.

    Desplegando la instancia de Redis Standalone con Helm
  5. Verificar el Despliegue en Lens En Lens, vemos la nueva release redis-standalone en el namespace srv-redis.

    Verificando la release de Redis Standalone en Lens

    Si vamos a la sección de Pods, veremos nuestro pod redis-standalone-0 corriendo. Es un StatefulSet, por eso el -0 al final.

    Verificando el pod de Redis Standalone en Lens
  1. Analizando el Servicio LoadBalancer Navegamos a “Network > Services”. Vemos nuestro redis-standalone-external-service de tipo LoadBalancer. De nuevo, MetalLB ha hecho su trabajo y le ha asignado una IP de nuestra red local: 192.168.0.31.

    Servicio LoadBalancer para Redis con IP externa
  2. 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”.
    Añadiendo una nueva base de datos en Redis Insight
  3. Conexión Exitosa Vemos nuestra nueva conexión en la lista, indicando que Redis Insight se ha conectado correctamente a nuestra instancia en Kubernetes.

    Conexión a Redis establecida en Redis Insight

    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!

    Navegador de datos de Redis Insight

¡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.