Saltar al contenido principal

Creación y gestión de Namespaces en Kubernetes

En Kubernetes, un namespace permite organizar y segmentar los recursos dentro de un clúster, por lo general separando cada aplicación. Para garantizar una correcta gestión de los entornos, todos los namespaces deben contar con la etiqueta environment, la cual indica a qué entorno pertenece cada uno.

Etiquetas permitidas

Las etiquetas disponibles para clasificar los namespaces según su entorno son:

  • produccion: Para entornos en producción.
  • desarrollo: Para entornos de desarrollo.
  • test: Para entornos de prueba.

Estas etiquetas permiten aplicar configuraciones específicas y gestionar los namespaces de acuerdo con su propósito dentro del clúster.

Creación de un namespace con etiqueta

Para crear un namespace con la etiqueta environment, se puede definir el siguiente manifiesto YAML:

apiVersion: v1
kind: Namespace
metadata:
name: gestion-prueba
labels:
environment: "test"

Para aplicar este manifiesto, ejecute:

kubectl apply -f nombre-del-archivo.yaml

Modificación de la etiqueta de un namespace

Si se necesita cambiar la etiqueta environment de un namespace ya creado, existen tres opciones:

  1. Actualizar el manifiesto: Modificar el archivo YAML y volver a aplicarlo con kubectl apply -f nombre-del-archivo.yaml.
  2. Editar el namespace manualmente: Usar el siguiente comando para abrir el editor de configuración y realizar los cambios necesarios:
    kubectl edit ns <nombre-namespace>
  3. Modificar la etiqueta con un comando directo: Ejecutar el siguiente comando para sobrescribir la etiqueta environment:
    kubectl label ns <nombre-namespace> environment=produccion --overwrite

Estos métodos permiten ajustar la configuración de los namespaces sin necesidad de eliminarlos y volver a crearlos.

Eliminar un namespace

peligro

Cuando se elimina un namespace se borran todos los recursos dentro del mismo, y no hay un mecanismo para revertir el cambio. Se recomienda proceder con precaución.

Para poder eliminar un namespace primero hay que etiquetarlo con borrar=true para que se nos permita completar la acción.

kubectl label ns <nombre> borar=true
kubectl delete ns <nombre>