1、使用jenkins创建一个新的项目:dubbo-demo,选择流水线构建

2、 勾选保存构建历史和指定项目为参数化构建项目:

3、添加构建参数:
除了base_image和maven是choice parameter,其他都是string parameter
```
app_name 项目名称--例如:dubbo-demo-service
image_name docker镜像的名称--例如:app/dubbo-demo-service
git_repo 项目仓库git的地址
git_ver 项目在git中央仓库所对应的分支或版本号(cid)--例:master
add_tag 给docker镜像添加标签组合的一部分,日期时间戳--例如:201229_1120
mvn_dir ./ 执行mvn编译的目录,默认是项目的跟目录--例:./
target_dir ./target 编译后的他人jar包的存放地址--例:./dubbo-demo-service/target
mvn_cmd mvn clean package -Dmaven.test.skip=true 执行编译所用的命令
Name:base_image
Choices:
base/jre7:7u80
base/jre8:8u112
Description: 指定底包
Name:maven
Choices:
3.6.1-8u212
3.2.5-7u045
2.2.1-6u025
Description:执行编译使用的mav软件版本
```

编写pipeline:仔细查看这个pipeline,里面都是我们上面编写的参数。
```
pipeline {
agent any
stages {
stage('pull') { //get project code from repo
steps {
sh "git clone ${params.git_repo} ${params.app_name}/${env.BUILD_NUMBER} && cd ${params.app_name}/${env.BUILD_NUMBER} && git checkout ${params.git_ver}"
}
}
stage('build') { //exec mvn cmd
steps {
sh "cd ${params.app_name}/${env.BUILD_NUMBER} && /var/jenkins_home/maven-${params.maven}/bin/${params.mvn_cmd}"
}
}
stage('package') { //move jar file into project_dir
steps {
sh "cd ${params.app_name}/${env.BUILD_NUMBER} && cd ${params.target_dir} && mkdir project_dir && mv *.jar ./project_dir"
}
}
stage('image') { //build image and push to registry
steps {
writeFile file: "${params.app_name}/${env.BUILD_NUMBER}/Dockerfile", text: """FROM harbor.od.com/${params.base_image}
ADD ${params.target_dir}/project_dir /opt/project_dir"""
sh "cd ${params.app_name}/${env.BUILD_NUMBER} && docker build -t harbor.od.com/${params.image_name}:${params.git_ver}_${params.add_tag} . && docker push harbor.od.com/${params.image_name}:${params.git_ver}_${params.add_tag}"
}
}
}
}
```

填写完以后执行bulid

经过漫长的等待后,已经构建完成了,可以点击open blue ocean 查看构建历史及过程:

检查harbor是否已经有这版镜像:

已经有了,接下来交付dubbo-demo-service服务到k8s:
准备k8s资源配置清单:7-200 ** 红色部分,需要根据自己构建镜像的tag来进行修改**
mkdir /data/k8s-yaml/dubbo-server/
cd /data/k8s-yaml/dubbo-server
vi dp.yaml
```
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
name: dubbo-demo-service
namespace: app
labels:
name: dubbo-demo-service
spec:
replicas: 1
selector:
matchLabels:
name: dubbo-demo-service
template:
metadata:
labels:
app: dubbo-demo-service
name: dubbo-demo-service
spec:
containers:
- name: dubbo-demo-service
image: harbor.od.com/app/web:master_201230_0930
ports:
- containerPort: 20880
protocol: TCP
env:
- name: JAR_BALL
value: web_learn-0.0.1-SNAPSHOT.jar
imagePullPolicy: IfNotPresent
imagePullSecrets:
- name: harbor
restartPolicy: Always
terminationGracePeriodSeconds: 30
securityContext:
runAsUser: 0
schedulerName: default-scheduler
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1
maxSurge: 1
revisionHistoryLimit: 7
progressDeadlineSeconds: 600
```
由于我们使用的harbor私有镜像的项目是app,是个私有项目,所以需要创建secret资源:
创建 app命名空间:
kubectl create ns app
创建secret资源:
kubectl create secret docker-registry harbor --docker-server=harbor.od.com --docker-username=admin --docker-password=Harbor12345 -n app
应用资源配置文件:
kubectl apply -f http://k8s-yaml.od.com/dubbo-server/dp.yaml
检查pod是否创建:
kubectl get pod -n app


- 空白目录
- k8s
- k8s介绍和架构图
- 硬件环境和准备工作
- bind9-DNS服务部署
- 私有仓库harbor部署
- k8s-etcd部署
- api-server部署
- 配置apiserver L4代理
- controller-manager部署
- kube-scheduler部署
- node节点kubelet 部署
- node节点kube-proxy部署
- cfss-certinfo使用
- k8s网络-Flannel部署
- k8s网络优化
- CoreDNS部署
- k8s服务暴露之ingress
- 常用命令记录
- k8s-部署dashboard服务
- K8S平滑升级
- k8s服务交付
- k8s交付dubbo服务
- 服务架构图
- zookeeper服务部署
- Jenkins服务+共享存储nfs部署
- 安装配置maven和java运行时环境的底包镜像
- 使用blue ocean流水线构建镜像
- K8S生态--交付prometheus监控
- 介绍
- 部署4个exporter
- 部署prometheus server
- 部署grafana
- alert告警部署
- 日志收集ELK
- 制作Tomcat镜像
- 部署ElasticSearch
- 部署kafka和kafka-manager
- filebeat镜像制作
- 部署logstash
- 部署Kibana
- Apollo交付到Kubernetes集群
- Apollo简介
- 交付apollo-configservice
- 交付apollo-adminservice
- 交付apollo-portal
- k8s-CICD
- 集群整体架构
- 集群安装
- harbor仓库和nfs部署
- nginx-ingress-controller服务部署
- gitlab服务部署
- gitlab服务优化
- gitlab-runner部署
- dind服务部署
- CICD自动化服务devops演示
- k8s上服务日志收集