IT评测·应用市场-qidao123.com技术社区

标题: 湖北省技能大赛云计算赛道解题过程【B模块:容器云平台摆设与运维(30分)】 [打印本页]

作者: 海哥    时间: 2025-4-17 16:44
标题: 湖北省技能大赛云计算赛道解题过程【B模块:容器云平台摆设与运维(30分)】
B模块:容器云平台摆设与运维(30分)

    节点(开启假造化)   IP地点   设置         master   192.168.200.10   CPU:6核16G 硬盘:150G       node   192.168.200.20   CPU:6核16G 硬盘:150G   
  
使命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命令的返回效果提交到答题框。
  <hr> 配免密方便做题
  1. [root@master ~]# ssh-keygen -t rsa
  2. [root@node ~]# ssh-keygen -t rsa
复制代码
挂载镜像并复制到本地(注意:这里的k8s镜像的文件,必须把全部文件复制到/opt/目录下,脚本中已写绝路径,不然执行的过程中会报路径错误)
  1. [root@master ~]# mkdir /mnt/iaas
  2. [root@master ~]# mount /opt/kubernetes_v2.1.iso /mnt/k8s/
  3. [root@master ~]# mkdir /mnt/centos
  4. [root@master ~]# mount /opt/linux_CentOS-7-x86_64-DVD-2009.iso /mnt/centos/
  5. [root@master ~]# cp -rvf /mnt/centos/ /opt/
  6. [root@master ~]# cp -rvf /mnt/k8s/* /opt/
  7. [root@master ~]# rm -rf /etc/yum.repos.d/*
  8. [root@master ~]# vi /etc/yum.repos.d/local.repo
复制代码
  1. [centos]
  2. baseurl=file:///opt/centos/
  3. name=centos
  4. enabled=1
  5. gpgcheck=0
  6. [k8s]
  7. baseurl=file:///opt/kubernetes-repo/
  8. name=k8s
  9. enabled=1
  10. gpgcheck=0
复制代码
安装软件包
  1. [root@master ~]# yum install vim bash-com* lsof net-tools -y
复制代码
关闭selinux
  1. [root@master ~]# vim /etc/selinux/config
复制代码
  1. SELINUX=disabled
复制代码
关闭防火墙自启并重启
  1. [root@master ~]# systemctl disable firewalld.service
  2. [root@master ~]# reboot
复制代码
  1. [root@master ~]# vim /etc/vsftpd/vsftpd.conf
  2. anon_root=/opt/
  3. [root@master ~]# systemctl enable --now vsftpd
复制代码
设置hosts
  1. [root@master ~]# vim /etc/hosts
复制代码
  1. 192.168.200.10 master
  2. 192.168.200.20 node
复制代码
移动设置文件
  1. [root@master ~]# ssh-copy-id node
  2. [root@master ~]# ssh-copy-id master
  3. [root@master ~]# scp /etc/selinux/config node:/etc/selinux/config
  4. [root@master ~]# scp /etc/hosts node:/etc/hosts
  5. [root@master ~]# scp /etc/yum.repos.d/local.repo node:/etc/yum.repos.d/remote.repo
复制代码
node节点设置yum
  1. [root@node ~]# rm -rf /etc/yum.repos.d/CentOS-*
  2. [root@node ~]# vi /etc/yum.repos.d/remote.repo
复制代码
  1. [centos]
  2. baseurl=ftp://master/centos/
  3. name=centos
  4. enabled=1
  5. gpgcheck=0
  6. [k8s]
  7. baseurl=ftp://master/kubernetes-repo/
  8. name=k8s
  9. enabled=1
  10. gpgcheck=0
复制代码
  1. [root@node ~]# yum install vim bash-com* lsof net-tools -y
复制代码
<hr> 安装harbor(脚本以及相关文件必须在/opt目录下)
  1. [root@master ~]# cd /opt/
  2. [root@master opt]# ./k8s_harbor_install.sh
  3. ...
  4. [root@master opt]# ./k8s_image_push.sh
  5. 输入镜像仓库地址(不加http/https): 192.168.200.10
  6. 输入镜像仓库用户名: admin
  7. 输入镜像仓库用户密码: Harbor12345
  8. 您设置的仓库地址为: 192.168.200.10,用户名: admin,密码: xxx
  9. 是否确认(Y/N): Y
