某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“DevOps开发运维一体化”和“数据驱动产品开发”,拟采用开源OpenStack搭建企业内部私有云平台,开源Kubernetes搭建云原生服务平台,选择国内主流公有云平台服务,基于数字化平台底座,面向业务开发边缘计算云应用产品。
拟将该任务交给工程师A与B,分工协助完成云平台服务部署、云应用开发、云系统运维等任务,系统架构如图1所示,IP地址规划如表1所示。
图1 系统架构图
表1 IP 地址规划
设备名称 | 主机名 | 接 口 | IP 地址 | 说明 |
云服务器 1 | controller | eth0 | 172.129.x.0/24 | vlan x |
eth1 | 自定义 | 自行创建 | ||
云服务器 2 | compute | eth0 | 172.129.x.0/24 | vlan x |
eth1 | 自定义 | 自行创建 | ||
云服务器 3 ... 云服务器n | 自定义 | eth0 | 172.129.x.0/24 | |
PC-1 | 本地连接 | 172.24.16.0/24 | PC 使用 |
说明
1.竞赛使用集群模式进行,比赛时给每个参赛队提供独立的租户与用户,各用户的资源配额相同,参赛选手通过用户名与密码登录竞赛用私有云平台,创建云主机进行相应答题,2名参赛选手的账号密码相同;
2.表中的x为赛位号,在进行OpenStack搭建时的第二块网卡地址根据题意自行创建;
3.根据图表给出的信息,检查硬件连线及网络设备配置,确保网络连接正常;
4.考试所需要的账号资源、竞赛资源包与附件均会在考位信息表与设备确认单中给出;
5.竞赛过程中,为确保服务器的安全,请自行修改服务器密码;在考试系统提交信息时,请确认自己的IP地址,用户名和密码。
企业首先完成私有云平台搭建和运维,私有云平台提供云主机、云网络、云存储等基础架构云服务,并开发自动化运维程序。
1.1.1?????? 基础环境配置
1.控制节点主机名为controller,设置计算节点主机名为compute;
2.hosts文件将IP地址映射为主机名。
1.1.2?????? yum源配置
使用提供的http服务地址,分别设置controller节点和compute节点的yum源文件http.repo。
1.1.3?????? 配置无秘钥ssh
配置controller节点可以无秘钥访问compute节点。
1.1.4?????? 基础安装
在控制节点和计算节点上分别安装openstack-iaas软件包。
1.1.5?????? 数据库安装与调优
在控制节点上使用安装Mariadb、RabbitMQ等服务。并进行相关操作。
1.1.6?????? Keystone服务安装与使用
在控制节点上安装Keystone服务并创建用户。
1.1.7?????? Glance安装与使用
在控制节点上安装Glance 服务。上传镜像至平台,并设置镜像启动的要求参数。
1.1.8?????? Nova安装
在控制节点和计算节点上分别安装Nova服务。安装完成后,完成Nova相关配置。
1.1.9?????? Neutron安装
在控制和计算节点上正确安装Neutron服务。
1.1.10???? Dashboard安装
在控制节点上安装Dashboard服务。安装完成后,将Dashboard中的 Django数据修改为存储在文件中。
1.1.11???? Swift安装
在控制节点和计算节点上分别安装Swift服务。安装完成后,将cirros镜像进行分片存储。
1.1.12???? Cinder创建硬盘
在控制节点和计算节点分别安装Cinder服务,请在计算节点,对块存储进行扩容操作。
1.1.13???? Linux系统调优-脏数据回写
Linux系统内存中会存在脏数据,一般系统默认脏数据30秒后会回写磁盘,修改系统配置文件,要求将回写磁盘的时间临时调整为60秒。
1.2.1?????? OpenStack开放镜像权限
在admin项目中存在glance-cirros镜像文件,将glance-cirros镜像指定demo项目进行共享使用。
1.2.2?????? 使用Heat模板创建网络
在自行搭建的OpenStack私有云平台上,编写Heat模板文件,完成网络的创建。
1.2.3?????? 镜像转换
使用CentOS7.5-compress.qcow2 的镜像,将该镜像转换为RAW格式。
1.2.4?????? NFS对接Glance后端存储
使用OpenStack私有云平台,创建一台云主机,安装NFS服务,然后对接Glance后端存储。
1.2.5?????? Glance镜像存储限制
使用自行搭建的OpenStack平台。请修改Glance后端配置文件,将用户的镜像存储配额限制为20GB。
1.2.6?????? Nova清除缓存
在OpenStack平台上,修改相关配置,让长时间不用的镜像缓存在过一定的时间后会被自动删除。
1.2.7?????? Redis集群部署。
部署Redis集群,Redis的一主二从三哨兵架构。
1.2.8?????? Redis AOF调优
修改在Redis相关配置,避免AOF文件过大,Redis会进行AOF重写。
1.2.9?????? 公有云安全:入侵检测系统
使用提供的makechk.tar.gz包安装chkrootkit入侵检测工具,安装完毕后使用chkrootkit工具扫描系。
1.2.10???? 公有云安全:日志分析服务
然后使用提供的sepb_elk_latest.tar镜像安装ELK服务。
1.2.11???? 完成私有云平台的调优或排错工作。(本任务只公布考试范围,不公布赛题)
1.3.1?????? 编写Shell一键部署脚本
编写一键部署脚本,要求可以一键部署gpmall商城应用系统。
1.3.2?????? Ansible部署FTP服务
编写Ansible脚本,部署FTP服务。
1.3.3?????? Ansible部署Kafka服务
编写Playbook,部署的ZooKeeper和Kafka。
1.3.4?????? 编写OpenStack容器云平台自动化运维工具。(本任务只公布考试范围,不公布赛题)
企业构建Kubernetes容器云集群,引入KubeVirt实现OpenStack到Kubernetes的全面转型,用Kubernetes来管一切虚拟化运行时,包含裸金属、VM、容器。同时研发团队决定搭建基于Kubernetes 的CI/CD环境,基于这个平台来实现DevOps流程。引入服务网格Istio,实现业务系统的灰度发布,治理和优化公司各种微服务,并开发自动化运维程序。
2.1.1?????? 部署容器云平台
使用OpenStack私有云平台创建两台云主机,分别作为Kubernetes集群的master节点和node节点,然后完成Kubernetes集群的部署,并完成Istio服务网格、KubeVirt虚拟化和Harbor镜像仓库的部署。
2.2.1?????? 容器化部署MariaDB
编写Dockerfile文件构建mysql镜像,要求基于centos完成MariaDB数据库的安装与配置,并设置服务开机自启。
2.2.2?????? 容器化部署Redis
编写Dockerfile文件构建redis镜像,要求基于centos完成Redis服务的安装和配置,并设置服务开机自启。
2.2.3?????? 容器化部署Nginx
编写Dockerfile文件构建nginx镜像,要求基于centos完成Nginx服务的安装和配置,并设置服务开机自启。
2.2.4?????? 容器化部署Explorer
编写Dockerfile文件构建explorer镜像,要求基于centos完成PHP和HTTP环境的安装和配置,并设置服务开机自启。
2.2.5?????? 编排部署Explorer管理系统
编写docker-compose.yaml文件,要求使用镜像mysql、redis、nginx和explorer完成Explorer管理系统的编排部署。
2.2.6?????? 部署GitLab
将GitLab部署到Kubernetes集群中,设置GitLab服务root用户的密码,使用Service暴露服务,并将提供的项目包导入到GitLab中。
2.2.7?????? 部署GitLab Runner
将GitLab Runner部署到Kubernetes集群中,为GitLab Runner创建持久化构建缓存目录以加速构建速度,并将其注册到GitLab中。
2.2.8?????? 部署GitLab Agent
将Kubernetes集群添加到GitLab项目中,指定名称和命名空间。
2.2.9?????? 构建CI/CD
编写流水线脚本触发自动构建,要求基于GitLab项目完成代码的编译、镜像的构建与推送,并自动发布应用到Kubernetes集群中。
2.2.10???? 服务网格:Sidecar管理
在default命名空间下部署Bookinfo应用。创建exam命名空间,并声明一个Sidecar配置,允许向指定命名空间的公共服务输出流量。为所有指定标签的Pod声明一个Sidecar配置,接收和转发指定的流量。
2.2.11???? KubeVirt运维:VMI管理
将提供的镜像在default命名空间下创建一台VMI,名称为exam,使用Service暴露VMI。
2.2.12???? 完成容器云平台的调优或排错工作。(本任务只公布考试范围,不公布赛题)
2.3.1?????? 管理job服务
Kubernetes Python运维脚本开发-使用SDK方式管理job服务。
2.3.2?????? 自定义调度器
Kubernetes Python运维脚本开发-使用Restful API方式管理调度器。
2.3.3?????? 编写Kubernetes容器云平台自动化运维工具。(本任务只公布考试范围,不公布赛题)
企业选择国内公有云提供商,选择云主机、云网络、云硬盘、云防火墙、负载均衡等服务,可创建Web服务,共享文件存储服务,数据库服务,数据库集群等服务。搭建基于云原生的DevOps相关服务,构建云、边、端一体化的边缘计算系统,并开发云应用程序。
根据上述公有云平台的特性,完成公有云中的各项运维工作。
3.1.1?????? 私有网络管理
在公有云中完成虚拟私有云网络的创建。
3.1.2?????? 云实例管理
登录公有云平台,创建两台云实例虚拟机。
3.1.3?????? 管理数据库
使用intnetX-mysql网络创建两台chinaskill-sql-1和chinaskill-sql-2云服务器,并完成MongoDB安装。
3.1.4?????? 主从数据库
在chinaskill-sql-1和chinaskill-sql-2云服务器中配置MongoDB主从数据库。
3.1.5?????? node环境管理
使用提供的压缩文件,安装Node.js环境。
3.1.6?????? 安全组管理
根据要求,创建一个安全组。
3.1.7?????? RocketChat上云
使用http服务器提供文件,将Rocket.Chat应用部署上云。
3.1.8?????? NAT网关
根据要求创建一个公网NAT网关。
3.1.9?????? 云服务器备份
创建一个云服务器备份存储库名为server_backup,容量为100G。将ChinaSkill-node-1云服务器制作镜像文件chinaskill-image。
3.1.10???? 负载均衡器
根据要求创建一个负载均衡器chinaskill-elb。
3.1.11???? 弹性伸缩管理
根据要求新建一个弹性伸缩启动配置。
3.2.1?????? 云容器引擎
在公有云上,按照要求创建一个x86架构的容器云集群。
3.2.2?????? 云容器管理
使用插件管理在kcloud容器集群中安装Dashboard可视化监控界面。
3.2.3?????? 使用kubectl操作集群
在kcloud集群中安装kubectl命令,使用kubectl命令管理kcloud集群。
3.2.4?????? 云硬盘存储卷
根据要求购买云硬盘存储卷。
3.2.5?????? 生命周期管理-配置Pod生命周期
登录kcloud集群节点,在default命名空间下创建一个名Pod,并进行Pod生命周期管理。
3.2.6?????? 定时任务管理—创建定时任务
在kcloud集群节点/root目录下编写yaml文件date.yaml完成定时管理任务。
3.3.1?????? 开发环境搭建
创建一台云主机,并登录此云服务器,安装Python3.68运行环境与SDK依赖库。
3.3.2?????? 虚拟私有云VPC管理
调用api安全组的接口,实现VPC的增删查改。
3.3.3?????? 虚拟私有云VPC子网管理
调用api安全组的接口,实现虚拟私有云VPC子网的增删查改。
3.3.4?????? 弹性伸缩组管理
编写Python代码,调用弹性伸缩组API,创建弹性伸缩组。
3.4.1?????? 云端部署
构建Kubernetes容器云平台,云端部署KubeEdge CloudCore云测模块,并启动cloudcore服务。
3.4.2?????? 边端部署
在边侧部署KubeEdge EdgeCore边侧模块,并启动edgecore服务。
3.4.3?????? 边缘应用部署
通过边缘计算平台完成应用场景镜像部署与调试。(本任务只公布考试范围,不公布赛题)
3.5.1?????? 对接边缘计算系统,完成云应用微服务开发。(本任务只公布考试范围,不公布赛题)