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ó.
- name: El nom de la versió (
- scope: L'abast del recurs (
Namespaced
oCluster
). - 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
).
- plural: El nom en plural (
- group: El grup d'API sota el qual es defineix la CRD (
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
).
- field1: Un camp de tipus string (
Exercici Pràctic
Objectiu
Crear una CRD i una instància del recurs personalitzat.
Passos
- Crear la CRD: Utilitza el YAML proporcionat per crear la CRD
MyResource
. - Crear una Instància de CR: Utilitza el YAML proporcionat per crear una instància de
MyResource
.
Solució
-
Crear la CRD:
kubectl apply -f myresource-crd.yaml
-
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
oCluster
) 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
- Què és Kubernetes?
- Arquitectura de Kubernetes
- Conceptes i Terminologia Clau
- Configuració d'un Clúster de Kubernetes
- CLI de Kubernetes (kubectl)
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
- Monitorització amb Prometheus
- Registre amb Elasticsearch, Fluentd i Kibana (EFK)
- Controls de Salut i Probes
- Servidor de Mètriques
Mòdul 8: Seguretat en Kubernetes
- Control d'Accés Basat en Rols (RBAC)
- Polítiques de Seguretat de Pods
- Seguretat de Xarxa
- Seguretat d'Imatges
Mòdul 9: Escalabilitat i Rendiment
- Autoscalat Horitzontal de Pods
- Autoscalat Vertical de Pods
- Autoscalat de Clúster
- Optimització del Rendiment
Mòdul 10: Ecosistema i Eines de Kubernetes
Mòdul 11: Estudis de Cas i Aplicacions del Món Real
- Desplegament d'una Aplicació Web
- CI/CD amb Kubernetes
- Execució d'Aplicacions Stateful
- Gestió Multi-Clúster