DEV Community

Guillermo Garcia
Guillermo Garcia

Posted on • Originally published at ahioros.info on

Desplegando la aplicación en docker y creando manifiestos para kubernetes

Hemos estado realizando nuestro primer pipeline para nuestra aplicación en react, lo que vamos a realizar en este video es probar nuestra imagen en docker y crear nuestros manifestos para kubernetes.

Nota: Estamos partiendo que tienes conocimientos básicos de docker y kubernetes, ta les como:
¿Qué es docker?
¿Qué es kubernetes?

  1. Docker Para correr nuestra imagen ejecutamos el siguiente comando:
 docker run -d --name my-rdicidr -p 3000:3000 ahioros/rdicidr:latest 
Enter fullscreen mode Exit fullscreen mode

Verificamos nuestro contenedor en la consola:

 docker ps | grep my-rdicidr 
Enter fullscreen mode Exit fullscreen mode

Para detener el contenedor ejecutamos el siguiente comando:

 docker stop my-rdicidr 
Enter fullscreen mode Exit fullscreen mode

Para borrar el contenedor ejecutamos el siguiente comando:

 docker rm my-rdicidr 
Enter fullscreen mode Exit fullscreen mode

Para borrar la imagen ejecutamos el siguiente comando:

 docker image rm ahioros/rdicidr:latest # también funciona el shortcut para borrar la imagen docker rmi ahioros/rdicidr 
Enter fullscreen mode Exit fullscreen mode

Ahora vamos a ver en nuestro navegador que nuestra aplicación se esta desplegando en el puerto 3000.

  1. Kubernetes

Vamos a crear los siguientes archivos:
01-namespace.yaml : crearemos un namespace para nuestra aplicación.
02-deployment.yaml : creamos el deployment para nuestra aplicación, y definimos la cantidad de replicas y puerto de escucha de nuestra aplicación.
03-service.yaml : añadiremos un servicio para nuestra aplicación y un puerto de escucha para nuestro servicio.
04-ingress.yaml : y por último un ingress para acceder nuestra aplicación.

01-namespace.yaml

 apiVersion: v1 kind: Namespace metadata: name: production 
Enter fullscreen mode Exit fullscreen mode

02-deployment.yaml

 apiVersion: apps/v1 kind: Deployment metadata: name: deployment-rdicidr namespace: production labels: app: rdicidr spec: replicas: 3 selector: matchLabels: app: rdicidr template: metadata: labels: app: rdicidr spec: containers: - name: rdicidr image: ahioros/rdicidr:latest ports: - containerPort: 3000 
Enter fullscreen mode Exit fullscreen mode

03-service.yaml

 apiVersion: v1 kind: Service metadata: name: service-rdicidr namespace: production spec: selector: app: rdicidr ports: - protocol: TCP port: 80 targetPort: 3000 
Enter fullscreen mode Exit fullscreen mode

04-ingress.yaml

 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: rdicidr-nginx-ingress namespace: production annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: ingressClassName: nginx rules: - http: paths: - path: / pathType: Prefix backend: service: name: service-rdicidr port: number: 80 
Enter fullscreen mode Exit fullscreen mode

Aplicamos los manifests:

 kubectl apply -f . 
Enter fullscreen mode Exit fullscreen mode

Nota : Como los archivos tienen un número al inicio del nombre este especifica un orden, esto hace que se aplique en ese orden.

Realizamos un port-forward:

 kubectl port-forward --namespace=production service/service-rdicidr 8080:80 
Enter fullscreen mode Exit fullscreen mode

Ahora vamos a ver en nuestro navegador que nuestra aplicación se esta desplegando en el puerto http://localhost:8080.

Después de realizar las pruebas y comprobar que la aplicación está funcionando podemos eliminarla de nuestro kubernetes:

 kubectl delete -f . 
Enter fullscreen mode Exit fullscreen mode

Acá te dejo el video de esta configuración por si tienes dudas:

En nuestro siguiente post te enseñaré a instalar ArgoCD en Kubernetes para que automaticemos el despliegue.

Top comments (0)