jenkins自动化构建docker镜像并部署到k8s集群

一、集群规划

二、安装gitlab并上传代码

1. 下载安装包,并安装

[root@kub_node2 tools]# wget  https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm
--2020-10-04 21:13:08--  https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm
Resolving mirror.tuna.tsinghua.edu.cn (mirror.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
Connecting to mirror.tuna.tsinghua.edu.cn (mirror.tuna.tsinghua.edu.cn)|101.6.8.193|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 569408968 (543M) [application/x-redhat-package-manager]
Saving to: ‘gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm’

100%[============================================================================================================>] 569,408,968 11.7MB/s   in 47s    

2020-10-04 21:13:56 (11.4 MB/s) - ‘gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm’ saved [569408968/569408968]

[root@kub_node2 tools]# ll
total 556068
-rw-r--r-- 1 root root 569408968 May  1  2019 gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm
[root@kub_node2 tools]# rpm -ivh gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm 
warning: gitlab-ce-11.9.11-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:gitlab-ce-11.9.11-ce.0.el7       ################################# [100%]
It looks like GitLab has not been configured yet; skipping the upgrade script.

       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.
  


     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/
  

Thank you for installing GitLab!
GitLab was unable to detect a valid hostname for your instance.
Please configure a URL for your GitLab instance by setting `external_url`
configuration in /etc/gitlab/gitlab.rb file.
Then, you can start your GitLab instance by running the following command:
  sudo gitlab-ctl reconfigure

For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md

2. 修改配置文件

[root@kub_node2 tools]# vim /etc/gitlab/gitlab.rb
[root@kub_node2 tools]# sed -n 13p /etc/gitlab/gitlab.rb 
external_url 'http://192.168.0.208'
[root@kub_node2 tools]# sed -n 1535p /etc/gitlab/gitlab.rb 
prometheus_monitoring['enable'] = false

3.启动gitlab

[root@kub_node2 tools]# gitlab-ctl reconfigure

4.访问gitlab,修改root密码,创建project

http://192.168.0.208

5.gitlab上传代码

[root@kub_node2 tools]# cd /opt
[root@kub_node2 opt]# mkdir xiaoniao
[root@kub_node2 opt]# cd xiaoniao/
[root@kub_node2 xiaoniao]# git config --global user.name "Administrator"
[root@kub_node2 xiaoniao]# git config --global user.email "admin@example.com"
[root@kub_node2 xiaoniao]# rz
[root@kub_node2 xiaoniao]# ll
total 92
-rw-r--r-- 1 root root 91014 Oct  4 21:48 xiaoniaofeifei.zip
[root@kub_node2 xiaoniao]# unzip xiaoniaofeifei.zip 
Archive:  xiaoniaofeifei.zip
  inflating: sound1.mp3              
   creating: img/
  inflating: img/bg1.jpg             
  inflating: img/bg2.jpg             
  inflating: img/number1.png         
  inflating: img/number2.png         
  inflating: img/s1.png              
  inflating: img/s2.png              
  inflating: 21.js                   
  inflating: 2000.png                
  inflating: icon.png                
  inflating: index.html              
[root@kub_node2 xiaoniao]# ll
total 236
-rw-r--r-- 1 root root 15329 Aug  2  2014 2000.png
-rw-r--r-- 1 root root 51562 Aug  2  2014 21.js
-rw-r--r-- 1 root root   254 Aug  2  2014 icon.png
drwxr-xr-x 2 root root  4096 Aug  8  2014 img
-rw-r--r-- 1 root root  3049 Aug  2  2014 index.html
-rw-r--r-- 1 root root 63008 Aug  2  2014 sound1.mp3
-rw-r--r-- 1 root root 91014 Oct  4 21:48 xiaoniaofeifei.zip
[root@kub_node2 xiaoniao]# rm -rf xiaoniaofeifei.zip 
[root@kub_node2 xiaoniao]# ls
2000.png  21.js  icon.png  img  index.html  sound1.mp3
[root@kub_node2 xiaoniao]# git init
Reinitialized existing Git repository in /opt/xiaoniao/.git/
[root@kub_node2 xiaoniao]# git add .
[root@kub_node2 xiaoniao]# git commit -m "Initial commit"
[master (root-commit) 9568708] Initial commit
 11 files changed, 184 insertions(+)
 create mode 100644 2000.png
 create mode 100644 21.js
 create mode 100644 icon.png
 create mode 100644 img/bg1.jpg
 create mode 100644 img/bg2.jpg
 create mode 100644 img/number1.png
 create mode 100644 img/number2.png
 create mode 100644 img/s1.png
 create mode 100644 img/s2.png
 create mode 100644 index.html
 create mode 100644 sound1.mp3
[root@kub_node2 xiaoniao]# git status
# On branch master
nothing to commit, working directory clean
[root@kub_node2 xiaoniao]# git push -u origin master
Username for 'http://192.168.0.208': root
Password for 'http://root@192.168.0.208': 
Counting objects: 14, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (14/14), 88.15 KiB | 0 bytes/s, done.
Total 14 (delta 0), reused 0 (delta 0)
To http://192.168.0.208/root/xiaoniao.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

三、安装jenkins并拉取代码

1. 安装jenkins

[root@kub_node1 ~]# mkdir -p /server/tools
[root@kub_node1 ~]# cd /server/tools/
[root@kub_node1 tools]# rz [root@kub_node1 tools]# ll total 246552 -rw-r--r-- 1 root root 9128610 Oct 4 21:57 apache-tomcat-8.0.27.tar.gz -rw-r--r-- 1 root root 166044032 Oct 4 21:57 jdk-8u102-linux-x64.rpm -rw-r--r-- 1 root root 77289987 Oct 4 21:58 jenkins.war
#安装jdk
[root@kub_node1 tools]# rpm -ivh jdk-8u102-linux-x64.rpm Preparing... ################################# [100%] Updating / installing... 1:jdk1.8.0_102-2000:1.8.0_102-fcs ################################# [100%] Unpacking JAR files... tools.jar... plugin.jar... javaws.jar... deploy.jar... rt.jar... jsse.jar... charsets.jar... localedata.jar... [root@kub_node1 tools]# echo $? 0 [root@kub_node1 tools]# java -version java version "1.8.0_102" Java(TM) SE Runtime Environment (build 1.8.0_102-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
#安装tomcat
[root@kub_node1 tools]# mkdir /app [root@kub_node1 tools]# tar -xf apache-tomcat-8.0.27.tar.gz -C/app [root@kub_node1 tools]# rm -fr /app/apache-tomcat-8.0.27/webapps/*
#安装jenkins
[root@kub_node1 tools]# mv jenkins.war /app/apache-tomcat-8.0.27/webapps/ROOT.war [root@kub_node1 tools]# ll /app/apache-tomcat-8.0.27/webapps/ total 75480 -rw-r--r-- 1 root root 77289987 Oct 4 21:58 ROOT.war

[root@kub_node1 tools]# rz [root@kub_node1 tools]# ll total
258540 -rw-r--r-- 1 root root 9128610 Oct 4 21:57 apache-tomcat-8.0.27.tar.gz -rw-r--r-- 1 root root 166044032 Oct 4 21:57 jdk-8u102-linux-x64.rpm -rw-r--r-- 1 root root 89566714 Oct 4 22:08 jenkin-data.tar.gz [root@kub_node1 tools]# tar -xf jenkin-data.tar.gz -C /root [root@kub_node1 tools]# ll total 258540 -rw-r--r-- 1 root root 9128610 Oct 4 21:57 apache-tomcat-8.0.27.tar.gz -rw-r--r-- 1 root root 166044032 Oct 4 21:57 jdk-8u102-linux-x64.rpm -rw-r--r-- 1 root root 89566714 Oct 4 22:08 jenkin-data.tar.gz [root@kub_node1 tools]# ll -a total 258548 drwxr-xr-x 2 root root 4096 Oct 4 22:08 . drwxr-xr-x 3 root root 4096 Oct 4 21:56 .. -rw-r--r-- 1 root root 9128610 Oct 4 21:57 apache-tomcat-8.0.27.tar.gz -rw-r--r-- 1 root root 166044032 Oct 4 21:57 jdk-8u102-linux-x64.rpm -rw-r--r-- 1 root root 89566714 Oct 4 22:08 jenkin-data.tar.gz [root@kub_node1 tools]# ll -a /root total 319976 dr-xr-x---. 6 root root 4096 Oct 4 22:08 . dr-xr-xr-x. 23 root root 4096 Oct 4 22:02 .. -rw-r--r-- 1 root root 8136 Oct 4 16:43 .bash_history -rw-r--r--. 1 root root 18 Dec 29 2013 .bash_logout -rw-r--r--. 1 root root 176 Dec 29 2013 .bash_profile -rw-r--r--. 1 root root 176 Dec 29 2013 .bashrc -rw-r--r--. 1 root root 100 Dec 29 2013 .cshrc -rw-r--r-- 1 root root 112689664 Jan 15 2019 docker_nginx1.13.tar.gz -rw------- 1 root root 0 Apr 27 22:27 .history drwxr-xr-x 11 root root 4096 May 30 2019 .jenkins drwxr-xr-x 2 root root 4096 Oct 4 22:01 .oracle_jre_usage drwxr----- 3 root root 4096 Apr 27 22:11 .pki -rw-r--r-- 1 root root 214888960 Feb 5 2018 pod-infrastructure-latest.tar.gz drwx------ 2 root root 4096 Sep 20 22:56 .ssh -rw-r--r--. 1 root root 129 Dec 29 2013 .tcshrc -rw-r--r-- 1 root root 225 Sep 26 14:37 test.py -rw------- 1 root root 5456 Oct 4 17:48 .viminfo [root@kub_node1 tools]# ll -a /root/.jenkins/ total 96 drwxr-xr-x 11 root root 4096 May 30 2019 . dr-xr-x---. 6 root root 4096 Oct 4 22:08 .. -rw-r--r-- 1 root root 1642 May 30 2019 config.xml -rw-r--r-- 1 root root 183 May 29 2019 hudson.model.UpdateCenter.xml -rw-r--r-- 1 root root 370 May 29 2019 hudson.plugins.git.GitTool.xml -rw------- 1 root root 1712 May 29 2019 identity.key.enc -rw-r--r-- 1 root root 1861 May 30 2019 jenkins.install.InstallUtil.installingPlugins -rw-r--r-- 1 root root 5 May 30 2019 jenkins.install.InstallUtil.lastExecVersion -rw-r--r-- 1 root root 5 May 30 2019 jenkins.install.UpgradeWizard.state -rw-r--r-- 1 root root 179 May 30 2019 jenkins.model.JenkinsLocationConfiguration.xml -rw-r--r-- 1 root root 171 May 29 2019 jenkins.telemetry.Correlator.xml drwxr-xr-x 2 root root 4096 May 29 2019 jobs -rw-r--r-- 1 root root 0 May 29 2019 .lastStarted drwxr-xr-x 3 root root 4096 May 29 2019 logs -rw-r--r-- 1 root root 907 May 29 2019 nodeMonitors.xml drwxr-xr-x 2 root root 4096 May 29 2019 nodes -rw-r--r-- 1 root root 41 May 30 2019 .owner drwxr-xr-x 77 root root 4096 May 30 2019 plugins -rw-r--r-- 1 root root 129 May 30 2019 queue.xml -rw-r--r-- 1 root root 64 May 29 2019 secret.key -rw-r--r-- 1 root root 0 May 29 2019 secret.key.not-so-secret drwx------ 4 root root 4096 May 29 2019 secrets drwxr-xr-x 2 root root 4096 May 29 2019 updates drwxr-xr-x 2 root root 4096 May 29 2019 userContent drwxr-xr-x 3 root root 4096 May 29 2019 users drwxr-xr-x 2 root root 4096 May 29 2019 workflow-libs
#启动tomcat
[root@kub_node1 tools]# /app/apache-tomcat-8.0.27/bin/startup.sh Using CATALINA_BASE: /app/apache-tomcat-8.0.27 Using CATALINA_HOME: /app/apache-tomcat-8.0.27 Using CATALINA_TMPDIR: /app/apache-tomcat-8.0.27/temp Using JRE_HOME: /usr Using CLASSPATH: /app/apache-tomcat-8.0.27/bin/bootstrap.jar:/app/apache-tomcat-8.0.27/bin/tomcat-juli.jar Tomcat started. [root@kub_node1 tools]# netstat -lntup |grep 8080 tcp6 0 0 :::8080 :::* LISTEN 6322/java

2. 测试访问jenkins

默认用户:admin 密码:123456

 3. 在jenkins上创建构建项目

1)配置认证信息

