warning
この記事は2年以上前に更新されたものです。情報が古くなっている可能性があります。

ここまでCloud Native Buildpacks(CNB)をLaptop上で使うpackを使用してきましたが、
今回はCNBをKubernetes上で実行するkpackを使います。

kpack v0.0.8を使用します。

目次

Kubernetesの確認

ここではDocker for Macを使用しますが、他のKubernetesでも同じようにデプロイできます。

$ kubectl cluster-info
Kubernetes master is running at https://kubernetes.docker.internal:6443
KubeDNS is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://kubernetes.docker.internal:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

kpackのインストール

次のコマンドでkpackをインストールします。

kubectl apply -f https://github.com/pivotal/kpack/releases/download/v0.0.8/release-0.0.8.yaml

次の二つのPodのstatusがRunningになればOKです。

$ kubectl get pods -n kpack                 
NAME                                READY   STATUS    RESTARTS   AGE
kpack-controller-64d966c5f9-kgznt   1/1     Running   0          23s
kpack-webhook-6b7799dc47-kbd4h      1/1     Running   0          22s

次のCustom Resource Definitionが追加されます。

$ kubectl get crd | grep pivotal
builders.build.pivotal.io                             2020-04-29T11:42:13Z
builds.build.pivotal.io                               2020-04-29T11:42:13Z
clusterbuilders.build.pivotal.io                      2020-04-29T11:42:13Z
custombuilders.experimental.kpack.pivotal.io          2020-04-29T11:42:13Z
customclusterbuilders.experimental.kpack.pivotal.io   2020-04-29T11:42:13Z
images.build.pivotal.io                               2020-04-29T11:42:13Z
sourceresolvers.build.pivotal.io                      2020-04-29T11:42:13Z
stacks.experimental.kpack.pivotal.io                  2020-04-29T11:42:13Z
stores.experimental.kpack.pivotal.io                  2020-04-29T11:42:13Z

sternのインストール

後にビルドログを参照するのにsternコマンドを使います。

brew install stern

Builderの登録

kpackではクラスタ単位とnamespace単位でBuilderを設定できます。
前者を定義するリソースがClusterBuilderで、後者がBuilderです。

ここではgcr.io/paketo-buildpacks/builder:baseClusterBuilderとして登録します。

次のコマンドでClusterBuilderを作成してください。

cat <<EOF > cluster-builder.yml
apiVersion: build.pivotal.io/v1alpha1
kind: ClusterBuilder
metadata:
  name: default
spec:
  image: gcr.io/paketo-buildpacks/builder:base
EOF

kubectl apply -f cluster-builder.yml

kubectl describe clusterbuilder <builder name>Statusで作成したClusterBuilderが持つBuildpackとStackを確認できます。

$ kubectl describe clusterbuilder default

