> ## Content Index
> Fetch the complete content index at: https://www.sredevops.org/llms.txt
> Use this file to discover other available public pages before exploring further.

# Qué es kuberc? Es tu mejor aliado para personalizar kubectl
- URL: https://www.sredevops.org/es/que-es-kuberc-es-tu-mejor-aliado-para-personalizar-kubectl/
- Published: 2026-01-09T03:07:47.000Z
- Updated: 2026-01-09T03:07:47.000Z
- Description: kuberc te permite definir preferencias de usuario, aliases de comandos y políticas de seguridad sin "dejar la crema" en tu kubeconfig con datos que no son del clúster.
- Author: Nicolás Georger
- Tags: Kubernetes, DevOps, Apps, Español, #es

Si día a día estás más de cinco minutos metido/a en un terminal, sabes que `kubectl` es tu mejor partner, pero al mismo tiempo es el culpable de que tengas el túnel carpiano *"pal' gato"*. Por años, hemos dependido de los *aliases* del shell o de herramientas de terceros como `kubectx` y `fzf` para no volvernos locos. Por fin, los mantenedores de Kubernetes se compadecieron y nos tiraron un hueso con `kuberc`.

Introducido como una funcionalidad beta en Kubernetes 1.34, `kuberc` te permite definir preferencias de usuario, *aliases* de comandos y políticas de seguridad sin "*dejar la crema*" en tu `kubeconfig` con datos que no son del clúster. Básicamente, es una forma de decirle a `kubectl` cómo comportarse antes de que te entre lag mental y borres un *namespace* de producción por andar tipeando muy rápido.

## ¿dónde vive este archivo `kuberc`?

Por defecto, `kubectl` busca su "personalidad" en las siguientes rutas:

- **Linux / macOS:** `$HOME/.kube/kuberc`
- **Windows:** `%USERPROFILE%\.kube\kuberc`

Si eres de esos que les gusta guardar sus archivos de configuración en lugares raros, como quién escribe, que tiene una obsesión con sus `dotfiles` ~~sólo para sentirnos diferentes~~, puedes sobrescribir esto usando el *flag* `--kuberc` o seteando la variable de entorno `KUBERC`.

## aliases: ahorrándole movimientos a tus dedos por el exceso de yaml

La sección de `aliases` es donde puedes crear atajos para los comandos que más utilizas. A diferencia de los *aliases* del shell (como el típico `alias k=kubectl`), estos están integrados directamente en la lógica de ejecución de `kubectl`.

### estructura básica de un alias

Por ejemplo, convierte `kubectl getn` en una metralleta JSON:

```yaml
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
aliases:
- name: getn
  command: get
  options:
   - name: output
     default: json

```

En este escenario, ejecutar `kubectl getn pods` es lo mismo que tirar un `kubectl get pods -o json`. Si de repente te baja lo masoquista y quieres un YAML, correr `kubectl getn pods -o yaml` va a mandar "*a la punta del cerro*" el valor por defecto y te dará el YAML.

### anteponiendo y agregando argumentos

A veces un simple *flag* no basta. Puede que quieras inyectar argumentos específicos en el flujo del comando.

- **prependArgs:** Inserta argumentos justo después del subcomando.
- **appendArgs:** Los arroja al final.

```yaml
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
aliases:
  - name: run-busy
    command: run
    options:
      - name: image
        default: busybox
    appendArgs:
      - --
      - /bin/sh

```

Ejecutar `kubectl run-busy my-pod` se traduciría en `kubectl run my-pod --image busybox -- /bin/sh`. Es como si por fin la CLI te estuviera ayudando de verdad.

## defaults: para que no hagas explotar el cluster por un error

La sección `defaults` te permite cambiar el comportamiento global de los comandos estándar de `kubectl`. Esto está *"de pana"* para los que ~~"accidentalmente"~~ hemos borrado recursos por andar con exceso de cafeína en el cuerpo.

```yaml
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
defaults:
- command: delete
  options:
    - name: interactive
      default: "true"

```

Con esto configurado, `kubectl delete pod/oopsie` te va a preguntar si de verdad estás seguro. Es un costo mínimo para evitar una reunión de *post-mortem* de emergencia con el jefe soplándote la nuca.

