Files
kubernetes-vscode/docs/set-up-flux/instala-y-usa-flux.md

116 lines
3.7 KiB
Markdown

# Instala y Usa Flux para hacer deploy del vscode-tunnel con GitOps
## Paso 1: Instala Flux CLI
### En macOS
1. Asegúrate de tener Homebrew instalado. Si no lo tienes, instálalo siguiendo las instrucciones en [https://brew.sh/](https://brew.sh/).
2. Ejecuta el siguiente comando:
```bash
brew install fluxcd/tap/flux
```
### En Linux
1. Descarga el binario de Flux CLI desde el repositorio oficial:
```bash
curl -s https://fluxcd.io/install.sh | sudo bash
```
2. Verifica que Flux CLI esté instalado correctamente:
```bash
flux --version
```
### En Windows
1. Descarga el ejecutable de Flux CLI desde la página oficial de releases en GitHub: [https://github.com/fluxcd/flux2/releases](https://github.com/fluxcd/flux2/releases).
2. Agrega el ejecutable a tu PATH para que puedas usarlo desde la terminal.
3. Alternativamente, puedes instalar Flux CLI usando Chocolatey:
```powershell
choco install flux
```
4. Verifica la instalación ejecutando:
```powershell
flux --version
```
## Paso 2: Chequea que tu Cluster de Kubernetes sea compatible
`flux check --pre`
Te arrojará un output asi:
```bash
► checking prerequisites
✔ Kubernetes 1.32.3 >=1.31.0-0
✔ prerequisites checks passed
```
## Paso 3: Crea los recursos de Flux en el Repositorio
Crea un PAT en Gitea y colocalo como variable de entorno, con Github el proceso es similar, funciona con token también:
`export GITEA_TOKEN=<gt-token>`
Crea la rama:
```bash
git checkout -b flux-demo # Crea la rama localmente
git push origin flux-demo # Empuja la rama al repositorio remoto
```
Luego corre:
```bash
flux bootstrap gitea \
--token-auth \
--hostname=gitea.p-lao.com \
--owner=aleleba \
--repository=kubernetes-vscode \
--branch=flux-demo \
--path=clusters/cluster \
--personal
```
> **Notas:**
> - `--hostname`: Especifica la URL de tu instancia de Gitea (en este caso, `gitea.p-lao.com`).
> - `--owner`: Coloca el usuario con permisos de administración del repositorio.
> - `--repository`: Coloca el nombre del repositorio.
> - `--branch`: Coloca la rama que manejará Flux, en este caso se creará una llamada `flux-demo`.
> - `--path`: Es la carpeta donde Flux dejará los archivos de definición de sí mismo en el Cluster.
> - `--personal`: Indica que el repositorio es personal.
## Paso 4: Deja que Flux maneje la infraestructura de vscode-tunnel
**Nota:** Asegúrate de estar en la rama `flux-demo` antes de ejecutar los siguientes comandos.
Haz un pull de la rama flux-demo:
`git pull origin flux-demo`
Para que Flux maneje automáticamente los cambios en los archivos de definición dentro del directorio `infrastructure`, crea un `Kustomization` que apunte a este directorio.
```bash
flux create kustomization vscode-tunnel \
--source=GitRepository/flux-system \
--path="./infrastructure" \
--prune=true \
--interval=30s \
--export > ./clusters/cluster/vscode-tunnel-kustomization.yaml
```
> **Nota:**
> Uso como --source=GitRepository/flux-system Porque el repositorio de flux es el mismo que el del proyecto de ser diferente tienes que crear un custom GitRepository CRD que apunte al repo que quieres monitorear.
Aplica el archivo generado:
```bash
kubectl apply -f ./clusters/cluster/vscode-tunnel-kustomization.yaml
```
Con esto, Flux monitoreará el directorio `infrastructure` y aplicará automáticamente los cambios en el cluster.
## Paso 5: Eliminar los recursos de Flux si algo no funcionó
Eliminar los recursos de Flux del clúster:
`kubectl delete namespace flux-system`
Borrar la rama de demo flux-demo del repositorio:
```bash
git checkout master # <-- Cambia de rama
git branch -D flux-demo # <-- Elimina la rama local
git push origin --delete flux-demo # <-- Elimina la rama remota
```