我是靠谱客的博主 大方百褶裙,最近开发中收集的这篇文章主要介绍【Kubernetes】k8s的devops功能说明和devops搭建配置详细说明devopsg功能说明环境准备devops配置流程持续集成&交付的配置使用流程【使用方法】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

  • devopsg功能说明
  • 环境准备
  • devops配置流程
    • 安装docker及其相关配置
    • 所需镜像下载
    • registry配置【构建】
      • 拉取测试镜像
      • 拉取registry镜像
      • 创建仓库
    • gitlab配置【推送】
      • 拉取镜像及部署
      • 设置gitlab的root密码并登陆
      • 创建一个项目并设置ssh秘钥
      • 全局变量设置
      • 克隆推送
    • jenkins配置【编译】
      • 所需镜像和文件下载
      • 拉取镜像及部署
      • 配置jenkins插件【有外网的情况】
        • 第一次登陆jenkins配置
      • 配置jenkins插件【没有外网的情况】
        • 第一次登陆jenkins配置
      • jenkins插件下载和导入
        • 插件下载地址
        • 插件打包导入【网上下载的jenkins包】
      • 安装docker插件
        • 离线安装
        • 报错处理
        • 插件打包导入【自己准备的jenkins包】
      • 配置集群
      • 配置config文件
      • 创建自由风格任务【持续集成&交付】
        • 编辑触发器
        • 构建内容
          • 继续构建1
          • 继续构建2
          • 继续构建2中条件准备
    • 全局配置设置【gitlab】
      • 配置允许钩子访问本地网络
      • 配置集成
  • 持续集成&交付的配置使用流程【使用方法】

devopsg功能说明

  • DevOps简单介绍
    jenkins作为测试环境代码发布工具,sonar作为静态代码检查工具,idea作为开发工具,jira作为缺陷管理平台,upstream作为code review工具(正在研究)。DevOps最近比较火热,但是核心貌似都是jenkins

  • DevOps 是一个完整的面向IT运维的工作流,以 IT 自动化以及持续集成(CI)、持续部署(CD)为基础,来优化程式开发、测试、系统运维等所有环节。

  • DevOps 也同样要通过技术工具链完成持续集成、持续交付、用户反馈和系统优化的整合。Elasticbox 整理了 60+ 开源工具与分类,其中包括版本控制&协作开发工具、自动化构建和测试工具、持续集成&交付工具、部署工具、维护工具、监控,警告&分析工具等等,

  • 补充了一些国内的服务,可以让你更好的执行实施 DevOps 工作流。

    • 版本控制&协作开发:GitHub、GitLab、BitBucket、SubVersion、Coding、Bazaar
    • 自动化构建和测试:Apache Ant、Maven 、Selenium、PyUnit、QUnit、JMeter、Gradle、PHPUnit
    • 持续集成&交付:Jenkins、Capistrano、BuildBot、Fabric、Tinderbox、Travis CI、flow.ci Continuum、LuntBuild、CruiseControl、Integrity、Gump、Go
    • 容器平台: Docker、Rocket、Ubuntu(LXC)、第三方厂商如(AWS/阿里云)
    • 配置管理:Chef、Puppet、CFengine、Bash、Rudder、Powershell、RunDeck、Saltstack、Ansible
    • 微服务平台:OpenShift、Cloud Foundry、Kubernetes、Mesosphere
    • 服务开通:Puppet、docker Swarm、Vagrant、Powershell、OpenStack Heat
    • 日志管理:Logstash、CollectD、StatsD
    • 监控,警告&分析:Nagios、Ganglia、Sensu、zabbix、ICINGA、Graphite、Kibana

环境准备

首先需要有一套完整的集群

[root@master ~]# kubectl get nodes -o wide
NAME     STATUS   ROLES    AGE    VERSION   INTERNAL-IP      EXTERNAL-IP   OS-IMAGE                KERNEL-VERSION          CONTAINER-RUNTIME
master   Ready    master   114d   v1.21.0   192.168.59.142   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.7
node1    Ready    <none>   114d   v1.21.0   192.168.59.143   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.7
node2    Ready    <none>   114d   v1.21.0   192.168.59.144   <none>        CentOS Linux 7 (Core)   3.10.0-957.el7.x86_64   docker://20.10.7
[root@master ~]# 
[root@master ~]# kubectl cluster-info 
Kubernetes control plane is running at https://192.168.59.142:6443
CoreDNS is running at https://192.168.59.142:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.59.142:6443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
[root@master ~]#

devops配置流程

安装docker及其相关配置

  • 这个呢,需要单独准备一台集群外的机子做CI服务器
    我现在用的是192.168.59.151
[root@ciserver ~]# ip a | grep 59
    inet 192.168.59.151/24 brd 192.168.59.255 scope global noprefixroute ens33
[root@ciserver ~]# 
  • 安装docker-ce并启动
[root@ciserver ~]# yum install -y docker-ce
[root@ciserver ~]# systemctl start docker
  • 配置加速器
    文件名和内容均不能变
[root@ciserver ~]# cat /etc/docker/daemon.json
{
        "registry-mirrors":["https://frz7i079.mirror.aliyuncs.com"]
}
[root@ciserver ~]#
  • 修改docker文件
    因为本机器上运行的一个容器会作为镜像仓库,所以需要编辑docker的启动脚本,在里面ExecStart添加--insecure-registry=ip:5000,又因为后续创建jenkins容器的时候,需要使用当前主机上安装的docker,所以需要添加-H tcp://0.0.0.0:2376
    最终效果如下
