1. 流程分析
1、准备一个 SpringBoot 项目,可以打包、也可以运行,有几个简单的页面。
2、将这个 SpringBoot 项目上传到 gitlab-ce,执行 ci pipline,实现编译、代码质量扫描、发送邮件、打包、构建镜像、发布到 harbor 测试库等功能。
3、将 harbor 测试库中的镜像同步到 k8s 中的 harbor 准生产库。(没做,手动复制)
4、k8s 拉取管理镜像。
2. 管理镜像
2.1 管理tomcat镜像
这里默认镜像文件已经保存到 harbor 库里,我们只需要通过配置文件创建 pod 和 service 就可以管理运行镜像了。
1、创建 tomcat-deploy.yaml。
apiVersion: apps/v1kind: Deploymentmetadata:name: tomcat-8.5.47spec:replicas: 2selector:matchLabels:app: tomcat-clustertemplate:metadata:labels:app: tomcat-clusterspec:containers:- name: tomcat-clusterimage: harbor01.io/library/tomcat:8.5.47imagePullPolicy: IfNotPresentports:- containerPort: 8080 # 容器应用监听的端口号imagePullSecrets:- name: harbor-secret
2、创建、拉取私有镜像,并查看 pod 信息。
kubectl apply -f tomcat-deploy.yaml# 查看pod[root@k8s-master01 tomcat]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEStomcat-8.5.47-6d749d7d56-h2bds 1/1 Running 0 19s 10.100.85.197 k8s-node01 <none> <none>tomcat-8.5.47-6d749d7d56-xvpx2 1/1 Running 0 19s 10.100.58.195 k8s-node02 <none> <none># 查看pod详情kubectl describe pod tomcat-8.5.47-6d749d7d56-h2bds
3、对外暴露端口,即编写 service 文件。
# vim tomcat-service.yamlapiVersion: v1kind: Servicemetadata:name: tomcat-servicelabels:app: tomcat-servicespec:type: NodePortselector:app: tomcat-clusterports:- port: 8000targetPort: 8080nodePort: 32500
4、创建并查看 service。
kubectl apply -f tomcat-service.yaml# 查看service[root@k8s-master01 tomcat]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 42mtomcat-service NodePort 10.96.121.77 <none> 8000:32500/TCP 86s# 查看service详情[root@k8s-master01 tomcat]# kubectl describe service tomcat-service...Endpoints: 10.100.58.195:8080,10.100.85.197:8080...
5、测试项目,访问 192.168.58.21:32500,即可看到 nginx 页面。
2.2 管理SpringBoot项目
前提:harbor 库中已经有 springboot_cicd 镜像。
1、创建 springboot_cicd-deploy.yaml。
apiVersion: apps/v1kind: Deploymentmetadata:name: springboot-cicd-1.0spec:replicas: 2selector:matchLabels:app: springboot-cicd-clustertemplate:metadata:labels:app: springboot-cicd-clusterspec:containers:- name: springboot-cicd-clusterimage: harbor01.io/test/springboot_cicd:1.0imagePullPolicy: IfNotPresentports:- containerPort: 8081 # 容器应用监听的端口号imagePullSecrets:- name: harbor-secret
2、创建、拉取私有镜像,并查看 pod 信息。
kubectl apply -f springboot_cicd-deploy.yaml# 查看pod[root@k8s-master01 tomcat]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATEStomcat-8.5.47-6d749d7d56-h2bds 1/1 Running 0 19s 10.100.85.197 k8s-node01 <none> <none>tomcat-8.5.47-6d749d7d56-xvpx2 1/1 Running 0 19s 10.100.58.195 k8s-node02 <none> <none># 查看pod详情kubectl describe pod tomcat-8.5.47-6d749d7d56-h2bds
3、对外暴露端口,即编写 service 文件。
# vim springboot_cicd-service.yamlapiVersion: v1kind: Servicemetadata:name: springboot-cicd-servicelabels:app: springboot-cicd-servicespec:type: NodePortselector:app: springboot-cicd-clusterports:- port: 8081targetPort: 8081nodePort: 32501
4、创建并查看 service。
kubectl apply -f springboot_cicd-service.yaml# 查看service[root@k8s-master01 springboot_cicd]# kubectl get svcNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEkubernetes ClusterIP 10.96.0.1 <none> 443/TCP 50mspringboot-cicd-service NodePort 10.96.147.109 <none> 8081:32501/TCP 4stomcat-service NodePort 10.96.121.77 <none> 8000:32500/TCP 9m32s# 查看service详情[root@k8s-master01 tomcat]# kubectl describe service springboot-cicd-service...Endpoints: 10.100.58.196:8080,10.100.85.198:8080...
5、测试项目,访问 192.168.58.21:32500,即可访问到首页。
