Compartir comentarios
Las respuestas se generan en base a la documentación.

Prueba tu despliegue de Ruby on Rails

Prerrequisitos


Resumen

En esta sección, aprenderás a utilizar Docker Desktop para desplegar tu aplicación en un entorno de Kubernetes completo en tu máquina de desarrollo. Esto te permite probar y depurar tus cargas de trabajo en Kubernetes localmente antes del despliegue.


Crea un archivo YAML de Kubernetes

En tu directorio docker-ruby-on-rails, crea un archivo llamado docker-ruby-on-rails-kubernetes.yaml. Abre el archivo en un IDE o editor de texto y agrega el siguiente contenido. Reemplaza DOCKER_USERNAME/REPO_NAME con tu nombre de usuario de Docker y el nombre del repositorio que creaste en Configura CI/CD para tu aplicación de Ruby on Rails.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: docker-ruby-on-rails-demo
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      service: ruby-on-rails
  template:
    metadata:
      labels:
        service: ruby-on-rails
    spec:
      containers:
        - name: ruby-on-rails-container
          image: DOCKER_USERNAME/REPO_NAME
          imagePullPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
  name: docker-ruby-on-rails-demo
  namespace: default
spec:
  type: NodePort
  selector:
    service: ruby-on-rails
  ports:
    - port: 3000
      targetPort: 3000
      nodePort: 30001

En este archivo YAML de Kubernetes, hay dos objetos, separados por ---:

  • Un Deployment, que describe un grupo escalable de pods idénticos. En este caso, obtendrás solo una réplica, o copia de tu pod. Ese pod, que se describe bajo template, contiene un solo contenedor. El contenedor se crea a partir de la imagen compilada por GitHub Actions en Configura CI/CD para tu aplicación de Ruby on Rails.
  • Un servicio tipo NodePort, que redirigirá el tráfico desde el puerto 30001 en tu host al puerto 8001 dentro de los pods a los que se dirige, permitiéndote acceder a tu aplicación desde la red.

Para obtener más información sobre los objetos de Kubernetes, consulta la documentación de Kubernetes.


Despliega y comprueba tu aplicación

  1. En una terminal, navega a docker-ruby-on-rails y despliega tu aplicación en Kubernetes.

    $ kubectl apply -f docker-ruby-on-rails-kubernetes.yaml
    

    Deberías ver una salida como la siguiente, indicando que tus objetos de Kubernetes se crearon con éxito.

    deployment.apps/docker-ruby-on-rails-demo created
    service/docker-ruby-on-rails-demo created
  2. Asegúrate de que todo haya funcionado listando tus despliegues.

    $ kubectl get deployments
    

    Tu despliegue debería listarse de la siguiente manera:

    NAME                       READY   UP-TO-DATE   AVAILABLE   AGE
    docker-ruby-on-rails-demo  1/1     1            1           15s

    Esto indica que el pod solicitado en tu archivo YAML está activo y en funcionamiento. Realiza la misma comprobación para tus servicios.

    $ kubectl get services
    

    Deberías obtener una salida como la siguiente.

    NAME                        TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    kubernetes                  ClusterIP   10.96.0.1       <none>        443/TCP          23h
    docker-ruby-on-rails-demo   NodePort    10.99.128.230   <none>        3000:30001/TCP   75s

    Además del servicio predeterminado kubernetes, puedes ver tu servicio docker-ruby-on-rails-demo, aceptando tráfico en el puerto 30001/TCP.

  3. Para crear y migrar la base de datos en una aplicación de Ruby on Rails ejecutándose en Kubernetes, debes seguir estos pasos.

    Obtén los pods actuales:
    Primero, debes identificar los pods que se ejecutan en tu clúster de Kubernetes. Ejecuta el siguiente comando para listar los pods actuales en el espacio de nombres default:

    # Obtener los pods actuales en el clúster en el espacio de nombres (namespace) default
    $ kubectl get pods

    Este comando mostrará una lista de todos los pods en el espacio de nombres default. Busca el pod con el prefijo docker-ruby-on-rails-demo-. Aquí tienes un ejemplo de salida:

    NAME                                         READY   STATUS    RESTARTS      AGE
    docker-ruby-on-rails-demo-7cbddb5d6f-qh44l   1/1     Running   2 (22h ago)   9d
    

    Ejecuta el comando de migración:
    Una vez que hayas identificado el pod correcto, utiliza el comando kubectl exec para ejecutar la migración de la base de datos dentro del pod.

    $ kubectl exec -it docker-ruby-on-rails-demo-7cbddb5d6f-qh44l -- rails db:migrate RAILS_ENV=development

    Este comando abre una sesión de terminal interactiva (-it) en el pod especificado y ejecuta el comando rails db:migrate con el entorno configurado en desarrollo (RAILS_ENV=development).

    Siguiendo estos pasos, te aseguras de que tu base de datos se migre correctamente dentro de la aplicación de Ruby on Rails que se ejecuta en tu clúster de Kubernetes. Este proceso ayuda a mantener la integridad y la coherencia de la estructura de datos de tu aplicación durante el despliegue y las actualizaciones.

  4. Abre el navegador y ve a http://localhost:30001, deberías ver la aplicación de Ruby on Rails funcionando.

  5. Ejecuta el siguiente comando para retirar tu aplicación.

    $ kubectl delete -f docker-ruby-on-rails-kubernetes.yaml
    

Resumen

En esta sección, aprendiste a utilizar Docker Desktop para desplegar tu aplicación en un entorno de Kubernetes completo en tu máquina de desarrollo.

Información relacionada: