承蒙错爱,一个选修课学习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的经历,我给的空间资源太少了,导致服务一直起不来。