Skip to content

origoss/k8s-docker-build

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

README

1 Introduction

This directory contains scripts and descriptions that can be used to build and then push Docker images in Kubernetes.

2 Usage

2.1 Creating the Docker registry secret

2.1.1 Option1: By reusing the local Docker config

If you log in to a Docker registry using the docker login command the file $HOME/.docker/config.json is being created. We can reuse that file for creating the Docker registry secret.

kubectl create secret generic docker-image-builder-secret \
        --from-file=.dockerconfigjson=${HOME}/.docker/config.json

2.1.2 Option2: By giving the authentication details

Create a secret in your Kubernetes cluster that stores your Docker registry credentials:

kubectl create secret docker-registry docker-image-builder-secret \
        --docker-server=DOCKER_REGISTRY_SERVER                    \
        --docker-username=DOCKER_USER                             \
        --docker-password=DOCKER_PASSWORD                         \
        --docker-email=DOCKER_EMAIL
secret "docker-image-builder-secret" created

2.2 Building and pushing the Docker image

After the Docker secret and build configuration is stored you can start the job that builds and pushes the Docker image:

yemplate -s "gitrepo=https://github.com/origoss/dockergit.git" \
         -s "tags[0]=docker.origoss.local/dockergit:latest"    \
         -s "tags[1]=origoss/dockergit:18.04.0-ce"             \
         -s "tags[2]=origoss/dockergit:latest"                 \
         -t docker-build.yaml.t |                              \
    kubectl apply -f -
job.batch "docker-image-builder" created

After the job is started you can check the status of the started pods with the following command:

kubectl get job/docker-image-builder \
        --template="Job's pod status:
Active: {{or .status.active "0"}} 
Succ: {{or .status.succeeded "0"}}
Fail: {{or .status.failed "0"}}"
Job's pod status:
Active: 1 
Succ: 0
Fail: 0

Use can use the simple waitjob.sh script that waits until the job succeeds or fails:

./waitjob.sh docker-image-builder
active: 1
active: 1
active: 1
active: 1
active: 1
active: 1
active: 1
active: 1
Success

To list the started pods:

kubectl get pods \
        -l controller-uid=$(kubectl get job/docker-image-builder \
                                    --template="{{.metadata.uid}}")
NAME                         READY     STATUS      RESTARTS   AGE
docker-image-builder-fzkg8   0/1       Completed   0          24s

If needed, the logs of a pod can be checked

kubectl logs docker-image-builder-fzkg8
docker build -t docker.origoss.local/dockergit:latest -t origoss/dockergit:18.04.0-ce -t origoss/dockergit:latest  .
Sending build context to Docker daemon    128kB

Step 1/2 : FROM docker:18.04.0-ce
 ---> 41e946672182
Step 2/2 : RUN apk add --no-cache git
 ---> Using cache
 ---> b64c04925efb
Successfully built b64c04925efb
docker push docker.origoss.local/dockergit:latest
The push refers to a repository [docker.origoss.local/dockergit]
1760eedac57c: Preparing
b446e0d8c3ad: Preparing
9b4ada052f34: Preparing
ecbc5c1a59c8: Preparing
b09386d6aa0f: Preparing
1ed7a5e2d1b3: Preparing
cd7100a72410: Preparing
1ed7a5e2d1b3: Waiting
cd7100a72410: Waiting
1760eedac57c: Layer already exists
ecbc5c1a59c8: Layer already exists
b09386d6aa0f: Layer already exists
b446e0d8c3ad: Layer already exists
9b4ada052f34: Layer already exists
1ed7a5e2d1b3: Layer already exists
cd7100a72410: Layer already exists
latest: digest: sha256:66194bcef7519f144535e78c84b9acbdfd4d06b3fb4f3757b28b9b36a7a48d73 size: 1782
docker push origoss/dockergit:18.04.0-ce
The push refers to a repository [docker.io/origoss/dockergit]
1760eedac57c: Preparing
b446e0d8c3ad: Preparing
9b4ada052f34: Preparing
ecbc5c1a59c8: Preparing
b09386d6aa0f: Preparing
1ed7a5e2d1b3: Preparing
cd7100a72410: Preparing
1ed7a5e2d1b3: Waiting
cd7100a72410: Waiting
9b4ada052f34: Layer already exists
b446e0d8c3ad: Layer already exists
b09386d6aa0f: Layer already exists
ecbc5c1a59c8: Layer already exists
1760eedac57c: Layer already exists
1ed7a5e2d1b3: Layer already exists
cd7100a72410: Layer already exists
18.04.0-ce: digest: sha256:ca29af0618444f37303ed2df1948e440200bbe70e537c0c3cfb0b9afbfad3249 size: 1782
docker push origoss/dockergit:latest
The push refers to a repository [docker.io/origoss/dockergit]
1760eedac57c: Preparing
b446e0d8c3ad: Preparing
9b4ada052f34: Preparing
ecbc5c1a59c8: Preparing
b09386d6aa0f: Preparing
1ed7a5e2d1b3: Preparing
cd7100a72410: Preparing
1ed7a5e2d1b3: Waiting
cd7100a72410: Waiting
9b4ada052f34: Layer already exists
b09386d6aa0f: Layer already exists
b446e0d8c3ad: Layer already exists
1760eedac57c: Layer already exists
ecbc5c1a59c8: Layer already exists
1ed7a5e2d1b3: Layer already exists
cd7100a72410: Layer already exists
latest: digest: sha256:ca29af0618444f37303ed2df1948e440200bbe70e537c0c3cfb0b9afbfad3249 size: 1782

