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
- Spec: Define las propiedades del recurso personalizado.
- Status: Proporciona información sobre el estado actual del recurso.
- 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
.
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:
Gestión de CRDs
Listar CRDs
Para listar todos los CRDs en el clúster:
Ver Detalles de un CRD
Para ver los detalles de un CRD específico:
Eliminar un CRD
Para eliminar un CRD y todas sus instancias:
Ejercicio Práctico
Ejercicio 1: Crear un CRD y una Instancia
- Definir un CRD: Crea un archivo YAML para un CRD llamado
Book
con los campostitle
(string) yauthor
(string). - Aplicar el CRD: Usa
kubectl
para aplicar el CRD al clúster. - Crear una Instancia: Define y aplica una instancia del recurso
Book
con un título y un autor de tu elección.
Solución
- 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
- Aplicar el CRD:
- 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:
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
- ¿Qué es Kubernetes?
- Arquitectura de Kubernetes
- Conceptos y Terminología Clave
- Configuración de un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitoreo con Prometheus
- Registro con Elasticsearch, Fluentd y Kibana (EFK)
- Verificaciones de Salud y Sondas
- Servidor de Métricas
Módulo 8: Seguridad en Kubernetes
- Control de Acceso Basado en Roles (RBAC)
- Políticas de Seguridad de Pods
- Seguridad de Red
- Seguridad de Imágenes
Módulo 9: Escalado y Rendimiento
- Autoescalado Horizontal de Pods
- Autoescalado Vertical de Pods
- Autoescalado de Clúster
- Ajuste de Rendimiento
Módulo 10: Ecosistema y Herramientas de Kubernetes
Módulo 11: Estudios de Caso y Aplicaciones del Mundo Real
- Despliegue de una Aplicación Web
- CI/CD con Kubernetes
- Ejecución de Aplicaciones con Estado
- Gestión Multi-Clúster