[root@kub_node1 tools]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:AOU4lZY72hUvymSD2kDZEyn8QXtX70Z1/SxkMsVNCNo root@kub_node1
The key's randomart image is:
+---[RSA 2048]----+
| . +++oo  . .+o++|
|  = =*+ .. +o.=.o|
| . o+=+..o. E= ..|
|  . oo*oo .o  . o|
|   + * =S.  o  . |
|  . o +    .     |
|                 |
|                 |
|                 |
+----[SHA256]-----+
[root@kub_node1 tools]# ll /root/.ssh/
total 12
-rw------- 1 root root    0 Sep 20 15:40 authorized_keys
-rw------- 1 root root 1679 Oct  4 22:21 id_rsa
-rw-r--r-- 1 root root  396 Oct  4 22:21 id_rsa.pub
-rw-r--r-- 1 root root  350 Sep 20 22:56 known_hosts
[root@kub_node1 tools]# cat /root/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZWCH34svIrXHF1xM/sNooPRHo0cjTrxyOG2ZB0L6HUQzFLE6B57I/4ylPoAATQfLg1zXjNjGpfvXY4kltVnrswZtKg/es26OA26DqqbR0Qp4WYW61EX8HTkiLGEVlZ5fLHlY3b+rnstsWWiE2pUKI4uF4lGURkQaXg0m+OOs3Zwal89d+fUMQ6foXVRlSV2vjj1O1kNPwI2nHWBs8MRX0fKFIxf/2LibV7CQAE886r/Riur15Ekt3zASjEKZVGSRvTtBDaBppjC++ioAEsc9oOOqEJvbrg///6f1WCPQhdH4PozBk7xjSF2+/+eh9xGFxlscUPgCVSP5lpV2A3iER root@kub_node1

