E10 K8S部署
获取部署代码
git clone http://192.168.7.32:9091/luxsun/e10-k8s.git
准备存储,默认使用nfs
- 安装nfs服务
yum install nfs-utils -y所有k8s节点都需要执行 - 配置目录共享(NFS服务器执行),如下:
# vi /etc/exports
/data *(rw,no_root_squash,sync)`
- 启动nfs服务
systemctl start nfs && systemctl enable nfs - 创建oa命名空间
kubectl create ns oa - 配置nfs作为kubernetes后端存储卷
# nfs-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nfs-client-provisioner-config labels: app: nfs-client-provisioner-config # replace with namespace where provisioner is deployed namespace: oa spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: nfs-client-provisioner-config template: metadata: labels: app: nfs-client-provisioner-config spec: serviceAccountName: nfs-client-provisioner containers: - name: nfs-client-provisioner image: quay.io/external_storage/nfs-client-provisioner:latest volumeMounts: - name: nfs-client-root-config mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: fuseim.pri/ifs-config - name: NFS_SERVER value: 10.12.253.54 - name: NFS_PATH value: /data/ volumes: - name: nfs-client-root-config nfs: server: 10.12.253.54 path: /data/#storageclass.yml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: managed-nfs-storage-config provisioner: fuseim.pri/ifs-config # or choose another name, must match deployment's env PROVISIONER_NAME' parameters: archiveOnDelete: "false"```yaml apiVersion: v1 kind: ServiceAccount metadata: name: nfs-client-provisioner # replace with namespace where provisioner is deployed
kind: ClusterRole apiVersion: rbac.authorization.k8s.io/v1 metadata: name: nfs-client-provisioner-runner rules:
- apiGroups: [””] resources: [“persistentvolumes”] verbs: [“get”, “list”, “watch”, “create”, “delete”]
- apiGroups: [””] resources: [“persistentvolumeclaims”] verbs: [“get”, “list”, “watch”, “update”]
- apiGroups: [“storage.k8s.io”] resources: [“storageclasses”] verbs: [“get”, “list”, “watch”]
- apiGroups: [””] resources: [“events”] verbs: [“create”, “update”, “patch”] — kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: run-nfs-client-provisioner subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
replace with namespace where provisioner is deployed
roleRef: kind: ClusterRole name: nfs-client-provisioner-runner apiGroup: rbac.authorization.k8s.io — kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: leader-locking-nfs-client-provisioner # replace with namespace where provisioner is deployed
rules:
- apiGroups: [””] resources: [“endpoints”] verbs: [“get”, “list”, “watch”, “create”, “update”, “patch”] — kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: leader-locking-nfs-client-provisioner # replace with namespace where provisioner is deployed
subjects:
- kind: ServiceAccount
name: nfs-client-provisioner
replace with namespace where provisioner is deployed
roleRef: kind: Role name: leader-locking-nfs-client-provisioner apiGroup: rbac.authorization.k8s.io
4. 部署资源 `kubectl apply -f ./nfs`
#### 部署周边服务
[Helm | Helm版本支持策略](https://helm.sh/zh/docs/topics/version_skew/)
##### 配置镜像仓库secret
1. 主节点登录镜像仓库`reg.e-cology.cn` `docker login reg.e-cology.cn -u readonly -pReadonly@2023`
2. 创建secret
```shell
kubectl create secret generic regcred --from-file=.dockerconfigjson=/root/.docker/config.json --type=kubernetes.io/dockerconfigjson
部署helm
- 安装helm,本地默认kubernetes版本为
v1.22.2,对应helm版本为3.10 - 下载helm
wget https://get.helm.sh/helm-v3.10.1-linux-amd64.tar.gz - 解压(
tar -zxvf helm-v3.10.1-linux-amd64.tar.gz) - 在解压目中找到
helm程序,移动到需要的目录中(mv linux-amd64/helm /usr/local/bin/helm)
部署运维平台
需要提前准备好mysql数据库,可以和e10数据库共用运维平台数据库在启动过程中会自动初始化表
- 修改
monitor-config.yaml设置数据库地址
- 使用
kubectl apply -f e-monitor部署运维平台
部署elk日志收集
- 部署zookeeper,
kubectl apply -f elk/zookeeper.yaml - 部署kafka-service
kubectl apply -f elk/kafka.yaml - 部署kafka-deployment,需要使用
kubectl get svc |grep kafka-service获取kafka的ip
- 部署logstash,
kubectl apply -f elk/logstash.yaml需要修改es地址,kafka地址
部署nacos
部署mysql
因nacos依赖与mysql需要先部署mysql
- 创建nacos初始化脚本作为configmap,
kubectl apply -f ./mysql/nacosinit.yaml - 修改
./mysql/values.yaml设置root密码,nacos帐号密码,挂载创建的configmap,修改storageclass如下



- 修改完成后,使用
helm install nacos-mysql -f values.yaml .安装数据库部署nacos
- 修改
./nacos/values.yaml主要修改mysql连接,配置storageclass

- 使用
helm install weaver-nacos -f values .安装nacos集群
安装Elasticsearch集群
- 修改
./elasticsearch/values.yaml设置jvm内存,持久化存储


- 使用
helm install weaver-elasticsearch -f values.yaml .安装es集群
安装kafka集群(自带了zookeeper)
- 修改
./kafka/values.yaml,修改storageclass,heapOpts,zookeeper连接地址


- 使用
helm install weaver-kafka -f values.yml .安装kafka集群
安装Mongodb
- 修改
./mongodb/values.yml,修改storageclass,帐号密码


- 使用
helm install weaver-mongodb -f values.yml .安装mongo集群
安装rabbitmq集群
- 修改
./rabbitmq/values.yaml,修改帐号密码,storageclass pv大小


- 使用
helm install weaver-rabbitmq -f values.yml .安装rabbitmq集群
安装redis集群
- 修改
./redis/values.yml,修改storageclass,密码等

- 使用
helm install weaver-redis -f values.yml .安装redis集群
连接配置表
table-id-DWl9Nx
准备nacos配置文件
- 登录源环境nacos,导出配置文件

解压,并修改配置

- 修改系统访问地址,如果使用nodeport,默认地址就为
masterip:32600,比如10.12.253.90:32600

- 修改redis配置
weaver-cache.properties

- 修改rabbitmq配置文件
weaver.properties

- 修改kafka配置

- 修改zookeeper配置,
weaver-crm-service.properties

- 修改elasticsearch配置


weaver-front-monitor-service.properties配置文件

weaver-architecture-service.properties配置文件

- 修改mongo配置文件



- 压缩修改好的配置文件,并导入nacos集群

准备后端镜像
- 准备war包.放入到ecology目录,如下

- 执行build.sh编译生成镜像(等待镜像生成完成)

- 准备weaver-open-gateway.jar weaver-gateway.jar编译生成镜像,如下


准备前端镜像
- 编译生成前端镜像
cd e10-front docker build -t reg.e-cology.cn/e10/e10-front:20230417 .
部署e10服务
- 修改
zhechart/values.yaml中pullsecrets,emonitorIP,storageclass,kafka_host,前后端镜像地址
- 使用
helm install weaver-e10 -f values.yaml .部署e10服务
部署完成,等待所有服务变为就绪状态,访问`masterip:32600`
若需要域名访问,需要准备istio或nginxingress,开放e10-front,下面以istio举例
- 修改hosts,指定外部访问地址,也可以为ip,修改destination 指向e10-front服务

- 使用
kubectl apply -f e10.yaml配置外部访问