Un paquete de compilación convierte el código fuente en un ejecutable y se usa para entregar una forma simple, confiable y repetible de crear contenedores. Kf es compatible con los paquetes de compilación V2 y V3, y es importante comprender las diferencias entre ellos.
Paquetes de compilación V2
La mayoría de las aplicaciones de Cloud Foundry ya usan paquetes de compilación V2. Cuando se usan paquetes de compilación V2 con Kf, los objetos binarios del ciclo de vida y los paquetes de compilación se descargan y configuran desde las URL de Git. Kf luego usa la CLI de lifecycle
para ejecutar cada paquete de compilación en el código fuente.
Ventajas
- Lista para usar sin cambios en la canalización ni en el código.
Desventajas
- Paquete de compilación heredado reemplazado por V3.
- Rendimiento y confiabilidad más débiles. La canalización de compilación de Kf requiere más IO para los paquetes de compilación V2.
- Menos recursos de la comunidad.
- Kf solo admite repositorios de Git de OSS.
Paquetes de compilación V3
Los paquetes de compilación V3 son un proyecto de Cloud Native Computing Foundation (CNCF) con una especificación bien definida, una CLI (paquete) y una comunidad en crecimiento que innova en diferentes lenguajes y frameworks. Google Cloud también tiene su propio conjunto de paquetes de compilación de Google Cloud.
Los paquetes de compilación V3 tienen dos contenedores de OCI generales:
- Imagen del compilador
- Ejecuta la imagen
Imagen del compilador
La imagen del compilador se usa mientras se compila tu código fuente en un contenedor ejecutable. La imagen tiene las secuencias de comandos detect
necesarias y otras utilidades para compilar código fuente.
Ejecuta la imagen
La imagen de ejecución es la imagen base en la que se compila un contenedor. Esto significa que es la imagen base que se ejecutará cuando se ejecute la app.
Capas
Los paquetes de compilación V3 usan capas para redactar 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 delgados y más genéricos.
Los paquetes de compilación V3 se compilan en contenedores de OCI. Esto requiere que la imagen del compilador V3 se almacene 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 a fin de compilar el código fuente en un contenedor ejecutable.
Ventajas
- Compilador y ejecuta imagen compatible con Google.
- Funciona con varios productos de Google Cloud, como Cloud Build.
- Comunidad y registro de paquetes de compilación en crecimiento.
Desventajas
- Puede requerir actualizaciones de código o proceso. Por ejemplo, el paquete de compilación de Java requiere un código fuente, mientras que el paquete de compilación de V2 requiere un archivo jar.
- Los paquetes de compilación V3 son más recientes y podrían requerir validación adicional (es que usan paquetes de compilación desarrollados por la comunidad).
kf stacks
Vizualiza pilas
Cuando se envía una app, la canalización de compilación determina el paquete de compilación según la pila seleccionada (especificada mediante la marca --stack
o el manifiesto).
Para ver qué pilas están disponibles en un espacio, primero asegúrate de que se orienta un espacio:
kf target -s myspace
Luego, se puede usar el subcomando kf stacks
para enumerar las pilas:
kf stacks
En el resultado, se muestran las pilas V2 y V3:
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
Configura pilas
La configuración de Stack se puede actualizar si editas el recurso personalizado kfsystem
:
kubectl edit kfsystem kfsystem
En este ejemplo, se configuran los paquetes de compilación de Google Cloud una pila 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
Esta nueva pila ahora se puede enviar:
kf push myapp --stack google
En este ejemplo, se configura el paquete de compilación de Ruby V2 y se establecen los valores predeterminados de la canalización de compilación para que usen las 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: Por el momento, esta función está en fase experimental y está sujeta a cambios.
Kf tiene una herramienta de migración que puede unir un paquete de compilación V2. El resultado es un paquete de compilación V3 que se puede usar dentro de un compilador de V3. El paquete de compilación unido se puede usar en cualquier lugar donde estén disponibles los paquetes de compilación V3.
kf wrap-v2-buildpack gcr.io/your-project/v2-go-buildpack https://github.com/cloudfoundry/go-buildpack --publish
Esto creará una imagen de paquete de compilación llamada gcr.io/your-project/v2-go-buildpack
. Luego, se puede usar para crear un compilador si sigues los documentos para crear un compilador.
Este subcomando usa las siguientes CLI de forma transparente:
go
git
pack
Se recomienda que utilice Cloud Shell Editor para asegurarse de que cada subcomando esté disponible en la ruta correcta y que sea la versión correcta.
Problemas conocidos
Las siguientes son características que aún no funcionan con Kf. Si una de las organizaciones tiene una prioridad alta, comunícate con tu representante de ventas:
- Registros de contenedores privados para imágenes del compilador V3.
- Almacenamiento en caché V3.
- Paquetes de compilación V2 que requieren credenciales Git.