2)在gitlab上配置密钥

点击用户—>setting—>ssh-keys

3)jenkins上创建全局凭据

点击凭据—>系统—>全局凭据—>添加凭据

查看私钥

[root@kub_node1 tools]# cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA2Vgh9+LLyK1xxdcTP7DaKD0R6NHI068cjhtmQdC+h1EMxSxO
geeyP+MpT6AAE0Hy4Nc14zYxqX712OJJbVZ67MGbSoP3rNujgNug6qm0dEKeFmFu
tRF/B05IixhFZWeXyx5WN2/q57LbFlohNqVCiOLheJRlEZEGl4NJvjjrN2cGpfPX
fn1DEOn6F1UZUldr449TtZDT8CNpx1gbPDEV9HyhSMX/9i4m1ewkABPPOq/0Yrq9
eRJLd8wEoxCmVRkkb07QQ2gaaYwvvoqABLHPaDjqhCb264P//+n9Vgj0IXR+D6Mw
ZO8Y0hdvv/nofcRhcZbHFD4AlUj+ZaVdgN4hEQIDAQABAoIBAFMq7GSkvoIeDKk9
8bmvfOtk4xOKIyUNnwmp5mlM7XtuQkq495myBX14+Xfkq+Kym7P55j75n+tSD9Vc
Ueiq7QLn2vqaoQ3eRiSq5lqlcc4DJ+c8hVZ4SXmMNSo0sWlqSKWLCEbSZrser8NP
3eHBP0KOPuUbM8mTC0izDmbh9PAPoeSf2ZwLC+yAvwDtcM5Joli8rBHDwT77SlkP
5WACNOpAqvQ4vxlQW5UkJ3YupH+15qZMgWbYmwj8iAXW8qW5Z0HqLEN5SWuuF+Kp
IEq/ncNl3nuPa8/MCpbr8wfJNS7UMgtX2PDBatcOTrZ5P/m3TFlqjjQ1xgNCjfbY
7QKHMKECgYEA8P/I34ndypG5YaecyhDq/p3P6TldRJ2qGnZNprl1+v7hBanO3VjS
ExMCBnLiSLsUnTVoLAdBLt29Wq8qHyRaEp0Ndtur/UUvwJYFNQ8N+cnaSOS4IJ/x
/wGwrpNwtNyte4ljheK/UFMbs+N05GwjiqjhB5syn4x+qDTfc33xkzUCgYEA5t9q
82yaU3yXEeV0y6zeuzKbdGHypWezi0FWlUJnRDyJ0B9jEA4/OEVWJwA3xAzNRm8C
qWuCFNkGjF2gad2hjtuSJ7ct4n8d0mTsFEP6b2d+kEuQU4QvrM6L2eubz2MPpGO5
0FqtbeI3G1cpI1D8yxk+NuFFF/lpPqLe57W/le0CgYEAwZ3+F/l/QruIoDg08vJc
mWrYGpuHnxS8EL5y7Dub2abjydT+6T3uqHxg6CVsPtpuWU8K/jRl3e0vr6eCw7pE
0ydyJceeicAH+UWNsW8C32eYA3AdrbhSh3koJVk291dD2TgryOi+ox3h58gZpVpr
w36iK6Y4KY6KQ0EXNIY+ivECgYA3qPVn6m7qYccqEV+vGuY3y2OfE14kcnPexsnR
AklTMiUnf+mqHUUwk8bJcEwBf/SdXnYN0lVyIUBq5sedvkkM3/LEkG0Hhg3yg1JH
MHxYD2N79ju9Zsj3qHQe/aZ6wS8sOr65dKMLMtaGSOUqFoRbkqJlKLo3pXGyICIN
Ssv9oQKBgQDDnpsghC1IgbQwuneU8QzBLoen13Bf++D0HO99RDrhCDJcfXOmxe/4
e9VegAR8mXBpRg5Cz5Q8w0n+LHtnP7fF5OmcRK4AmRpbd/1xyf4i+xMF2FOtoL8W
5BQYYICjUgCR9zHZ0COPNgswn7SHTiaS3IMpzQmeXY8kaXbU96aWkg==
-----END RSA PRIVATE KEY-----