Name:         default
Namespace:    
Labels:       <none>
Annotations:  kubectl.kubernetes.io/last-applied-configuration:
                {"apiVersion":"build.pivotal.io/v1alpha1","kind":"ClusterBuilder","metadata":{"annotations":{},"name":"default"},"spec":{"image":"gcr.io/p...
API Version:  build.pivotal.io/v1alpha1
Kind:         ClusterBuilder
Metadata:
  Creation Timestamp:  2020-04-29T11:48:19Z
  Generation:          1
  Resource Version:    494300
  Self Link:           /apis/build.pivotal.io/v1alpha1/clusterbuilders/default
  UID:                 11da1688-ab3e-4b77-b93e-1873a560ed48
Spec:
  Image:          gcr.io/paketo-buildpacks/builder:base
  Update Policy:  polling
Status:
  Builder Metadata:
    Id:       paketo-buildpacks/nodejs
    Version:  v0.0.1
    Id:       paketo-buildpacks/dotnet-core
    Version:  v0.0.1
    Id:       paketo-buildpacks/go
    Version:  v0.0.1
    Id:       paketo-buildpacks/node-engine
    Version:  0.0.178
    Id:       paketo-buildpacks/npm
    Version:  0.1.11
    Id:       paketo-buildpacks/yarn-install
    Version:  0.1.19
    Id:       paketo-buildpacks/dotnet-core-conf
    Version:  0.0.122
    Id:       paketo-buildpacks/dotnet-core-runtime
    Version:  0.0.135
    Id:       paketo-buildpacks/dotnet-core-sdk
    Version:  0.0.133
    Id:       paketo-buildpacks/icu
    Version:  0.0.52
    Id:       paketo-buildpacks/node-engine
    Version:  0.0.178
    Id:       paketo-buildpacks/dotnet-core-aspnet
    Version:  0.0.128
    Id:       paketo-buildpacks/dotnet-core-build
    Version:  0.0.70
    Id:       paketo-buildpacks/dep
    Version:  0.0.109
    Id:       paketo-buildpacks/go-compiler
    Version:  0.0.112
    Id:       paketo-buildpacks/go-mod
    Version:  0.0.96
    Id:       paketo-buildpacks/azure-application-insights
    Version:  1.1.1
    Id:       paketo-buildpacks/build-system
    Version:  1.2.0
    Id:       paketo-buildpacks/dist-zip
    Version:  1.2.1
    Id:       paketo-buildpacks/spring-boot
    Version:  1.5.1
    Id:       paketo-buildpacks/executable-jar
    Version:  1.2.1
    Id:       paketo-buildpacks/jmx
    Version:  1.1.1
    Id:       paketo-buildpacks/bellsoft-liberica
    Version:  2.3.1
    Id:       paketo-buildpacks/apache-tomcat
    Version:  1.1.1
    Id:       paketo-buildpacks/encrypt-at-rest
    Version:  1.2.1
    Id:       paketo-buildpacks/debug
    Version:  1.2.1
    Id:       paketo-buildpacks/google-stackdriver
    Version:  1.1.1
    Id:       paketo-buildpacks/procfile
    Version:  1.3.1
  Conditions:
    Last Transition Time:  2020-04-29T11:48:21Z
    Status:                True
    Type:                  Ready
  Latest Image:            gcr.io/paketo-buildpacks/builder@sha256:b1f509937af906cd8a14d5563356dd997c09148a381cbfef9896cb06aa51959e
  Observed Generation:     1
  Stack:
    Id:         io.buildpacks.stacks.bionic
    Run Image:  gcr.io/paketo-buildpacks/run@sha256:fd87df6a892262c952559a164b8e2ad1be7655021ad50d520085a19a082cd379
Events:         <none>

Docker Registryの登録

次のコマンドでkpackがbuildした後にpushするDocker Registryを登録します。

export DOCKERHUB_USERNAME=****
export DOCKERHUB_PASSWORD=****

cat <<EOF > secret.yml
apiVersion: v1
kind: Secret
metadata:
  name: tutorial-registry-credentials
  annotations:
    build.pivotal.io/docker: https://index.docker.io/v1/
type: kubernetes.io/basic-auth
stringData:
  username: ${DOCKERHUB_USERNAME}
  password: ${DOCKERHUB_PASSWORD}
EOF

kubectl apply -f secret.yml

次のコマンドで、上記で作成したSecretを参照するServiceAccountを作成します。

cat <<EOF > service-account.yml
apiVersion: v1
kind: ServiceAccount
metadata:
 name: tutorial-service-account
secrets:
 - name: tutorial-registry-credentials
EOF

kubectl apply -f service-account.yml

Imageのビルド

kpackではbuildするのOCIイメージをImageリソースとして管理します。

ビルドするアプリとしてhttps://github.com/making/hello-golangを使用します。

次のコマンドでImageを作成してください。

cat <<EOF > hello-golang.yml
apiVersion: build.pivotal.io/v1alpha1
kind: Image
metadata:
  name: hello-golang
spec:
  tag: ${DOCKERHUB_USERNAME}/hello-golang
  serviceAccount: tutorial-service-account
  cacheSize: "1.5Gi"
  builder:
    name: default
    kind: ClusterBuilder
  source:
    git:
      url: https://github.com/making/hello-golang
      revision: 85071eb4aa95f20cc18555aca5e31e2aad874e46 # あえて明示する 
EOF

kubectl apply -f hello-golang.yml

kubectl get imageを実行してください。

$ kubectl get image
NAME           LATESTIMAGE   READY
hello-golang                 Unknown

Image作成直後はビルド中でREADYUnknownと表示されます。

別のTerminalでstern 'hello-golang*'を実行してください。次のようなログが出力されます。

+ hello-golang-build-1-sjdv8-build-pod › prepare
hello-golang-build-1-sjdv8-build-pod prepare prepare:fetch.go:88: Successfully cloned "https://github.com/making/hello-golang" @ "85071eb4aa95f20cc18555aca5e31e2aad874e46" in path "/workspace"
+ hello-golang-build-1-sjdv8-build-pod › analyze
hello-golang-build-1-sjdv8-build-pod analyze Previous image with name "making/hello-golang" not found
+ hello-golang-build-1-sjdv8-build-pod › build
hello-golang-build-1-sjdv8-build-pod build 
hello-golang-build-1-sjdv8-build-pod build Go Compiler Buildpack 0.0.112
hello-golang-build-1-sjdv8-build-pod build   Go 1.13.9: Contributing to layer
hello-golang-build-1-sjdv8-build-pod build     Downloading from https://buildpacks.cloudfoundry.org/dependencies/go/go-1.13.9-bionic-61a279e8.tgz
hello-golang-build-1-sjdv8-build-pod build     Verifying checksum
hello-golang-build-1-sjdv8-build-pod build     Expanding to /layers/paketo-buildpacks_go-compiler/go
hello-golang-build-1-sjdv8-build-pod build 
hello-golang-build-1-sjdv8-build-pod build Go Mod Buildpack 0.0.96
hello-golang-build-1-sjdv8-build-pod build Setting environment variables
hello-golang-build-1-sjdv8-build-pod build   : Contributing to layer
hello-golang-build-1-sjdv8-build-pod build github.com/making/hello-golang
hello-golang-build-1-sjdv8-build-pod build   : Contributing to layer
hello-golang-build-1-sjdv8-build-pod build Running `go install`
hello-golang-build-1-sjdv8-build-pod build   : Contributing to layer
hello-golang-build-1-sjdv8-build-pod build Contributing start command
hello-golang-build-1-sjdv8-build-pod build   Process types:
hello-golang-build-1-sjdv8-build-pod build     web: /layers/paketo-buildpacks_go-mod/app-binary/bin/hello-golang
+ hello-golang-build-1-sjdv8-build-pod › export
hello-golang-build-1-sjdv8-build-pod export Adding layer 'launcher'
hello-golang-build-1-sjdv8-build-pod export Adding layer 'paketo-buildpacks/go-mod:app-binary'
hello-golang-build-1-sjdv8-build-pod export Adding 1/1 app layer(s)
hello-golang-build-1-sjdv8-build-pod export Adding layer 'config'
hello-golang-build-1-sjdv8-build-pod export *** Images (sha256:b02bb6a26595f348db51e508d641da8f8759236d4adbf85b980dceddb9544aa3):
hello-golang-build-1-sjdv8-build-pod export       making/hello-golang
hello-golang-build-1-sjdv8-build-pod export       index.docker.io/making/hello-golang:b1.20200429.121519
hello-golang-build-1-sjdv8-build-pod export Adding cache layer 'paketo-buildpacks/go-compiler:61a279e80c8d3a03ae9464dc2fc263e37e0655d45e9931693ea9522bfbb91847'
hello-golang-build-1-sjdv8-build-pod export Adding cache layer 'paketo-buildpacks/go-compiler:go'
hello-golang-build-1-sjdv8-build-pod export Adding cache layer 'paketo-buildpacks/go-mod:go-cache'
hello-golang-build-1-sjdv8-build-pod export Adding cache layer 'paketo-buildpacks/go-mod:go-mod'

ビルドが完了した後に再度kubectl get imageを実行してください。

$ kubectl get image
NAME           LATESTIMAGE                                                                                                   READY
hello-golang   index.docker.io/making/hello-golang@sha256:b02bb6a26595f348db51e508d641da8f8759236d4adbf85b980dceddb9544aa3   True

作成されたイメージ名が表示されます。

このイメージをdocker runで起動しましょう。

docker run --rm -p 8080:8080 $(kubectl get image hello-golang -o jsonpath='{.status.latestImage}')

アプリケーションにアクセスします。

$ curl localhost:8080 -w '\n'
Hello World!

Imageの再ビルド

Imagegit.revisionに指定したブランチのソースコードが変更したら自動で再ビルドされます。
ここではhello-golang.ymlgit.revisionを変更して、ソースコードの変更をシュミレートします。

次のコマンドを実行してください。

cat <<EOF > hello-golang.yml
apiVersion: build.pivotal.io/v1alpha1
kind: Image
metadata:
  name: hello-golang
spec:
  tag: ${DOCKERHUB_USERNAME}/hello-golang
  serviceAccount: tutorial-service-account
  cacheSize: "1.5Gi"
  builder:
    name: default
    kind: ClusterBuilder
  source:
    git:
      url: https://github.com/making/hello-golang
      revision: 4bae4fb358ba5235ec8c8d9c001821a2017c70cb # 変更
EOF

kubectl apply -f hello-golang.yml

stern 'hello-golang*'を実行しているターミナルで、次のようなログが流れます。

+ hello-golang-build-2-bvzws-build-pod › prepare
hello-golang-build-2-bvzws-build-pod prepare prepare:fetch.go:88: Successfully cloned "https://github.com/making/hello-golang" @ "4bae4fb358ba5235ec8c8d9c001821a2017c70cb" in path "/workspace"
+ hello-golang-build-2-bvzws-build-pod › analyze
hello-golang-build-2-bvzws-build-pod analyze Restoring metadata for "paketo-buildpacks/go-compiler:61a279e80c8d3a03ae9464dc2fc263e37e0655d45e9931693ea9522bfbb91847" from cache
hello-golang-build-2-bvzws-build-pod analyze Restoring metadata for "paketo-buildpacks/go-compiler:go" from cache
hello-golang-build-2-bvzws-build-pod analyze Restoring metadata for "paketo-buildpacks/go-mod:app-binary" from app image
hello-golang-build-2-bvzws-build-pod analyze Restoring metadata for "paketo-buildpacks/go-mod:go-cache" from cache
hello-golang-build-2-bvzws-build-pod analyze Restoring metadata for "paketo-buildpacks/go-mod:go-mod" from cache
+ hello-golang-build-2-bvzws-build-pod › build
hello-golang-build-2-bvzws-build-pod build 
hello-golang-build-2-bvzws-build-pod build Go Compiler Buildpack 0.0.112
hello-golang-build-2-bvzws-build-pod build   Go 1.13.9: Reusing cached layer
hello-golang-build-2-bvzws-build-pod build 
hello-golang-build-2-bvzws-build-pod build Go Mod Buildpack 0.0.96
hello-golang-build-2-bvzws-build-pod build Setting environment variables
hello-golang-build-2-bvzws-build-pod build   : Contributing to layer
hello-golang-build-2-bvzws-build-pod build github.com/making/hello-golang
hello-golang-build-2-bvzws-build-pod build   : Contributing to layer
hello-golang-build-2-bvzws-build-pod build Running `go install`
hello-golang-build-2-bvzws-build-pod build   : Contributing to layer
hello-golang-build-2-bvzws-build-pod build Contributing start command
hello-golang-build-2-bvzws-build-pod build   Process types:
hello-golang-build-2-bvzws-build-pod build     web: /layers/paketo-buildpacks_go-mod/app-binary/bin/hello-golang
+ hello-golang-build-2-bvzws-build-pod › export
hello-golang-build-2-bvzws-build-pod export Reusing layers from image 'index.docker.io/making/hello-golang@sha256:b02bb6a26595f348db51e508d641da8f8759236d4adbf85b980dceddb9544aa3'
hello-golang-build-2-bvzws-build-pod export Reusing layer 'launcher'
hello-golang-build-2-bvzws-build-pod export Adding layer 'paketo-buildpacks/go-mod:app-binary'
hello-golang-build-2-bvzws-build-pod export Reusing 1/1 app layer(s)
hello-golang-build-2-bvzws-build-pod export Reusing layer 'config'
hello-golang-build-2-bvzws-build-pod export *** Images (sha256:d0c38c6cd120c33750dcf7cf9c302df683d23d73b64ec721c2d9e56da83a9632):
hello-golang-build-2-bvzws-build-pod export       making/hello-golang
hello-golang-build-2-bvzws-build-pod export       index.docker.io/making/hello-golang:b2.20200429.122941
hello-golang-build-2-bvzws-build-pod export Reusing cache layer 'paketo-buildpacks/go-compiler:61a279e80c8d3a03ae9464dc2fc263e37e0655d45e9931693ea9522bfbb91847'
hello-golang-build-2-bvzws-build-pod export Reusing cache layer 'paketo-buildpacks/go-compiler:go'
hello-golang-build-2-bvzws-build-pod export Adding cache layer 'paketo-buildpacks/go-mod:go-cache'
hello-golang-build-2-bvzws-build-pod export Reusing cache layer 'paketo-buildpacks/go-mod:go-mod'

ビルドが完了したら再度docker runで起動しましょう。

docker run --rm -p 8080:8080 $(kubectl get image hello-golang -o jsonpath='{.status.latestImage}')

アプリケーションにアクセスします。

$ curl localhost:8080 -w '\n'
Hello Cloud Native Buildpacks!

アプリが更新されました。

hello-golan Imageのビルド履歴は次のコマンドで確認できます。

$ kubectl get build -l image.build.pivotal.io/image=hello-golang
NAME                         IMAGE                                                                                                         SUCCEEDED
hello-golang-build-1-sjdv8   index.docker.io/making/hello-golang@sha256:b02bb6a26595f348db51e508d641da8f8759236d4adbf85b980dceddb9544aa3   True
hello-golang-build-2-bvzws   index.docker.io/making/hello-golang@sha256:d0c38c6cd120c33750dcf7cf9c302df683d23d73b64ec721c2d9e56da83a9632   True                                                                                                            Unknown

Docker Hubでビルド毎のTagが作られていることも確認できます。

image

Builderの更新

再ビルドはBuilder(ここではgcr.io/paketo-buildpacks/build:base)が更新された場合も行われます。

ここではClusterBuilderimageを変更し、Builderの更新をシュミレートしてみます。

ClusterBuilderを更新する前に現状のイメージをpack inspect-imageコマンドで確認します。

$ pack inspect-image $(kubectl get image hello-golang -o jsonpath='{.status.latestImage}')
Inspecting image: index.docker.io/making/hello-golang@sha256:d0c38c6cd120c33750dcf7cf9c302df683d23d73b64ec721c2d9e56da83a9632

REMOTE:

Stack: io.buildpacks.stacks.bionic

Base Image:
  Reference: gcr.io/paketo-buildpacks/run@sha256:fd87df6a892262c952559a164b8e2ad1be7655021ad50d520085a19a082cd379
  Top Layer: sha256:f0d87426c0a82340475d73a9108b063d3d3cfbd92ef3b4af74dcd8f904475a36

Run Images:
  gcr.io/paketo-buildpacks/run:base-cnb

Buildpacks:
  ID                                   VERSION
  paketo-buildpacks/go-compiler        0.0.112
  paketo-buildpacks/go-mod             0.0.96

Processes:
  TYPE                 SHELL        COMMAND                                                             ARGS
  web (default)        bash         /layers/paketo-buildpacks_go-mod/app-binary/bin/hello-golang        
...

次のコマンドでClusterBuilderを変更してください。

cat <<EOF > cluster-builder.yml
apiVersion: build.pivotal.io/v1alpha1
kind: ClusterBuilder
metadata:
  name: default
spec:
  image: gcr.io/paketo-buildpacks/builder:tiny
EOF

kubectl apply -f cluster-builder.yml

stern 'hello-golang*'を実行しているターミナルで、次のようなログが流れます。

+ hello-golang-build-3-hl5k2-build-pod › prepare
hello-golang-build-3-hl5k2-build-pod prepare prepare:fetch.go:88: Successfully cloned "https://github.com/making/hello-golang" @ "4bae4fb358ba5235ec8c8d9c001821a2017c70cb" in path "/workspace"
+ hello-golang-build-3-hl5k2-build-pod › analyze
hello-golang-build-3-hl5k2-build-pod analyze Restoring metadata for "paketo-buildpacks/go-compiler:61a279e80c8d3a03ae9464dc2fc263e37e0655d45e9931693ea9522bfbb91847" from cache
hello-golang-build-3-hl5k2-build-pod analyze Restoring metadata for "paketo-buildpacks/go-compiler:go" from cache
hello-golang-build-3-hl5k2-build-pod analyze Restoring metadata for "paketo-buildpacks/go-mod:app-binary" from app image
hello-golang-build-3-hl5k2-build-pod analyze Restoring metadata for "paketo-buildpacks/go-mod:go-mod" from cache
hello-golang-build-3-hl5k2-build-pod analyze Restoring metadata for "paketo-buildpacks/go-mod:go-cache" from cache
+ hello-golang-build-3-hl5k2-build-pod › build
hello-golang-build-3-hl5k2-build-pod build 
hello-golang-build-3-hl5k2-build-pod build Go Compiler Buildpack 0.0.112
hello-golang-build-3-hl5k2-build-pod build   Go 1.13.9: Contributing to layer
hello-golang-build-3-hl5k2-build-pod build     Downloading from https://buildpacks.cloudfoundry.org/dependencies/go/go-1.13.9-tiny-aa89f235.tgz
hello-golang-build-3-hl5k2-build-pod build     Verifying checksum
hello-golang-build-3-hl5k2-build-pod build     Expanding to /layers/paketo-buildpacks_go-compiler/go
hello-golang-build-3-hl5k2-build-pod build   Removing unused layers
hello-golang-build-3-hl5k2-build-pod build     61a279e80c8d3a03ae9464dc2fc263e37e0655d45e9931693ea9522bfbb91847
hello-golang-build-3-hl5k2-build-pod build 
hello-golang-build-3-hl5k2-build-pod build Go Mod Buildpack 0.0.96
hello-golang-build-3-hl5k2-build-pod build Setting environment variables
hello-golang-build-3-hl5k2-build-pod build   : Contributing to layer
hello-golang-build-3-hl5k2-build-pod build github.com/making/hello-golang
hello-golang-build-3-hl5k2-build-pod build   : Contributing to layer
hello-golang-build-3-hl5k2-build-pod build Running `go install`
hello-golang-build-3-hl5k2-build-pod build   : Contributing to layer
hello-golang-build-3-hl5k2-build-pod build Contributing start command
hello-golang-build-3-hl5k2-build-pod build   Process types:
hello-golang-build-3-hl5k2-build-pod build     web: /layers/paketo-buildpacks_go-mod/app-binary/bin/hello-golang
+ hello-golang-build-3-hl5k2-build-pod › export
hello-golang-build-3-hl5k2-build-pod export Reusing layers from image 'index.docker.io/making/hello-golang@sha256:d0c38c6cd120c33750dcf7cf9c302df683d23d73b64ec721c2d9e56da83a9632'
hello-golang-build-3-hl5k2-build-pod export Reusing layer 'launcher'
hello-golang-build-3-hl5k2-build-pod export Reusing layer 'paketo-buildpacks/go-mod:app-binary'
hello-golang-build-3-hl5k2-build-pod export Reusing 1/1 app layer(s)
hello-golang-build-3-hl5k2-build-pod export Adding layer 'config'
hello-golang-build-3-hl5k2-build-pod export *** Images (sha256:21d0614008f77dc1c0adc971ce92be0fa6971aefb8ea13f83a320a91ce1f5b7e):
hello-golang-build-3-hl5k2-build-pod export       making/hello-golang
hello-golang-build-3-hl5k2-build-pod export       index.docker.io/making/hello-golang:b3.20200429.124156
hello-golang-build-3-hl5k2-build-pod export Adding cache layer 'paketo-buildpacks/go-compiler:aa89f23581019633b2076cc4bd27c441010e03a7dceae992724a9ecadb6cd983'
hello-golang-build-3-hl5k2-build-pod export Reusing cache layer 'paketo-buildpacks/go-compiler:go'
hello-golang-build-3-hl5k2-build-pod export Adding cache layer 'paketo-buildpacks/go-mod:go-cache'
hello-golang-build-3-hl5k2-build-pod export Reusing cache layer 'paketo-buildpacks/go-mod:go-mod'

ビルドが完了したら最新のイメージをpack inspect-imageコマンドで確認します。

$ pack inspect-image $(kubectl get image hello-golang -o jsonpath='{.status.latestImage}')
Inspecting image: index.docker.io/making/hello-golang@sha256:21d0614008f77dc1c0adc971ce92be0fa6971aefb8ea13f83a320a91ce1f5b7e

REMOTE:

Stack: org.cloudfoundry.stacks.tiny

Base Image:
  Reference: gcr.io/paketo-buildpacks/run@sha256:29437a6e82ec21079ba2fa37476eb27ad724a1c39eeb72239e8400a064f76892
  Top Layer: sha256:6c5f893465b49acad51786da441a519914c0388ccf92d1c0a8265b629216b830

Run Images:
  gcr.io/paketo-buildpacks/run:tiny-cnb

Buildpacks:
  ID                                   VERSION
  paketo-buildpacks/go-compiler        0.0.112
  paketo-buildpacks/go-mod             0.0.96

Processes:
  TYPE                 SHELL        COMMAND                                                             ARGS
  web (default)                     /layers/paketo-buildpacks_go-mod/app-binary/bin/hello-golang        
...

Stackが変わったことが確認できます。

image

ベースイメージがgcr.io/paketo-buildpacks/builder:baseからgcr.io/paketo-buildpacks/builder:tinyに変わったので、イメージサイズが小さくなっていることも確認できます。

kpackのアンインストール

作成したリソースを削除します。

kubectl delete -f hello-golang.yml -f service-account.yml -f secret.yml -f cluster-builder.yml

kpackをアンインストールします。

kubectl delete -f https://github.com/pivotal/kpack/releases/download/v0.0.8/release-0.0.8.yaml
Found a mistake? Update the entry.
Share this article: