Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feature(main): using sreg 0.1.4 build image #4023

Merged
merged 1 commit into from
Oct 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@
sidebar_position: 1
---

# Building Cluster Images Based on the Image List
# Building Cluster Images Based on Image Manifests

This document will guide you on how to build cluster images using the image list, including how to build a single image (based on pre-existing Kubernetes images) or build an application image from scratch.
This guide will walk you through the process of building cluster images using image manifests or using existing tarballs stored in Docker.

## Directory Structure
## Building from Image Manifests

```
.
Expand All @@ -22,12 +22,6 @@ This document will guide you on how to build cluster images using the image list
└── registry
```

## Dockerfile Building

We can build all content into a single image (`FROM labring/kubernetes`) or use `FROM scratch` to build the image from scratch.

### Single Image

```dockerfile
FROM labring/kubernetes:v1.24.0
COPY cni ./cni
Expand All @@ -36,105 +30,48 @@ COPY registry ./registry
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
```

### Application Image

This image does not include Kubernetes, so it should run in a cluster where Kubernetes is already installed.

```dockerfile
FROM scratch
COPY cni ./cni
COPY images ./images
COPY registry ./registry
COPY manifests ./manifests
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
```

Notes:
Explanation:

1. `CalicoImageList`: Docker image list file.
2. `cni`: Configuration files for `kubectl apply`.
3. `registry`: Directory for storing container registry data.
4. `sealos build -t kubernetes-calico:1.24.0-amd64 --platform linux/amd64 -f Kubefile .`: Command for building the OCI image.
5. `manifests`: Resolve images in the yaml file to a Docker image list.
The images listed in CalicoImageList will be pulled locally and then applied to the cluster using the `kubectl apply -f` command.

## Building Calico Image
The image manifest currently supports the following:
- Remote images like docker.io/calico/cni:v3.20.0
- Local OCI container images like containers-storage:docker.io/labring/coredns:v0.0.1
- Local Docker container images like docker-daemon:docker.io/library/nginx:latest

### Directory Structure
## Building from Image Tarballs

```
.
├── Kubefile
├── cni
│   ├── custom-resources.yaml
│   └── tigera-operator.yaml
├── images
│   └── skopeo
│   ├── calico.tar
│   └── tar.txt
└── registry
└── docker
└── registry
```

### Dockerfile Building

#### All Together

This image includes both Kubernetes and Calico.

```dockerfile
FROM labring/kubernetes:v1.24.0-amd64
COPY cni ./cni
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
```

#### Application Image

This image only contains Calico.

```dockerfile
FROM scratch
COPY cni ./cni
COPY images ./images
COPY registry ./registry
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
```

Notes:

1. `cni`: Configuration files for `kubectl apply`.
2. `sealos build -t kubernetes-calico:1.24.0-amd64 --platform linux/amd64 -f Kubefile .`: Command for building the OCI image.
Explanation:

## Building OpenEBS Image

### Directory Structure
The configurations in tar.txt will be pulled locally and redirected to the image list. Then, they will be applied to the cluster using the `kubectl apply -f` command. The configuration file format is as follows:

```
.
├── Kubefile
├── cni
│   ├── custom-resources.yaml
│   └── tigera-operator.yaml
└── manifests
└── openebs-operator.yaml
docker-archive:calico.tar@calico/cni:v3.20.0
```

### Dockerfile Building

#### All Together

```dockerfile
FROM labring/oci-kubernetes-calico:1.24.0-amd64
COPY cni ./cni
COPY manifests ./manifests
CMD ["kubectl apply -f cni/tigera

-operator.yaml","kubectl apply -f cni/custom-resources.yaml","kubectl apply -f manifests/openebs-operator.yaml"]
```

#### Application Image

```dockerfile
FROM scratch
COPY cni ./cni
COPY manifests ./manifests
CMD ["kubectl apply -f manifests/openebs-operator.yaml"]
```

Notes:

1. `cni`: Configuration files for `kubectl apply`.
2. `sealos build -t labring/kubernetes-calico-openebs:1.24.0-amd64 --platform linux/amd64 -f Kubefile .`: Command for building the OCI image.

Recommendation: You need to add the CMD of Calico to the CMD layer of OpenEBS because the Dockerfile will overwrite older layers.
The image manifest currently supports the following:
- Docker archive images, supporting a single image, like docker-archive
- OCI archive images, supporting a single image, like oci-archive
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@ Overall, the `--save-image` option provides a convenient way for Sealos to handl

Here are some detailed examples:

- [Build with Image List](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-image_list)
- [Build with Manifests](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-manifests)
- [Build with Image Manifests](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-image_list)
- [Build with Deploy Manifests](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-manifests)
- [Build with Helm Charts](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-helm_charts)
- [Build with Binary](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-binary)
- [Build with go-template](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-go_template)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
---
sidebar_position: 1
---

# 构建基于镜像清单的集群镜像

本文将指导你如何使用镜像列表构建集群镜像,或使用现有的docker存储的tar包进行构建应用镜像。

## 镜像列表 构建

```
.
├── Kubefile
├── cni
│   ├── custom-resources.yaml
│   └── tigera-operator.yaml
├── images
│   └── shim
│   └── CalicoImageList
└── registry
└── docker
└── registry
```

```dockerfile
FROM labring/kubernetes:v1.24.0
COPY cni ./cni
COPY images ./images
COPY registry ./registry
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
```

说明:

CalicoImageList 中的镜像列表将被拉取到本地,然后使用 `kubectl apply -f` 命令将其应用到集群中。

镜像列表目前支持:
- docker.io/calico/cni:v3.20.0 这种远程的镜像
- containers-storage:docker.io/labring/coredns:v0.0.1 这种本地的OCI容器镜像
- docker-daemon:docker.io/library/nginx:latest 这种本地的docker容器镜像


## 镜像tar包 构建

```
.
├── Kubefile
├── cni
│   ├── custom-resources.yaml
│   └── tigera-operator.yaml
├── images
│   └── skopeo
│   ├── calico.tar
│   └── tar.txt
└── registry
└── docker
└── registry
```

```dockerfile
FROM scratch
COPY cni ./cni
COPY images ./images
COPY registry ./registry
CMD ["kubectl apply -f cni/tigera-operator.yaml","kubectl apply -f cni/custom-resources.yaml"]
```

说明:

tar.txt 中的配置会被拉取到本地并重定向镜像列表,然后使用 `kubectl apply -f` 命令将其应用到集群中。
配置文件格式:

```
docker-archive:calico.tar@calico/cni:v3.20.0
```

镜像列表目前支持:
- docker-archive 这种docker存储的镜像,仅支持单个镜像
- oci-archive 这种oci存储的镜像,仅支持单个镜像

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ sealos build -t myapp:v1.0.0 -f Dockerfile .

下面有一些详细的示例:

- [基于镜像列表构建](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-image_list)
- [基于镜像清单构建](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-image_list)
- [基于部署清单构建](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-manifests)
- [基于helm-charts构建](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-helm_charts)
- [基于二进制构建](https://docs.sealos.io/docs/lifecycle-management/operations/build-image/build-image-binary)
Expand Down
Loading