4)创建项目

5)立即构建,控制台输出

6)查看代码

[root@kub_node1 tools]# cd /root/.jenkins/work
workflow-libs/ workspace/     
[root@kub_node1 tools]# cd /root/.jenkins/workspace/
[root@kub_node1 workspace]# ll
total 8
drwxr-xr-x 4 root root 4096 Oct  4 22:43 xiaoniao
drwxr-xr-x 2 root root 4096 Oct  4 22:43 xiaoniao@tmp
[root@kub_node1 workspace]# ll xiaoniao
total 144
-rw-r--r-- 1 root root 15329 Oct  4 22:43 2000.png
-rw-r--r-- 1 root root 51562 Oct  4 22:43 21.js
-rw-r--r-- 1 root root   254 Oct  4 22:43 icon.png
drwxr-xr-x 2 root root  4096 Oct  4 22:43 img
-rw-r--r-- 1 root root  3049 Oct  4 22:43 index.html
-rw-r--r-- 1 root root 63008 Oct  4 22:43 sound1.mp3

拉取成功!!!

4. 构建docker镜像并测试

1)编写dockerfile

[root@kub_node2 xiaoniao]# vim dockerfile
[root@kub_node2 xiaoniao]# cat dockerfile 
FROM 192.168.0.212:5000/nginx:1.15
ADD . /usr/share/nginx/html

