fixed issue with app builder

This commit is contained in:
dhaval055
2023-10-13 14:29:42 +00:00
parent b5f992cb80
commit 04c2ed80a0
2 changed files with 79 additions and 65 deletions
+78 -64
View File
@@ -379,6 +379,20 @@ func buildImage(tags []string, dockerfileFolder string) error {
return err return err
} }
BackendPodLabel := "io.kompose.service=backend"
backendPodList, podListErr := client.CoreV1().Pods("shuffle").List(context.TODO(), metav1.ListOptions{
LabelSelector: BackendPodLabel,
})
if podListErr != nil || len(backendPodList.Items) == 0 {
fmt.Println("Error getting backend pod or no pod found:", podListErr)
return podListErr
}
backendNodeName := backendPodList.Items[0].Spec.NodeName
log.Printf("[INFO] Backend running on: %s", backendNodeName)
job := &batchv1.Job{ job := &batchv1.Job{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "shuffle-app-builder", Name: "shuffle-app-builder",
@@ -405,9 +419,9 @@ func buildImage(tags []string, dockerfileFolder string) error {
}, },
}, },
}, },
// NodeSelector: map[string]string{ NodeSelector: map[string]string{
// "node": "master", "node": backendNodeName,
// }, },
RestartPolicy: corev1.RestartPolicyNever, RestartPolicy: corev1.RestartPolicyNever,
Volumes: []corev1.Volume{ Volumes: []corev1.Volume{
{ {
@@ -463,68 +477,68 @@ func buildImage(tags []string, dockerfileFolder string) error {
} }
} else { } else {
ctx := context.Background() ctx := context.Background()
client, err := client.NewEnvClient() client, err := client.NewEnvClient()
if err != nil { if err != nil {
log.Printf("Unable to create docker client: %s", err) log.Printf("Unable to create docker client: %s", err)
return err return err
} }
log.Printf("[INFO] Docker Tags: %s", tags) log.Printf("[INFO] Docker Tags: %s", tags)
dockerfileSplit := strings.Split(dockerfileFolder, "/") dockerfileSplit := strings.Split(dockerfileFolder, "/")
// Create a buffer // Create a buffer
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
tw := tar.NewWriter(buf) tw := tar.NewWriter(buf)
defer tw.Close() defer tw.Close()
baseDir := strings.Join(dockerfileSplit[0:len(dockerfileSplit)-1], "/") baseDir := strings.Join(dockerfileSplit[0:len(dockerfileSplit)-1], "/")
// Builds the entire folder into buf // Builds the entire folder into buf
err = getParsedTar(tw, baseDir, "") err = getParsedTar(tw, baseDir, "")
if err != nil { if err != nil {
log.Printf("Tar issue: %s", err) log.Printf("Tar issue: %s", err)
} }
dockerFileTarReader := bytes.NewReader(buf.Bytes()) dockerFileTarReader := bytes.NewReader(buf.Bytes())
buildOptions := types.ImageBuildOptions{ buildOptions := types.ImageBuildOptions{
Remove: true, Remove: true,
Tags: tags, Tags: tags,
BuildArgs: map[string]*string{}, BuildArgs: map[string]*string{},
} }
//NetworkMode: "host", //NetworkMode: "host",
httpProxy := os.Getenv("HTTP_PROXY") httpProxy := os.Getenv("HTTP_PROXY")
if len(httpProxy) > 0 { if len(httpProxy) > 0 {
buildOptions.BuildArgs["HTTP_PROXY"] = &httpProxy buildOptions.BuildArgs["HTTP_PROXY"] = &httpProxy
} }
httpsProxy := os.Getenv("HTTPS_PROXY") httpsProxy := os.Getenv("HTTPS_PROXY")
if len(httpProxy) > 0 { if len(httpProxy) > 0 {
buildOptions.BuildArgs["https_proxy"] = &httpsProxy buildOptions.BuildArgs["https_proxy"] = &httpsProxy
} }
// Build the actual image // Build the actual image
imageBuildResponse, err := client.ImageBuild( imageBuildResponse, err := client.ImageBuild(
ctx, ctx,
dockerFileTarReader, dockerFileTarReader,
buildOptions, buildOptions,
) )
if err != nil { if err != nil {
return err return err
} }
// Read the STDOUT from the build process // Read the STDOUT from the build process
defer imageBuildResponse.Body.Close() defer imageBuildResponse.Body.Close()
buildBuf := new(strings.Builder) buildBuf := new(strings.Builder)
_, err = io.Copy(buildBuf, imageBuildResponse.Body) _, err = io.Copy(buildBuf, imageBuildResponse.Body)
if err != nil { if err != nil {
return err return err
} else { } else {
if strings.Contains(buildBuf.String(), "errorDetail") { if strings.Contains(buildBuf.String(), "errorDetail") {
log.Printf("[ERROR] Docker build:\n%s\nERROR ABOVE: Trying to pull tags from: %s", buildBuf.String(), strings.Join(tags, "\n")) log.Printf("[ERROR] Docker build:\n%s\nERROR ABOVE: Trying to pull tags from: %s", buildBuf.String(), strings.Join(tags, "\n"))
return errors.New(fmt.Sprintf("Failed building %s. Check backend logs for details. Most likely means you have an old version of Docker.", strings.Join(tags, ","))) return errors.New(fmt.Sprintf("Failed building %s. Check backend logs for details. Most likely means you have an old version of Docker.", strings.Join(tags, ",")))
}
} }
}
} }
return nil return nil
+1 -1
View File
@@ -390,7 +390,7 @@ spec:
key: REGISTRY_AUTH key: REGISTRY_AUTH
name: env name: env
image: dhavald055/shuffle-k8s:shuffle-backend-kubernetes image: dhavald055/shuffle-k8s:shuffle-backend-kubernetes
#imagePullPolicy: Never imagePullPolicy: Always
name: shuffle-backend name: shuffle-backend
ports: ports:
- containerPort: 5001 - containerPort: 5001