部署k8s+docker+CI/CD集成部署
登录gitlab--admin area(顶部菜单栏小扳手图标)--左侧面板settings--Sign-up Restrictions--去除勾选sign-up enabled。点左上角Gitlab首页---点你创的项目web---点web里面初始的RENAME.md文件---点Edit--改个名字叫index.html再随便写点内容 看下图。登录gitlab--admin area--new
软件版本
kubectl.kubeadm.kubelet三个组件 是1.18版本
docker 是19.03.10版本
git 是1.8.3.1版本
gitlab 是10.2.2版本
jenkins 是2.222版本
registry 是2版本
实验环境:
四台服务器
master:192.168.27.10:docker+registry私有仓库+kubectl.kubeadm.kubelet三个组件
前提三个组件版本必须一致 要指定
node01:192.168.27.20:docker+kubeadm+bubelet 这两个k8s的组件 版本跟master一样
jenkins:192.168.27.30:jenkins+docker+git
gitlab:192.168.27.40:gitlab+docker+git
为什么所有都要装dockers 因为私有仓库原因 别的dockerhost想要上传下载镜像 需要配置文件指定私有仓库的ip
四台全部操作
更改主机名
hostnamectl set-hostname master
hostnamectl set-hostname node01
hostnamectl set-hostname jenkins
hostnamectl set-hostname gitlab
添加对应域名解析
cat >> /etc/hosts << EOF
192.168.27.10 master
192.168.27.20 node01
192.168.27.30 jenkins
192.168.27.40 gitlab
EOF
关闭firewalld,SElinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
时间同步
timedatectl set-timezone Asia/Shanghai;timedatectl set-local-rtc 0
禁用swap(关闭虚拟内存,储存在硬盘的,影响读写效率)
swapoff -a && sed -i '/swap/s/^/#/' /etc/fstab
free -h 查看禁用效果
配置阿里源
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
首先服务器都安装docker
我提前把docker包下载好了
这里我用的rpm安装的
mkdir /backup
把下载好的rpm 拖到/backup下
yum -y lcoalinstall *.rpm
配置阿里云镜像加速器
可以使用阿里云镜像加速器,当然,前提需要每个人都申请注册一个阿里云账号。
注册成功后,在阿里云官网上,找到`容器镜像服务`
mkdir -p /etc/docker
tee /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://1dmptu91.mirror.aliyuncs.com"]
}
EOF
重启加载和启动 docker
systemctl daemon-reload
systemctl restart docker
其他三台把以上都操作一遍
master服务器:
创建基于registry的私有仓库:
注:registry是官方打包好的服务,端口为5000,就像其他虚拟出来的web服务一样
注意,这里我们使用的是registry:2版本,还有一个registry镜像,这两个没有什么大的区别。**registry: 是用Python语言写的,registry:2使用Go 语言写的**,理论上来说,registry:2这个版本运行更快些。**
下载仓库
docker pull registry:2
运行私有仓库服务
docker run -itd --name registry --restart=always -p 5000:5000 -v /registry:/var/lib/registry registry:2
-v: 挂载目录。 宿主机的目录(如果没有此目录会自动创建):容器内的目录。(数据卷:实现容器与宿主机之间的共享,通过一个目录"卷")
--restart=always:随着docker服务的启动而启动此容器
镜像重命名(要上传的镜像名需要注明私仓的ip)
因为我们使用的私有镜像,在上传或下载的时候,都需要我们将镜像的名称直接重命名,要注明它私有仓库的IP地址:暴露端口。切记是必须,否则将识别不到仓库而上传或下载失败。
格式为:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
命令:
docker tag nginx:latest 192.168.100.205:5000/nginx
编辑docker配置文件(因为默认是拉取docker官方的镜像,需要重新指定)
#初次上传命令:
docker push 192.168.27.10:5000/nginx #上传私有仓库会报错
#以下是报错:
#The push refers to repository [192.168.27.10:5000/nginx]
#Get https://192.168.27.10:5000/v2/: http: server gave HTTP response to HTTPS client
//**上传镜像失败原因如下:**
因为docker默认是从dockehub上下载镜像的,需要在本地指定一下私有仓库的IP加端口,这是因为 Docker默认不允许非HTTPS 方式推送镜像。 如果没做这一步,会报HTTPS的错。
#编辑docker的配置文件,指定私有仓库地址
vim /usr/lib/systemd/system/docker.service
[Service]
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.27.10:5000
#修改完成之后重新加载docker和重启
systemctl daemon-reload
systemctl restart docker
#再次上传测试
docker push 192.168.27.10:5000/nginx
**本地dockerhost查看私有仓库镜像方法:进入到私有仓库的共享目录**
cd /registry/docker/registry/v2/repositories/
ls
其他dockerhost上传私有仓库
这里注意,既然是私有仓库,肯定是要考虑多台DockerHost共用的情况, 如果有其他的DockerHost想要使用私有仓库,仅需要修改docker的配置文件,指定私有仓库的IP和端口即可。当然别忘了,更改过配置文件之后, daemon-reload ,restart docker服务。
###### 修改docker配置文件
vim /usr/lib/systemd/system/docker.service
[Service]
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.27.10:5000
systemctl daemon-reload
systemctl restart docker.service
docker info
#看到私仓ip即为成功
Insecure Registries:
192.168.27.10:5000
127.0.0.0/8
查看仓库有哪些镜像
curl -XGET http://192.168.27.10:5000/v2/_catalog
-X/--request 指定什么命令
-G/--get 以get的方式来发送数据
-E/--cert cert[:passwd] 客户端证书文件和密码 (SSL)
-T/--upload-file 上传文件
curl http://localhost:5000/v2/_catalog #查看本地私有仓库镜像
curl http://192.168.27.10:5000/v2/nginx/tags/list
{"name":"nginx","tags":["latest"]} //并看到详细的自定义 版本号
接下来安装k8s
master服务器和node01服务器
配置集群无密登录 master到node01无密码
ssh-keygen -t rsa
ssh-copy-id root@node01
优化内核参数
[root@master ~]# modprobe br_netfilter
cat > /etc/sysctl.d/kubernetes.conf << EOF
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
net.ipv4.tcp_tw_recycle = 0
vm.swappiness = 0
vm.overcommit_memory = 1
vm.panic_on_oom = 0
fs.inotify.max_user_instances = 8192
fs.inotify.max_user_watches = 1048576
fs.file-max = 52706963
fs.nr_open = 52706963
net.ipv6.conf.all.disable_ipv6 = 1
net.netfilter.nf_conntrack_max = 2310720
EOF
###运行下面这条命令如果提示类似于netfilter.nf_conntrack_max 这个文件没有找不到
解决方案 重启docker 大概可能就是你的docker没有启动 前面重启失败了
sysctl -p /etc/sysctl.d/kubernetes.conf
[root@master ~]# scp /etc/sysctl.d/kubernetes.conf root@192.168.27.20:/etc/sysctl.d/
[root@node01 ~]# sysctl -p /etc/sysctl.d/kubernetes.conf
**到此基本环境准备完毕**,需要在各节点上准备`kubernetes`的`yum`源,这里推荐使用阿里云的`yum`源先来`master`节点上操作
master服务器:
Kubernetes的阿里源添加
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
部署k8s组件
前面说过 组件版本必须都一样
我直接yum安装
yum install kubelet-1.18.0 kubeadm-1.18.0 kubectl-1.18.0 -y --nogpgcheck
systemctl start kubelet
systemctl enable kubelet
注:阿里源安装时,需要添加--nogpgcheck参数
更改docker默认Cgroup驱动(master服务器和node01服务器)
在/etc/docker/daemon.json文件中,添加一句话即可,当然这个和我们的设置加速器写在一起了。
cat >> /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://1dmptu91.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
systemctl daemon-reload
systemctl restart docker
PS: 不要忘了重新加载以及重启docker
kubeadm初始化
至此,准备工作做完,可以开始初始化,可是由于国内网络环境限制,我们不能直接从谷歌的镜像站下载镜像,有两种方法可以解决,第一种:需要我们手动从docker镜像站下载镜像,然后重新命名,也可以用脚本来实现。这里我们采用第二种:在初始化k8s的时候,指定镜像源为阿里云。
第一种:初始化时指定镜像仓库为阿里云
kubeadm init --kubernetes-version=v1.18.0 --image-repository registry.aliyuncs.com/google_containers --apiserver-advertise-address 192.168.27.10 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12
第二种:或者还有其他方案将k8s集群状态配置问一个yaml文件,然后从yaml文件初始化
在初始化之前需要先把一些下载好镜像文件 提前导入好
导入本地镜像文件
docker load -i 跟名字
一个是8个包,我都提前下载直接随便拉某个目录下加载就行
coredns.tar
etcd.tar
kube-apiserver.tar
kube-controller-manager.tar
kube-proxy.tar
pause.tar
flannel.tar
kube-scheduler.tar
kubeadm config print init-defaults > kubeadm-config.yaml
vim kubeadm-config.yaml
apiVersion: kubeadm.k8s.io/v1beta2
bootstrapTokens:
- groups:
- system:bootstrappers:kubeadm:default-node-token
token: abcdef.0123456789abcdef
ttl: 24h0m0s
usages:
- signing
- authentication
kind: InitConfiguration
localAPIEndpoint:
advertiseAddress: 192.168.27.10
bindPort: 6443
nodeRegistration:
criSocket: /var/run/dockershim.sock
name: master
taints:
- effect: NoSchedule
key: node-role.kubernetes.io/master
---
apiServer:
timeoutForControlPlane: 4m0s
apiVersion: kubeadm.k8s.io/v1beta2
certificatesDir: /etc/kubernetes/pki
clusterName: kubernetes
controllerManager: {}
dns:
type: CoreDNS
etcd:
local:
dataDir: /var/lib/etcd
imageRepository: registry.cn-hangzhou.aliyuncs.com/google_containers
kind: ClusterConfiguration
kubernetesVersion: v1.18.0
networking:
dnsDomain: cluster.local
serviceSubnet: 10.96.0.0/12
podSubnet: 10.244.0.0/16
scheduler: {}
---
apiVersion: kubeproxy.config.k8s.io/v1alpha1
kind: KubeProxyConfiguration
mode: "ipvs"
//初始化集群
kubeadm init --config=kubeadm-config.yaml
成功后提示:
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
> PS: 下面这个结果做一个保存
kubeadm join 192.168.27.10:6443 --token a3u2oa.6fd6vb1ujbft3737 \
--discovery-token-ca-cert-hash sha256:5509d86f19fb74d0dea02bb1884c5b8eb6a9092ed956c75fd1bb1c095c38f80b
重启k8s
systemctl restart kubelet
查看节点状态
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master NotReady master 5m3s v1.18.0
**可以看出master的状态是未就绪(NotReady**),之所以是这种状态是因为还缺少一个附件**flannel**,没有网络各Pod是无法通信的
//添加网络组件(flannel),组件flannel可以通过https://github.com/coreos/flannel中获取
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
我是提前下载好 kube-flannel.yml 随便拉到某目录下
kubectl apply -f kube-flannel.yml
[root@master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
master Ready master 13m v1.18.0
以上是主节点的安装部署,然后是node01节点的安装,和加入集群,这里注意,验证,node01节点已经准备好了相关的镜像。
下面这条命令就是前面初始化做保存的 在node01上直接复制过来确定
[root@node01 ~]# kubeadm join 192.168.27.10:6443 --token njus35.kw3hxkys3urmnuob --discovery-token-ca-cert-hash sha256:05761b73b571c18eebd6972fb70323cd3c4d8e0aa7514efa2680411310424184
node节点需要几个镜像,可以手动先下载一下,或者从master节点同步
这个可以先查看下都有没有
docker images (查看镜像)
下面这三个镜像就是master管理节点上前面初始化之前要加载的其中的三个 没有可以从master上直接打包成tar包cp过来
保存镜像为tar包
docker save -o nginx.tar nginx:latest
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-proxy:v1.18.0
docker pull quay.io/coreos/flannel:v0.15.1
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
等待一会去master节点验证。等待的是同步flannel网络。
[root@master ~]# kubectl get nodes (没出错的情况下 等node01 Ready 需要多等一会)
NAME STATUS ROLES AGE VERSION
master Ready master 18m v1.18.0
node01 Ready <none> 68s v1.18.0
> PS: 确保所有pod都是running状态。(没出错的情况下 等所有running 需要多等一会)
//在master验证k8s组件 如下所示代表安装组件完整且是running状态
[root@master ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-7ff77c879f-qwb6g 1/1 Running 0 60m
coredns-7ff77c879f-zhsgv 1/1 Running 0 60m
etcd-master 1/1 Running 0 60m
kube-apiserver-master 1/1 Running 0 60m
kube-controller-manager-master 1/1 Running 0 60m
kube-flannel-ds-s6cfd 1/1 Running 0 9m16s
kube-flannel-ds-v75p7 1/1 Running 0 32m
kube-flannel-ds-xhn7c 1/1 Running 0 11m
kube-proxy-6ptb9 1/1 Running 0 60m
kube-proxy-82lc6 1/1 Running 0 9m16s
kube-proxy-h5g68 1/1 Running 0 11m
kube-scheduler-master 1/1 Running 0 60m
//设置kubectl命令行工具自动补全功能
yum install -y bash-completion
source /usr/share/bash-completion/bash_completion
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
//记得三台节点最后要执行systemctl enable kubelet 忘记的集群就启动不了
//为了以后我们写yaml文件方便些,这里设置tab键空格个数
[root@master ~]# vim .vimrc
set tabstop=2
[root@master ~]# source .vimrc
接下来ip是30和40的都要安装git
安装git
yum -y install git
声明自己的名字和邮箱
git config --global user.name "lhy"
git config --global user.email "1793594332@qq.com"
创建版本库目录
mkdir /data
cd /data
git init #初始化当前目录为版本库
ls -a
cd .git
cd .. 返回上级目录
自动生成.git目录:
branches 分支目录
config 定义目录特有的配置选项
description 仅供git web使用
HEAD 指定当前的分支
hooks git钩子文件
info 包含一个全局排除文件(exclude)
objects 存放所有的数据内容
refs 指针文件
index 暂存区文件
接下来jenkins服务器192.168.27.30安装jenkins
安装:
复制jenkins包到虚拟机/root下
cd /root
yum -y localinstall jenkins-2.222-1.1.noarch.rpm
2.修改配置文件(默认jenkins端口为8080,如果同gitlab一起安装,需要修改端口)
vim /etc/sysconfig/jenkins
修改:
JENKINS_USER="root"
JENKINS_PORT="8081"
保存退出
3.启动jenkins
systemctl start jenkins
systemctl enable jenkins
4.加快更新
vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
更改:<url>https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json</url>
保存退出
vim /var/lib/jenkins/updates/default.json
更改第一行:把www.google.com改成www.baidu.com
保存退出
systemctl restart jenkins
5.登录jenkins
http://192.168.27.30:8081
6.输入密码
cat /var/lib/jenkins/secrets/initialAdminPassword
复制加密密码字段,粘贴到web
7.修改admin用户密码
右上角--admin点击下拉三角--Configure--Password字段--修改密码--save保存
重新登录
选择安装插件
点左上角jenkins首页--Manage Jenkins--Manage Plugins--查看插件
- 复制插件包jenkins-plugins.tar到虚拟机
- cd /var/lib/jenkins/plugins
(2)复制jenkins-plugins.tar到目录下
(3)tar xf jenkins-plugins.tar.gz
(4)mv plugins/* ./
把插件包和另一个plugins删了
重启服务:systemctl restart jenkins
网页刷新 看下点左上角jenkins首页--Manage Jenkins--Manage Plugins--installed(已安装的插件)含有图下的就行了
然后gitlab服务器192.168.27.40 安装gitlab
复制gitlab包到/ 使用rpm安装
rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
(3)vim /etc/gitlab/gitlab.rb
修改:
external_url 'http://192.168.27.40'
保存退出
(4) 配置启动 gitlab
gitlab-ctl reconfigure
(5)gitlab服务管理命令(开启/关闭/重启)
gitlab-ctl start/stop/restart
(6)登录gitlab
http://192.168.27.40
管理员:root
密码:初始配置新密码,最少8位
切记生产环境是不允许随便用root的
登录之后 两种插件选择都不选 直接×掉 跳过进入gitlab
取消注册功能
登录gitlab--admin area(顶部菜单栏小扳手图标)--左侧面板settings--Sign-up Restrictions--去除勾选sign-up enabled
--下拉选save保存
修改登录欢迎界面
登录gitlab--admin area--Appearance--填写管理员联系方式和logo--save
项目创建流程
(1)创建用户
登录gitlab--admin area--new user--添加用户名zhangsan 、邮箱
zhangsan@163.com--create--edit--修改密码
(2)创建group
登录gitlab--admin area--new group--组名dev--create group--zhangsan--权限Developer
(3)创建项目
登录gitlab--admin area--new project--组root改dev或root也行--名字web 改注意选择组
点Public (公共)
Gitlab用户在组中有五种权限:
Guest:可以创建issue、发表评论,不能读写版本库 issue(链接)
Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限 push(上传)
Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限 tag(标签)
Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
Guest:来宾
Reporter: 报告
Developer: 开发
Master: 超级管理员
Owner: 你(创建组的人)
Gitlab中的组和项目有三种访问权限:
Private:只有组成员才能看到
Internal:只要登录的用户就能看到
Public:所有人都能看到
Private: 私有
Internal: 内部
Public: 公用
上传ssh-key
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
管理员登录:右上角--用户--settings--SSH Keys--粘贴进去
点左上角Gitlab首页---点你创的项目web---点web里面初始的RENAME.md文件---点Edit--改个名字叫index.html再随便写点内容 看下图
cd /data
克隆下载项目
git clone http://192.168.27.40/root/web.git
修改文件内容,再推送上传代码(管理员身份)
cd web/
cat index.html (就有你刚刚随便写的内容)
vim index.html 添加点东西提交上传
git add .
git commit -m ”add index.html”
git push -u origin master (把改动的内容推送到远程仓库)
下载同步代码
git pull origin master
ls
cat index.html
接下来jenkins关联gitlab
(1)jenkins操作:点击左上角logo--回到主页面--选择新项目“New Item”--填写项目名web--选择项目类型“Freestyle project”--save保存
(2)jenkins服务器也创建密钥复制公钥到zhangsan里
上传ssh秘钥
本地用户创建秘钥:ssh-keygen -t rsa
复制公钥内容:cat /root/.ssh/id_rsa.pub
gitlab操作:zhangsan登录:右上角--用户--settings--SSH Keys--粘贴进去
(3)gitlab和jenkins两台服务器互相建立关系
ssh-copy-id root@192.168.27.40
ssh-copy-id root@192.168.27.30
(2)gitlab操作:点web配置项目--源代码管理Source Code--选git--URL填写gitlab存储库网址(git@192.168.27.40:web/web.git)--报红字错误,则需要添加私钥认证--Add
--Kind选password--填写用户root和密码--ADD添加--Credentials身份选--save保存--退出去重新看有没有红
jenkins:
web项目-- configure -- build triggers --Build triggers勾选最长选项 -- 点击高级Advanced--选择Filter branches by name --在include填写master -- 点击generate生成令牌-复制令牌--往上划查看触发器顶部url路径
-- save保存
159ca7b5548fec72c8d81386d4256376 用自己的令牌和URL路径
http://192.168.27.20:8081/project/web
在gitlab网站
web项目 -- ⚙ settings-- integrations集成 -- 把复制的令牌和url粘贴过来 -- add webhook
/此时如果直接添加可能会报错。添加完成后提示本地连接不了,因为gitlab默认设置不允许向自 己 发 送 web hook!
往下要修改gitlab & jenkins的设置。
在gitlab网站
web项目 -- ⚙ settings-- integrations集成 -- 把复制的令牌和url粘贴过来 -- add webhook
测试下和jenkins连通性
报200 就正常了
接下来jenkins网站
选择web项目--左侧选择“build now”--下面构建历史出现蓝色标志--选择蓝色标志下拉列表--console output--输出执行过程
红色就是失败
(4)jenkins服务器上查看/var/lib/jenkins/workspace目录,会有项目web同名文件夹,保存git clone 的所有代码 jenkins和gitlab 就关联了
jenkins服务器 也需要给邮箱和用户
git config --global user.email "1763418210@qq.com"
git config --global user.name "panlong"
(1)
mkdir /data
cd /data
git init
- 把文件下载下来
git remote add origin http://192.168.27.40/web/web.git
回到master服务器上
编写一个yaml文件
用deployment资源replicas:2(两个副本)和service资源 部署镜像服务
mkdir /opt/deploy
cd /opt/deploy
vim deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: panlong
labels:
app: httpd
spec:
selector:
matchLabels:
app: httpd
replicas: 2
template:
metadata:
labels:
app: httpd
spec:
containers:
- name: panlong
image: 192.168.27.10:5000/httpd1:v1
imagePullPolicy: Always
---
kind: Service
apiVersion: v1
metadata:
name: panlong-svc
spec:
type: NodePort
selector:
app: httpd
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30023
写一个dockerfile文件
mkdir /dockerfile
vim file1
FROM httpd:latest
RUN echo panlong > /usr/local/apache2/htdocs/index.html
EXPOSE 80
生成一个镜像
[root@master ~]# docker build -t 192.168.27.10:5000/httpd1:v1 .
上传到私库
[root@master ~]# docker push 192.168.27.10:5000/httpd1:v1
私有仓库存储位置 ls /registry/docker/registry/v2/repositories/
有个httpd1 里面就有你生成的镜像
jenkins服务器192.168.27.30跟master服务器192.168.27.10做个免密登录
ssh-copy-id root@192.168.27.10
在jenkins服务器 编辑个脚本 (jenkins的构建动作)
vim /sctipts/jb.sh
#!/bin/bash
echo From httpd:latest > /dockerfile/file1
cp -rp /var/lib/jenkins/workspace/web/index.html /dockerfile/
echo COPY ./index.html /usr/local/apache2/htdocs/ >> /dockerfile/file1
echo EXPOSE 80 >> /dockerfile/file1
docker build -f /dockerfile/file1 -t 192.168.27.10:5000/httpd1:v1 .
docker push 192.168.27.10:5000/httpd1:v1
ssh root@192.168.27.10 kubectl delete deployment panlong
ssh root@192.168.27.10 kubectl delete svc panlong-svc
ssh root@192.168.27.10 kubectl apply -f /opt/deploy/deploy1.yaml
## docker build -t 192.168.27.10:5000/httpd1:v1 . 生成镜像 传到到私有仓库
## docker push 192.168.27.10:5000/httpd1:v1 上传镜像到私有仓库
##dockerfile的COPY命令 不能跟绝对路径 会报错 需要把复制的文件写在跟dockerfile同一目录下 所以有了前面的cp -rp命令 这个复制的文件就是jenkins跟gitlab关联的代码文件
save 保存
======================================
-==================================
============================================
更多推荐
所有评论(0)