2)添加docker build构建时不add的文件

[root@kub_node2 xiaoniao]# vim .dockerignore
[root@kub_node2 xiaoniao]# cat .dockerignore 
dockerfile

3)创建docker镜像,并启动容器

[root@kub_node2 xiaoniao]# docker build -t xiaoniao:v1 .
Sending build context to Docker daemon 328.2 kB
Step 1/2 : FROM 192.168.0.212:5000/nginx:1.15
 ---> be1f31be9a87
Step 2/2 : ADD . /usr/share/nginx/html
 ---> b4c1743c3451
Removing intermediate container 00a19c2a0f10
Successfully built b4c1743c3451
[root@kub_node2 xiaoniao]# docker image ls |grep xiaoniao
xiaoniao                                           v1                  b4c1743c3451        58 seconds ago      109 MB
[root@kub_node2 xiaoniao]# docker run -d -p 88:80 xiaoniao:v1
6d91a48f607f015f71d43f987b7b2c36d5d94c8f7ca18124795349fd52807820
[root@kub_node2 xiaoniao]# docker ps -a -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
6d91a48f607f        xiaoniao:v1         "nginx -g 'daemon ..."   9 seconds ago       Up 5 seconds        0.0.0.0:88->80/tcp   relaxed_swartz

4)测试

