# 从零开始使用 helm 部署 fogcloud
# 1. 部署前准备
硬件说明:
ubuntu
云服务器 ×3(为方便下文以 node1,node2,node3 命名),本机 mac 笔记本 ×1;云服务器能连接外网,并位于同一局域网;
本机能正常访问云服务器;
假设您的云服务器公网 ip 地址和局域网 ip 地址为:(注意:请将以下 ip 替换为您云服务器的真实 ip,以下只是示例)
node1: 公网 ip: x.x.x.1;局域网 ip: 192.168.10.1
node2: 公网 ip: x.x.x.2;局域网 ip: 192.168.10.2
node3: 公网 ip: x.x.x.3;局域网 ip: 192.168.10.3
- 云服务器开放以下端口:
端口 | 描述 | 备注 |
6443 | k8s api | 用于访问 k8s api |
80 | http 服务 | 因为部分设备因为性能问题,无法访问 https 服务,因此使用 http 服务用于设备固件下载 |
443 | https 服务 | 管理后台 |
1883 | mqtt-tcp 服务 | 用于设备不安全 mqtt 连接 |
8883 | mqtt-ssl-tcp 服务 | 用于设备 mqtt 连接 |
8083 | mqtt-websocket 服务 | 用于前端虚拟设备不安全连接 |
8084 | mqtt-websocket-ssl 服务 | 用于前端虚拟设备安全连接 |
5672 | amqp 服务 | 用于服务端消息订阅(未加密) |
5671 | amqp-tls 服务 | 用于服务端消息订阅 |
# 1.1 安装 k3s 集群
更详细的安装教程请参考官方文档 (opens new window)
node1
上新增文件/etc/rancher/k3s/config.yaml
作为 k3s 启动的配置文件,文件内 容:
service-node-port-range: "1000-40000" tls-san: - "192.168.10.1" - "192.168.10.2" - "192.168.10.3" - "x.x.x.1" kubelet-arg: - "container-log-max-files=10"
注意:以将上配置文件中的ip请替换为您云服务器的真实ip
- 在
node1
上运行脚本:
curl -sfL https://get.k3s.io | sh -
从 node1 的
/var/lib/rancher/k3s/server/node-token
获取mynodetoken
在
node2
,node3
上分别运行脚本:
curl -sfL https://get.k3s.io | K3S_URL=https://192.168.10.1:6443 K3S_TOKEN=${mynodetoken} sh -
本机安装
kubectl
,并配置kubeconfig
;kubeconfig
位于node1
的/etc/rancher/k3s/k3s.yaml
;kubeconfig 配置方式参考官方教程 (opens new window)验证安装: 在本机运行命令:
kubectl get nodes
,若出现上述三个云服务器节点则安装正确;
# 1.2 本机安装 helm v3
安装命令:
brew install helm
验证安装:
helm version
# 2 安装
# 2.1 获取 chart
在本机运行命令:
helm repo add fogcloud-charts https://fogcloud-io.github.io/fogcloud-charts helm repo update helm pull fogcloud-charts/fission-all --untar helm pull fogcloud-charts/fogcloud --untar
运行成功后,会在本机当前目录生成两个文件夹:fogcloud
, fission-all
# 2.2 配置说明
# 2.2.1 证书配置
假设我们为 fogcloud 服务申请了如下域名并拥有对应证书文件:
服务 | 域名 | 证书文件 |
前端服务 | app.example.io | web.crt,web.key |
后端服务 | api.example.io | api.crt,api.key |
mqtt 服务 | mqtt.example.io | mqtt.crt,mqtt.key |
amqp 服务 | amqp.example.io | amqp.crt,amqp.key |
使用 web.crt,web.key 替换
fogcloud/configs/cert/webAdmin
目录下原有证书文件使用 api.crt,api.key 替换
fogcloud/configs/cert/api
目录下原有证书文件使用 mqtt.crt,mqtt.key 替换
fogcloud/configs/cert/mqtt
目录下原有证书文件使用 amqp.crt,amqp.key 替换
fogcloud/configs/cert/amqp
目录下原有证书文件
注:证书和密钥文件名可以随意更改,但后缀名需要改为.crt
和.key
# 2.2.1 helm values 配置
配置文件位于fogcloud/values.yaml
我们使用 Ingress 方式暴露服务,正式环境推荐使用 LoadBalancer; 更改配置文件的配置项:
配置项 | 说明 | 值 |
| 配置文件的环境 |
|
| k8s server api 地址,用来创建 k8s StatefulSet 资源;可以通过 获取 |
|
| 是否启用了云函数功能;若启用该功能,需要将 kubeconfig 文件放入 |
|
| 如何暴露服务: 、 、 或 ,其他值将被忽略,服务的创建将被跳过。 |
|
| api 服务域名,用于前端服务访问后端 api |
|
| mqtt 服务域名,用于前端服务访问 mqtt-websocket 服务 |
|
| 是否启用 ingress tls |
|
| api 服务证书的来源: , 或 ;1) :使用证书文件,直接将.key 和.crt 文件放入 fogcloud-charts/config/cert/api 目录下;2) :使用 cert-manager 生成免费证书,需要保证设置的域名可用;3) :不为服务入口配置证书 |
|
| web 服务证书的来源: , 或 ;1) :使用证书文件,直接将.key 和.crt 文件放入 fogcloud-charts/config/cert/api 目录下;2) :使用 cert-manager 生成免费证书,需要保证设置的域名可用;3) :不为服务入口配置证书 |
|
| web 服务域名,用于 ingress 路由 |
|
| api 服务域名,用于 ingress 路由 |
|
| mqtt 应用是否启用 tls |
|
# 2.2.2 fogcloud 应用配置
fogcloud 应用配置文件位于fogcloud/configs/fogcloud-core/fogcloud.example.yaml
更改配置文件的配置项:
配置项 | 说明 | 值 |
| 前端服务域名 |
|
| 是否启用 tls,用于云函数触发 url 和部分 oss 资源下载 |
|
| postgres 域名 | |
| postgres 端口 | |
| postgres 用户名 | |
| postgres 密码 | |
| postgres 数据库名 | |
| mongo 数据库 uri |
# 2.3 安装服务
export NAMESPACE_NAME=fogcloud export RELEASE_NAME=fogcloud kubectl create namespace ${NAMESPACE_NAME} kubectl create namespace fission kubectl apply -f ./fogcloud/operator/rabbitmq-cluster-operator.yaml helm install fission -n fission ./fission-all helm install ${RELEASE_NAME} -n ${NAMESPACE_NAME} ./fogcloud
# 2.4 升级服务
您可以在获取到最新的容器镜像后,替换掉 helm values.yaml 里的镜像版本;
升级 fogcloud-core 服务至 v.4.19.x 版本,您可以修改 values.yaml 里面的fogcloud.imageTag
为v4.19.x
;
升级 fogcloud-web 服务至 v4.19.x 版本,您可以修改 values.yaml 里面的fogcloudWeb.imageTag
为v4.19.x
;
然后运行以下命令即可:
helm upgrade ${RELEASE_NAME} -n ${NAMESPACE_NAME} ./fogcloud
# 2.5 卸载/重新安装服务
使用 helm uninstall 卸载服务时,应用数据会保留;
请勿直接删除 fogcloud 使用的命名空间!
helm uninstall ${RELEASE_NAME} -n ${NAMESPACE_NAME} helm uninstall fission -n fission kubectl delete -f ./fogcloud/operator/rabbitmq-cluster-operator.yaml
重新安装服务时,只需要运行以下命令即可:
helm install ${RELEASE_NAME} -n ${NAMESPACE_NAME} ./fogcloud