前言
若你的当前环境IP为公网并且持有域名的话可尝试申请证书, 不申请证书的话也可以正常使用但服务器内的业务将会报告不安全
环境要求
本人目前测试发现Centos:7.9.2009 暂时无法部署安装 如 安装的话建议使用ubuntu 笔者在此使用的系统为 Ubuntu 22.04 版本 一下笔记默认采用x86 架构 作为 默认架构
部署
部署回放
安装部署 Sealos
因为Sealos是一个二进制文件 所以安装部署比较简单 这里采用通用部署方式
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
如果国内比较慢你可以使用一下的命令使用镜像站
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替换到执行脚本内
创建部署配置文件
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
部署
sealos apply -f Clusterfile
部署网关
编写网关配置文件
vi ingress-nginx-config.yaml
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
部署应用配置文件
sealos run docker.io/labring/ingress-nginx:v1.5.1 --config-file ingress-nginx-config.yaml
部署 Cloud 服务
你需要将127.0.0.1 替换为自己的IP 或使用 自己的域名
若你想使用自己的SSL证书请看向最下方
sealos run docker.io/labring/sealos-cloud:latest\
--env cloudDomain="127.0.0.1.nip.io"
若你使用自己的域名则 将域名替换为自己的即可
sealos run docker.io/labring/sealos-cloud:latest\
--env cloudDomain="example.com"
放张图片 因为我使用的是阿里云按量机器就不码IP了登录只需要输入任意账号和密码就可以创建用户并登录使用
关于创建数据库无法启动
因为它依赖于SC
vi sc.yaml
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
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 文件
vi tls-secret.yaml
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值 并替换
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部署
sealos run docker.io/labring/sealos-cloud:latest\
--env cloudDomain="你的域名"\
--config-file tls-secret.yaml