[root@kub_node2 xiaoniao]# curl 192.168.0.208:88
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta id="viewport" name="viewport" content="width=device-width,user-scalable=no" />
        <script type="text/javascript" src="21.js"></script>
        <title>小鸟飞飞飞-文章库小游戏</title>
        <style type="text/css">
            body {
                margin:0px;
            }
        </style>
        <script language=javascript>
            var mebtnopenurl = 'http://www.wenzhangku.com/weixin/';
            window.shareData = {
                    "imgUrl": "http://www.wenzhangku.com/weixin/xiaoniaofeifei/icon.png",
                    "timeLineLink": "http://www.wenzhangku.com/weixin/xiaoniaofeifei/",
                    "tTitle": "小鸟飞飞飞-文章库小游戏",
                    "tContent": "从前有一只鸟,飞着飞着就死了。"
            };
        document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
            
            WeixinJSBridge.on('menu:share:appmessage', function(argv) {
                WeixinJSBridge.invoke('sendAppMessage', {
                    "img_url": window.shareData.imgUrl,
                    "link": window.shareData.timeLineLink,
                    "desc": window.shareData.tContent,
                    "title": window.shareData.tTitle
                }, function(res) {
                    document.location.href = mebtnopenurl;
                })
            });

            WeixinJSBridge.on('menu:share:timeline', function(argv) {
                WeixinJSBridge.invoke('shareTimeline', {
                    "img_url": window.shareData.imgUrl,
                    "img_width": "640",
                    "img_height": "640",
                    "link": window.shareData.timeLineLink,
                    "desc": window.shareData.tContent,
                    "title": window.shareData.tTitle
                }, function(res) {
                    document.location.href = mebtnopenurl;
                });
            });
        }, false);
        function dp_submitScore(a,b){
            if(a&&b>=a&&b>10){
                //alert("新纪录哦!你过了"+b+"关!")
                dp_share(b)
            }
        }
            
        function dp_Ranking(){
            document.location.href = mebtnopenurl;
        }
        function dp_share(t){
            document.title = "我玩小鸟飞飞飞过了"+t+"关!你能超过洒家我吗?";
            document.getElementById("share").style.display="";
            window.shareData.tTitle = document.title;
        }
        </script>
        </head>
    <body>
        <div style="text-align:center;">
            <canvas id="linkScreen">
                很遗憾,您的浏览器不支持HTML5,请使用支持HTML5的浏览器。
            </canvas>
        </div>
        <div id="mask_container" align="center" style="width: 100%; height: 100%; position: absolute; left: 0px; top: 0px; display: none; z-index: 100000; background-color: rgb(255, 255, 255);">
                <img id="p2l" src="img/p2l.jpg" style="position: absolute;left: 50%;top: 50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)" >
        </div>
        <div id=share style="display:none">
        <img  width=100% src="2000.png"  style="position:absolute;top:0;left:0;display:" onclick="document.getElementById('share').style.display='none';">
        </div>
        
<div style="display:none;">
这里加统计
</div>
    </body>
</html>

5. jenkins自动化构建docker镜像

1)推送当前代码到gitlab仓库

[root@kub_node2 xiaoniao]# git add .
[root@kub_node2 xiaoniao]# git commit -m 'first update'
[master a76dbc4] first update
 2 files changed, 3 insertions(+)
 create mode 100644 .dockerignore
 create mode 100644 dockerfile
[root@kub_node2 xiaoniao]# git push -u origin master
Username for 'http://192.168.0.208': root
Password for 'http://root@192.168.0.208': 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (4/4), 384 bytes | 0 bytes/s, done.
Total 4 (delta 1), reused 0 (delta 0)
To http://192.168.0.208/root/xiaoniao.git
   9568708..a76dbc4  master -> master
Branch master set up to track remote branch master from origin.

2)修改jenkins配置

3)构建镜像

点击立即构建,查看控制台输出

 私有仓库查看镜像

[root@kub_master ~]# ls /opt/myregistry/docker/registry/v2/repositories/
busybox   heapster_grafana   kubernetes-dashboard-amd64  nginx               tomcat-app  xiaoniao
heapster  heapster_influxdb  mysql                       pod-infrastructure  wordpress
[root@kub_master ~]# ls /opt/myregistry/docker/registry/v2/repositories/xiaoniao/
_layers  _manifests  _uploads
[root@kub_master ~]# ls /opt/myregistry/docker/registry/v2/repositories/xiaoniao/_manifests/
revisions  tags
[root@kub_master ~]# ls /opt/myregistry/docker/registry/v2/repositories/xiaoniao/_manifests/tags/
v1

6.自动化构建docker镜像解决版本问题

注:使用jenkins环境变量 BUILD_ID,此参数为构建次数

1)修改jenkins配置

2)构建

[root@kub_master ~]# ls /opt/myregistry/docker/registry/v2/repositories/xiaoniao/_manifests/tags/
v1  v4

版本已更新,版本号为构建次数

7. 防止误操作立即构建

1)修改jenkins配置

#!/bin/bash
if [ $GIT_PREVIOUS_SUCCESSFUL_COMMIT == $GIT_COMMIT ];then
     echo "no change,skip build"
     exit 0
else
     docker build -t 192.168.0.212:5000/xiaoniao:v$BUILD_ID .
     docker push 192.168.0.212:5000/xiaoniao:v$BUILD_ID
fi

2)构建,查看控制台输出

3)修改站点目录文件,并上传至远程仓库

[root@kub_node2 xiaoniao]# vim index.html 
[root@kub_node2 xiaoniao]# cat index.html |grep dokcer
        <title>小鸟飞飞飞-dokcer image 小游戏</title>
[root@kub_node2 xiaoniao]# git add .
[root@kub_node2 xiaoniao]# git commit -m 'second update'
[master 8220d7d] second update
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@kub_node2 xiaoniao]# git push -u origin master
Username for 'http://192.168.0.208': root
Password for 'http://root@192.168.0.208': 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 304 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
To http://192.168.0.208/root/xiaoniao.git
   a76dbc4..8220d7d  master -> master
