Um buildpack converte o código-fonte em um executável e é usado para oferecer uma maneira simples, confiável e repetível de criar contêineres. O Kf é compatível com os buildpacks V2 e V3. É importante entender as diferenças entre eles.
Buildpacks V2
A maioria dos aplicativos do Cloud Foundry já usa buildpacks V2. Ao usar buildpacks V2 com o Kf, os binários do ciclo de vida e os buildpacks são transferidos por download e configurados nos URLs do Git. Em seguida, o Kf usa a CLI lifecycle para executar cada buildpack no código-fonte.
Prós
- Pronto para alterações de pipeline ou código.
Contras
- Buildpack legado substituído pelo V3.
- Desempenho e confiabilidade mais fracos. O pipeline de build do Kf requer mais E/S para os buildpacks V2.
- Menos recursos da comunidade.
- O Kf é compatível apenas com repositórios de código aberto (OSS) do Git.
Buildpacks V3
Os buildpacks V3 são um projeto da Cloud Native Computing Foundation (CNCF) com uma especificação (em inglês) bem definida, uma CLI (pack) (em inglês) e uma comunidade em crescimento que está inovando em diferentes linguagens e frameworks. O Google Cloud também tem o próprio conjunto de buildpacks.
Os buildpacks V3 têm dois contêineres OCI gerais:
- Imagem do builder
- Imagem de execução
Imagem do builder
A imagem do builder é usada enquanto o código-fonte é integrado a um contêiner executável. A imagem tem os scripts detect necessários e outros utilitários para compilar o código-fonte.
Imagem de execução
A imagem de execução é a imagem base em que um contêiner foi criado. Isso significa que a imagem base será executada quando o aplicativo for iniciado.
Camadas
Os buildpacks V3 usam camadas para compor o contêiner final. Cada buildpack incluído em um build pode manipular o sistema de arquivos e as variáveis do ambiente do aplicativo. Essa abordagem de camadas permite que os buildpacks sejam mais leves e genéricos.
Os buildpacks V3 são criados em contêineres OCI. Isso exige que a imagem do builder V3 seja armazenada em um Container Registry que o pipeline de build do Kf possa acessar. O pipeline de build usa a imagem do builder para aplicar os scripts e criar o código-fonte em um contêiner executável.
Prós
- Imagem do builder e de execução com suporte do Google.
- Funciona com vários produtos do Google Cloud , como o Cloud Build.
- Comunidade em crescimento e registro de buildpack.
Contras
- Pode exigir atualizações de código/processo. Por exemplo, o buildpack Java precisa de código-fonte, enquanto o buildpack V2 requer um arquivo jar.
- Os buildpacks V3 são mais recentes e podem exigir validação complementar (se usar buildpacks desenvolvidos pela comunidade).
Pilhas do Kf
Exibir pilhas
Ao enviar um aplicativo, o pipeline de build determina o buildpack com base na pilha selecionada (especificada pela flag --stack ou pelo manifesto).
Para conferir as pilhas disponíveis em um Space, verifique se ele está direcionado:
kf target -s myspaceO subcomando kf stacks pode ser usado para listar as pilhas:
kf stacksA saída mostra as pilhas V2 e 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
Configurar pilhas
Edite o recurso personalizado kfsystem para atualizar a configuração de pilhas:
kubectl edit kfsystem kfsystemEste exemplo define os buildpacks do Google Cloud como uma pilha 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 nova pilha pode ser enviada:
kf push myapp --stack googleNeste exemplo, o buildpack Ruby V2 é configurado e os padrões do pipeline de build são definidos para usar pilhas 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
Migração
Observação: no momento, esse recurso está em fase experimental e sujeito a alterações.
O Kf tem uma ferramenta de migração que pode unir um buildpack V2. O resultado é um buildpack V3 que pode ser usado em um builder V3. É possível usar o buildpack vinculado em qualquer lugar em que os buildpacks V3 estejam disponíveis.
kf wrap-v2-buildpack gcr.io/your-project/v2-go-buildpack https://github.com/cloudfoundry/go-buildpack --publishIsso vai criar uma imagem de buildpack chamada gcr.io/your-project/v2-go-buildpack. Ela pode ser usada para criar um builder, de acordo com a documentação de criação de builders.
Esse subcomando usa as seguintes CLIs de forma transparente:
gogitpack
Recomendamos que você use o editor do Cloud Shell para garantir que cada subcomando esteja disponível no caminho e na versão corretos.
Problemas conhecidos
Os recursos a seguir ainda não funcionam com o Kf. Se algum deles for prioridade para a organização, entre em contato com seu representante de vendas:
- Registros privados de contêineres para imagens do build V3.
- Armazenamento em cache da V3.
- Buildpacks V2 que exigem credenciais do Git.