构建一个 Ingress 集群镜像
这里展示了如何用 helm 构建一个 nginx-ingress 集群镜像。
下载 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
随后就能找到下载的 chart:
$ ls
ingress-nginx-4.1.0.tgz
添加镜像列表
sealos 会下载镜像列表中的镜像并缓存到 registry 目录。
目录必须形如 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
编写 Dockerfile
FROM scratch
COPY ../examples .
CMD ["helm install ingress-nginx ingress-nginx-4.1.0.tgz --namespace ingress-nginx --create-namespace"]
构建集群镜像
$ sealos build -f Dockerfile -t docker.io/fanux/ingress-nginx:v1.2.0 .
sealos 在构建的时候会自动添加镜像列表中的镜像依赖到集群镜像中,通过神奇的方式保存了里面依赖的 Docker 镜像。 并且在到别的环境中运行的时候更神奇的自动检测集群中是否有 Docker 镜像,有的话自动下载,没有的话才会去 k8s.gcr.io 下载。 用户无需修改 helm chart 中的 docker 镜像地址,这里用到了镜像缓存代理的黑科技。
推送到镜像 registry
$ sealos login docker.io
$ sealos push docker.io/fanux/ingress-nginx:v1.2.0
运行集群镜像
$ sealos run docker.io/fanux/ingress-nginx:v1.2.0