# 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=` 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 -f ./clusters/cluster kubectl delete -f ./clusters/cluster/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 ```