k9casca2/doc/1.2
2025-04-08 09:54:04 +02:00

94 lines
4.1 KiB
Groff

Sí, es posible configurar el acceso a Kubernetes sin usar `sudo` para el usuario `usuari`. Esto se puede lograr de manera que el usuario `usuari` tenga acceso al archivo de configuración de K3s (`/etc/rancher/k3s/k3s.yaml`) y a los certificados necesarios sin necesidad de permisos de superusuario.
Te detallo cómo hacerlo:
### 1. **Cambiar los permisos del archivo de configuración**
El archivo `/etc/rancher/k3s/k3s.yaml` por defecto es accesible solo por el usuario `root`, lo que requiere el uso de `sudo`. Para permitir que el usuario `usuari` pueda acceder a este archivo, necesitas cambiar los permisos del archivo.
#### **Pasos:**
1. **Cambiar los permisos del archivo de configuración**
Cambia la propiedad del archivo `/etc/rancher/k3s/k3s.yaml` para que el usuario `usuari` pueda leerlo.
```bash
sudo chown usuari:usuari /etc/rancher/k3s/k3s.yaml
```
Esto le da acceso de lectura y escritura al usuario `usuari` para ese archivo específico.
2. **Permitir la lectura de certificados para `usuari`**
Si tienes certificados o claves privadas almacenadas en directorios que requieren permisos especiales (como `/etc/ssl/certs` o `/usr/local/share/ca-certificates`), tendrás que cambiar los permisos de esos archivos o directorios también.
Puedes hacerlo de esta manera:
```bash
sudo chmod 644 /usr/local/share/ca-certificates/k3s.crt
```
Esto le permitirá al usuario `usuari` leer el archivo del certificado y añadirlo al almacén de certificados del sistema.
### 2. **Configurar `kubectl` para que funcione sin `sudo`**
Asegúrate de que el archivo `k3s.yaml` esté correctamente configurado en la variable `KUBECONFIG` sin necesidad de usar `sudo`.
#### **Pasos:**
1. **Configura `KUBECONFIG` para el usuario `usuari`**
Asegúrate de que el usuario `usuari` exporte la variable de entorno `KUBECONFIG` en su sesión, o de manera persistente, para usar el archivo `/etc/rancher/k3s/k3s.yaml` de la siguiente forma:
- Para configurar esto solo en la sesión actual:
```bash
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
```
- Para hacer que esta configuración persista en futuras sesiones, añade la línea anterior al final de su archivo `.bashrc` o `.zshrc`, dependiendo de tu shell. Si usas `bash`, puedes hacerlo así:
```bash
echo "export KUBECONFIG=/etc/rancher/k3s/k3s.yaml" >> ~/.bashrc
```
Luego, asegúrate de recargar el archivo de configuración:
```bash
source ~/.bashrc
```
2. **Verifica que `kubectl` ahora funciona correctamente sin `sudo`:**
Ahora, el usuario `usuari` debería poder ejecutar `kubectl` sin la necesidad de usar `sudo`.
```bash
kubectl get nodes
```
### 3. **Configurar los permisos del socket de K3s**
K3s expone su API en un socket que, por defecto, suele ser accesible solo por `root`. Sin embargo, puedes configurar el socket de Kubernetes para que el usuario `usuari` también tenga acceso sin `sudo`.
#### **Pasos:**
1. **Revisar el socket de K3s**
Normalmente, el socket de K3s está en `/var/run/k3s/k3s.sock` o en una ruta similar.
Verifica la ubicación del socket de K3s:
```bash
sudo ls -l /var/run/k3s/
```
2. **Cambiar permisos del socket de K3s**
Si el socket tiene permisos restrictivos, puedes cambiar los permisos para permitir que el usuario `usuari` lo acceda.
```bash
sudo chmod 666 /var/run/k3s/k3s.sock
```
Esto permite que cualquier usuario lea y escriba en el socket.
3. **Verifica que `kubectl` funciona sin `sudo`**
Una vez hecho esto, el usuario `usuari` debería poder comunicarse con el servidor API de Kubernetes sin problemas.
### Resumen de lo que se ha hecho:
- **Cambiar los permisos del archivo `k3s.yaml`** para que el usuario `usuari` pueda acceder a él sin `sudo`.
- **Asegurarse de que los certificados** sean legibles por `usuari` para evitar errores de autoridad desconocida.
- **Configurar la variable de entorno `KUBECONFIG`** para que apunte al archivo correcto.
- **Ajustar los permisos del socket de K3s** para permitir la comunicación sin `sudo`.
Con estos pasos, el usuario `usuari` podrá interactuar con Kubernetes usando `kubectl` sin tener que utilizar `sudo`.