PaaS 平台部署
# PaaS 平台部署
SeaMoon 的服务端其实支持部署到多种 PaaS 类型的平台
# 部署到Sealos: 拥抱更便宜、更舒适、更优美可控的云服务平台
Sealos公有云地址 (opens new window)
先说下我喜欢Sealos的原因:
简单的页面,适合新手小白,无需了解过多的云服务相关知识
操作起来和操作一个os一样,点击、配置、部署,一气呵成。 对比各大厂的balabala一堆限制,sealos的门槛更低,更适合小白上手。
简单易懂的计费方式:花费更低,效果不变
对比各大厂花里胡哨的各项计费指标(尤其是流量也要收费),sealos的计费方式真正的做到按照计算量计费,费用透明,整体使用下来价格更低。
配置更加灵活:不用了pause、用的时候start、想要多少的IP自行可控
sealos支持快速弹性扩容,当需求高时,可以调低扩容触发点,获取到更多IP 当不需要使用时,可以快速的pause停止;下次使用时又能快速的恢复。
# 如何部署
sealos上部署seamoon服务将更加简单,只需要鼠标点击操作:
# Step.1 注册账户
注册并登陆cloud.sealos.io (opens new window), 点击App Launchpad
# Step.2 部署
注意
sealos 并不是部署一个服务 就带着两种类型的隧道。因此,如果你希望使用 websocket 隧道, 需要部署 websocket 类型的服务。
同样的,如果你需要 grpc 隧道,选择部署 grpc 服务。
点击右上角create application
, 如下填写参数:
提示
此处,如果你部署的是 grpc 隧道的话,请将端口改为 8089,协议选择 grpc, 如下图:
往下拉,还有高级配置里面的启动命令:
提示
此处,如果你部署的是 grpc 隧道的话,请修改此处的启动命令为:
/app/seamoon server -p 8089 -t grpc
, 如下图:
你也可以直接选择yaml文件,参考如下:
注意,下面的 yaml 仅供参考,我隐去了一些身份相关的字段,没有展示出来,只列出了一些关键的项目。 可以用于参考和对比。没出现的参数代表意义不大,不用管。
apiVersion: v1
kind: Service
metadata:
name: seamoon-ws
labels:
cloud.sealos.io/app-deploy-manager: seamoon-ws
spec:
ports:
- port: 9000
targetPort: 9000
selector:
app: seamoon-ws
apiVersion: apps/v1
kind: Deployment
metadata:
name: seamoon-server
annotations:
originImageName: dvkunion/seamoon-server:latest
deploy.cloud.sealos.io/minReplicas: '1'
deploy.cloud.sealos.io/maxReplicas: '1'
deploy.cloud.sealos.io/resize: 0Gi
labels:
cloud.sealos.io/app-deploy-manager: seamoon-server
app: seamoon-server
spec:
replicas: 1
revisionHistoryLimit: 1
selector:
matchLabels:
app: seamoon-server
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
template:
metadata:
labels:
app: seamoon-server
spec:
containers:
- name: seamoon-server
image: dvkunion/seamoon-server:latest
env:
- name: serverMod
value: socks5
resources:
requests:
cpu: 10m
memory: 6Mi
limits:
cpu: 100m
memory: 64Mi
ports:
- containerPort: 9000
name: ''
imagePullPolicy: Always
volumeMounts: []
volumes: []
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: network-xxxxxxxx
labels:
cloud.sealos.io/app-deploy-manager: seamoon-ws
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/proxy-body-size: 32m
nginx.ingress.kubernetes.io/proxy-read-timeout: '3600'
nginx.ingress.kubernetes.io/proxy-send-timeout: '3600'
nginx.ingress.kubernetes.io/backend-protocol: WS
spec:
rules:
- host: "*****" # 系统自动生成
http:
paths:
- pathType: Prefix
path: /
backend:
service:
name: seamoon-ws
port:
number: 9000
tls:
- hosts:
- "*****" # 系统自动生成
secretName: wildcard-cloud-sealos-io-cert
// Make sure to add code blocks to your code group
# Step.3 本地客户端
填写完成后,点击右上角 Deploy
, 等待部署完成,状态success后,获取到服务地址。
然后在本地启动客户端,推荐 docker 一键拉起:
$ docker run -it -d --net=host dvkunion/seamoon proxy
默认使用--net=host
模式, 如需要高级设置,如下:
$ docker run -it -d -p 7777:7777 -p 1080:1080 dvkunion/seamoon proxy
访问本地控制台 localhost:7777 , 将此地址填入客户端即可。
如何填写地址
填写的代理 sealos 已经明确给出,如: wss:// 或是 grcps://, 如下图:
wss 隧道直接复制即可,注意 grpc 服务还需要指定一下端口号,一般都是 443,最终配置如: grpcs://xxxxxxxx.cloud.sealos.io:443。
# 效果展示
[旺柴] 谷歌云的IP访问谷歌简直不能再丝滑
整体带宽在10-30左右,可能和我客户端出口带宽也有关系,应该是普通的带宽。(不过价格也在这里了要啥自行车,反正够用)
如果不需要多IP,实例副本数目固定为1即可;如果需要多IP,副本越多,获取到的IP就越多。(理性使用)
# 部署到Render: 免费的永远是最好的去**的免费的,号没了
警告
2024.04.02 更新 由于封号的问题,在 2.0 的初代版本没有集成自动化部署 render 服务。 但是你仍可以通过手动部署的方式来
2024.02.02 更新
render 不但 ban 了 seamoon
镜像,还把号封了,*** 玩不起就别玩。
虽然还有各种各样的绕过方式,其账户注册起来也不困难,但是可以看出该运营商的顺准了,云计算这么多家,你不声明禁止直接ban号ban镜像有点东西的
也可能是我没仔细看声明,如果有找到的师傅麻烦让我看一下在哪。先喷为敬了。
Render公有云地址 (opens new window)
Render是一个新的PaaS( Platform as a service)云端服务,也就是说你的代码部署到Render之后,你不用(也不能)去管Linux/firewall/nginx的设定。把你的Github网址给Render,设定一下用鼠标点点点,等个几分钟,你的程序就上线了,全世界都能看到你的网站或是存取你提供的API。(选自知乎) (opens new window)
我们来看一下官方是如何介绍自己的:
Build, deploy, and scale your apps with unparalleled ease – from your first user to your billionth.
其实这些都不重要,重要的是你只需要知道,render提供的free套餐完全支持我们部署 seamoon,不需要花费一分钱!这就够了,足够我们给他树一个👍。 第二天就封号了的臭SB。
# 如何部署
render 部署与 sealos 部署一样简单,在新版本中,我会逐步减少部署步骤,降低这部分交互。
# Step.1 注册账户
render 账户支持 github / gitlab / google 等一键登陆,建议直接 github 账户登陆即可。
实在不行,他也支持邮箱注册,自己注册一个,此处不再废话。
# Step.2 部署
注册账户登陆后,进入控制台,选择创建一个 web service 应用:
然后选第二个,从存在的镜像中部署服务:
点击下一步,要求我们填写部署的镜像名称,我们填写:dvkunion/seamoon
开始填写详细的应用字段了,我们依次填写:
- Name: 应用名称,这个最终会对应生成你的服务域名,因此这里我建议越复杂越好,因为 seamoon 当前版本没有做认证,导致如果服务名称过于简单,很容易被其他人连上。
- Region: 地域,选择服务部署的地区,现在支持四个区域:oregon-俄勒冈州(美国西部)、Frankfurt-法兰克福(欧盟)、ohio-俄亥俄州(美国东部)、singapore-新加坡(东亚)
- 实例类型: 选免费的。
往下滑,看到 Docker Command 填写如下:
完成,点击创建即可。
# Step.3 本地客户端
在本地启动客户端,推荐 docker 一键拉起:
$ docker run -it -d --net=host dvkunion/seamoon proxy
默认使用--net=host
模式, 如需要高级设置,如下:
$ docker run -it -d -p 7777:7777 -p 1080:1080 dvkunion/seamoon proxy
访问本地控制台 localhost:7777 , 将此地址填入客户端即可。
如何填写地址
填写的代理在步骤2已经明确给出,给出的地址是 https:// 开头的,需要改为如: wss://。
grpc目前没有测试是否支持,测试支持后后续会更新文档并补充。
# 测试效果
整体机房是 amazon 的,所属地基本正确。
速度的话,也就是正常水平,基本满足日常浏览和视频播放的样子。
免费的来说已经是很不错的了。
# 一些小细节问题
访问不到render/dashboard/github......
我的建议是,先用阿里云等国内方案临时解决访问一下,然后在方案 render 等作为长期持久使用的方案。
支持 grpc 吗?
没做测试,个人测试使用的是 websocket 隧道,然后也没有发现官方文档中提到 grpc 相关的,有兴趣的各位可以试一下然后反馈给我。
关于动态IP 问题
免费版本的 render 是不支持动态 scaling (动态伸缩扩容) 的,因此,这个方案部署的 seamoon 将会是一个固定 IP。 只有当 pod 销毁了,或者是你升级了套餐内容 (每月7刀) 才支持 scaling,才可以获取到动态 IP 的方案。
当然,事无绝对,你非要使用 "动态" + "免费" 的方式,也有,通过 api 调用每小时自动删除再创建应用,即可实现这个效果,还可以实现动态的地区变动。。。。
不过人家已经免费了,我不是非常建议这样做了。想要动态的 7刀一个月也不是一个过分的价格了,能支持的还是支持一下。