Branch master set up to track remote branch master from origin.

4)jenkins重新构建

[root@kub_master ~]# ls /opt/myregistry/docker/registry/v2/repositories/xiaoniao/_manifests/tags/
v1  v4  v6

8. k8s集群部署项目

[root@kub_master ~]# kubectl run xiaoniao --image=192.168.0.212:5000/xiaoniao:v1 --replicas=2 --record
deployment "xiaoniao" created
[root@kub_master ~]# kubectl expose deployment xiaoniao --port=80 --type=NodePort 
service "xiaoniao" exposed
[root@kub_master ~]# kubectl get all
NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/xiaoniao   2         2         2            2           16s

NAME             CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
svc/kubernetes   192.168.0.1      <none>        443/TCP        2h
svc/xiaoniao     192.168.134.84   <nodes>       80:31101/TCP   4s

NAME                    DESIRED   CURRENT   READY     AGE
rs/xiaoniao-181838533   2         2         2         16s

NAME                          READY     STATUS    RESTARTS   AGE
po/xiaoniao-181838533-7mgq5   1/1       Running   0          16s
po/xiaoniao-181838533-ll11d   1/1       Running   0          16s
[root@kub_master ~]# curl 192.168.0.212:31101
<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <meta id="viewport" name="viewport" content="width=device-width,user-scalable=no" />
        <script type="text/javascript" src="21.js"></script>
        <title>小鸟飞飞飞-文章库小游戏</title>
        <style type="text/css">
            body {
                margin:0px;
            }
        </style>
        <script language=javascript>
            var mebtnopenurl = 'http://www.wenzhangku.com/weixin/';
            window.shareData = {
                    "imgUrl": "http://www.wenzhangku.com/weixin/xiaoniaofeifei/icon.png",
                    "timeLineLink": "http://www.wenzhangku.com/weixin/xiaoniaofeifei/",
                    "tTitle": "小鸟飞飞飞-文章库小游戏",
                    "tContent": "从前有一只鸟,飞着飞着就死了。"
            };
        document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() {
            
            WeixinJSBridge.on('menu:share:appmessage', function(argv) {
                WeixinJSBridge.invoke('sendAppMessage', {
                    "img_url": window.shareData.imgUrl,
                    "link": window.shareData.timeLineLink,
                    "desc": window.shareData.tContent,
                    "title": window.shareData.tTitle
                }, function(res) {
                    document.location.href = mebtnopenurl;
                })
            });

            WeixinJSBridge.on('menu:share:timeline', function(argv) {
                WeixinJSBridge.invoke('shareTimeline', {
                    "img_url": window.shareData.imgUrl,
                    "img_width": "640",
                    "img_height": "640",
                    "link": window.shareData.timeLineLink,
                    "desc": window.shareData.tContent,
                    "title": window.shareData.tTitle
                }, function(res) {
                    document.location.href = mebtnopenurl;
                });
            });
        }, false);
        function dp_submitScore(a,b){
            if(a&&b>=a&&b>10){
                //alert("新纪录哦!你过了"+b+"关!")
                dp_share(b)
            }
        }
            
        function dp_Ranking(){
            document.location.href = mebtnopenurl;
        }
        function dp_share(t){
            document.title = "我玩小鸟飞飞飞过了"+t+"关!你能超过洒家我吗?";
            document.getElementById("share").style.display="";
            window.shareData.tTitle = document.title;
        }
        </script>
        </head>
    <body>
        <div style="text-align:center;">
            <canvas id="linkScreen">
                很遗憾,您的浏览器不支持HTML5,请使用支持HTML5的浏览器。
            </canvas>
        </div>
        <div id="mask_container" align="center" style="width: 100%; height: 100%; position: absolute; left: 0px; top: 0px; display: none; z-index: 100000; background-color: rgb(255, 255, 255);">
                <img id="p2l" src="img/p2l.jpg" style="position: absolute;left: 50%;top: 50%;-webkit-transform:translateX(-50%) translateY(-50%);transform:translateX(-50%) translateY(-50%)" >
        </div>
        <div id=share style="display:none">
        <img  width=100% src="2000.png"  style="position:absolute;top:0;left:0;display:" onclick="document.getElementById('share').style.display='none';">
        </div>
        
<div style="display:none;">
这里加统计
</div>
    </body>
</html>

9. k8s  版本升级和回滚

