Introducció

Les Definicions de Recursos Personalitzats (CRDs) permeten als usuaris de Kubernetes crear els seus propis tipus de recursos. Això és especialment útil quan es volen gestionar aplicacions o serveis que no estan coberts pels recursos natius de Kubernetes. Amb CRDs, es poden definir nous tipus de recursos que es comporten com qualsevol altre recurs natiu de Kubernetes.

Conceptes Clau

  • CRD (Custom Resource Definition): És una definició que permet crear nous tipus de recursos en Kubernetes.
  • Custom Resource (CR): És una instància d'un tipus de recurs personalitzat definit per una CRD.
  • API Group: Un grup d'API que agrupa diversos recursos relacionats. Les CRDs poden definir-se dins d'un grup d'API específic.

Creació d'una CRD

Exemple de YAML per a una CRD

A continuació es mostra un exemple de YAML per crear una CRD anomenada 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

Explicació del YAML

  • apiVersion: La versió de l'API que s'utilitza per definir la CRD (apiextensions.k8s.io/v1).
  • kind: El tipus de recurs (CustomResourceDefinition).
  • metadata: Informació meta sobre la CRD, incloent el nom (myresources.example.com).
  • spec: Especificacions de la CRD.
    • group: El grup d'API sota el qual es defineix la CRD (example.com).
    • versions: Les versions del recurs personalitzat.
      • name: El nom de la versió (v1).
      • served: Indica si aquesta versió està disponible per a ser utilitzada (true).
      • storage: Indica si aquesta versió s'utilitza per emmagatzemar dades (true).
      • schema: L'esquema de validació per a la versió.
    • scope: L'abast del recurs (Namespaced o Cluster).
    • names: Els noms utilitzats per referir-se al recurs.
      • plural: El nom en plural (myresources).
      • singular: El nom en singular (myresource).
      • kind: El tipus de recurs (MyResource).
      • shortNames: Noms curts per referir-se al recurs (mr).

Creació d'una Instància de CR

Un cop la CRD està creada, es poden crear instàncies del recurs personalitzat. A continuació es mostra un exemple de YAML per crear una instància de MyResource:

apiVersion: example.com/v1
kind: MyResource
metadata:
  name: myresource-sample
spec:
  field1: "Hello, World!"
  field2: 42

Explicació del YAML

  • apiVersion: La versió de l'API i el grup d'API (example.com/v1).
  • kind: El tipus de recurs (MyResource).
  • metadata: Informació meta sobre la instància, incloent el nom (myresource-sample).
  • spec: Les especificacions del recurs personalitzat.
    • field1: Un camp de tipus string ("Hello, World!").
    • field2: Un camp de tipus integer (42).

Exercici Pràctic

Objectiu

Crear una CRD i una instància del recurs personalitzat.

Passos

  1. Crear la CRD: Utilitza el YAML proporcionat per crear la CRD MyResource.
  2. Crear una Instància de CR: Utilitza el YAML proporcionat per crear una instància de MyResource.

Solució

  1. Crear la CRD:

    kubectl apply -f myresource-crd.yaml
    
  2. Crear una Instància de CR:

    kubectl apply -f myresource-instance.yaml
    

Errors Comuns i Consells

  • Error de Validació de l'Esquema: Assegura't que l'esquema de la CRD és correcte i que tots els camps requerits estan definits.
  • Noms de Recursos: Utilitza noms únics per a les CRDs i les instàncies de CR per evitar conflictes.
  • Abast del Recurs: Defineix correctament l'abast del recurs (Namespaced o Cluster) segons les necessitats de la teva aplicació.

Resum

En aquesta secció, hem après què són les Definicions de Recursos Personalitzats (CRDs) i com es poden utilitzar per crear nous tipus de recursos en Kubernetes. Hem vist un exemple pràctic de com crear una CRD i una instància del recurs personalitzat, i hem discutit alguns errors comuns i consells per evitar-los. Amb aquest coneixement, estàs preparat per començar a definir i utilitzar els teus propis recursos personalitzats en Kubernetes.

Curs de Kubernetes

Mòdul 1: Introducció a Kubernetes

Mòdul 2: Components Bàsics de Kubernetes

Mòdul 3: Gestió de Configuració i Secrets

Mòdul 4: Xarxes en Kubernetes

Mòdul 5: Emmagatzematge en Kubernetes

Mòdul 6: Conceptes Avançats de Kubernetes

Mòdul 7: Monitorització i Registre

Mòdul 8: Seguretat en Kubernetes

Mòdul 9: Escalabilitat i Rendiment

Mòdul 10: Ecosistema i Eines de Kubernetes

Mòdul 11: Estudis de Cas i Aplicacions del Món Real

Mòdul 12: Preparació per a la Certificació de Kubernetes

© Copyright 2024. Tots els drets reservats