[root@ciserver ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2021-11-05 15:44:14 CST; 3 days ago
     Docs: https://docs.docker.com
#路径是上面loaded ()中的
[root@ciserver ~]# vi /usr/lib/systemd/system/docker.servic
[root@ciserver ~]# cat /usr/lib/systemd/system/docker.service | grep ExecStart
#192.168.59.142修改为当前虚机的ip,其他不变。
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.59.151:5000 -H tcp://0.0.0.0:2376 -H fd:// --containerd=/run/containerd/containerd.sock
[root@ciserver ~]# 
  • 重启docker并加入自启动
[root@ciserver ~]# systemctl daemon-reload ; systemctl restart docker ; systemctl enable docker
Warning: docker.service changed on disk. Run 'systemctl daemon-reload' to reload units.
[root@ciserver ~]# systemctl is-active docker
active
[root@ciserver ~]#
  • 所有node节点ExecStart添加--insecure-registry=CI服务器ip:5000【和上面保持一致】
#node2
[root@node2 ~]# vi /usr/lib/systemd/system/docker.service
[root@node2 ~]# cat /usr/lib/systemd/system/docker.service | grep ExecStart
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.59.151:5000  -H fd:// --containerd=/run/containerd/containerd.sock
[root@node2 ~]# 
[root@node2 ~]# cat /etc/docker/daemon.json
{
        "registry-mirrors":["https://frz7i079.mirror.aliyuncs.com"]
}
[root@node2 ~]# 
[root@node2 ~]# systemctl daemon-reload ; systemctl restart docker ; systemctl is-active docker
active

#node1
[root@node1 ~]# vi /usr/lib/systemd/system/docker.service
[root@node1 ~]# cat /usr/lib/systemd/system/docker.service | grep ExecStart
#ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecStart=/usr/bin/dockerd --insecure-registry=192.168.59.151:5000  -H fd:// --containerd=/run/containerd/containerd.sock
[root@node1 ~]# cat /etc/docker/daemon.json
{
        "registry-mirrors":["https://frz7i079.mirror.aliyuncs.com"]
}
[root@node1 ~]# systemctl daemon-reload ; systemctl restart docker ; systemctl is-active docker
active
[root@node1 ~]# 

所需镜像下载

  • 因为我的集群环境没有外网,所以我所有用到的镜像都是在有外网的服务器上docker pull以后导入到我服务器上的,所以下面看到拉取镜像的主机名和我测试用的主机名不一样,不要意外。
  • 这呢只是我打包好的,里面有registry和gitlab所有需要用到的镜像,可以直接下载我打包的【不下载也没关系,下面有下载方式的】
    下载地址:gitlab-ce镜像和registry镜像.rar
    在这里插入图片描述

registry配置【构建】

拉取测试镜像

  • 先把nginx 镜像下载下来。
[root@ciserver ~]# #docker pull nginx
[root@ciserver ~]# docker images | grep nginx
nginx                                                             latest     d1a364dc548d   5 months ago    133MB
[root@ciserver ~]# 

拉取registry镜像

[root@ccx ~]# docker pull hub.c.163.com/library/registry:latest
latest: Pulling from library/registry
25728a036091: Pull complete 
0da5d1919042: Pull complete 
e27a85fd6357: Pull complete 
d9253dc430fe: Pull complete 
916886b856db: Pull complete 
Digest: sha256:fce8e7e1569d2f9193f75e9b42efb07a7557fc1e9d2c7154b23da591e324f3d1
Status: Downloaded newer image for hub.c.163.com/library/registry:latest
hub.c.163.com/library/registry:latest
[root@ccx ~]# 

创建仓库

创建容器作为docker 镜像仓库

[root@ciserver ~]# docker images | grep hub.c.163.com/library/registry
hub.c.163.com/library/registry                                    latest     751f286bc25e   4 years ago     33.2MB
[root@ciserver ~]# 
[root@ciserver ~]# docker run -d --name registry -p 5000:5000 --restart=always -v /myreg:/var/lib/registry hub.c.163.com/library/registry
98fbe2c0b3a264b63910c10f75204dd945250e7e1a9c9b8f3845d5b892c01bad
[root@ciserver ~]# 

gitlab配置【推送】

拉取镜像及部署

  • 下载gitlab中文镜像
    有1.5G,拉取可能需要一点时间【也有可能中途停止,多尝试几次,我就反复拉取了很多次,浪费我个把小时才拉取完】
[root@ccx ~]# docker pull beginor/gitlab-ce
Using default tag: latest
latest: Pulling from beginor/gitlab-ce
297061f60c36: Pull complete 
e9ccef17b516: Pull complete 
dbc33716854d: Pull complete 
8fe36b178d25: Pull complete 
686596545a94: Pull complete 
c9d6b299bcc6: Pull complete 
0f4ecbab3b37: Pull complete 
98d23afd8106: Pull complete 
615484986ecc: Pull complete 
5f0363938d34: Pull complete 
9522d2cfa31a: Pull complete 
45f229198c7d: Pull complete 
Digest: sha256:e5d73a0ebc3d80fec2130993c550b9b178ae7c7971c255509e8c9feee4c0bd6b
Status: Downloaded newer image for beginor/gitlab-ce:latest
docker.io/beginor/gitlab-ce:latest
[root@ccx ~]#
  • 导入镜像到客户机
[root@ciserver ~]# docker load -i gitlab-ce.tar 
c8aa3ff3c3d3: Loading layer    117MB/117MB
82718dbf791d: Loading layer  15.87kB/15.87kB
3a0404adc8bd: Loading layer  14.85kB/14.85kB
cd7b4cc1c2dd: Loading layer  5.632kB/5.632kB
bf3d982208f5: Loading layer  3.072kB/3.072kB
3cb57942e900: Loading layer  75.85MB/75.85MB
fec139a70fd9: Loading layer  2.048kB/2.048kB
fcfdc7d11c7b: Loading layer  2.048kB/2.048kB
634a9b449438: Loading layer  2.048kB/2.048kB
aa3fb55f308c: Loading layer  15.87kB/15.87kB
bd9f0bd5757b: Loading layer  1.375GB/1.375GB
5cef898093ce: Loading layer  2.473MB/2.473MB
Loaded image: beginor/gitlab-ce:latest
[root@ciserver ~]# docker images | grep gitlab
beginor/gitlab-ce                                                 latest     5595d4ff803e   3 years ago     1.5GB
[root@ciserver ~]# 
  • 部署bit容器
    代码都是基本知识的代码,就不做解释了。
[root@ciserver ~]# mkdir -p /data/gitlab/etc /data/gitlab/log /data/gitlab/data
[root@ciserver ~]# chmod 777 /data/gitlab/etc /data/gitlab/log /data/gitlab/data
[root@ciserver ~]# 
[root@ciserver ~]# docker run -dit --name=gitlab --restart=always -p 8443:443 -p 80:80 -p 222:22 -v /data/gitlab/etc:/etc/gitlab -v /data/gitlab/log:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab --privileged=true beginor/gitlab-ce
9c498bea946e8ef18c7ac96692cf9f0403afe4714c2cf3f47109868d8cf14c8c
[root@ciserver ~]# 

# 可以看到gitlab和registry的状态都是up的
[root@ciserver ~]# docker ps  | head -n3
CONTAINER ID   IMAGE                                                 COMMAND                  CREATED              STATUS                                 PORTS                                                                                                             NAMES
9c498bea946e   beginor/gitlab-ce                                     "/assets/wrapper"        About a minute ago   Up About a minute (health: starting)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   gitlab
98fbe2c0b3a2   hub.c.163.com/library/registry                        "/entrypoint.sh /etc…"   17 hours ago         Up 17 hours                            0.0.0.0:5000->5000/tcp, :::5000->5000/tcp                                                                         registry
[root@ciserver ~]# 
  • 在创建此容器时,因为使用了数据卷,所以gitlab容器的配置也都保存在服务器的相关目录上了。
    因为我们需要修改gitlab的配置并让其生效,所以大概等上面的gitlab运行2分钟之后,先关闭此容器,做相关操作再开启
[root@ciserver ~]# ls /data/gitlab/
data/ etc/  log/  
[root@ciserver ~]# ls /data/gitlab/data/
backups       gitlab-monitor    nginx              public_attributes.json
bootstrapped  gitlab-rails      node-exporter      redis
gitaly        gitlab-shell      postgres-exporter  trusted-certs-directory-hash
git-data      gitlab-workhorse  postgresql
gitlab-ci     logrotate         prometheus
[root@ciserver ~]# ls /data/gitlab/etc/
gitlab.rb            ssh_host_ecdsa_key.pub    ssh_host_rsa_key
gitlab-secrets.json  ssh_host_ed25519_key      ssh_host_rsa_key.pub
ssh_host_ecdsa_key   ssh_host_ed25519_key.pub  trusted-certs
[root@ciserver ~]# ls /data/gitlab/log/
gitaly          gitlab-shell      nginx              postgresql   redis           sshd
gitlab-monitor  gitlab-workhorse  node-exporter      prometheus   redis-exporter  unicorn
gitlab-rails    logrotate         postgres-exporter  reconfigure  sidekiq
[root@ciserver ~]# 

# 先停止服务
[root@ciserver ~]# docker stop  gitlab 
gitlab
[root@ciserver ~]#
  • 修改vim /data/gitlab/etc/gitlab.rb如下内容
[root@ciserver ~]# vim /data/gitlab/etc/gitlab.rb
#下面是修改后的最终效果
  13  external_url 'http://192.168.59.151' #改成自己的ip
  48  gitlab_rails['gitlab_ssh_host'] = '192.168.59.151'#改成自己的ip
  343 gitlab_rails['gitlab_shell_ssh_port'] = 222 #这是物理机端口,上面我们定义的是222
  #上面3样修改完以后保存退出
  • 修改vim /data/gitlab/data/gitlab-rails/etc/gitlab.yml如下内容
[root@ciserver ~]# vim /data/gitlab/data/gitlab-rails/etc/gitlab.yml
#下面是修改后的最终效果
 13     host: 192.168.59.151 #改成自己ip
#然后保存退出
  • 启动gitlab服务
    状态为up才正常
[root@ciserver ~]# docker start gitlab 
gitlab
[root@ciserver ~]#
[root@ciserver ~]# docker ps | head -n3
CONTAINER ID   IMAGE                                                 COMMAND                  CREATED          STATUS                             PORTS                                                                                                             NAMES
9c498bea946e   beginor/gitlab-ce                                     "/assets/wrapper"        17 minutes ago   Up 20 seconds (health: starting)   0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:222->22/tcp, :::222->22/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   gitlab
98fbe2c0b3a2   hub.c.163.com/library/registry                        "/entrypoint.sh /etc…"   17 hours ago     Up 17 hours                        0.0.0.0:5000->5000/tcp, :::5000->5000/tcp                                                                         registry
[root@ciserver ~]# 

设置gitlab的root密码并登陆

  • 打开gitlab设置root密码
    在浏览器直接输入该虚机的ip即可进入gitlab
    在这里插入图片描述
    我设置的root密码是ccxhero!【注意,密码简单的话会报界面500错误】
    密码设置好以后呢,就成登陆界面了
    在这里插入图片描述
  • 登陆
    用上面设置的密码,用户名是root,登陆
    在这里插入图片描述

创建一个项目并设置ssh秘钥

  • 点击创建一个新项目
    随便输入一个名称,选择公开,然后创建
    在这里插入图片描述
    在这里插入图片描述
  • 上面呢一个基本项目就算创建完成了,可以通过ssh的方式拉取镜像,所以我们现在给这个镜像仓库设置秘钥
    先到虚拟机上生成秘钥【就是免密登陆的那种秘钥】
#中途直接回车一次即可
[root@ciserver ~]# ssh-keygen -N ""
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
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:LAwIpATm3/uyXaarAp6DCwRWF4hTo1PeWmO678lAEzs root@ciserver
The key's randomart image is:
+---[RSA 2048]----+
|=+o=.o.          |
|=+=o+            |
|o=oo.=           |
|o o Oo..         |
| . E .o S        |
|... + ..         |
|+ oo .   o       |
|o+ .+.+ +        |
|... oB+=.        |
+----[SHA256]-----+
[root@ciserver ~]# ls .ssh/
id_rsa  id_rsa.pub  known_hosts

# 我们要的是这个文件下的公钥信息,复制,后面要用
[root@ciserver ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQz8lAkNH/VfnbgUGG1mDQ61pjuitvZ1QGzk75uHN1ib0bNrHyqjZDlRfQa+ssfr3DrUyoX3JmyH36hw56c5ulrZmlIplvqXWz5ZYHw+gYy0btBTLqfTytCJPh6AC8KDL0OIMqubf1H1GTSuhCIn86/91u2FSjdFq6mrryfEIV6IAf5FwTzDJhhvcpeLpPM4QzDf/yarnk2fs79eKSP9QIC4UnyLTW9FxKMKCrruNczLn22od0oKQzZMzeitKunRKaYtv8w8kafKE+LeXvGun/l0aVyb2EawaYQNmw3VkYlToy9NwUCySYS25NCxTonZR84ChyBfX2Jh8u/R+LyBE9 root@ciserver
[root@ciserver ~]# 
  • 现在回到网页上,配置这个公钥信息
    流程如下,粘贴我们上面复制的内容增加秘钥即可
    在这里插入图片描述
    增加以后如图
    在这里插入图片描述

全局变量设置

  • 回到项目页面,下拉是可以看到说明的,根据这来配置就行了
    在这里插入图片描述
  • 先安装git包
[root@ciserver ~]# yum install git -y
  • 配置这2个全局变量
[root@ciserver ~]# git config --global user.name "Administrator"
[root@ciserver ~]# git config --global user.email "admin@example.com"
[root@ciserver ~]# 

克隆推送

  • 项目地址选择ssh,然后复制
    在这里插入图片描述
  • 回到linux主机,执行
    git clone 粘贴刚才复制的内容【第一次克隆需要输入yes,并且现在是会返回一个空版本库的提示】
    这步骤呢就是获取项目的内容地址
[root@ciserver ~]# git clone ssh://git@192.168.59.151:222/root/p1.git
Cloning into 'p1'...
The authenticity of host '[192.168.59.151]:222 ([192.168.59.151]:222)' can't be established.
ECDSA key fingerprint is SHA256:5XE5EUkPG8E+YbDcpSMslPVpOD56dEX4cJwPX7G8Zmw.
ECDSA key fingerprint is MD5:a1:37:c1:77:e7:61:a7:ad:ac:d1:84:41:0c:24:d6:da.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.59.151]:222' (ECDSA) to the list of known hosts.
warning: You appear to have cloned an empty repository.
#上面句翻译:您似乎克隆了一个空版本库
[root@ciserver ~]# 
  • 空版本是正常的,我们可以手动编辑p1这个文件哦
    【后面就是在这里面放代码什么的任意内容】
[root@ciserver ~]# ls | grep p1
p1
[root@ciserver ~]# cd p1
[root@ciserver p1]# ls
[root@ciserver p1]# echo ccxhero(^_^) > index.html
-bash: syntax error near unexpected token `('
[root@ciserver p1]# echo 'ccxhero(^_^)' > index.html
[root@ciserver p1]# ls
index.html
[root@ciserver p1]# cat index.html 
ccxhero(^_^)
[root@ciserver p1]# 
  • 现在开始推送【推送到gitlab仓库里面】
    代码说明

    • git add . —— 推送当前路径内容
    • git commit -m "111"——111是自定义名称
    • git push——推送
  • 第一次做会有如下报错


[root@ciserver p1]# git add .
[root@ciserver p1]# git commit -m "111"
[master (root-commit) 66b6090] 111
 1 file changed, 1 insertion(+)
 create mode 100644 index.html
[root@ciserver p1]# 
[root@ciserver p1]# git push
warning: push.default is unset; its implicit value is changing in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the current behavior after the default changes, use:

  git config --global push.default matching

To squelch this message and adopt the new behavior now, use:

  git config --global push.default simple

See 'git help config' and search for 'push.default' for further information.
(the 'simple' mode was introduced in Git 1.7.11. Use the similar mode
'current' instead of 'simple' if you sometimes use older versions of Git)

No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'master'.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'ssh://git@192.168.59.151:222/root/p1.git'
[root@ciserver p1]#
  • 上面报错提示了,需要执行2个命令,然后再重新推送,就可以了
[root@ciserver p1]# git config --global push.default matching
[root@ciserver p1]#  git config --global push.default simple
[root@ciserver p1]# 
[root@ciserver p1]# git add .
[root@ciserver p1]# git commit -m "111"
# On branch master
nothing to commit, working directory clean
[root@ciserver p1]# git push
Counting objects: 3, done.
Writing objects: 100% (3/3), 220 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ssh://git@192.168.59.151:222/root/p1.git
 * [new branch]      master -> master
[root@ciserver p1]# 
  • 上面 推送成功以后呢,我们在网页上的gitlab页面刷新一下就可以看到这个内容了哦
    在这里插入图片描述

jenkins配置【编译】

所需镜像和文件下载

  • 因为我的集群环境没有外网,所以我所有用到的镜像都是在有外网的服务器上docker pull以后导入到我服务器上的,所以下面看到拉取镜像的主机名和我测试用的主机名不一样,不要意外。
  • 这呢只是我打包好的,里面有registry和gitlab所有需要用到的镜像,可以直接下载我打包的【不下载也没关系,下面有下载方式的】
    下载地址:jenkins镜像和文件完整包.rar【本想和上面gitlab放一起的,但csdn不允许上传单个文件超过1G的文件】
    在这里插入图片描述

拉取镜像及部署

  • 拉取该镜像
[root@ccx ~]# docker pull jenkins/jenkins:2.249.1-lts-centos7
2.249.1-lts-centos7: Pulling from jenkins/jenkins
75f829a71a1c: Pull complete 
8d254bb2ec6e: Pull complete 
225e7670b945: Pull complete 
b692399c3f8e: Pull complete 
60f4ba054d35: Pull complete 
c643f8846fa6: Pull complete 
8d6bcfd9cf04: Pull complete 
bcf49d8308b2: Pull complete 
e19d3746d479: Pull complete 
564cb33317a5: Pull complete 
d0fb47961855: Pull complete 
b77c53f1d798: Pull complete 
de5994812792: Pull complete 
17998489e31a: Pull complete 
d3671ff917b3: Pull complete 
Digest: sha256:2347f542074a2490d6b5803e366dbc045724d61ec5b4b9668ba8af2284963457
Status: Downloaded newer image for jenkins/jenkins:2.249.1-lts-centos7
docker.io/jenkins/jenkins:2.249.1-lts-centos7
[root@ccx ~]#
  • 导入镜像到客户机
[root@ciserver p1]# docker load -i /root/jenkins.tar 
613be09ab3c0: Loading layer  211.1MB/211.1MB
7e72cadd3040: Loading layer  332.6MB/332.6MB
1a6360904f89: Loading layer  374.8kB/374.8kB
59df8f1a2c2e: Loading layer  3.584kB/3.584kB
407412d996f1: Loading layer  9.728kB/9.728kB
e8cb66c5d1a6: Loading layer  869.4kB/869.4kB
31cb66ce2731: Loading layer   67.4MB/67.4MB
383ebb608964: Loading layer  3.584kB/3.584kB
ed2372d54ef3: Loading layer  5.897MB/5.897MB
ecaef717ccfc: Loading layer  9.728kB/9.728kB
19cf3559c8bc: Loading layer   5.12kB/5.12kB
30d3842524e8: Loading layer  3.584kB/3.584kB
3d5d0e530a7a: Loading layer  3.072kB/3.072kB
4c44a6a979b1: Loading layer  7.168kB/7.168kB
13dbb3dbcefd: Loading layer  13.82kB/13.82kB
Loaded image: jenkins/jenkins:2.249.1-lts-centos7
[root@ciserver p1]# docker images | grep jen
jenkins/jenkins                                                   2.249.1-lts-centos7   3ef73a390e4c   14 months ago   605MB
[root@ciserver p1]# 

创建数据卷所需要的目录,并把所有者和所有组改为1000
【这里为什么要改成1000,是因为容器里是一jenkins用户的身份去读数据,而在容器里jenkins的uid是1000,此镜像的dockerfile内容中也会有说明uid=1000】

[root@ciserver p1]# mkdir /jenkins;chown 1000.1000 /jenkins
  • 部署
    状态为up才正常。
[root@ciserver p1]#  docker run -dit -p 8080:8080 -p 50000:50000 --name jenkins --privileged=true --restart=always -v /jenkins:/var/jenkins_home jenkins/jenkins:2.249.1-lts-centos7
851e08d3f771fd31054bb035cc5fc59cf45f43561e9629c2d22b4c05779059ee
[root@ciserver p1]# 
[root@ciserver p1]# docker ps | grep jen
851e08d3f771   jenkins/jenkins:2.249.1-lts-centos7                   "/sbin/tini -- /usr/…"   40 seconds ago   Up 39 seconds          0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp                          jenkins
[root@ciserver p1]#

配置jenkins插件【有外网的情况】

  • 先直接在浏览器上输入本机ip:8080,看是否能访问该页面
    在这里插入图片描述
  • 上面能访问以后呢,停止该服务,做相关配置
[root@ciserver p1]# docker stop jenkins
jenkins
[root@ciserver p1]# ls /jenkins/
config.xml                           jobs              secret.key.not-so-secret
copy_reference_file.log              logs              secrets
hudson.model.UpdateCenter.xml        nodeMonitors.xml  userContent
identity.key.enc                     nodes             users
jenkins.install.UpgradeWizard.state  plugins           war
jenkins.telemetry.Correlator.xml     secret.key
[root@ciserver p1]#
  • 先配置/jenkins/hudson.model.UpdateCenter.xml
    改成如下内容【修改了url】
[root@ciserver p1]# cat /jenkins/hudson.model.UpdateCenter.xml
<?xml version='1.1' encoding='UTF-8'?>
<sites>
  <site>
    <id>default</id>
    <url>http://mirrors.tuna.tsinghua.edu.cn/jenkins</url>
  </site>
</sites>
[root@ciserver p1]# 
  • 修改/jenkins/updates/default.json 【我当前环境是没有updates生成,是不对的,可能因为我没有外网的原因?如果你也没有生成,重启jenkins或者删除容器重新部署,要有这个文件为止】
    注:里面文件很大,内容变动比较慢,所以注意点。
[root@ciserver p1]# vim /jenkins/updates/default.json
#在第一行
#把http://www.googel.com/改成http://www.baidu.com/
  • 启动jenkins
[root@ciserver p1]# docker start jenkins 
jenkins
[root@ciserver p1]# 

第一次登陆jenkins配置

  • 登陆密码查看
[root@ciserver p1]# cat /jenkins/secrets/initialAdminPassword 
05bd99aa0e7e408a8a9eb29ade914e41
[root@ciserver p1]# 
  • 有外网情况,选择推荐安装就行了
    在这里插入图片描述

  • 正常情况如下
    会全部安装完且没有报错
    在这里插入图片描述

  • 如果有失败的,点击重试,多重试以后还是不行的话用下面方法来排查

    • 1、回去检查上面的2个配置文件是否修改错误
    • 2、确定无误还是不行,删除该docker容器,重部署该容器【文件里面的内容不用删,仅仅是删除容器重新部署就好了】
    • 3、停止jenkins,再启动jenkins
      在这里插入图片描述
  • 上面安装推荐的插件,安装好之后会自动跳转到注册页面:
    在这里插入图片描述

  • 输入如上信息,点击保存并完成,跳转到实例配置:
    不要修改内容,点击保存并完成:
    在这里插入图片描述

  • 点击开始使用【如果提示点击重启也是正常的,版本不同】
    在这里插入图片描述

  • 输入用户名和密码,点击登录。
    在这里插入图片描述

  • 登陆进来以后就进入到这个界面
    在这里插入图片描述

  • 上面插件安装完进入到这个界面有警告可以不管,也可以更新。
    在这里插入图片描述

配置jenkins插件【没有外网的情况】

  • 对了,离线安装可以看这个文章【官方介绍】,但是我现在搞不懂。。。所以我下面的方式是在网上找的资料来做的
    离线安装
  • 首先要明白,能进入到这个界面,就证明jenkins已经安装完毕了,只是缺少插件罢了,所有离线安装,安装的是插件,而 不是 jenkins

第一次登陆jenkins配置

  • 先跳过插件安装
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 离谱,明明没有插件,竟然没报错。
    在这里插入图片描述

jenkins插件下载和导入

  • 插件是放到jenkins的plugins目录下的,更新这个文件前,记得先停止jenkins容器,更新完毕以后再启动

插件下载地址

  • jenkins插件下载后使用方法
    将下载好的hpi后缀的插件放到jenkins的plugins目录下,具体目标要看jenkins的具体plugins具体目录【不知道在哪可以用find搜】,然后重启jenkins即可【docker stop jenkins ,然后 docker start jenkins】
#官方
http://updates.jenkins-ci.org/download/plugins/publish-over-ssh/
http://updates.jenkins.io/download/plugins/

#清华大学
https://mirrors.tuna.tsinghua.edu.cn/jenkins/plugins/
  • 另一种方式【这个主要是查询包的名称,然后去上面地址下载】
https://plugins.jenkins.io/

在这里插入图片描述

插件打包导入【网上下载的jenkins包】

  • 我也第一次玩这破玩意,网上搜了很多jenkins的离线安装,最后发现我tm已经安装好jenkins了,现在只是缺少插件罢了【知道现在只是缺少插件,得到这个结果我折腾了一上午

  • 这个插件内容呢是我也是在网上下载别人打包好的【但没人说用法,不过无所谓了啊,我已经搞懂原理了,这个包是全套文件,但是我现在呢主要是缺少插件,所以我直接替换插件文件即可,继续往下看】

  • 下载地址:
    里面内容就是这样子的,你可以和自己生成文件对比一下,发现这是全量包。
    在这里插入图片描述

  • 我现在只是缺插件而已,所以我不全量替换【也最好别全量替换,因为环境不一样,免得报错】
    现在我部署好的情况文件是这样子的

#我部署的时候重定向到我的/jenkins文件了
[root@ciserver ~]# cd /jenkins/
[root@ciserver jenkins]# ls
config.xml                                      nodeMonitors.xml
copy_reference_file.log                         nodes
hudson.model.UpdateCenter.xml                   plugins
identity.key.enc                                secret.key
jenkins.install.InstallUtil.lastExecVersion     secret.key.not-so-secret
jenkins.install.UpgradeWizard.state             secrets
jenkins.model.JenkinsLocationConfiguration.xml  userContent
jenkins.telemetry.Correlator.xml                users
jobs                                            war
logs
[root@ciserver jenkins]# 
#前面说过插件是放这目录下的,现在没有插件所以是kong的
[root@ciserver jenkins]# ls plugins/
[root@ciserver jenkins]# 
  • 现在呢就是导入我下载的这个jenkins文件到该服务器上,然后解压该zip包
[root@ciserver ~]#  ls | grep jenkins.zip 
jenkins.zip
[root@ciserver ~]#  du -sh jenkins.zip
207M    jenkins.zip
[root@ciserver ~]#  mkdir jenkins-new
[root@ciserver ~]# mv jenkins.zip jenkins-new
[root@ciserver jenkins-new]#  cd jenkins-new/
[root@ciserver jenkins-new]#  ls
jenkins.zip
[root@ciserver jenkins-new]#  unzip jenkins.zip 
#大量输出
[root@ciserver jenkins-new]#
[root@ciserver jenkins-new]# ls
jenkins  jenkins.zip
[root@ciserver jenkins-new]# 
  • 上面说了,我只需要插件,所以我最终替换plugins文件即可【因为我updates文件也没有,所以一起替换了吧】
[root@ciserver jenkins-new]# docker stop jenkins 
jenkins
[root@ciserver jenkins-new]#
[root@ciserver jenkins-new]# ls
jenkins  jenkins.zip
[root@ciserver jenkins-new]# ls jenkins|wc -l
48
[root@ciserver jenkins-new]# cd jenkins/
[root@ciserver jenkins]#
[root@ciserver jenkins]# cp -rf plugins/* /jenkins/plugins/
[root@ciserver jenkins]# ls /jenkins/plugins/ | wc -l
167
[root@ciserver jenkins]# 
[root@ciserver jenkins]# cp -rf updates/ /jenkins/
[root@ciserver jenkins]# ls updates/|wc -l
5
[root@ciserver jenkins]# 
[root@ciserver jenkins]# ls /jenkins/updates/|wc -l
5
[root@ciserver jenkins]# 
  • 然后启动jenkins服务即可完成导入了
[root@ciserver jenkins]# docker start jenkins 
jenkins
[root@ciserver jenkins]# docker ps | grep jen
851e08d3f771   jenkins/jenkins:2.249.1-lts-centos7                   "/sbin/tini -- /usr/…"   4 hours ago    Up 9 seconds           0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:50000->50000/tcp, :::50000->50000/tcp                          jenkins
[root@ciserver jenkins]# 
  • 重新登录
    在这里插入图片描述
  • 再次进来以后有这个警告了,额,忽略。
    在这里插入图片描述

安装docker插件

  • 主页面的-manager-jenkins中找到下面这个
    在这里插入图片描述
  • 然后在可选插件中搜索docker
    安装docker和docker-build-step
    有外网的话直接在周搜索更新然后点击install安装即可【我没有外网,用下面方法】
    在这里插入图片描述
    在这里插入图片描述
    有外网的正常情况呢,就是这样的。
    在这里插入图片描述

离线安装

  • 没有外网下载docker和docker-build-step

  • 首先在网页查看这2个包的版本
    在这里插入图片描述

  • 再去网站下载这2个包对应版本的hpi包
    docker对应的是docker-plugin
    我这已经下载好并考到主机上了

[root@ciserver plugins]# ls /root  | grep docker -
delete_docker_registry_image
docker-build-step.hpi
dockerfile
dockerfile_v1
docker-plugin.hpi
[root@ciserver plugins]# ls /root  | grep docker-
docker-build-step.hpi
docker-plugin.hpi
[root@ciserver plugins]# 
[root@ciserver plugins]# docker stop jenkins 
jenkins
[root@ciserver plugins]# mv /root/docker-* .
[root@ciserver plugins]# ls | grep docker-
docker-build-step.hpi
docker-plugin.hpi
[root@ciserver plugins]# 
[root@ciserver plugins]# docker start jenkins 
jenkins
[root@ciserver plugins]# 
[root@ciserver plugins]# pwd
/jenkins/plugins
[root@ciserver plugins]# 

报错处理

  • 我最开始的报错内容没截图,翻译过来就是hpi包无法展开,我是直接删除该容器和/jenkinds下的所有内容,从头重新部署以后报错就成下面缺少依赖了,诶,这样对劲了,可以搞了。
  • 上面那种方法是对的,但是会一直缺少依赖,根据提示把依赖都下载下来然后上传到该路径中
    如上,我已经下载好几个了,现在还是缺,那就继续下,直到没有报错。。。
    在这里插入图片描述
  • 再放一次增加插件的流程
[root@ciserver plugins]# docker stop jenkins 
jenkins
[root@ciserver plugins]# mv /root/docker-java-api.hpi .
[root@ciserver plugins]# ls | grep java
docker-java-api.hpi
[root@ciserver plugins]# docker start jenkins 
jenkins
[root@ciserver plugins]#

插件打包导入【自己准备的jenkins包】

  • 这个是我后面回来重新弄的,我在网上下载了上面的基础插件导入后,好不容易离线安装完docker的2个包,后面出现问题了,报错是这样子的,然后后面配置集群进行不下去了
    在这里插入图片描述
  • 我怀疑这个包有问题,所以我自己在有外网的机子上重新搭了套环境,在有外网的机器上用我的方式配置jenkins,然后我看文件大小,有333M,而我网上下载的,只有200多M,艹,网上的资源不仅没有使用说明,浪费我积分下载的东西不能用,太过分了。
[root@ccx ~]# du -sh /jenkins/
333M	/jenkins/
[root@ccx ~]# 
  • 所以呢,这份是我花了大量时间重新弄的,这就是教程,也保证能用,自己去下载吧【和上面网上下载的一起打包了】,所以这和上面网上下载的jenkins包处,只需下载一次即可。
    下载地址:

  • 我导入了我打包的,确定这个包大小和我外网主机上是一样的
    因为这是我自己配置的【包含docker插件】,所以我准备全量替换了【我是用tar包打包的】
    前提是你使用我上面的方式部署完jenkins~

[root@ciserver jk]# du -sh *
333M    jenkins
327M    jenkins.tar
[root@ciserver jk]# 
  • 全量替换比较省事,直接替换/jenkins文件即可【注意,我部署的时候是吧jenkins的文件同步到我本地的/jenkins了,所以你要确认你是啥文件啊】
    操作这个要先停止jenkins,后面的命令都是基础的,就不说明了,注意看过程吧。
[root@ciserver jk]# docker stop jenkins
[root@ciserver jk]# rm -rf /jenkins/*
[root@ciserver jk]# mv jenkins.tar /jenkins/
[root@ciserver jk]# cd /jenkins/
[root@ciserver jenkins]# ls
jenkins.tar
[root@ciserver jenkins]# 
[root@ciserver jenkins]# tar xvf jenkins.tar
#大量输出
[root@ciserver jenkins]# ls
jenkins  jenkins.tar
[root@ciserver jenkins]# du -sh *
333M    jenkins
327M    jenkins.tar
[root@ciserver jenkins]# rm -rf jenkins.tar 
[root@ciserver jenkins]# 
[root@ciserver jenkins]# mv jenkins/* .
[root@ciserver jenkins]# ls |wc -l
26
[root@ciserver jenkins]# rm -rf jenkins/
[root@ciserver jenkins]# ls |wc -l
25
[root@ciserver jenkins]# du -sh /jenkins/
333M    /jenkins/
[root@ciserver jenkins]# 
[root@ciserver jenkins]# ls /jenkins/plugins/ | wc -l
174
[root@ciserver jenkins]#
[root@ciserver jenkins]# ls
config.xml                                          nodes
copy_reference_file.log                             plugins
hudson.model.UpdateCenter.xml                       queue.xml
hudson.plugins.emailext.ExtendedEmailPublisher.xml  queue.xml.bak
hudson.plugins.git.GitTool.xml                      secret.key
identity.key.enc                                    secret.key.not-so-secret
jenkins.install.InstallUtil.lastExecVersion         secrets
jenkins.install.UpgradeWizard.state                 updates
jenkins.model.JenkinsLocationConfiguration.xml      userContent
jenkins.telemetry.Correlator.xml                    users
jobs                                                war
logs                                                workflow-libs
nodeMonitors.xml
[root@ciserver jenkins]# 
  • 最后启动jenkins服务,去网站看看
[root@ciserver jenkins]# docker start jenkins 
jenkins
[root@ciserver jenkins]# 
  • 啥都不需要配置,直接登录就行【user:admin,passwd:ccxhero!】
    哈哈正常了,上面其实可以看到我内网部署的是英文版本的【缺少中文插件】,现在一切正常,警告也和外网的一样,而且docker插件也正常,nice】可以继续做下面的配置集群流程了【了解原理和重新在外网配环境到导入到内网环境一切正常,到这,花了我一天半的时间】。
    在这里插入图片描述
    在这里插入图片描述

配置集群

  • 依次点击下面菜单
    在这里插入图片描述

  • 做如下配置流程
    tcp://192.168.59.151:2376【ip改成自己的主机】
    4个步骤做完能出现版本号就可以了,这是就代表jenkins已经连接到物理机的docker了
    在这里插入图片描述

  • 最后点击save即可
    在这里插入图片描述

    • 在jenkins首页,依次点击系统管理-系统配置,找到docker build ,在docker build里输入 tcp://192.168.59.151:2376,点击test connection

在这里插入图片描述

  • 最后点击保存,配置就完毕了,此时,jenkins也和docker成功关联起来了,并且此时的jenkins也具备了对docker操作的能力了,比如编译推送等。
    在这里插入图片描述

  • 后面gitlab要和jenkins进行联动,所以必须要对jenkins的安全做一些设置,依次点击-系统管理-全局安全配置,需要修改下面2项内容

  • 1、授权策略,勾选“匿名用户具有可读权限”,点击保存
    在这里插入图片描述

  • 2、跨站请求伪造保护【注:这个跨站点伪造保护(CSFR)请求必须要关闭,但是在jenkins版本自2.2xx以后,在web界面里已经没法关闭了
    在这里插入图片描述所以需要在jenkins容器中关闭,具体操作流程看下面,注意看注释说明。

#先获取jenkins的脚本,如下,是/usr/local/bin/jenkins.sh
[root@ciserver jenkins]# docker top jenkins
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
cuichon+            29787               29747               0                   11:02               pts/0               00:00:00            /sbin/tini -- /usr/local/bin/jenkins.sh
cuichon+            29848               29787               4                   11:02               pts/0               00:03:07            java -Duser.home=/var/jenkins_home -Djenkins.model.Jenkins.slaveAgentPort=50000 -jar /usr/share/jenkins/jenkins.war
[root@ciserver jenkins]# 
#然后进入到容器中并编辑这个运行脚本
[root@ciserver jenkins]# docker exec -u root -it jenkins bash
[root@a2b493904798 /]# vi /usr/local/bin/jenkins.sh
# 修改37行内容
#修改前
     37   exec java -Duser.home="$JENKINS_HOME" "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${j        enkins_opts_array[@]}" "$@"
#修改后
     37   exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfigur        ation.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkin        s_opts_array[@]}" "$@"

#然后保存退出
[root@a2b493904798 /]# cat /usr/local/bin/jenkins.sh | grep 'Duser.home'  
  exec java -Duser.home="$JENKINS_HOME" -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true "${java_opts_array[@]}" -jar ${JENKINS_WAR} "${jenkins_opts_array[@]}" "$@"
[root@a2b493904798 /]#
#然后退出容器,并重启jenkins
[root@a2b493904798 /]# exit
exit
[root@ciserver jenkins]# docker restart jenkins
jenkins
[root@ciserver jenkins]# 

再次回到网站,就可以看到这个已经被关闭了
在这里插入图片描述

配置config文件

  • 先查看客户端版本
[root@ciserver jenkins]# kubectl version --short
Client Version: v1.21.0
Server Version: v1.21.0
[root@ciserver jenkins]#
  • 去官网下载对应的kubectl版本文件
    Install Tools
    需要确定这个包有set子命令
    注:官网下载的版本好像没有set子命令,可以直接点击下载kubect:v1.21.0
[root@ciserver p1]# /root/kubectl s
scale  set    
[root@ciserver p1]# /root/kubectl s
  • 然后把前面安全管理里创建过的kubeconfig文件kc1【也可以直接拷贝admin.conf文件】拷贝到当前主机上,和上面的kubectl放在一起
[root@ciserver jenkins]# ls /root| egrep "kc1|kubectl"
kc1
kubectl
[root@ciserver jenkins]# 
[root@ciserver jenkins]# du -sh /root/kc1 /root/kubectl 
8.0K    /root/kc1
45M     /root/kubectl
[root@ciserver jenkins]#
  • 然后把这2个文件拷贝到jenkins容器里
[root@ciserver ~]# chmod +x kubectl 
[root@ciserver ~]# docker cp kubectl jenkins:/
[root@ciserver ~]# docker cp kc1 jenkins:/
[root@ciserver ~]# 
  • root身份进入到jenkins容器里给文件赋予权限并测试
    正常情况呢,可以直接在容器内部使用kubectl访问到我们的集群了
[root@ciserver ~]# docker exec -u root -it jenkins  bash
[root@a2b493904798 /]#    
[root@a2b493904798 /]# chmod +x kubectl 
[root@a2b493904798 /]# chmod 644 kc1
[root@a2b493904798 /]# 
[root@a2b493904798 /]# ./kubectl --kubeconfig=kc1 get nodes
NAME      STATUS    AGE
master    Ready     123d
node1     Ready     123d
node2     Ready     123d
[root@a2b493904798 /]#

创建自由风格任务【持续集成&交付】

  • 我这做的功能是:修改通过deployment创建的nginx容器,后面修改某代码并自动将deployment的nginx镜像替换掉【也就是实现一个修改代码以后自动重新发布的过程】,也就是说实现实现自动替换容器镜像代码
    如果有其他需求可以去网上搜索相关任务的创建方法【如流水线,或构建一个多配置项目的maven等待】,上面部署都一样,仅仅是这的任务方式不一样罢了。
  • 先创建一个自由风格的基本任务吧
    在这里插入图片描述

编辑触发器

作用就是生成一个链接,这个链接用于gitlab在触发jenkins时用到的链接
在这里插入图片描述
记住下面连接,后面配置gitlab要用

#如上,我设置的令牌是123456
#所以,复制上面红圈中的代码,修改下面两个值,前面ip改为自己的,后面改为自己定义的令牌
 http://192.168.59.151:8080/job/p1/build?token=123456

构建内容

  • 这个可以简单理解更新代码仓库的文件
  • 增加构建步骤内容:执行shell
    下面的~目录实际上是容器中的/var/jenkins_home目录
    在这里插入图片描述
    shell命令固定内容,不要增删【ip替换为自己的】。
cd ~ 
rm -rf p1
git clone http://192.168.59.151/root/p1.git

我们先在容器内部下载一个p1【测试是否能通】,这个拉取是前面gitlab的内容,不懂的去看看前面的说明

[root@a2b493904798 jenkins_home]# pwd
/var/jenkins_home
[root@a2b493904798 jenkins_home]# git clone http://192.168.59.151/root/p1.git
Cloning into 'p1'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
[root@a2b493904798 jenkins_home]# ls | grep p1
p1
[root@a2b493904798 jenkins_home]# 
[root@a2b493904798 jenkins_home]# rm -rf p1
[root@a2b493904798 jenkins_home]# 

上面代码中为什么要做rm操作?
测试:回到主机,如果这个文件存在的话,我们拉取时候是会报错的,会提示文件存在,所以我们要先删除这个文件,重新拉取,就相当于更新这个代码文件了。


[root@ciserver ~]# ls | grep p1
p1
[root@ciserver ~]# git clone ssh://git@192.168.59.151:222/root/p1.git
fatal: destination path 'p1' already exists and is not an empty directory.
[root@ciserver ~]# 
继续构建1
  • 再次增加构建步骤,在构建-增加构建步骤里选择build/publish docker image,增加内容如下
    这个是在上面构建下增加的哦。
/var/jenkins_home/p1/
192.168.59.151:5000/cka/nginx:${BUILD_NUMBER}

在这里插入图片描述

继续构建2
  • 再次增加构建步骤,在构建-增加构建步骤里选择新增SHELL
    这个是在上面构建下接着添的哦【第三次了】,应该能看懂吧

在这里插入图片描述

  • 代码解释
export KUBECONFIG=/kc1
/kubectl set image deployment/web1 nginx="192.168.59.151:5000/cka/nginx:${BUILD_NUMBER}" -n safe
#/kc1 是管理集群的文件【看上面配置config文件说明】
# deployment/web1 这是pod名称【集群内】,后面会在集群master节点上创建
# nginx="192.168.59.151:5000/cka/nginx:${BUILD_NUMBER}" -nginx镜像地址【集群内】
#-n safe web1这个pod是在哪个命名空间创建的【集群内】

继续构建2中条件准备
  • 下面是在集群内的master节点上操作的
    使用nginx镜像创建上面定义的名称为web1的deployment和svc
[root@master sefe]# cat web1.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web1
  name: web1
spec:
  replicas: 1
  selector:
    matchLabels:
      app1: web1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app1: web1
        app2: web2
    spec:
      terminationGracePeriodSeconds: 0
      containers:
      - image: nginx
        name: nginx
        imagePullPolicy: IfNotPresent
        resources: 
          requests:
            cpu: 400m
status: {}
[root@master sefe]# kubectl apply -f web1.yaml 
deployment.apps/web1 created
[root@master sefe]# kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
web1-ffffb5589-g9cf4   1/1     Running   0          6s
[root@master sefe]# 
[root@master sefe]# kubectl expose --name=svc1 deployment web1 --port=80 --type=NodePort
service/svc1 exposed
[root@master sefe]# kubectl get svc
NAME   TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
svc1   NodePort   10.104.83.254   <none>        80:30404/TCP   3s
[root@master sefe]# 

上面svc的端口是30404,现在我们去浏览器用这个端口访问,看能否正常访问
能出现下面内容为正常
在这里插入图片描述

全局配置设置【gitlab】

  • 至此,jenkins就配置完毕了,现在回到gitlab中,继续做下面2样配置

配置允许钩子访问本地网络

设置里面下拉最最后,有个Outbound requests 展开,把下面选项勾上-保存修改。
在这里插入图片描述

配置集成

  • 先进入项目-设置-集成
    在这里插入图片描述
  • 链接(URL)内容是上面jenkins中的编辑触发器时的地址内容,然后点击增加web钩子。
    在这里插入图片描述
  • 增加以后下面就会多一个url出来
    在这里插入图片描述
  • 测试
    点击test,Push events
    在这里插入图片描述
    能出现这个内容就算成功了,此致,全部配置完成。
    在这里插入图片描述

持续集成&交付的配置使用流程【使用方法】

  • 使用方法和总结去这篇博客:
    【Kubernetes】k8s的devops搭建详细流程、持续集成&交付的配置使用流程和jenkins推送常见报错处理方法

  • 上面就是整个devops的完整搭建流程了,内容有点多,搭建过程需要细心;
    我的环境就是内网环境,虽然过程麻烦,但能搞! 整个devops搭建完成和排错,我花了整整3天时间。

在这里插入图片描述

最后

以上就是大方百褶裙为你收集整理的【Kubernetes】k8s的devops功能说明和devops搭建配置详细说明devopsg功能说明环境准备devops配置流程持续集成&交付的配置使用流程【使用方法】的全部内容,希望文章能够帮你解决【Kubernetes】k8s的devops功能说明和devops搭建配置详细说明devopsg功能说明环境准备devops配置流程持续集成&交付的配置使用流程【使用方法】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部