Prueba tu despliegue de Ruby on Rails
Prerrequisitos
- Completa todas las secciones anteriores de esta guía, comenzando con Contenerizar una aplicación de Ruby on Rails.
- Activar Kubernetes en Docker Desktop.
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: 30001En 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
En una terminal, navega a
docker-ruby-on-railsy despliega tu aplicación en Kubernetes.$ kubectl apply -f docker-ruby-on-rails-kubernetes.yamlDeberí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 createdAsegúrate de que todo haya funcionado listando tus despliegues.
$ kubectl get deploymentsTu despliegue debería listarse de la siguiente manera:
NAME READY UP-TO-DATE AVAILABLE AGE docker-ruby-on-rails-demo 1/1 1 1 15sEsto indica que el pod solicitado en tu archivo YAML está activo y en funcionamiento. Realiza la misma comprobación para tus servicios.
$ kubectl get servicesDeberí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 75sAdemás del servicio predeterminado
kubernetes, puedes ver tu serviciodocker-ruby-on-rails-demo, aceptando tráfico en el puerto 30001/TCP.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 nombresdefault:# Obtener los pods actuales en el clúster en el espacio de nombres (namespace) default $ kubectl get podsEste comando mostrará una lista de todos los pods en el espacio de nombres
default. Busca el pod con el prefijodocker-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) 9dEjecuta el comando de migración:
Una vez que hayas identificado el pod correcto, utiliza el comandokubectl execpara 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=developmentEste comando abre una sesión de terminal interactiva (
-it) en el pod especificado y ejecuta el comandorails db:migratecon 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.
Abre el navegador y ve a http://localhost:30001, deberías ver la aplicación de Ruby on Rails funcionando.
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: