承蒙错爱,一个选修课学习k8s的时候都没安装过k8s的小白,直接上手负责了公司的服务器运维,接手时,项目负责人大佬已经搭建好了k8s以及各种环境,gitlab-registry、wire-guard(VPN)配置,并有一套运行良好的dev环境、kubesphere可视化环境。

任务1:搭建线上环境

因为有段时间经常出现服务请求不稳定,才意识到开发环境和线上环境需要分离了。要求:创建一套prod环境,和dev环境暂时一致。并修改我们项目的application.yml,让后端同学本地调试的时候不会将服务重复注册到nacos,造成一些问题。此外,来自组长一贯的对自动化一体化的执着,项目的application.yml需要可以共用,而不是不同环境需要修改配置文件。

解决过程

首先,我学习了一下之前的dev环境的配置文件。配置文件如何有条理的命名,以及一键部署所有微服务。

微服务相关

首先是微服务吧,这个也可能是我没见识,真没想到是可以一键全部部署的。

我们需要一个模板文件。并把其中name全部用模板代替,包括镜像的名字。这里就感觉都串起来了,之前要求所有的微服务打包镜像标签都一致,开放的端口全部一致。这样就全部可以用模板搞定。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
apiVersion: apps/v1
kind: Deployment
metadata:
name: APPNAME
namespace: dev
labels:
app: APPNAME
spec:
selector:
matchLabels:
app: APPNAME
replicas: 1
template:
metadata:
labels:
app: APPNAME
spec:
containers:
- name: APPNAME
image: registry/APPNAME:dev
imagePullPolicy: Always
command:
- java
- -jar
- -Xms512m
- -Xmx512m
- app.jar
- -Duser.timezone=Asia/Shanghai
ports:
- containerPort: 8080
name: http
env:
- name: ENV
valueFrom:
configMapKeyRef:
name: backend
key: ENV
- name: NACOS_REGISTER
valueFrom:
configMapKeyRef:
name: backend
key: NACOS_REGISTER
- name: DUBBO_REGISTER
valueFrom:
configMapKeyRef:
name: backend
key: DUBBO_REGISTER
---
apiVersion: v1
kind: Service
metadata:
name: APPNAME
namespace: dev
spec:
selector:
app: APPNAME
clusterIP: None
ports:
- name: http
port: 8080

然后要做的就是写一个脚本,把微服务的名字替换进去,然后apply。

其他服务搭建

其实按教程就可以搭建,这里就记录一个之前搭ES的经历,我给的空间资源太少了,导致服务一直起不来。