You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2019/12/18 12:34:58 UTC
[camel-k] 13/13: chore(build): Isolate builder volume from Kaniko
cache volume
This is an automated email from the ASF dual-hosted git repository.
astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git
commit f4928bf7c49c88f994d4ce73074ccc5582f41155
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Wed Dec 18 11:35:07 2019 +0100
chore(build): Isolate builder volume from Kaniko cache volume
---
pkg/builder/kaniko/kaniko.go | 4 +--
pkg/controller/integrationplatform/kaniko_cache.go | 14 ++++----
pkg/trait/builder.go | 39 +++++++++++++---------
3 files changed, 32 insertions(+), 25 deletions(-)
diff --git a/pkg/builder/kaniko/kaniko.go b/pkg/builder/kaniko/kaniko.go
index efc0291..b61638d 100644
--- a/pkg/builder/kaniko/kaniko.go
+++ b/pkg/builder/kaniko/kaniko.go
@@ -42,5 +42,5 @@ var KanikoSteps = []builder.Step{
Steps.Publisher,
}
-// BuildDir is the directory where to build artifacts (shared with the Kaniko pod)
-var BuildDir = "/workspace"
+// CacheDir is the cache directory for Kaniko builds (mounted into the Kaniko pod)
+const CacheDir = "/kaniko/cache"
diff --git a/pkg/controller/integrationplatform/kaniko_cache.go b/pkg/controller/integrationplatform/kaniko_cache.go
index 2d5674d..195090e 100644
--- a/pkg/controller/integrationplatform/kaniko_cache.go
+++ b/pkg/controller/integrationplatform/kaniko_cache.go
@@ -58,13 +58,13 @@ func createKanikoCacheWarmerPod(ctx context.Context, client client.Client, platf
Name: "warm-kaniko-cache",
Image: fmt.Sprintf("gcr.io/kaniko-project/warmer:v%s", defaults.KanikoVersion),
Args: []string{
- "--cache-dir=/workspace/cache",
+ "--cache-dir=" + kaniko.CacheDir,
"--image=" + platform.Status.Build.BaseImage,
},
VolumeMounts: []corev1.VolumeMount{
{
- Name: "camel-k-builder",
- MountPath: kaniko.BuildDir,
+ Name: "kaniko-cache",
+ MountPath: kaniko.CacheDir,
},
},
},
@@ -76,11 +76,11 @@ func createKanikoCacheWarmerPod(ctx context.Context, client client.Client, platf
Image: "busybox",
ImagePullPolicy: corev1.PullIfNotPresent,
Command: []string{"/bin/sh", "-c"},
- Args: []string{"mkdir -p /workspace/cache && chmod -R a+rwx /workspace"},
+ Args: []string{"mkdir -p " + kaniko.CacheDir + "&& chmod -R a+rwx " + kaniko.CacheDir},
VolumeMounts: []corev1.VolumeMount{
{
- Name: "camel-k-builder",
- MountPath: kaniko.BuildDir,
+ Name: "kaniko-cache",
+ MountPath: kaniko.CacheDir,
},
},
},
@@ -88,7 +88,7 @@ func createKanikoCacheWarmerPod(ctx context.Context, client client.Client, platf
RestartPolicy: corev1.RestartPolicyOnFailure,
Volumes: []corev1.Volume{
{
- Name: "camel-k-builder",
+ Name: "kaniko-cache",
VolumeSource: corev1.VolumeSource{
PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
ClaimName: platform.Status.Build.PersistentVolumeClaim,
diff --git a/pkg/trait/builder.go b/pkg/trait/builder.go
index a81f841..e008c8f 100644
--- a/pkg/trait/builder.go
+++ b/pkg/trait/builder.go
@@ -37,6 +37,8 @@ import (
"github.com/apache/camel-k/pkg/util/defaults"
)
+const builderDir = "/builder"
+
// The builder trait is internally used to determine the best strategy to
// build and configure IntegrationKits.
//
@@ -68,10 +70,19 @@ func (t *builderTrait) Apply(e *Environment) error {
if err != nil {
return err
}
- mount := corev1.VolumeMount{Name: "camel-k-builder", MountPath: kaniko.BuildDir}
+
+ mount := corev1.VolumeMount{Name: "camel-k-builder", MountPath: builderDir}
builderTask.VolumeMounts = append(builderTask.VolumeMounts, mount)
kanikoTask.VolumeMounts = append(kanikoTask.VolumeMounts, mount)
+ // Use an emptyDir volume to coordinate the Camel Maven build and the Kaniko image build
+ builderTask.Volumes = append(builderTask.Volumes, corev1.Volume{
+ Name: "camel-k-builder",
+ VolumeSource: corev1.VolumeSource{
+ EmptyDir: &corev1.EmptyDirVolumeSource{},
+ },
+ })
+
if e.Platform.Status.Build.IsKanikoCacheEnabled() {
// Co-locate with the Kaniko warmer pod for sharing the host path volume as the current
// persistent volume claim uses the default storage class which is likely relying
@@ -113,22 +124,18 @@ func (t *builderTrait) Apply(e *Environment) error {
},
},
}
- // Use the PVC used to warm the Kaniko cache to coordinate the Camel Maven build and the Kaniko image build
- builderTask.Volumes = append(builderTask.Volumes, corev1.Volume{
- Name: "camel-k-builder",
+ // Mount the PV used to warm the Kaniko cache into the Kaniko image build
+ kanikoTask.Volumes = append(kanikoTask.Volumes, corev1.Volume{
+ Name: "kaniko-cache",
VolumeSource: corev1.VolumeSource{
PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
ClaimName: e.Platform.Status.Build.PersistentVolumeClaim,
},
},
})
- } else {
- // Use an emptyDir volume to coordinate the Camel Maven build and the Kaniko image build
- builderTask.Volumes = append(builderTask.Volumes, corev1.Volume{
- Name: "camel-k-builder",
- VolumeSource: corev1.VolumeSource{
- EmptyDir: &corev1.EmptyDirVolumeSource{},
- },
+ kanikoTask.VolumeMounts = append(kanikoTask.VolumeMounts, corev1.VolumeMount{
+ Name: "kaniko-cache",
+ MountPath: kaniko.CacheDir,
})
}
@@ -158,8 +165,8 @@ func (t *builderTrait) builderTask(e *Environment) *v1alpha1.BuilderTask {
CamelVersion: e.CamelCatalog.Version,
RuntimeVersion: e.CamelCatalog.RuntimeVersion,
RuntimeProvider: e.CamelCatalog.RuntimeProvider,
- //Sources: e.Integration.Spec.Sources,
- //Resources: e.Integration.Spec.Resources,
+ //Sources: e.Integration.Spec.Sources,
+ //Resources: e.Integration.Spec.Resources,
Dependencies: e.IntegrationKit.Spec.Dependencies,
//TODO: sort steps for easier read
Steps: builder.StepIDsFor(builder.DefaultSteps...),
@@ -172,7 +179,7 @@ func (t *builderTrait) builderTask(e *Environment) *v1alpha1.BuilderTask {
task.Steps = append(task.Steps, builder.StepIDsFor(s2i.S2iSteps...)...)
} else if platform.SupportsKanikoPublishStrategy(e.Platform) {
task.Steps = append(task.Steps, builder.StepIDsFor(kaniko.KanikoSteps...)...)
- task.BuildDir = path.Join(kaniko.BuildDir, e.IntegrationKit.Name)
+ task.BuildDir = path.Join(builderDir, e.IntegrationKit.Name)
}
quarkus := e.Catalog.GetTrait("quarkus").(*quarkusTrait)
@@ -197,10 +204,10 @@ func (t *builderTrait) kanikoTask(e *Environment) (*v1alpha1.KanikoTask, error)
env := make([]corev1.EnvVar, 0)
baseArgs := []string{
"--dockerfile=Dockerfile",
- "--context=" + path.Join(kaniko.BuildDir, e.IntegrationKit.Name, "package", "context"),
+ "--context=" + path.Join(builderDir, e.IntegrationKit.Name, "package", "context"),
"--destination=" + image,
"--cache=" + strconv.FormatBool(e.Platform.Status.Build.IsKanikoCacheEnabled()),
- "--cache-dir=" + path.Join(kaniko.BuildDir, "cache"),
+ "--cache-dir=" + kaniko.CacheDir,
}
args := make([]string, 0, len(baseArgs))