复制代码
安装master节点
  1. [root@master opt]# ./k8s_master_install.sh
  2. [root@master opt]# ./k8s_project_install.sh
复制代码
安装node节点
  1. [root@master opt]# scp /opt/k8s_node_install.sh node:/root/
  2. [root@node ~]# ./k8s_node_install.sh
复制代码
<hr>   使用命令kubectl -n kubernetes-dashboard create token admin-user即可获取登录k8s网页端的token
  <hr> 答案:
  1. Kubernetes control plane is running at https://192.168.200.10:6443
  2. CoreDNS is running at https://192.168.200.10:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  3. To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
  4. Warning: kubevirt.io/v1 VirtualMachineInstancePresets is now deprecated and will be removed in v2.
  5. NAME                                       READY   STATUS    RESTARTS   AGE
  6. pod/grafana-56bdf8bf85-4mz2m               1/1     Running   0          3m33s
  7. pod/istio-egressgateway-85649899f8-tn7j9   1/1     Running   0          4m53s
  8. pod/istio-ingressgateway-f56888458-tbv6j   1/1     Running   0          4m53s
  9. pod/istiod-64848b6c78-xm77j                1/1     Running   0          4m55s
  10. pod/jaeger-76cd7c7566-4x5nn                1/1     Running   0          3m33s
  11. pod/kiali-646db7568f-zcnp2                 1/1     Running   0          3m33s
  12. pod/prometheus-85949fddb-hd69q             2/2     Running   0          3m33s
  13. NAME                           TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                                      AGE
  14. service/grafana                ClusterIP      10.99.229.56     <none>        3000/TCP                                                                     3m33s
  15. service/istio-egressgateway    ClusterIP      10.107.63.162    <none>        80/TCP,443/TCP                                                               4m53s
  16. 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
  17. service/istiod                 ClusterIP      10.101.91.95     <none>        15010/TCP,15012/TCP,443/TCP,15014/TCP                                        4m55s
  18. service/jaeger-collector       ClusterIP      10.97.104.76     <none>        14268/TCP,14250/TCP,9411/TCP                                                 3m33s
  19. service/kiali                  ClusterIP      10.102.1.13      <none>        20001/TCP,9090/TCP                                                           3m33s
  20. service/prometheus             ClusterIP      10.109.215.71    <none>        9090/TCP                                                                     3m33s
  21. service/tracing                ClusterIP      10.104.202.190   <none>        80/TCP,16685/TCP                                                             3m33s
  22. service/zipkin                 ClusterIP      10.98.127.164    <none>        9411/TCP                                                                     3m33s
  23. NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
  24. deployment.apps/grafana                1/1     1            1           3m33s
  25. deployment.apps/istio-egressgateway    1/1     1            1           4m53s
  26. deployment.apps/istio-ingressgateway   1/1     1            1           4m53s
  27. deployment.apps/istiod                 1/1     1            1           4m55s
  28. deployment.apps/jaeger                 1/1     1            1           3m33s
  29. deployment.apps/kiali                  1/1     1            1           3m33s
  30. deployment.apps/prometheus             1/1     1            1           3m33s
  31. NAME                                             DESIRED   CURRENT   READY   AGE
  32. replicaset.apps/grafana-56bdf8bf85               1         1         1       3m33s
  33. replicaset.apps/istio-egressgateway-85649899f8   1         1         1       4m53s
  34. replicaset.apps/istio-ingressgateway-f56888458   1         1         1       4m53s
  35. replicaset.apps/istiod-64848b6c78                1         1         1       4m55s
  36. replicaset.apps/jaeger-76cd7c7566                1         1         1       3m33s
  37. replicaset.apps/kiali-646db7568f                 1         1         1       3m33s
  38. replicaset.apps/prometheus-85949fddb             1         1         1       3m33s
  39. NAME              READY   UP-TO-DATE   AVAILABLE   AGE
  40. virt-api          2/2     2            2           2m29s
  41. virt-controller   2/2     2            2           119s
  42. 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 命令的返回效果提交到答题框。
  <hr>
  1. [root@master ~]# tar -zxvf Monitor.tar.gz
  2. [root@master ~]# cd Monitor
  3. [root@master Monitor]# vim Dockerfile-exporter