#版本升级
[root@kub_master ~]# kubectl set image deploy xiaoniao xiaoniao=192.168.0.212:5000/xiaoniao:v4 deployment "xiaoniao" image updated [root@kub_master ~]# kubectl set image deploy xiaoniao xiaoniao=192.168.0.212:5000/xiaoniao:v6 deployment "xiaoniao" image updated
#查看历史版本
[root@kub_master ~]# kubectl rollout history deployment xiaoniao deployments "xiaoniao" REVISION CHANGE-CAUSE 1 kubectl run xiaoniao --image=192.168.0.212:5000/xiaoniao:v1 --replicas=2 --record 2 kubectl set image deploy xiaoniao xiaoniao=192.168.0.212:5000/xiaoniao:v4 3 kubectl set image deploy xiaoniao xiaoniao=192.168.0.212:5000/xiaoniao:v6
#版本回滚
[root@kub_master ~]# kubectl rollout undo deploy xiaoniao deployment "xiaoniao" rolled back [root@kub_master ~]# kubectl rollout history deployment xiaoniao deployments "xiaoniao" REVISION CHANGE-CAUSE 1 kubectl run xiaoniao --image=192.168.0.212:5000/xiaoniao:v1 --replicas=2 --record 3 kubectl set image deploy xiaoniao xiaoniao=192.168.0.212:5000/xiaoniao:v6 4 kubectl set image deploy xiaoniao xiaoniao=192.168.0.212:5000/xiaoniao:v4

10. jenkins自动部署应用到k8s

[root@kub_node1 ~]# kubectl -s 192.168.0.212:8080 get nodes
NAME            STATUS    AGE
192.168.0.184   Ready     14d
192.168.0.208   Ready     14d
192.168.0.212   Ready     14d
[root@kub_node2 xiaoniao]# echo "welcome to learn jenkins k8s" >test.html
[root@kub_node2 xiaoniao]# cat test.html 
welcome to learn jenkins k8s
[root@kub_node2 xiaoniao]# git add .
[root@kub_node2 xiaoniao]# git commit -m 'fourth update'
[master 6956c93] fourth update
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@kub_node2 xiaoniao]# git push -u origin master
Username for 'http://192.168.0.208': root
Password for 'http://root@192.168.0.208': 
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 283 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To http://192.168.0.208/root/xiaoniao.git
   f213a6d..6956c93  master -> master
Branch master set up to track remote branch master from origin.
[root@kub_master ~]# kubectl get all
NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/xiaoniao   2         2         2            2           28m

NAME             CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
svc/kubernetes   192.168.0.1      <none>        443/TCP        3h
svc/xiaoniao     192.168.134.84   <nodes>       80:31101/TCP   28m

NAME                    DESIRED   CURRENT   READY     AGE
rs/xiaoniao-181838533   0         0         0         28m
rs/xiaoniao-273391417   0         0         0         15m
rs/xiaoniao-406561480   0         0         0         26m
rs/xiaoniao-556376778   0         0         0         26m
rs/xiaoniao-706192076   2         2         2         44s

NAME                          READY     STATUS    RESTARTS   AGE
po/xiaoniao-706192076-lwk18   1/1       Running   0          44s
po/xiaoniao-706192076-nc24j   1/1       Running   0          44s
[root@kub_master ~]# curl 192.168.0.212:31101/test.html
welcome to learn jenkins k8s

[root@kub_master ~]# kubectl get all
NAME              DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/xiaoniao   2         2         2            2           28m

NAME             CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
svc/kubernetes   192.168.0.1      <none>        443/TCP        3h
svc/xiaoniao     192.168.134.84   <nodes>       80:31101/TCP   28m

NAME                    DESIRED   CURRENT   READY     AGE
rs/xiaoniao-181838533   0         0         0         28m
rs/xiaoniao-273391417   0         0         0         15m
rs/xiaoniao-406561480   0         0         0         26m
rs/xiaoniao-556376778   0         0         0         26m
rs/xiaoniao-706192076   2         2         2         44s

NAME                          READY     STATUS    RESTARTS   AGE
po/xiaoniao-706192076-lwk18   1/1       Running   0          44s
po/xiaoniao-706192076-nc24j   1/1       Running   0          44s

测试访问

[root@kub_master ~]# curl 192.168.0.212:31101/test.html
welcome to learn jenkins k8s

回滚

[root@kub_master ~]# kubectl rollout undo deploy xiaoniao 
deployment "xiaoniao" rolled back
posted @ 2020-10-05 00:24  出水芙蓉·薇薇  阅读(5419)  评论(1编辑  收藏  举报