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?](https://es.wikipedia.org/wiki/Docker_(software))
[¿Qué es kubernetes?](https://kubernetes.io/es/docs/concepts/overview/what-is-kubernetes/)
1. Docker
Para correr nuestra imagen ejecutamos el siguiente comando:
```bash
docker run -d --name my-rdicidr -p 3000:3000 ahioros/rdicidr:latest
```
Verificamos nuestro contenedor en la consola:
```bash
docker ps | grep my-rdicidr
```
Para detener el contenedor ejecutamos el siguiente comando:
```bash
docker stop my-rdicidr
```
Para borrar el contenedor ejecutamos el siguiente comando:
```bash
docker rm my-rdicidr
```
Para borrar la imagen ejecutamos el siguiente comando:
```bash
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.
2. 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:
```bash
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:
```bash
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:
```bash
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.
No hay comentarios.:
Publicar un comentario