复制代码
  1. FROM centos:centos7.9.2009
  2. ADD node_exporter-0.18.1.linux-amd64.tar.gz /root/
  3. RUN mv /root/node_exporter-0.18.1.linux-amd64/node_exporter /usr/local/bin
  4. EXPOSE 9100
  5. ENTRYPOINT ["node_exporter"]
复制代码
  1. [root@master Monitor]# docker load -i CentOS_7.9.2009.tar
  2. [root@master Monitor]# docker build -t monitor-exporter:v1.0 -f Dockerfile-exporter .
复制代码
<hr> 答案
  1. d00689a1de0634e0cb3f4d8e9fbf1a5850b0549040ad2a1021737d6b87a076d4
  2. USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  3. root          1  0.4  0.0 113932  5424 ?        Ssl  15:33   0:00 node_exporter
  4. root         13  0.0  0.0  51732  1700 ?        Rs   15:33   0:00 ps -aux
  5. 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命令的返回效果提交到答题框。
  <hr>
  1. [root@master Monitor]# vim Dockerfile-alert
复制代码
  1. FROM centos:centos7.9.2009
  2. ADD alertmanager-0.19.0.linux-amd64.tar.gz /usr/local/bin
  3. WORKDIR /usr/local/bin/alertmanager-0.19.0.linux-amd64
  4. EXPOSE 9093 9094
  5. ENTRYPOINT ["./alertmanager"]
复制代码
  1. [root@master Monitor]# docker build -t monitor-alert:v1.0 -f Dockerfile-alert .
复制代码
<hr> 答案
  1. bf316dc0042579e50095f3a0386292d1e9d96e38b79a4347179b2d4d19eb84b2
  2. USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  3. root          1  2.2  0.1 123920 16512 ?        Ssl  15:39   0:00 ./alertmanager
  4. root         22  0.0  0.0  51732  1700 ?        Rs   15:39   0:00 ps -aux
  5. 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 命令的返回效果提交到答题框。
  <hr>
  1. [root@master Monitor]# vim Dockerfile-grafana
复制代码
  1. FROM centos:centos7.9.2009
  2. ADD grafana-6.4.1.linux-amd64.tar.gz /usr/local/bin
  3. EXPOSE 3000
  4. WORKDIR /usr/local/bin/grafana-6.4.1/bin
  5. ENTRYPOINT ["./grafana-server"]
复制代码
  1. [root@master Monitor]# docker build -t monitor-grafana:v1.0 -f Dockerfile-grafana .
复制代码
<hr> 答案
  1. f8d3fc0348c498d60680a897972a56842e4d7df85707ac68eba4e05c7be89a64
  2. USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  3. root          1  5.8  0.1 801180 28036 ?        Ssl  15:44   0:00 ./grafana-server
  4. root         21  0.0  0.0  51732  1700 ?        Rs   15:44   0:00 ps -aux
  5. 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命令的返回效果提交到答题框。
  <hr>
  1. [root@master Monitor]# vim Dockerfile-prometheus
复制代码
  1. FROM centos:centos7.9.2009
  2. ADD prometheus-2.13.0.linux-amd64.tar.gz /usr/local/bin
  3. WORKDIR /usr/local/bin/prometheus-2.13.0.linux-amd64
  4. RUN mkdir -p /data/prometheus/
  5. COPY prometheus.yml /usr/local/bin/prometheus-2.13.0.linux-amd64
  6. COPY prometheus.yml /data/prometheus/
  7. EXPOSE 9090
  8. CMD ["./prometheus","--config.file=/data/prometheus/prometheus.yml"]
