Sobre el proyecto
Kubebuilder es un framework para crear APIs de Kubernetes mediante Custom Resource Definitions (CRDs). De forma similar a frameworks de desarrollo web como Ruby on Rails y SpringBoot, aumenta la velocidad y reduce la complejidad que gestionan los desarrolladores para crear y publicar rápidamente APIs de Kubernetes en Go. Se basa en las técnicas canónicas usadas para crear las APIs principales de Kubernetes para proporcionar abstracciones simples que reducen el código repetitivo y el trabajo tedioso.
Kubebuilder no existe como un ejemplo para copiar y pegar, sino que proporciona potentes librerías y herramientas para simplificar la creación y publicación de APIs de Kubernetes desde cero. Proporciona una arquitectura de plugins que permite a los usuarios aprovechar ayudantes y características opcionales.
Kubebuilder se desarrolla sobre las librerías controller-runtime y controller-tools. También es extensible y puede usarse como librería en otros proyectos. Operator-SDK es un buen ejemplo de proyecto que usa Kubebuilder como librería, utilizando la característica de plugins para incluir operadores que no son de Go, como operadores basados en Ansible y Helm.
El framework facilita un flujo de trabajo para desarrolladores para crear APIs: crear un nuevo directorio de proyecto, crear una o más APIs de recursos como CRDs, implementar bucles de reconciliación en controladores, probar ejecutando contra un clúster, actualizar las pruebas de integración iniciales y construir y publicar un contenedor a partir del Dockerfile proporcionado.
El alcance de Kubebuilder cubre la creación de APIs usando CRDs, Controllers y Admission Webhooks. Su filosofía enfatiza proporcionar abstracciones de librería limpias con documentación de Go clara y bien ejemplificada, prefiriendo interfaces y librerías sobre la generación de código, la generación de código sobre la inicialización única de stubs, y la inicialización única sobre boilerplate bifurcado y modificado.
Kubebuilder proporciona librerías de nivel superior sobre librerías cliente de bajo nivel para proteger a los desarrolladores de cambios disruptivos, comienza de forma mínima y proporciona descubrimiento progresivo de funcionalidad, y ofrece valores predeterminados razonables que permiten a los usuarios sobrescribirlos cuando existen. También proporciona generadores de código basados en comentarios // + para mantener el boilerplate común, y comandos de inicialización para crear nuevos paquetes.
Los proyectos creados por Kubebuilder contienen un Makefile que instala herramientas en las versiones definidas durante la creación del proyecto, incluyendo kustomize, controller-gen y setup-envtest. La versión mínima de Go requerida se determina por la versión mínima de Go más alta requerida por sus dependencias.
Kubebuilder soporta oficialmente las plataformas macOS y Linux. Es desarrollado por la comunidad Kubernetes SIGs y sigue el modelo típico de pull request de GitHub para contribuciones.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.