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?
- Docker Para correr nuestra imagen ejecutamos el siguiente comando:
docker run -d --name my-rdicidr -p 3000:3000 ahioros/rdicidr:latest
Verificamos nuestro contenedor en la consola:
docker ps | grep my-rdicidr
Para detener el contenedor ejecutamos el siguiente comando:
docker stop my-rdicidr
Para borrar el contenedor ejecutamos el siguiente comando:
docker rm my-rdicidr
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
Ahora vamos a ver en nuestro navegador que nuestra aplicación se esta desplegando en el puerto 3000.
- 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
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
03-service.yaml
apiVersion: v1 kind: Service metadata: name: service-rdicidr namespace: production spec: selector: app: rdicidr ports: - protocol: TCP port: 80 targetPort: 3000
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
Aplicamos los manifests:
kubectl apply -f .
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
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 .
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)