复制代码
  1. [root@master Monitor]# vim prometheus.yml
复制代码
  1. # prometheus.yml配置文件示例
  2. # my global config
  3. global:
  4.   scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  5.   evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  6.   # scrape_timeout is set to the global default (10s).
  7. # Alertmanager configuration
  8. alerting:
  9.   alertmanagers:
  10.   - static_configs:
  11.     - targets:
  12.       # - alertmanager:9093
  13. # Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
  14. rule_files:
  15.   # - "first_rules.yml"
  16.   # - "second_rules.yml"
  17. # A scrape configuration containing exactly one endpoint to scrape:
  18. # Here it's Prometheus itself.
  19. scrape_configs:
  20.   - job_name: 'prometheus'
  21.     static_configs:
  22.     - targets: ['192.168.200.10:9090']
  23.   - job_name: 'node-exporter'
  24.     static_configs:
  25.     - targets: ['192.168.200.10:9100']
  26.   - job_name: 'alertmanager'
  27.     static_configs:
  28.     - targets: ['192.168.200.10:9093']
复制代码
  1. [root@master Monitor]# docker build -t monitor-prometheus:v1.0 -f Dockerfile-prometheus .
复制代码
<hr> 答案
  1. eb72b439a4907a23cd8fc8d233e148c2ebf76543115979424def788d2d8f8b3c
  2. USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
  3. root          1  2.3  0.1 161540 26940 ?        Ssl  18:27   0:00 ./prometheus --config.file=/data/prometheus/prometheus.yml
  4. root         22  0.0  0.0  51732  1700 ?        Rs   18:27   0:00 ps -aux
  5. 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 命令的返回效果提交到答题框。
  <hr>
  1. [root@master Monitor]# vim docker-compose.yaml
复制代码
  1. version: '3'
  2. services:
  3.   monitor-node:
  4.     image: monitor-exporter:v1.0
  5.     container_name: monitor-node
  6.     ports:
  7.     - "9100:9100"
  8.   monitor-alertmanager:
  9.     image: monitor-alert:v1.0
  10.     container_name: monitor-alertmanager
  11.     ports:
  12.     - "9093:9093"
  13.   monitor-grafana:
  14.     image: monitor-grafana:v1.0
  15.     container_name: monitor-grafana
  16.     ports:
  17.     - "3000:3000"
  18.     depends_on:
  19.     - monitor-prometheus
  20.   monitor-prometheus:
  21.     image: monitor-prometheus:v1.0
  22.     container_name: monitor-prometheus
  23.     ports:
  24.     - "9090:9090"
复制代码
  1. [root@master Monitor]# docker-compose up -d
  2. [+] Running 5/5
  3. ⠿ Network monitor_default         Created                                                       0.0s
  4. ⠿ Container monitor-alertmanager  Started                                                       0.5s
  5. ⠿ Container monitor-node          Started                                                       0.5s
  6. ⠿ Container monitor-prometheus    Started                                                       0.4s
  7. ⠿ Container monitor-grafana       Started                                                       0.7s
复制代码
<hr> 答案
  1. NAME                   COMMAND                  SERVICE                STATUS              PORTS
  2. monitor-alertmanager   "./alertmanager"         monitor-alertmanager   running             0.0.0.0:9093->9093/tcp, :::9093->9093/tcp, 9094/tcp
  3. monitor-grafana        "./grafana-server"       monitor-grafana        running             0.0.0.0:3000->3000/tcp, :::3000->3000/tcp
  4. monitor-node           "node_exporter"          monitor-node           running             0.0.0.0:9100->9100/tcp, :::9100->9100/tcp
  5. monitor-prometheus     "./prometheus --conf…"   monitor-prometheus     running             0.0.0.0:9090->9090/tcp, :::9090->9090/tcp
