Introducción

Las Definiciones de Recursos Personalizados (CRDs, por sus siglas en inglés) son una característica poderosa de Kubernetes que permite a los usuarios extender la API de Kubernetes para crear sus propios recursos personalizados. Esto es especialmente útil para desarrollar aplicaciones complejas que requieren tipos de recursos específicos que no están disponibles en la API estándar de Kubernetes.

Conceptos Clave

¿Qué es un CRD?

  • Definición: Un CRD es un recurso de Kubernetes que permite definir nuevos tipos de recursos en el clúster.
  • Propósito: Extender la funcionalidad de Kubernetes sin necesidad de modificar el código fuente del servidor de la API de Kubernetes.

Componentes de un CRD

  1. Spec: Define las propiedades del recurso personalizado.
  2. Status: Proporciona información sobre el estado actual del recurso.
  3. Metadata: Incluye información como el nombre, etiquetas y anotaciones del recurso.

Ventajas de Usar CRDs

  • Flexibilidad: Permite a los desarrolladores definir recursos que se ajusten a las necesidades específicas de sus aplicaciones.
  • Extensibilidad: Facilita la integración de nuevas funcionalidades en Kubernetes sin modificar su núcleo.
  • Reusabilidad: Los CRDs pueden ser compartidos y reutilizados en diferentes clústeres y proyectos.

Creación de un CRD

Paso 1: Definir el CRD

Primero, se debe crear un archivo YAML que defina el CRD. A continuación se muestra un ejemplo de un CRD para un recurso personalizado llamado MyResource.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: myresources.example.com
spec:
  group: example.com
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                field1:
                  type: string
                field2:
                  type: integer
  scope: Namespaced
  names:
    plural: myresources
    singular: myresource
    kind: MyResource
    shortNames:
    - mr

Paso 2: Aplicar el CRD

Una vez definido el CRD, se aplica al clúster utilizando kubectl.

kubectl apply -f myresource-crd.yaml

Paso 3: Crear Instancias del Recurso Personalizado

Después de aplicar el CRD, se pueden crear instancias del nuevo recurso personalizado. A continuación se muestra un ejemplo de cómo crear una instancia de MyResource.

apiVersion: example.com/v1
kind: MyResource
metadata:
  name: myresource-sample
spec:
  field1: "value1"
  field2: 42

Aplicar la instancia:

kubectl apply -f myresource-instance.yaml

Gestión de CRDs

Listar CRDs

Para listar todos los CRDs en el clúster:

kubectl get crds

Ver Detalles de un CRD

Para ver los detalles de un CRD específico:

kubectl describe crd myresources.example.com

Eliminar un CRD

Para eliminar un CRD y todas sus instancias:

kubectl delete crd myresources.example.com

Ejercicio Práctico

Ejercicio 1: Crear un CRD y una Instancia

  1. Definir un CRD: Crea un archivo YAML para un CRD llamado Book con los campos title (string) y author (string).
  2. Aplicar el CRD: Usa kubectl para aplicar el CRD al clúster.
  3. Crear una Instancia: Define y aplica una instancia del recurso Book con un título y un autor de tu elección.

Solución

  1. Definir el CRD:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: books.example.com
spec:
  group: example.com
  versions:
    - name: v1
      served: true
      storage: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                title:
                  type: string
                author:
                  type: string
  scope: Namespaced
  names:
    plural: books
    singular: book
    kind: Book
    shortNames:
    - bk
  1. Aplicar el CRD:
kubectl apply -f book-crd.yaml
  1. Crear una instancia:
apiVersion: example.com/v1
kind: Book
metadata:
  name: my-first-book
spec:
  title: "Kubernetes for Beginners"
  author: "John Doe"

Aplicar la instancia:

kubectl apply -f book-instance.yaml

Conclusión

Las Definiciones de Recursos Personalizados (CRDs) son una herramienta poderosa para extender la funcionalidad de Kubernetes. Permiten a los desarrolladores definir y gestionar recursos personalizados que se ajusten a las necesidades específicas de sus aplicaciones. En este módulo, hemos aprendido a crear, aplicar y gestionar CRDs, así como a crear instancias de recursos personalizados. Con esta base, puedes empezar a explorar y desarrollar tus propios recursos personalizados en Kubernetes.

Curso de Kubernetes

Módulo 1: Introducción a Kubernetes

Módulo 2: Componentes Principales de Kubernetes

Módulo 3: Gestión de Configuración y Secretos

Módulo 4: Redes en Kubernetes

Módulo 5: Almacenamiento en Kubernetes

Módulo 6: Conceptos Avanzados de Kubernetes

Módulo 7: Monitoreo y Registro

Módulo 8: Seguridad en Kubernetes

Módulo 9: Escalado y Rendimiento

Módulo 10: Ecosistema y Herramientas de Kubernetes

Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real

Módulo 12: Preparación para la Certificación de Kubernetes

© Copyright 2024. Todos los derechos reservados