You can also use the simple joblog.sh script to check the logs of the pods belonging to the job:

./joblog.sh docker-image-builder
-----------------------------------------------------------
Logs of docker-image-builder-fzkg8
docker build -t docker.origoss.local/dockergit:latest -t origoss/dockergit:18.04.0-ce -t origoss/dockergit:latest  .
Sending build context to Docker daemon    128kB

Step 1/2 : FROM docker:18.04.0-ce
 ---> 41e946672182
Step 2/2 : RUN apk add --no-cache git
 ---> Using cache
 ---> b64c04925efb
Successfully built b64c04925efb
docker push docker.origoss.local/dockergit:latest
The push refers to a repository [docker.origoss.local/dockergit]
1760eedac57c: Preparing
b446e0d8c3ad: Preparing
9b4ada052f34: Preparing
ecbc5c1a59c8: Preparing
b09386d6aa0f: Preparing
1ed7a5e2d1b3: Preparing
cd7100a72410: Preparing
1ed7a5e2d1b3: Waiting
cd7100a72410: Waiting
1760eedac57c: Layer already exists
ecbc5c1a59c8: Layer already exists
b09386d6aa0f: Layer already exists
b446e0d8c3ad: Layer already exists
9b4ada052f34: Layer already exists
1ed7a5e2d1b3: Layer already exists
cd7100a72410: Layer already exists
latest: digest: sha256:66194bcef7519f144535e78c84b9acbdfd4d06b3fb4f3757b28b9b36a7a48d73 size: 1782
docker push origoss/dockergit:18.04.0-ce
The push refers to a repository [docker.io/origoss/dockergit]
1760eedac57c: Preparing
b446e0d8c3ad: Preparing
9b4ada052f34: Preparing
ecbc5c1a59c8: Preparing
b09386d6aa0f: Preparing
1ed7a5e2d1b3: Preparing
cd7100a72410: Preparing
1ed7a5e2d1b3: Waiting
cd7100a72410: Waiting
9b4ada052f34: Layer already exists
b446e0d8c3ad: Layer already exists
b09386d6aa0f: Layer already exists
ecbc5c1a59c8: Layer already exists
1760eedac57c: Layer already exists
1ed7a5e2d1b3: Layer already exists
cd7100a72410: Layer already exists
18.04.0-ce: digest: sha256:ca29af0618444f37303ed2df1948e440200bbe70e537c0c3cfb0b9afbfad3249 size: 1782
docker push origoss/dockergit:latest
The push refers to a repository [docker.io/origoss/dockergit]
1760eedac57c: Preparing
b446e0d8c3ad: Preparing
9b4ada052f34: Preparing
ecbc5c1a59c8: Preparing
b09386d6aa0f: Preparing
1ed7a5e2d1b3: Preparing
cd7100a72410: Preparing
1ed7a5e2d1b3: Waiting
cd7100a72410: Waiting
9b4ada052f34: Layer already exists
b09386d6aa0f: Layer already exists
b446e0d8c3ad: Layer already exists
1760eedac57c: Layer already exists
ecbc5c1a59c8: Layer already exists
1ed7a5e2d1b3: Layer already exists
cd7100a72410: Layer already exists
latest: digest: sha256:ca29af0618444f37303ed2df1948e440200bbe70e537c0c3cfb0b9afbfad3249 size: 1782

Finally, you can delete the job

kubectl delete job/docker-image-builder
job.batch "docker-image-builder" deleted

About

Scripts to build Dockerfiles in Kubernetes

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published