复制代码
  1.   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
  2.                                  Dload  Upload   Total   Spent    Left  Speed
  3. 100  9178    0  9178    0     0  5241k      0 --:--:-- --:--:-- --:--:-- 8962k
  4.                             <a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Status <span class="caret"></span></a>
  5.     <div id="showTargets" class="btn-group btn-group-toggle" data-toggle="buttons">
  6.         <a id="job-alertmanager" href="#job-alertmanager">alertmanager (1/1 up)</a>
  7.               <span class="alert alert-success state_indicator text-uppercase">up</span>
  8.         <a id="job-node-exporter" href="#job-node-exporter">node-exporter (1/1 up)</a>
  9.               <span class="alert alert-success state_indicator text-uppercase">up</span>
  10.         <a id="job-prometheus" href="#job-prometheus">prometheus (1/1 up)</a>
  11.               <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命令的返回效果提交到答题框。
  <hr>
  1. [root@master Monitor]# mv /root/CICD_Offline.tar /opt/
  2. [root@master Monitor]# cd /opt/
  3. [root@master opt]# tar -zxvf CICD_Offline.tar
  4. [root@master opt]# docker load -i jenkins.tar
复制代码
<hr> 答案
  1. 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命令的返回效果提交到答题框。
  <hr>
  1. [root@master opt]# mkdir jenkins
  2. [root@master opt]# cd jenkins/
  3. [root@master jenkins]# vim docker-compose.yaml
复制代码
  1. version: '3.1'
  2. services:
  3.   jenkins:
  4.     image: 'jenkins/jenkins:2.262-centos'
  5.     volumes:
  6.       - /home/jenkins_home:/var/jenkins_home
  7.       - /var/run/docker.sock:/var/run/docker.sock
  8.       - /usr/bin/docker:/usr/bin/docker
  9.       - /usr/bin/kubectl:/usr/local/bin/kubectl
  10.       - /root/.kube:/root/.kube
  11.     ports:
  12.       - "8080:8080"
  13.     expose:
  14.       - "8080"
  15.       - "50000"
  16.     privileged: true
  17.     user: root
  18.     restart: always
  19.     container_name: jenkins
复制代码
  1. [root@master jenkins]# docker-compose -f docker-compose.yaml up -d
  2. [root@master jenkins]# cp -rfv /opt/plugins/* /home/jenkins_home/plugins/
  3. [root@master jenkins]# docker restart jenkins
