B模块:容器云平台部署与运维(30分)
节点(开启虚拟化) | IP地址 | 配置 |
---|---|---|
master | 192.168.200.10 | CPU:6核16G 硬盘:150G |
node | 192.168.200.20 | CPU:6核16G 硬盘:150G |
文章目录
- B模块:容器云平台部署与运维(30分)
-
- 任务1 容器云服务搭建(2分)
- 任务2 容器云服务运维(15.5分)
-
- 1. 容器化部署Node-Exporter(0.5分)
- 2. 容器化部署Alertmanager(0.5分)
- 3. 容器化部署Grafana(0.5分)
- 4. 容器化部署Prometheus(0.5分)
- 5. 编排部署监控系统(1分)
- 6. 导入jenkins镜像(0.5分)
- 7. 安装Jenkins(1分)
- 8. 部署Gitlab(1分)
- 9. push源代码(1分)
- 10. Jenkins连接maven (1分)
- 11. 配置并触发CI/CD(1分)
- 12. 服务网格:创建Ingress Gateway(1分)
- 13. 服务网格:创建VirtualService(1分)
- 14. KubeVirt运维:创建VM(1分)
- 15. KubeVirt运维:开启功能优化(1分)
- 16. Deployment管理:创建deployment(1分)
- 17. PV卷管理:创建PV卷(1分)
- 18. Ingress资源管理:创建Ingress(1分)
- 任务3 部署Owncloud网盘服务(4分)
- 任务3 部署nacos集群(8.5分)
任务1 容器云服务搭建(2分)
1. 部署容器云平台(2分)
在master节点和node节点将root密码设为000000,完成Kubernetes集群的部署,并完成Istio服务网格、KubeVirt虚拟化和Harbor镜像仓库的部署(master节点依次执行k8s_harbor_install.sh、k8s_image_push.sh、k8s_master_install.sh、k8s_project _install.sh,node节点执行k8s_node_install.sh)。
请将kubectl cluster-info&&kubectl -n istio-system get all&&kubectl -n kubevirt get deployment命令的返回结果提交到答题框。
配免密方便做题
[root@master ~]# ssh-keygen -t rsa
[root@node ~]# ssh-keygen -t rsa
挂载镜像并复制到本地(注意:这里的k8s镜像的文件,必须把所有文件复制到/opt/目录下,脚本中已写死路径,不然执行的过程中会报路径错误)
[root@master ~]# mkdir /mnt/iaas
[root@master ~]# mount /opt/kubernetes_v2.1.iso /mnt/k8s/
[root@master ~]# mkdir /mnt/centos
[root@master ~]# mount /opt/linux_CentOS-7-x86_64-DVD-2009.iso /mnt/centos/
[root@master ~]# cp -rvf /mnt/centos/ /opt/
[root@master ~]# cp -rvf /mnt/k8s/* /opt/
[root@master ~]# rm -rf /etc/yum.repos.d/*
[root@master ~]# vi /etc/yum.repos.d/local.repo
[centos]
baseurl=file:///opt/centos/
name=centos
enabled=1
gpgcheck=0
[k8s]
baseurl=file:///opt/kubernetes-repo/
name=k8s
enabled=1
gpgcheck=0
安装软件包
[root@master ~]# yum install vim bash-com* lsof net-tools -y
关闭selinux
[root@master ~]# vim /etc/selinux/config
SELINUX=disabled
关闭防火墙自启并重启
[root@master ~]# systemctl disable firewalld.service
[root@master ~]# reboot
[root@master ~]# vim /etc/vsftpd/vsftpd.conf
anon_root=/opt/
[root@master ~]# systemctl enable --now vsftpd
配置hosts
[root@master ~]# vim /etc/hosts
192.168.200.10 master
192.168.200.20 node
移动配置文件
[root@master ~]# ssh-copy-id node
[root@master ~]# ssh-copy-id master
[root@master ~]# scp /etc/selinux/config node:/etc/selinux/config
[root@master ~]# scp /etc/hosts node:/etc/hosts
[root@master ~]# scp /etc/yum.repos.d/local.repo node:/etc/yum.repos.d/remote.repo
node节点配置yum
[root@node ~]# rm -rf /etc/yum.repos.d/CentOS-*
[root@node ~]# vi /etc/yum.repos.d/remote.repo
[centos]
baseurl=ftp://master/centos/
name=centos
enabled=1
gpgcheck=0
[k8s]
baseurl=ftp://master/kubernetes-repo/
name=k8s
enabled=1
gpgcheck=0
[root@node ~]# yum install vim bash-com* lsof net-tools -y
安装harbor(脚本以及相关文件必须在/opt目录下)
[root@master ~]# cd /opt/
[root@master opt]# ./k8s_harbor_install.sh
...
[root@master opt]# ./k8s_image_push.sh
输入镜像仓库地址(不加http/https): 192.168.200.10
输入镜像仓库用户名: admin
输入镜像仓库用户密码: Harbor12345
您设置的仓库地址为: 192.168.200.10,用户名: admin,密码: xxx
是否确认(Y/N): Y
安装master节点
[root@master opt]# ./k8s_master_install.sh
[root@master opt]# ./k8s_project_install.sh
安装node节点
[root@master opt]# scp /opt/k8s_node_install.sh node:/root/
[root@node ~]# ./k8s_node_install.sh
使用命令
kubectl -n kubernetes-dashboard create token admin-user
即可获取登录k8s网页端的token
答案:
Kubernetes control plane is running at https://192.168.200.10:6443
CoreDNS is running at https://192.168.200.10:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
Warning: kubevirt.io/v1 VirtualMachineInstancePresets is now deprecated and will be removed in v2.
NAME READY STATUS RESTARTS AGE
pod/grafana-56bdf8bf85-4mz2m 1/1 Running 0 3m33s
pod/istio-egressgateway-85649899f8-tn7j9 1/1 Running 0 4m53s
pod/istio-ingressgateway-f56888458-tbv6j 1/1 Running 0 4m53s
pod/istiod-64848b6c78-xm77j 1/1 Running 0 4m55s
pod/jaeger-76cd7c7566-4x5nn 1/1 Running 0 3m33s
pod/kiali-646db7568f-zcnp2 1/1 Running 0 3m33s
pod/prometheus-85949fddb-hd69q 2/2 Running 0 3m33s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/grafana ClusterIP 10.99.229.56 <none> 3000/TCP 3m33s
service/istio-egressgateway ClusterIP 10.107.63.162 <none> 80/TCP,443/TCP 4m53s
service/istio-ingressgateway LoadBalancer 10.96.43.106 <pending> 15021:30934/TCP,80:30691/TCP,443:30075/TCP,31400:30825/TCP,15443:30382/TCP 4m53s
service/istiod ClusterIP 10.101.91.95 <none> 15010/TCP,15012/TCP,443/TCP,15014/TCP 4m55s
service/jaeger-collector ClusterIP 10.97.104.76 <none> 14268/TCP,14250/TCP,9411/TCP 3m33s
service/kiali ClusterIP 10.102.1.13 <none> 20001/TCP,9090/TCP 3m33s
service/prometheus ClusterIP 10.109.215.71 <none> 9090/TCP 3m33s
service/tracing ClusterIP 10.104.202.190 <none> 80/TCP,16685/TCP 3m33s
service/zipkin ClusterIP 10.98.127.164 <none> 9411/TCP 3m33s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/grafana 1/1 1 1 3m33s
deployment.apps/istio-egressgateway 1/1 1 1 4m53s
deployment.apps/istio-ingressgateway 1/1 1 1 4m53s
deployment.apps/istiod 1/1 1 1 4m55s
deployment.apps/jaeger 1/1 1 1 3m33s
deployment.apps/kiali 1/1 1 1 3m33s
deployment.apps/prometheus 1/1 1 1 3m33s
NAME DESIRED CURRENT READY AGE
replicaset.apps/grafana-56bdf8bf85 1 1 1 3m33s
replicaset.apps/istio-egressgateway-85649899f8 1 1 1 4m53s
replicaset.apps/istio-ingressgateway-f56888458 1 1 1 4m53s
replicaset.apps/istiod-64848b6c78 1 1 1 4m55s
replicaset.apps/jaeger-76cd7c7566 1 1 1 3m33s
replicaset.apps/kiali-646db7568f 1 1 1 3m33s
replicaset.apps/prometheus-85949fddb 1 1 1 3m33s
NAME READY UP-TO-DATE AVAILABLE AGE
virt-api 2/2 2 2 2m29s
virt-controller 2/2 2 2 119s
virt-operator 2/2 2 2 2m54s
任务2 容器云服务运维(15.5分)
1. 容器化部署Node-Exporter(0.5分)
编写Dockerfile文件构建exporter镜像,要求基于centos完成Node-Exporter服务的安装与配置,并设置服务开机自启。(需要的包在Technology_packageV1.0.iso中Monitor.tar.gz)
(1)基础镜像:centos:centos7.9.2009;
(2)使用二进制包node_exporter-0.18.1.linux-amd64.tar.gz安装node-exporter服务;
(3)声明端口:9100;
(4)设置服务开机自启。
请使用docker build命令进行构建镜像monitor-exporter:v1.0并使用 docker run 命令运行该容器。
将docker run -d --name exporter-test monitor-exporter:v1.0 && sleep 5 && docker exec exporter-test ps -aux && docker rm -f exporter-test 命令的返回结果提交到答题框。
[root@master ~]# tar -zxvf Monitor.tar.gz
[root@master ~]# cd Monitor
[root@master Monitor]# vim Dockerfile-exporter
FROM centos:centos7.9.2009
ADD node_exporter-0.18.1.linux-amd64.tar.gz /root/
RUN mv /root/node_exporter-0.18.1.linux-amd64/node_exporter /usr/local/bin
EXPOSE 9100
ENTRYPOINT ["node_exporter"]
[root@master Monitor]# docker load -i CentOS_7.9.2009.tar
[root@master Monitor]# docker build -t monitor-exporter:v1.0 -f Dockerfile-exporter .
答案
d00689a1de0634e0cb3f4d8e9fbf1a5850b0549040ad2a1021737d6b87a076d4
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.4 0.0 113932 5424 ? Ssl 15:33 0:00 node_exporter
root 13 0.0 0.0 51732 1700 ? Rs 15:33 0:00 ps -aux
exporter-test
2. 容器化部署Alertmanager(0.5分)
编写Dockerfile文件构建alert镜像,要求基于centos完成Alertmanager服务的安装与配置,并设置服务开机自启。(需要的包在Technology_packageV1.0.iso中Monitor.tar.gz)
(1)基础镜像:centos:centos7.9.2009
(2)使用提供的二进制包alertmanager-0.19.0.linux-amd64.tar.gz安装Alertmanager服务;
(3)声明端口:9093、9094;
(4)设置服务开机自启。
请使用docker build命令进行构建镜像monitor-alert:v1.0并使用 docker run 命令运行该容器。
将docker run -d --name alert-test monitor-alert:v1.0 && sleep 5 && docker exec alert-test ps -aux && docker rm -f alert-test命令的返回结果提交到答题框。
[root@master Monitor]# vim Dockerfile-alert
FROM centos:centos7.9.2009
ADD alertmanager-0.19.0.linux-amd64.tar.gz /usr/local/bin
WORKDIR /usr/local/bin/alertmanager-0.19.0.linux-amd64
EXPOSE 9093 9094
ENTRYPOINT ["./alertmanager"]
[root@master Monitor]# docker build -t monitor-alert:v1.0 -f Dockerfile-alert .
答案
bf316dc0042579e50095f3a0386292d1e9d96e38b79a4347179b2d4d19eb84b2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 2.2 0.1 123920 16512 ? Ssl 15:39 0:00 ./alertmanager
root 22 0.0 0.0 51732 1700 ? Rs 15:39 0:00 ps -aux
alert-test
3. 容器化部署Grafana(0.5分)
编写Dockerfile文件构建grafana镜像,要求基于centos完成Grafana服务的安装与配置,并设置服务开机自启。(需要的包在Technology_packageV1.0.iso中Monitor.tar.gz)
(1)基础镜像:centos:centos7.9.2009;
(2)使用提供的二进制包grafana-6.4.1.linux-amd64.tar.gz安装grafana服务;
(3)声明端口:3000;
(4)设置nacos服务开机自启。
请使用docker build命令进行构建镜像monitor-grafana:v1.0并使用 docker run 命令运行该容器。
将docker run -d --name grafana-test monitor-grafana:v1.0 && sleep 5 && docker exec grafana-test ps -aux && docker rm -f grafana-test 命令的返回结果提交到答题框。
[root@master Monitor]# vim Dockerfile-grafana
FROM centos:centos7.9.2009
ADD grafana-6.4.1.linux-amd64.tar.gz /usr/local/bin
EXPOSE 3000
WORKDIR /usr/local/bin/grafana-6.4.1/bin
ENTRYPOINT ["./grafana-server"]
[root@master Monitor]# docker build -t monitor-grafana:v1.0 -f Dockerfile-grafana .
答案
f8d3fc0348c498d60680a897972a56842e4d7df85707ac68eba4e05c7be89a64
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 5.8 0.1 801180 28036 ? Ssl 15:44 0:00 ./grafana-server
root 21 0.0 0.0 51732 1700 ? Rs 15:44 0:00 ps -aux
grafana-test
4. 容器化部署Prometheus(0.5分)
编写Dockerfile文件构建prometheus镜像,要求基于centos完成Promethues服务的安装与配置,并设置服务开机自启。(需要的包在Technology_packageV1.0.iso中Monitor.tar.gz)
(1)基础镜像:centos:centos7.9.2009;
(2)使用提供的二进制包prometheus-2.13.0.linux-amd64.tar.gz安装promethues服务;
(3)编写prometheus.yml文件,创建3个任务模板:prometheus、node-exporter和alertmanager,并将该文件拷贝到/data/prometheus/目录下;
(4)声明端口:9090;
(5)设置服务开机自启。
请使用docker build命令进行构建镜像monitor-prometheus:v1.0并使用 docker run 命令运行该容器。
将docker run -d --name prometheus-test monitor-prometheus:v1.0 && sleep 5 && docker exec prometheus-test ps -aux && docker rm -f prometheus-test命令的返回结果提交到答题框。
[root@master Monitor]# vim Dockerfile-prometheus
FROM centos:centos7.9.2009
ADD prometheus-2.13.0.linux-amd64.tar.gz /usr/local/bin
WORKDIR /usr/local/bin/prometheus-2.13.0.linux-amd64
RUN mkdir -p /data/prometheus/
COPY prometheus.yml /usr/local/bin/prometheus-2.13.0.linux-amd64
COPY prometheus.yml /data/prometheus/
EXPOSE 9090
CMD ["./prometheus","--config.file=/data/prometheus/prometheus.yml"]
[root@master Monitor]# vim prometheus.yml
# prometheus.yml配置文件示例
# my global config
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
# scrape_timeout is set to the global default (10s).
# Alertmanager configuration
alerting:
alertmanagers:
- static_configs:
- targets:
# - alertmanager:9093
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['192.168.200.10:9090']
- job_name: 'node-exporter'
static_configs:
- targets: ['192.168.200.10:9100']
- job_name: 'alertmanager'
static_configs:
- targets: ['192.168.200.10:9093']
[root@master Monitor]# docker build -t monitor-prometheus:v1.0 -f Dockerfile-prometheus .
答案
eb72b439a4907a23cd8fc8d233e148c2ebf76543115979424def788d2d8f8b3c
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 2.3 0.1 161540 26940 ? Ssl 18:27 0:00 ./prometheus --config.file=/data/prometheus/prometheus.yml
root 22 0.0 0.0 51732 1700 ? Rs 18:27 0:00 ps -aux
prometheus-test
5. 编排部署监控系统(1分)
编写docker-compose.yaml文件,使用镜像exporter、alert、grafana和prometheus完成监控系统的编排部署。(需要的包在Technology_packageV1.0.iso中Monitor.tar.gz)
(1)容器monitor-node;镜像:monitor-exporter:v1.0;端口映射:9100:9100;
(2)容器monitor- alertmanager;镜像:monitor-alert:v1.0;端口映射:9093:9093、9094:9094;
(3)容器monitor-grafana;镜像:monitor-grafana:v1.0;端口映射:3000:3000;
(4)容器monitor-prometheus;镜像:monitor-prometheus:v1.0;端口映射:9090:9090。
1.使用docker-compose ps命令进行查看,将返回结果提交至答题框。
2.将curl -L http://$(hostname -i):9090/targets | grep up 命令的返回结果提交到答题框。
[root@master Monitor]# vim docker-compose.yaml
version: '3'
services:
monitor-node:
image: monitor-exporter:v1.0
container_name: monitor-node
ports:
- "9100:9100"
monitor-alertmanager:
image: monitor-alert:v1.0
container_name: monitor-alertmanager
ports:
- "9093:9093"
monitor-grafana:
image: monitor-grafana:v1.0
container_name: monitor-grafana
ports:
- "3000:3000"
depends_on:
- monitor-prometheus
monitor-prometheus:
image: monitor-prometheus:v1.0
container_name: monitor-prometheus
ports:
- "9090:9090"
[root@master Monitor]# docker-compose up -d
[+] Running 5/5
⠿ Network monitor_default Created 0.0s
⠿ Container monitor-alertmanager Started 0.5s
⠿ Container monitor-node Started 0.5s
⠿ Container monitor-prometheus Started 0.4s
⠿ Container monitor-grafana Started 0.7s
答案
NAME COMMAND SERVICE STATUS PORTS
monitor-alertmanager "./alertmanager" monitor-alertmanager running 0.0.0.0:9093->9093/tcp, :::9093->9093/tcp, 9094/tcp
monitor-grafana "./grafana-server" monitor-grafana running 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
monitor-node "node_exporter" monitor-node running 0.0.0.0:9100->9100/tcp, :::9100->9100/tcp
monitor-prometheus "./prometheus --conf…" monitor-prometheus running 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 9178 0 9178 0 0 5241k 0 --:--:-- --:--:-- --:--:-- 8962k
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Status <span class="caret"></span></a>
<div id="showTargets" class="btn-group btn-group-toggle" data-toggle="buttons">
<a id="job-alertmanager" href="#job-alertmanager">alertmanager (1/1 up)</a>
<span class="alert alert-success state_indicator text-uppercase">up</span>
<a id="job-node-exporter" href="#job-node-exporter">node-exporter (1/1 up)</a>
<span class="alert alert-success state_indicator text-uppercase">up</span>
<a id="job-prometheus" href="#job-prometheus">prometheus (1/1 up)</a>
<span class="alert alert-success state_indicator text-uppercase">up</span>
6. 导入jenkins镜像(0.5分)
基于Kubernetes构建持续集成,master节点、harbor节点和cicd节点对应的IP都为master节点的IP, CICD_OFF.TAR(需要的包在Technology_packageV1.0.iso中CICD_CICD_Offline.TAR)。把CICD_CICD_Offline.TAR移动到/opt目录下然后解压。导入jenkins.tar文件中的镜像。
将docker images | grep jenkins命令的返回结果提交到答题框。
[root@master Monitor]# mv /root/CICD_Offline.tar /opt/
[root@master Monitor]# cd /opt/
[root@master opt]# tar -zxvf CICD_Offline.tar
[root@master opt]# docker load -i jenkins.tar
答案
jenkins/jenkins 2.262-centos f04839b3e211 4 years ago 638MB
7. 安装Jenkins(1分)
编写Jenkins编排文件,启动并配置Jenkins。
(1)编写docker-compose.yaml启动Jenkins。
(2)新建用户springcloud,密码000000
(3)修改系统配置Resource root URL。
将docker-compose ps命令的返回结果提交到答题框。
[root@master opt]# mkdir jenkins
[root@master opt]# cd jenkins/
[root@master jenkins]# vim docker-compose.yaml
version: '3.1'
services:
jenkins:
image: 'jenkins/jenkins:2.262-centos'
volumes:
- /home/jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/bin/kubectl:/usr/local/bin/kubectl
- /root/.kube:/root/.kube
ports:
- "8080:8080"
expose:
- "8080"
- "50000"
privileged: true
user: root
restart: always
container_name: jenkins
[root@master jenkins]# docker-compose -f docker-compose.yaml up -d
[root@master jenkins]# cp -rfv /opt/plugins/* /home/jenkins_home/plugins/
[root@master jenkins]# docker restart jenkins
访问web(IP:http://IP:8080
),拿到登陆密码,进行登录
[root@master jenkins]# docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
9fed58a96bec43c091a95e692672e0f6
点击:系统管理 -> 管理用户 -> 新建用户 -> 输入对应名称(springcloud)密码(000000) -> 创建用户
退出登录,使用springcloud用户与密码登录,点击:系统管理 -> 系统配置
在Resource root URL
填入http://IP:8080/
答案
NAME COMMAND SERVICE STATUS PORTS
jenkins "/sbin/tini -- /usr/…" jenkins running 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 50000/tcp
8. 部署Gitlab(1分)
编写Gitlab编排文件并启动Gitlab。
(1)编写docker-compose.yaml启动Gitlab。
(2)使用root用户登录Gitlab。
(3)在harbor仓库创建公开项目springcloud。
将docker-compose ps命令的返回结果提交到答题框。
[root@master jenkins]# mkdir /root/gitlab
[root@master jenkins]# cd /root/gitlab/
[root@master gitlab]# vim docker-compose.yaml
version: '3'
services:
gitlab:
image: 'gitlab/gitlab-ce:12.9.2-ce.0'
container_name: gitlab
restart: always
hostname: '192.168.200.10'
privileged: true
environment:
TZ: 'Asia/Shanghai'
ports:
- '81:80'
- '443:443'
- '1022:22'
volumes:
- /srv/gitlab/config:/etc/gitlab
- /srv/gitlab/gitlab/logs:/var/log/gitlab
- /srv/gitlab/gitlab/data:/var/opt/gitlab
[root@master gitlab]# docker-compose up -d
等到docker-compose ps
命令中的starting变成了healthy,访问web界面:http://192.168.200.10:81
进去之后为root用户创建密码,之后登录
选择Create a project
-> 在Project name
输入项目名称 -> 更改Visibility Level
为Public
-> 点击 Create project
创建项目
答案
NAME COMMAND SERVICE STATUS PORTS
gitlab "/assets/wrapper" gitlab running (healthy) 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:1022->22/tcp, :::1022->22/tcp, 0.0.0.0:81->80/tcp, :::81->80/tcp
9. push源代码(1分)
push源代码到gitlab的springcloud项目,并完成相关配置。
将git push -u origin master命令成功push的返回结果提交到答题框。
[root@master gitlab]# cd /opt/springcloud/
[root@master springcloud]# yum install -y git
[root@master springcloud]# git remote add origin http://192.168.200.10:81/root/springcloud.git
[root@master springcloud]# git config --global user.name "Administrator"
[root@master springcloud]# git config --global user.email "admin@example.com"
[root@master springcloud]# git push -u origin --all
答案
Username for 'http://192.168.200.10:81': root
Password for 'http://root@192.168.200.10:81':
Counting objects: 3192, done.
Delta compression using up to 6 threads.
Compressing objects: 100% (1428/1428), done.
Writing objects: 100% (3192/3192), 1.40 MiB | 0 bytes/s, done.
Total 3192 (delta 1233), reused 3010 (delta 1207)
remote: Resolving deltas: 100% (1233/1233), done.
To http://192.168.200.10:81/root/springcloud.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
10. Jenkins连接maven (1分)
配置Jenkins连接Gitlab,安装maven并完成相关配置。
将docker exec jenkins bash -c "source /etc/profile && mvn -v"命令的返回结果提交到答题框。
-
登录进gitlab页面 -> 点击最上方扳手进入
Admin Area
-> 在左侧找到并点击Setttings
中的Network
-> 右侧找到Outbound requests
-> 勾选Allow requests to the local network from web hooks and services
-> 点击Save changes
保存修改 -
点击右上角用户图标 -> 点击
Settings
-> 在右侧找到并点击Access Tokens
-> 找到Add a personal access token
-> 填写Name
-> 填写Expires at
->Scopes
全部选中 ->Create personal access token
创建token -> 复制Your New Personal Access Token
中的token:REsA_zJ8FVcJS4itNsez
-
登录Jenkins -> 点击
系统管理
-> 点击系统配置
-> 找到Gitlab
-> 取消勾选Enable authentication for '/project' end-point
-> 填入Connection name
-> 将gitlab地址(http://IP:81
)填入Gitlab host URL
-> 找到Credentials
选中添加中的Jenkins
->类型
选择GitLab API token
->API token
填入上一步拿到的token -> 点击添加
-> 选中刚添加的GitLab API token
-> 点击Test Connection
直到出现Success
-> 点击最下方保存
[root@master springcloud]# cp -rf /opt/apache-maven-3.6.3-bin.tar.gz /home/jenkins_home/
[root@master springcloud]# docker exec -it jenkins bash
[root@8965dacea4c5 /]# tar -zxvf /var/jenkins_home/apache-maven-3.6.3-bin.tar.gz -C .
[root@8965dacea4c5 /]# mv apache-maven-3.6.3/ /usr/local/maven
[root@8965dacea4c5 /]# vi /etc/profile
export M2_HOME=/usr/local/maven
export PATH=$PATH:$M2_HOME/bin # 行末添加
[root@8965dacea4c5 /]# vi /root/.bashrc
source /etc/profile # 行末添加
[root@8965dacea4c5 /]# exit
[root@master springcloud]# docker exec -it jenkins bash
[root@8965dacea4c5 /]# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven
Java version: 1.8.0_265, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-0.el8_2.x86_64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
登录Jenkins
-> 点击系统管理
-> 点击全局工具配置
-> 找到Maven 安装
-> 点击新增Maven
-> 取消勾选自动安装
-> 输入Name
与MAVEN_HOME
(/usr/local/maven
)-> 点击最下方的保存
答案
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven
Java version: 1.8.0_265, vendor: Oracle Corporation, runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.265.b01-0.el8_2.x86_64/jre
Default locale: en_US, platform encoding: ANSI_X3.4-1968
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
11. 配置并触发CI/CD(1分)
编写流水线脚本配置CI/CD,habor仓库创建springcloud项目,上传代码触发自动构建。
构建成功后将
curl `kubectl get endpoints -n springcloud gateway |grep -v AGE| awk '{print $2}'`
命令的返回结果提交到答题框。
命令可能后面要加
| grep Pig
,因为不加结果太长先按照这么写
登录Jenkins -> 点击右侧点击新建任务
-> 选择流水线
-> 点击确定
在构建触发器
中选中Build when a change is pushed to GitLab. GitLab webhook URL: http://192.168.200.10:8080/project/springcloud
使用触发器,记录下gitlab中webhook要用到的urlhttp://192.168.200.10:8080/project/springcloud
,
点击流水线语法
-> 在示例步骤
中选择 git: Git
-> 配置仓库 URL
为gitlab项目地址http://IP:81/root/springcloud.git
-> 凭据中选择添加
中的Jenkins
-> 用户名
和密码
填入gitlab仓库的用户名与密码 -> 点击添加
后选择对应凭据 -> 点击生成流水线脚本
git credentialsId: '18919ffa-6c3e-4e92-bb36-79d7460a2647', url: 'http://IP:81/root/springcloud.git'
在网站中写入完整流水线脚本并点击应用
node{
stage('git clone'){
//check CODE
git credentialsId: '18919ffa-6c3e-4e92-bb36-79d7460a2647', url: 'http://192.168.200.10:81/root/springcloud.git'
}
stage('maven build'){
sh '''/usr/local/maven/bin/mvn package -DskipTests -f /var/jenkins_home/workspace/springcloud'''
}
stage('image build'){
sh '''
echo $BUILD_ID
docker build -t 192.168.200.10/springcloud/gateway:$BUILD_ID -f /var/jenkins_home/workspace/springcloud/gateway/Dockerfile /var/jenkins_home/workspace/springcloud/gateway
docker build -t 192.168.200.10/springcloud/config:$BUILD_ID -f /var/jenkins_home/workspace/springcloud/config/Dockerfile /var/jenkins_home/workspace/springcloud/config'''
}
stage('test'){
sh '''docker run -itd --name gateway 192.168.200.10/springcloud/gateway:$BUILD_ID
docker ps -a