## política de plugins de credenciales

> **ESTADO DE LA FUNCIONALIDAD:** `Kubernetes v1.35 [beta]`

La seguridad suele ser la parte donde todos se quedan dormidos o pasan de largo, pero ojo acá: `kuberc` ahora te permite controlar qué plugins de credenciales `exec` tienen permiso para correr. Esto evita que un `kubeconfig` malicioso ejecute binarios arbitrarios en tu máquina; un truco interesante para pentesters, pero una crucificción garantizada para ti.

### tipos de políticas

1. **AllowAll:** El "viva la fiesta". Pasa cualquier cosa. Es el comportamiento por defecto en versiones viejas.
2. **DenyAll:** El modo paranoico. No se permite ningún plugin. Súper seguro, pero no te vas a poder conectar ni a palos a EKS, GKE o AKS.
3. **Allowlist:** El camino sensato. Tú defines exactamente en qué binarios confiar.

### implementando una lista blanca (allowlist)

Si eliges `Allowlist`, tienes que poner el nombre de los binarios explícitamente:

```yaml
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
credentialPluginPolicy: Allowlist
credentialPluginAllowlist:
  - name: aws-iam-authenticator
  - name: /usr/local/bin/gke-gcloud-auth-plugin

```

Ojo que los *symlinks* no se resuelven por razones de seguridad. Si apuntas a un *symlink*, la lista va a chequear la ruta del link, no el destino final.

## configuraciones sugeridas (las "sanas")

Los mantenedores sugieren una configuración que priorice la seguridad y el uso de APIs modernas. Si todavía no utilizas [Server-Side Apply](https://kubernetes.io/docs/reference/using-api/server-side-apply/?ref=sredevops.org), estái obsoleto, hermano!.

```yaml
apiVersion: kubectl.config.k8s.io/v1beta1
kind: Preference
defaults:
  - command: apply
    options:
      - name: server-side
        default: "true"
  - command: delete
    options:
      - name: interactive
        default: "true"
credentialPluginPolicy: Allowlist
credentialPluginAllowlist:
  - name: mi-auth-handler-de-confianza

```

## cómo desactivar kuberc?

Si tus *aliases* empiezan a comportarse como una IA con crisis existencial, puedes desactivar `kuberc` temporalmente seteando una variable de entorno:

```bash
export KUBERC=off
# O TAMBIÉN
export KUBECTL_KUBERC=false

```

Esto se salta el archivo de preferencias y devuelve `kubectl` a su estado original: verboso, *"latero"* y un poquito hinchapelotas.

## referencias

- [Documentación oficial de Kubectl kuberc](https://kubernetes.io/docs/reference/kubectl/kuberc/?ref=sredevops.org)
- [Esquema de la API Kuberc v1beta1](https://kubernetes.io/docs/reference/config-api/kuberc.v1beta1/?ref=sredevops.org)
- [Guía de Kubernetes Server-Side Apply](https://kubernetes.io/docs/reference/using-api/server-side-apply/?ref=sredevops.org)

**Fuente:** [kubernetes.io](https://kubernetes.io/docs/reference/kubectl/kuberc/?ref=sredevops.org)

[Kubectl user preferences (kuberc)FEATURE STATE: Kubernetes 1.34 \[beta\] A Kubernetes kuberc configuration file allows you to define preferences for kubectl, such as default options and command aliases. Unlike the kubeconfig file, a kuberc configuration file does not contain cluster details, usernames or passwords. On Linux / POSIX computers, the default location of this configuration file is $HOME/.kube/kuberc. The default path on Windows is similar: %USERPROFILE%\\.kube\\kuberc. To provide kubectl with a path to a custom kuberc file, use the --kuberc command line option, or set the KUBERC environment variable.![](https://www.sredevops.org/content/images/icon/apple-touch-icon-256x256.png)Kubernetes![](https://www.sredevops.org/content/images/thumbnail/kubernetes-open-graph.png)](https://kubernetes.io/docs/reference/kubectl/kuberc/?ref=sredevops.org)