Este repositorio contiene la configuración necesaria para implementar una aplicación de servidor HTTP simple llamada Pong en un clúster de Kubernetes usando Flux CD.
Antes de comenzar, asegúrese de tener lo siguiente instalado localmente:
- Un Kubernetes cluster (en este experimento, usamos Kind o también puede ser un proveedor de la nube como DigitalOcean)
- kubectl
- Flux CLI
- GitHub Personal Access Token con acceso al repositorio
- GitHub CLI
- doctl
Para preparar su repositorio Git, siga estos pasos:
-
Crea un nuevo directorio e inicializa un repositorio Git:
mkdir Gatemaster-flux-ping-pong cd Gatemaster-flux-ping-pong git init
-
Crear un directorio llamado
manifests
para guardar los Kubernetes manifests:mkdir manifests
Cree los siguientes archivos de manifiesto en el directorio manifests
:
-
Desplegar los Manifest: Crear
pong-deployment.yaml
:apiVersion: apps/v1
kind: Deployment
metadata:
name: pong-server-deployment
namespace: pong-namespace
spec:
replicas: 1
selector:
matchLabels:
app: pong-server
template:
metadata:
labels:
app: pong-server
spec:
containers:
- name: pong-server
image: ghcr.io/s1ntaxe770r/pong:e0fb83f27536836d1420cffd0724360a7a650c13
ports:
- containerPort: 8080
```
-
Servicio Manifest: Crear
pong-service.yaml
:apiVersion: v1
kind: Service metadata: name: pong-server-service namespace: pong-namespace spec: selector: app: pong-server ports: - protocol: TCP port: 80 targetPort: 8080 ```
-
Agregue y confirme estos archivos en Git:
git add . git commit -m "Añadiendo manifests de despliegue"
-
Crea el repositorio de GitHub y envía tus cambios:
gh repo create Gatemaster-flux-ping-pong --source=. --remote=upstream --public git push --set-upstream upstream master
Si está utilizando DigitalOcean para su clúster de Kubernetes, inicie sesión con doctl:
-
Autenticación con DigitalOcean:
doctl auth init
-
Lista tus clusters de Kubernetes:
doctl kubernetes cluster list
Para iniciar Flux y configurarlo para monitorear su repositorio de GitHub:
-
Cree un clúster Kind o utilice un clúster Kubernetes de DigitalOcean existente:
kind create cluster --image kindest/node:v1.28.0 --name flux-cluster
-
Verificar el estado del cluster:
kubectl cluster-info
-
Ejecutar comprobaciones previas a la instalación:
flux check --pre
-
Exporta tus credenciales de GitHub:
export GITHUB_TOKEN=<your-token> export GITHUB_USER=<your-username>
-
Ejecute el comando bootstrap:
flux bootstrap github \ --owner=$GITHUB_USER \ --repository=Gatemaster-flux-ping-pong \ --branch=master \ --path=clusters/my-cluster
-
Verifique la instalación de Flux:
kubectl get pods -n flux-system
-
Pull los últimos cambios:
git pull
Para cambiar el namespace de tu Pong deployment and service:
-
Crear un nuevo namespace:
kubectl create namespace pong-namespace
-
Modifica tu
pong-service.yaml
ypong-deployment.yaml
para incluir el campomanifest
:metadata: namespace: pong-namespace
-
Aplicar los cambios:
kubectl apply -f pong-deployment.yaml -n pong-namespace kubectl apply -f pong-service.yaml -n pong-namespace
-
Verificar los pods dentro del nuevo namespace:
kubectl get pods -n pong-namespace
Para configurar Flux para implementar sus manifests:
-
Definir el recurso
GitRepository
:flux create source git pong \ --url="https://github.com/$GITHUB_USER/Gatemaster-flux-ping-pong" \ --branch=master \ --interval=30s \ --export > ./clusters/my-cluster/pong-source.yaml
-
Definir el recurso
Kustomization
:flux create kustomization pong \ --target-namespace=default \ --source=pong \ --path="./manifests" \ --prune=true \ --interval=5m \ --export > ./clusters/my-cluster/pong-kustomization.yaml
-
Inspeccionar el manifest generado:
cat ./clusters/my-cluster/pong-kustomization.yaml
-
Commit y push los manifests generados:
git add clusters/ git commit -m "Añadiendo kustomize manifests" git push
-
Esperando a que Flux sincronice la aplicación:
flux get kustomizations --watch
-
Verificar el despliegue:
kubectl port-forward svc/pong-server-service 8080:80 -n pong-namespace curl http://localhost:8080/ping
Para actualizar el despliegue:
-
Editar el archivo
pong-deployment.yaml
para incrementar las replicas:replicas: 3
-
Guardar, commit, y hacerle push a los cambios:
git add pong-deployment.yaml git commit -m "Escalando el despliegue de pong a 3 replicas" git push origin master
-
Verificar la actualización:
flux logs kubectl get pods -n pong-namespace
- Servicio no encontrado: si encuentra el mensaje
services "pong-server-service" not found
, verifique que el servicio esté correctamente definido e implementado. - Problemas de conexión: asegúrese de que el reenvío de puertos esté configurado correctamente y verifique si la aplicación se está ejecutando correctamente dentro de los pods.