Definición de Recursos Personalizados (CRDs) de Kubernetes Explicada

Definición de Recursos Personalizados (CRDs) de Kubernetes Explicada

  • ITOps y DevOps
6 min de lectura Actualizado Apr 16, 2019

Puntos clave: Las Definiciones Personalizadas de Recursos (CRDs) de Kubernetes Permiten a los usuarios Crea objetos API personalizados, mejorando la funcionalidad de Kubernetes. Esta guía detalla la creación, gestión y utilización de CRDs.

  • Los CRDs Define recursos personalizados dentro de Kubernetes.
  • Crear un CRD implica especificar sus metadatos, versión y alcance.
  • Se pueden añadir mandos personalizados para un enfoque declarativo.

En esta publicación, sons vamos a hablar sobre las Definiciones Personalizadas de Recursos (CRDs). Vamos a repasar:

  • Qué son los CRD
  • Cómo se son utilizados
  • Cómo Crea
  • Algunos consejos y trucos

Para continuar, supongo que te tienes conocimientos previos de Kubernetes, kubectl y tienes minikube funcionando.

Conceptos de CRD en K8S

Para empezar a entender qué están la CRD, debemos repasar un par de conceptos en Kubernetes:

  • Un recurso está un punto final en la API de k8s que te permite almacenar un objeto API de cualquier tipo.
  • Un recurso personalizado te permite Crea tus propios objetos API y Define los tuyos, como Pod, Deployment, ReplicaSet, etc.

Recurso Personalizado te permite extiende capacidades de Kubernetes añadiendo cualquier tipo de objeto API útil para tu aplicación. Definición de Recurso Personalizada están qué te utiliza Define un recurso personalizado. Esto están una forma poderosa de extiende capacidades de Kubernetes más allá de la instalación predeterminada.

Cómo Crea un CRD

El manifiesto a continuación muestra un ejemplo de CRD crd.yaml

    apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: appconfigs.stable.example.com
spec:
  group: stable.example.com
  versions:
    - name: v1
      served: true
      storage: true
  scope: Namespaced
  names:
    plural: appconfigs
    singular: appconfig
    kind: AppConfig
    shortNames:
    - ac

Vamos a explicar qué Crea el CRD anterior:

  • Las dos primeras líneas definen qué es la aversión y son decimos que queremos Crea una definición personalizada de recursos.
  • El campo de metadatos nos ayuda a Define cuál es el nombre del recurso. En nuestro caso, appconfigs (plural).
  • El grupo de especialización nos ayudó a Define cuál será el nombre del grupo.
  • La versión de especificación nos ayuda a Define la versión. Decimos que son están v1, y queremos que esta versión sea nuestra versión de almacenamiento.
  • Como te Ve, podemos Define una versión de nuestro CRD y solo una versión puede ser de almacenamiento a la vez, así que tenlo en cuenta. Luego nos aseguramos de que este CRD están un namespaced y no abarque a todo el clúster. Esto nos permitió Crea el CRD para un espacio de nombres específico o para todo el clúster.
  • A continuación, definimos cuál será el nombre singular y plural de nuestro CRD.
  • Por último, definimos el nombre del tipo y el nombre corto. Luego podemos Crea con "kubectl Crea -f crd.yaml". El nuevo endpoint de API RESTful con espacio de nombres para nuestro CRD se encontrará en /apis/stable.example.com/v1/namespaces/*/appconfigs/

Así que probablemente sons preguntándonos vale, esto está bueno, pero ¿cómo están útil? Para utilizar el CRD anterior, Crea un manifiesto usando el tipo que creamos con el CRD. Por ejemplo, tenemos my-kind.yaml

    apiVersion: "stable.example.com/v1"
kind: AppConfig
metadata:
  name: demo-appconfig
spec:
  uri: "some uri"
  Command: "some command"
  image: my-image

Como te puede Ve, son usando el tipo que definimos en nuestro CRD, luego definimos los campos que queremos que tenga nuestro objeto tipo. Aquí queremos Define, el uri, el comando y la imagen para nuestra aplicación. Ahora, si ejecutamos "kubectl Crea -f my-kind.yaml", nuestra aplicación puede consumir los datos que creamos con el manifiesto anterior. Para Ve qué está pasando, podemos ejecutar "kubectl Obtén ac -o yaml", podemos Ve información detallada de lo que acabamos de crear. Fíjate cómo son usamos el nombre corto (ac) que definimos en nuestro CRD.

Cómo eliminar un CRD

Para eliminar el CRD y los recursos que creamos, simplemente ejecuta kubectl delete igual que con cualquier otro recurso. están importante saber que el CRD anterior están solo datos que pueden almacenarse y recuperarse, por lo tanto, no nos proporciona una API completamente declarativa. La forma de Haz este recurso completamente declarativo están añadir un controlador personalizado, cuya tarea están asegurarse de Haz que el estado actual y el deseado son siempre sincronizados. Un ejemplo están algo como un controlador de replicación.

Los CRDs amplían Kubernetes

CRD están una forma de extiende Kubernetes que nos permite Crea un recurso personalizado a nuestra elección y hacerlo declarativo con la ayuda de un controlador personalizado.

Recursos adicionales

Para más información sobre Kubernetes, explora estos recursos:

Estas publicaciones son mías y no representan necesariamente la posición, estrategias u opinión de BMC.

Más de ITOps y DevOps

Suscríbete al Informe

Al registrarse para esta oferta te son confirmar que te leído y aceptado la Política de Privacidad de BMC.

Gracias te

Tú te has suscrito a The Brief
El Brief abarca la orquestación de mainframe y empresa—BMC AMI y Control-M—y la investigación de analistas, despliegues de clientes y eventos en ambas áreas.