# 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=` 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. 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/kubernetes-vscode \ --path="./infrastructure" \ --prune=true \ --interval=1m \ --export > ./clusters/cluster/vscode-tunnel-kustomization.yaml ``` 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 ```