Sealer -- Build, Share and Run Any Distributed Applications
Contents
Introduction
Quick Start
Contributing
FAQ
Adopters
LICENSE
Code of conduct
Introduction
Sealer[ˈsiːlər] provides a new way of distributed application delivery which is reducing the difficulty and complexity by packaging Kubernetes cluster and all application's dependencies into one ClusterImage.
We can write a Kubefile to build the ClusterImage, and use it to deliver your applications with embedded Kubernetes through Clusterfile.
Concept
Kubefile: a file that describes how to build a ClusterImage.
ClusterImage: like docker image, and it contains all the dependencies(container images,yaml files or helm chart...) of your application needed.
Clusterfile: a file that describes how to run a ClusterImage.
Awesome features
Simplicity: Packing the distributed application into ClusterImage with few instructions.
Efficiency: Launching the k8s-based application through ClusterImage in minutes.
Scalability: Powerful cluster and image life cycle management, such as cluster scale, upgrade, image load, save and so on.
Compatibility: Multi-arch delivery Supporting. Such as AMD, ARM with common Linux distributions.
Iterative: Incremental operations on ClusterImage is like what container image behaves.
Quick start
Download sealer binary file.
- ``` shell
- #install Sealer binaries
- wget https://github.com/sealerio/sealer/releases/download/v0.9.0/sealer-v0.9.0-linux-amd64.tar.gz && \
- tar zxvf sealer-v0.9.0-linux-amd64.tar.gz && mv sealer /usr/bin
- ```
Install a kubernetes cluster
- ``` shell
- # run a kubernetes cluster
- sealer run docker.io/sealerio/kubernetes:v1.22.15 \
- --masters 192.168.0.2,192.168.0.3,192.168.0.4 \
- --nodes 192.168.0.5,192.168.0.6,192.168.0.7 --passwd xxx
- ```
Build an sealer image
Kubefile:
- ``` shell
- FROM docker.io/sealerio/kubernetes:v1.22.15
- APP mysql https://charts/mysql.tgz
- APP elasticsearch https://charts/elasticsearch.tgz
- APP redis local://redis.yaml
- APP businessApp local://install.sh
- LAUNCH ["calico", "mysql", "elasticsearch", "redis", "businessApp"]
- ```
or
- ``` shell
- FROM docker.io/sealerio/kubernetes:v1.22.15
- COPY mysql.tgz .
- COPY elasticsearch.tgz .
- COPY redis.yaml .
- COPY install.sh .
- CMDS ["sh application/apps/calico/calico.sh", "helm install mysql.tgz", "helm install elasticsearch.tgz", "kubectl apply -f redis.yaml", "bash install.sh"]
- ```
build command:
NOTE: --type=kube-installer is the default value for sealer build
- ``` shell
- sealer build -f Kubefile -t my-kubernetes:1.0.0 .
- ```
Build an app image
nginx.yaml:
- ``` shell
- apiVersion: apps/v1
- kind: Deployment
- metadata:
- name: my-nginx
- namespace: default
- spec:
- replicas: 1
- selector:
- matchLabels:
- run: my-nginx
- template:
- metadata:
- labels:
- run: my-nginx
- spec:
- containers:
- - name: my-nginx
- image: nginx
- ports:
- - containerPort: 80
- ```
Kubefile:
- ``` shell
- FROM scratch
- APP nginx local://nginx.yaml
- LAUNCH ["nginx"]
- ```
- ``` shell
- sealer build -f Kubefile -t sealer-io/nginx:latest --type app-installer
- ```
Run the app image
- ``` shell
- sealer run sealer-io/nginx:latest
- # check the pod
- kubectl get pod -A
- ```
Push the app image to the registry
- ``` shell
- # you can push the app image to docker hub, Ali ACR, or Harbor
- sealer tag sealer-io/nginx:latest {registryDomain}/sealer-io/nginx:latest
- sealer push {registryDomain}/sealer-io/nginx:latest
- ```
Clean the cluster
Some information of the basic settings will be written to the Clusterfile and stored in /root/.sealer/Clusterfile.
- ``` shell
- sealer delete -a
- ```
User guide
Sealer provides a valid image list:
version | image | Arch | OS | Network plugins | container runtime |
---|---|---|---|---|---|
:--- | :--- | :--- | :--- | :--- | :--- |
v0.8.6 | registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.22.15-0.8.6 | x86 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | hack docker v19.03.14 |
v0.9.0 | docker.io/sealerio/kubernetes:v1.18.3 | x86 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | Official docker v19.03.15 |
v0.9.0 | docker.io/sealerio/kubernetes:v1.20.4 | x86 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | Official docker v19.03.15 |
v0.9.0 | docker.io/sealerio/kubernetes:v1.22.15 | x86 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | Official docker v19.03.15 |
v0.9.0 | docker.io/sealerio/kubernetes:v1-22-15-sealerio-1 | x86 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | hack docker v19.03.14 |
v0.9.0 | docker.io/sealerio/kubernetes-arm64:v1.18.3 | arm64 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | Official docker v19.03.15 |
v0.9.0 | docker.io/sealerio/kubernetes-arm64:v1.20.4 | arm64 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | Official docker v19.03.15 |
v0.9.0 | docker.io/sealerio/kubernetes-arm64:v1.22.15 | arm64 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | Official docker v19.03.15 |
v0.9.0 | docker.io/sealerio/kubernetes-arm64:v1-22-15-sealerio-1 | arm64 | CentOS/RHEL 7.5CentOS/RHEL 7.6CentOS/RHEL 7.7CentOS/RHEL 7.8CentOS/RHEL 7.9 | calico | hack docker v19.03.14 |
get started
Official website
official website
Developing Sealer
contributing guide
Communication Channels
CNCF Mailing List: to be added.
Twitter: @sealer
DingTalk Group Number: 34619594
Code of Conduct
sealer follows the CNCF Code of Conduct.
License
Sealer is licensed under the Apache License, Version 2.0. See LICENSE for the full license text.