Linux 容器 虚拟机

一次Sealos Cloud部署的记录

管某 8 分钟阅读

前言

若你的当前环境IP为公网并且持有域名的话可尝试申请证书, 不申请证书的话也可以正常使用但服务器内的业务将会报告不安全

环境要求

本人目前测试发现Centos:7.9.2009 暂时无法部署安装 如 安装的话建议使用ubuntu 笔者在此使用的系统为 Ubuntu 22.04 版本 一下笔记默认采用x86 架构 作为 默认架构

部署

部署回放

asciicast

安装部署 Sealos

因为Sealos是一个二进制文件 所以安装部署比较简单 这里采用通用部署方式

1
2
3
curl -o sealos_4.2.0_linux_amd64.tar.gz https://github.com/labring/sealos/releases/download/v4.2.0/sealos_4.2.0_linux_amd64.tar.gz \
&& tar zxvf sealos_4.2.0_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin && \
rm -rf sealos_4.2.0_linux_amd64.tar.gz

如果国内比较慢你可以使用一下的命令使用镜像站

1
2
3
curl -o sealos_4.2.0_linux_amd64.tar.gz https://ghproxy.com/github.com/labring/sealos/releases/download/v4.2.0/sealos_4.2.0_linux_amd64.tar.gz \
&& tar zxvf sealos_4.2.0_linux_amd64.tar.gz sealos && chmod +x sealos && mv sealos /usr/bin \
&& rm -rf sealos_4.2.0_linux_amd64.tar.gz

然后你就可以直接使用sealos命令了

放张例图

部署安装 k8s 集群 及Cloud依赖组件

首先先查看Linux的内网IP 请勿直接使用 公网IP 部署安装 例如下文中我的IP为172.16.0.83 请主动将自己的IP替换到执行脚本内

image-20230711121954186

创建部署配置文件

1
2
3
4
5
6
7
8
9
10
sealos gen labring/kubernetes:v1.25.6\
labring/helm:v3.12.0\
labring/calico:v3.24.1\
labring/cert-manager:v1.8.0\
labring/openebs:v3.4.0\
labring/kubernetes-reflector:v7.0.151\
labring/zot:v1.4.3\
labring/kubeblocks:v0.5.3\
--env policy=anonymousPolicy\
--masters 172.16.0.83 > Clusterfile

部署

1
sealos apply -f Clusterfile

部署网关

编写网关配置文件

1
vi ingress-nginx-config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
apiVersion: apps.sealos.io/v1beta1
kind: Config
metadata:
creationTimestamp: null
name: ingress-nginx-config
spec:
data: |
controller:
hostNetwork: true
kind: DaemonSet
service:
type: NodePort
match: docker.io/labring/ingress-nginx:v1.5.1
path: charts/ingress-nginx/values.yaml
strategy: merge

部署应用配置文件

1
sealos run docker.io/labring/ingress-nginx:v1.5.1 --config-file ingress-nginx-config.yaml

部署 Cloud 服务

你需要将127.0.0.1 替换为自己的IP 或使用 自己的域名

若你想使用自己的SSL证书请看向最下方

1
2
sealos run docker.io/labring/sealos-cloud:latest\
--env cloudDomain="127.0.0.1.nip.io"

若你使用自己的域名则 将域名替换为自己的即可

1
2
sealos run docker.io/labring/sealos-cloud:latest\
--env cloudDomain="example.com"

image-20230711124046910

放张图片 因为我使用的是阿里云按量机器就不码IP了登录只需要输入任意账号和密码就可以创建用户并登录使用

关于创建数据库无法启动

因为它依赖于SC

1
vi sc.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
cas.openebs.io/config: |
- name: StorageType
value: "hostpath"
- name: BasePath
value: "/var/openebs/local"
openebs.io/cas-type: local
name: openebs-backup
provisioner: openebs.io/local
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
1
kubectl apply -f sc.yaml

关于SSL

若你想使用带锁的SSL证书建议使用自己的域名申请证书 并使用泛域名解析 需要添加两条解析记录 这里将 cloud.example.com 为例子你需要添加两条解析

域名 IP 类型
cloud.example.com 127.0.0.1 A
*.cloud.example.com 127.0.0.1 A

你也可以使用 CNAME 解析记录 取决于你的应用环境

生成SSL证书

有很多办法 这边推荐使用https://freessl.cn/

假设你已经申请到了泛域名证书 我们将

创建secret 文件

1
vi tls-secret.yaml
1
2
3
4
5
6
7
8
9
10
11
12
apiVersion: apps.sealos.io/v1beta1
kind: Config
metadata:
name: secret
spec:
path: manifests/tls-secret.yaml
match: docker.io/labring/sealos-cloud:latest
strategy: merge
data: |
data:
tls.crt: <your-tls.cer-base64>
tls.key: <your-tls.key-base64>

将证书文件生成bash64值 并替换

1
2
3
4
fullchain=$(base64 -w 0 fullchain.cer)
key_key=$(base64 -w 0 key.key)
sed -i "s/<your-tls.cer-base64>/$fullchain/g" tls-secret.yaml
sed -i "s/<your-tls.key-base64>/$key_key/g" tls-secret.yaml

然后Cloud部署

1
2
3
sealos run docker.io/labring/sealos-cloud:latest\
--env cloudDomain="你的域名"\
--config-file tls-secret.yaml