Un buildpack convierte el código fuente en un archivo ejecutable y se usa para ofrecer una forma sencilla, fiable y repetible de crear contenedores. Kf admite los paquetes de compilación V2 y V3, y es importante conocer las diferencias entre ellos.
Paquetes de compilación V2
La mayoría de las aplicaciones de Cloud Foundry ya usan paquetes de compilación de la versión 2. Cuando se usan paquetes de compilación de la versión 2 con Kf, los archivos binarios del ciclo de vida y los paquetes de compilación se descargan y configuran desde sus URLs de Git. A continuación, Kf usa la CLI de lifecycle
para ejecutar cada paquete de compilación en el código fuente.
Ventajas
- Listas para usar desde el minuto uno sin necesidad de cambiar la canalización ni el código.
Inconvenientes
- El paquete de compilación antiguo se ha sustituido por la versión 3.
- Rendimiento y fiabilidad más bajos. El proceso de compilación de Kf requiere más E/ para los buildpacks de la versión 2.
- Menos recursos de la comunidad.
- Kf solo admite repositorios de Git de software libre.
Paquetes de compilación V3
Los buildpacks de la versión 3 son un proyecto de la Cloud Native Computing Foundation (CNCF) con una especificación bien definida, una CLI (pack) y una comunidad en crecimiento que está innovando en torno a diferentes lenguajes y frameworks. Google Cloud también tiene su propio conjunto de buildpacks de Google Cloud.
Los paquetes de compilación V3 tienen dos contenedores OCI generales:
- Imagen de compilación
- Imagen de ejecución
Imagen de compilación
La imagen de compilación se usa mientras se compila el código fuente en un contenedor ejecutable. La imagen tiene las detect
secuencias de comandos y otras utilidades necesarias para compilar el código fuente.
Imagen de ejecución
La imagen de ejecución es la imagen base sobre la que se crea un contenedor. Esto significa que es la imagen base que se ejecutará cuando se ejecute la aplicación.
Capas
Los buildpacks de la versión 3 usan capas para componer el contenedor final. Cada paquete de compilación incluido en una compilación tiene la oportunidad de manipular el sistema de archivos y las variables de entorno de la aplicación. Este enfoque de capas permite que los paquetes de compilación sean más ligeros y genéricos.
Los buildpacks de la versión 3 se basan en contenedores OCI. Para ello, la imagen del compilador V3 debe almacenarse en un registro de contenedores al que tenga acceso la canalización de compilación de Kf. La canalización de compilación usa la imagen del compilador para aplicar las secuencias de comandos subyacentes y compilar el código fuente en un contenedor ejecutable.
Ventajas
- Imagen de compilación y de ejecución compatible con Google.
- Funciona con varios productos de Google Cloud , como Cloud Build.
- Crecimiento de la comunidad y del registro de buildpacks.
Inconvenientes
- Puede que requiera actualizaciones de código o de procesos. Por ejemplo, el paquete de compilación de Java requiere código fuente, mientras que el paquete de compilación V2 requiere un archivo JAR.
- Los buildpacks de la versión 3 son más recientes y pueden requerir validación adicional (si se usan buildpacks desarrollados por la comunidad).
kf stacks
Ver pilas
Al enviar una aplicación, la canalización de compilación determina el paquete de compilación en función del stack seleccionado (especificado mediante la marca --stack
o el manifiesto).
Para ver qué pilas están disponibles en un espacio, primero asegúrate de que el espacio esté seleccionado:
kf target -s myspace
A continuación, se puede usar el subcomando kf stacks
para enumerar los stacks:
kf stacks
El resultado muestra las pilas de versiones 2 y 3:
Getting stacks in Space: myspace
Version Name Build Image Run Image Description
V2 cflinuxfs3 cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5 cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5
V3 org.cloudfoundry.stacks.cflinuxfs3 cloudfoundry/cnb:cflinuxfs3@sha256:f96b6e3528185368dd6af1d9657527437cefdaa5fa135338462f68f9c9db3022 cloudfoundry/run:full-cnb@sha256:dbe17be507b1cc6ffae1e9edf02806fe0e28ffbbb89a6c7ef41f37b69156c3c2 A large Cloud Foundry stack based on Ubuntu 18.04
Configurar acoplamientos
La configuración de Stack se puede actualizar editando el kfsystem
recurso personalizado:
kubectl edit kfsystem kfsystem
En este ejemplo se definen los Google Cloud paquetes de compilación de un stack V3:
spec:
kf:
config:
spaceStacksV3:
- name: google
description: Google buildpacks (https://github.com/GoogleCloudPlatform/buildpacks)
buildImage: gcr.io/buildpacks/builder:v1
runImage: gcr.io/buildpacks/gcp/run:v1
Ahora se puede enviar este nuevo Stack:
kf push myapp --stack google
En este ejemplo se configura el paquete de compilación Ruby V2 y se definen los valores predeterminados de la canalización de compilación para usar pilas V2:
spec:
kf:
config:
spaceDefaultToV3Stack: false
spaceBuildpacksV2:
- name: ruby_buildpack
url: https://github.com/cloudfoundry/ruby-buildpack
spaceStacksV2:
- name: cflinuxfs3
image: cloudfoundry/cflinuxfs3@sha256:5219e9e30000e43e5da17906581127b38fa6417f297f522e332a801e737928f5
Migración
Nota: Esta función es experimental y está sujeta a cambios.
Kf tiene una herramienta de migración que puede envolver un paquete de compilación de la versión 2. El resultado es un paquete de compilación V3 que se puede usar en un compilador V3. El paquete de compilación envuelto se puede usar en cualquier lugar donde estén disponibles los paquetes de compilación de la versión 3.
kf wrap-v2-buildpack gcr.io/your-project/v2-go-buildpack https://github.com/cloudfoundry/go-buildpack --publish
Se creará una imagen de paquete de compilación llamada gcr.io/your-project/v2-go-buildpack
. Después, se puede usar para crear un creador siguiendo las instrucciones de los documentos sobre cómo crear un creador.
Este subcomando usa las siguientes CLIs de forma transparente:
go
git
pack
Te recomendamos que uses el editor de Cloud Shell para asegurarte de que cada subcomando esté disponible en la ruta correcta y sea la versión adecuada.
Problemas conocidos
Estas son las funciones que aún no funcionan con Kf. Si una de ellas es una prioridad para tu organización, ponte en contacto con tu representante de ventas:
- Registros de contenedores privados para imágenes de compilador de la versión 3.
- Almacenamiento en caché de la versión 3.
- Buildpacks de la versión 2 que requieren credenciales de Git.