复制代码
<hr> 访问web(IP:http://IP:8080),拿到登岸密码,举行登录
  1. [root@master jenkins]# docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
  2. 9fed58a96bec43c091a95e692672e0f6
复制代码
点击:系统管理 -> 管理用户 -> 新建用户 -> 输入对应名称(springcloud)密码(000000) -> 创建用户
退出登录,使用springcloud用户与密码登录,点击:系统管理 -> 系统设置
在Resource root URL填入http://IP:8080/
<hr> 答案
  1. NAME                COMMAND                  SERVICE             STATUS              PORTS
  2. 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命令的返回效果提交到答题框。
  <hr>
  1. [root@master jenkins]# mkdir /root/gitlab
  2. [root@master jenkins]# cd /root/gitlab/
  3. [root@master gitlab]# vim docker-compose.yaml
复制代码
  1. version: '3'
  2. services:
  3.   gitlab:
  4.     image: 'gitlab/gitlab-ce:12.9.2-ce.0'
  5.     container_name: gitlab
  6.     restart: always
  7.     hostname: '192.168.200.10'
  8.     privileged: true
  9.     environment:
  10.       TZ: 'Asia/Shanghai'
  11.     ports:
  12.       - '81:80'
  13.       - '443:443'
  14.       - '1022:22'
  15.     volumes:
  16.       - /srv/gitlab/config:/etc/gitlab
  17.       - /srv/gitlab/gitlab/logs:/var/log/gitlab
  18.       - /srv/gitlab/gitlab/data:/var/opt/gitlab
复制代码
  1. [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创建项目
<hr> 答案
  1. NAME                COMMAND             SERVICE             STATUS              PORTS
  2. 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的返回效果提交到答题框。
  <hr>
  1. [root@master gitlab]# cd /opt/springcloud/
  2. [root@master springcloud]# yum install -y git
  3. [root@master springcloud]# git remote add origin http://192.168.200.10:81/root/springcloud.git
  4. [root@master springcloud]# git config --global user.name "Administrator"
  5. [root@master springcloud]# git config --global user.email "admin@example.com"
  6. [root@master springcloud]# git push -u origin --all
复制代码
<hr> 答案
  1. Username for 'http://192.168.200.10:81': root
  2. Password for 'http://root@192.168.200.10:81':
  3. Counting objects: 3192, done.
  4. Delta compression using up to 6 threads.
  5. Compressing objects: 100% (1428/1428), done.
  6. Writing objects: 100% (3192/3192), 1.40 MiB | 0 bytes/s, done.
  7. Total 3192 (delta 1233), reused 3010 (delta 1207)
  8. remote: Resolving deltas: 100% (1233/1233), done.
  9. To http://192.168.200.10:81/root/springcloud.git
  10. * [new branch]      master -> master
  11. 分支 master 设置为跟踪来自 origin 的远程分支 master。
复制代码
10. Jenkins连接maven (1分)

   设置Jenkins连接Gitlab,安装maven并完成相关设置。
  将docker exec jenkins bash -c "source /etc/profile && mvn -v"命令的返回效果提交到答题框。
  <hr> <hr>
  1. [root@master springcloud]# cp -rf /opt/apache-maven-3.6.3-bin.tar.gz /home/jenkins_home/
  2. [root@master springcloud]# docker exec -it jenkins bash
  3. [root@8965dacea4c5 /]# tar -zxvf /var/jenkins_home/apache-maven-3.6.3-bin.tar.gz -C .
  4. [root@8965dacea4c5 /]# mv apache-maven-3.6.3/ /usr/local/maven
  5. [root@8965dacea4c5 /]# vi /etc/profile
复制代码
  1. export M2_HOME=/usr/local/maven
  2. export PATH=$PATH:$M2_HOME/bin # 行末添加
复制代码
<hr>
  1. [root@8965dacea4c5 /]# vi /root/.bashrc
复制代码
  1. source /etc/profile  # 行末添加
复制代码
<hr>
  1. [root@8965dacea4c5 /]# exit
  2. [root@master springcloud]# docker exec -it jenkins bash
  3. [root@8965dacea4c5 /]# mvn -v
  4. Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
  5. Maven home: /usr/local/maven
  6. 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
  7. Default locale: en_US, platform encoding: ANSI_X3.4-1968
  8. OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"
复制代码
<hr> 登录Jenkins -> 点击系统管理 -> 点击全局工具设置 -> 找到Maven 安装 -> 点击新增Maven -> 取消勾选主动安装 -> 输入Name与MAVEN_HOME(/usr/local/maven)-> 点击最下方的保存
<hr> 答案
  1. Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
  2. Maven home: /usr/local/maven
  3. 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
  4. Default locale: en_US, platform encoding: ANSI_X3.4-1968
  5. 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,因为不加效果太长先按照这么写
  <hr> 登录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仓库的用户名与密码 -> 点击添加后选择对应根据 -> 点击生成流水线脚本
  1. git credentialsId: '18919ffa-6c3e-4e92-bb36-79d7460a2647', url: 'http://IP:81/root/springcloud.git'
复制代码
在网站中写入完整流水线脚本并点击应用
  1. node{
  2.    
  3.     stage('git clone'){
  4.    
  5.         //check CODE
  6. git credentialsId: '18919ffa-6c3e-4e92-bb36-79d7460a2647', url: 'http://192.168.200.10:81/root/springcloud.git'
  7.     }
  8.     stage('maven build'){
  9.    
  10.         sh '''/usr/local/maven/bin/mvn package -DskipTests -f /var/jenkins_home/workspace/springcloud'''
  11.     }
  12.     stage('image build'){
  13.    
  14.         sh '''
  15.               echo $BUILD_ID
  16.               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
  17.               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'''
  18.     }
  19.     stage('test'){
  20.    
  21.         sh '''docker run -itd --name gateway 192.168.200.10/springcloud/gateway:$BUILD_ID
  22.         docker ps -a
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4