步骤一. 安装dolibarr开源ERP系统
dolibarr的数据存储可选mysql或postgres,在使用Solopace.Gem访问k8s部署的CMS系统一文中,我们在kubernetes集群中部署运行了一个单实例的mysql服务,在这里我们选择直接复用之前部署的mysql数据库。
创建dolibarr的程序用户和数据库
create database dolibarr_db default character set utf8mb4 collate utf8mb4_unicode_ci;
grant all privileges on dolibarr_db.* to 'dolib'@'%' identified by '自定义密码';
alter user 'dolib'@'%' identified with mysql_native_password by '自定义密码';
创建dolibarr on k8s部署清单
deployment资源
注意:如果要将dolibarr与mysql部署在不同的名称空间,则变量DOLI_DB_HOST的值应该为mysql service的完整FQDN,如:svc-mysql.<namespace>.svc.cluster.local
apiVersion: apps/v1
kind: Deployment
metadata:
name: deploy-dolibarr
labels:
app: dolibarr
spec:
replicas: 1
selector:
matchLabels:
app: dolibarr
template:
metadata:
labels:
app: dolibarr
spec:
initContainers:
- name: initsysctl
image: busybox
command:
- sh
- -c
- |
sysctl -w net.ipv4.tcp_keepalive_time=600
sysctl -w net.ipv4.tcp_keepalive_intvl=30
sysctl -w net.ipv4.tcp_keepalive_probes=10
securityContext:
privileged: true
containers:
- name: dolibarr
image: tuxgasy/dolibarr
ports:
- containerPort: 80
livenessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
readinessProbe:
httpGet:
path: /
port: 80
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
lifecycle:
preStop:
exec:
command: ["/bin/sh","-c","/usr/bin/php /var/www/html/core/scripts/stop.php"]
env:
- name: DOLI_DB_HOST
value: svc-mysql
- name: DOLI_DB_PORT
value: '3306'
- name: DOLI_DB_NAME
value: dolibarr_db
- name: DOLI_DB_USER
value: doli
- name: DOLI_DB_PASSWORD
valueFrom:
secretKeyRef:
name: sec-doli-dbpass
key: MYSQL_DOLI_PASSWORD
- name: DOLI_URL_ROOT
value: 'http://0.0.0.0'
- name: PHP_INI_DATE_TIMEZONE
value: 'Asia/Shanghai'
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 100m
memory: 256Mi
secret资源,用户将dolibarr连接mysql的密码加密存储
注意:MYSQL_DOLI_PASSWORD的值应该是真实密码的base64转码
apiVersion: v1
kind: Secret
metadata:
name: sec-doli-dbpass
labels:
dbtype: mysql
app: dolibarr
type: Opaque
data:
MYSQL_DOLI_PASSWORD: <xxxxxxxxxxxxxxxxxxx>
service资源
apiVersion: v1
kind: Service
metadata:
name: svc-dolibarr
labels:
app: dolibarr
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
name: http
selector:
app: dolibarr
应用资源清单部署dolibarr
kubectl apply -f secret.yaml
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
检查服务运行状态
执行命令:
kubectl get pods -A -l 'app=dolibarr'
当返回结果中STATUS列为Running时候,代表部署成功
内网访问ERP
获取dolibarr service的主机端口:
kubectl get svc -A -l 'app=dolibarr'
可以看到我们这里的对外暴露的端口是31810,此时在内网环境下直接访问k8s任意节点的ip:31810即可访问dolibarr的web控制台
使用初始账号密码:admin/admin登录即可
步骤二. 远程访问内网ERP
此时如果我们需要在家或则异地访问部署在内网环境的ERP系统的话,下面介绍一种方便快捷的解决方案:
服务端安装SolopaceGem
Kubernetes本身具有容器运行环境,因此我们选择最简单方便的Docker来安装SolopaceGem,在任意一台k8s集群节点中:
执行以下命令启动SolopaceGem Docker客户端
sudo docker run -d --name=SolopaceGem -v /var/lib:/var/lib -v /dev/net/tun:/dev/net/tun --network=host --restart=always --cap-add=NET_ADMIN --cap-add=NET_RAW doaction/solopacegem:latest
获取SolopaceGem组网链接
sudo docker exec SolopaceGem solopacegem status
复制组网链接地址至浏览器打开
创建组网并加入
成功加入组网
在客户端上安装SolopaceGem
下载SolopaceGem客户端
在需要远程访问内网ERP系统的PC上访问官网下载适用于您设备系统的客户端。
官网:https://solopace.doaction.pro/
下载完成后,按照提示进行安装即可。
安装后登录/注册(未注册用户将会自动注册)
此处使用之前安装Docker客户端是注册的账号登录
客户端加入组网
登录后选择已有网络ID,将会自动列出之前创建的网络
选择网络ID并加入即可
连接网络
当在在线设备列表中看到当前客户端与Kubernetes Docker客户端都处于在线状态时,说明组网成功。
通过Solopace.Gem组网IP访问
当组网成功之后,我们只需要将之前的内网IP改为Solopace.Gem为Docker客户端分配的组网IP加端口的形式,即可实现远程访问内网的ERP系统啦!