Skip to main content

Build an ingress cluster image

Here is how to build an nginx-ingress cluster image with helm.

Download helm chart

$ mkdir ingress-nginx && cd ingress-nginx
$ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
$ helm pull ingress-nginx/ingress-nginx

Then you can find the download chart:

$ ls
ingress-nginx-4.1.0.tgz

Add image list

sealos will download the images in the image list and cache them in the registry directory.

The directory must be of the form images/shim/[your image list filename]

$ cat images/shim/nginxImages
k8s.gcr.io/ingress-nginx/controller:v1.2.0
k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.1.1

Write Dockerfile

FROM scratch
COPY ../examples .
CMD ["helm install ingress-nginx ingress-nginx-4.1.0.tgz --namespace ingress-nginx --create-namespace"]

Build a cluster image

$ sealos build -f Dockerfile -t docker.io/fanux/ingress-nginx:v1.2.0 .

When sealos builds, it will automatically add the image dependencies in the image list to the cluster image, and save the dependent Docker images in a magical way. And when running in other environments, it will automatically detect whether there is a Docker image in the cluster. If there is, it will be downloaded automatically. If not, it will be downloaded from k8s.gcr.io. Users do not need to modify the docker image address in the helm chart. The black technology of image caching proxy is used here.

Push to mirror registry

$ sealos login docker.io
$ sealos push docker.io/fanux/ingress-nginx:v1.2.0

Run cluster image

$ sealos run docker.io/fanux/ingress-nginx:v1.2.0