步骤:
- 代码中编写Dockerfile及build.gradle
- jenkins 配置gitlab repo,并使用 gradle 构建项目
- k8s部署镜像
构建代码准备
项目中编写 build.gradle 文件,内容如下 ``` defaultTasks ‘push’
project.group = ‘cbd’ project.version = “${VERSION}” // 依赖环境变量 VERSION(后续可在jenkins上设置)
ext { env = System.getenv() }
// 依赖环境变量 DOCKER_REPO、TAG_VALUE def imageName = “${env.DOCKER_REPO}/${project.group}/${project.name}:${env.TAG_VALUE}”
task build(type: Exec) { workingDir ‘.’ // Dockerfile 放置在项目根目录的 docker 目录下 commandLine ‘docker’, ‘build’, ‘-t’, imageName, ‘-f’, ‘docker/Dockerfile’, ‘.’ }
task push(type: Exec, dependsOn: ‘build’) { commandLine ‘docker’, ‘push’, imageName }
<a name="xPJp3"></a>## jenkins配置<a name="o4tcv"></a>### 代码位置- Repository URL:git@git.tianrang-inc.com:jd/java-web-tools.git- Credentials:jenkins (to login gitlab by privatekey)<br /><a name="zhtOr"></a>### 自动构建(可选)1. 勾选 Build when a change is pushed to GitLab. GitLab webhook URL: http://xyz,如下图1. 点击Advanced按钮,可看到 Secret token,如下图:1. 只勾选 Push Events,当 gitlab 的 master 分支发生 push 时,会**触发自动构建**操作gitlab中增加web hook步骤:1. settings -> integrations(新版为webhooks)1. URL填写jenkins中所展示的项目URL1. Secret Token填写jenkins中的token1. Trigger选择Push Events,如下图所示<a name="RfMkG"></a>### 配置使用gradle打包<a name="zfm6C"></a>#### 构建环境Inject environment variables to the build process -> Properties Content支持读取 .properties 中的设置,比如project.properties```bashDOCKER_REPO=hub-docker.tianrang-inc.comDOCKER_REPO_HZ=hub-docker.tianrang-inc.comVERSION_NUMBER=0.0.1TAG_VALUE=${GIT_LOCAL_BRANCH}-${VERSION_NUMBER}-build.${BUILD_NUMBER}
Set Build Name -> Build Name: ${TAG_VALUE}
构建
docker login -p ${REGISTRY_PASSWD} -u ${REGISTRY_NAME} http://${DOCKER_REPO} docker login -p ${REGISTRY_PASSWD} -u ${REGISTRY_NAME} ${DOCKER_REPO_HZ}
2. 选择 Involke gradle,其他选项保存默认值<a name="baUvK"></a>### 自动部署(可选)1. 切换至 build 标签1. 点击下方“Add build Step”按钮,选择“Send files or execute commands over SSH”1. SSH Server选择恰当的地址1. Exec command填写以下内容```bash#!/bin/bashkubectl set image deploy/homepage homepage=hub-docker.tianrang-inc.com/tianrang/tr-homepage:${TAG_VALUE} -n tianrang-dev
k8s配置
创建命名空间
apiVersion: v1kind: Namespacemetadata:name: tianrang-dev
创建部署
---kind: DeploymentapiVersion: extensions/v1beta1metadata:name: homepagenamespace: tianrang-devlabels:app: homepagespec:replicas: 1selector:matchLabels:app: homepagetemplate:metadata:labels:app: homepagespec:containers:- name: homepageimage: hub-docker.tianrang-inc.com/tianrang/tr-homepage:master-0.0.1-build.3ports:- name: apicontainerPort: 80protocol: TCPimagePullPolicy: IfNotPresentresources:limits:memory: 256Mirequests:memory: 256MiimagePullSecrets:- name: regcredschedulerName: default-scheduler
创建服务
---kind: ServiceapiVersion: v1metadata:name: homepagenamespace: tianrang-devspec:ports:- name: apiprotocol: TCPport: 80targetPort: 80selector:app: homepagetype: NodePort#type: ClusterIPsessionAffinity: NoneexternalTrafficPolicy: Cluster
查看访问地址
- 打开k8s dashboard
- 命名空间切换选择“tianrang-dev”
- 切到服务页面,点击“homepage”,查看内部端点的第二行端口,如下图所示

- 使用dashboard的IP地址加上第三步的端口组成服务访问地址,如dashboard地址为http://172.18.192.7:31111/,服务端口为30458,那么服务访问地址就是http://172.18.192.7:30458/
