某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“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.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 KVM调优
在自行搭建的OpenStack私有云平台或赛项提供的all-in-one平台上,修改相关配置文件,启用-device virtio-net-pci in kvm,
1.2.1 Keystone优化-优化token失效时间
请修改相关配置,将Keystone的失效列表缓存时间增加到原来的两倍。
1.2.2 Nova调优
安装nova完成后,修改相关配置文件将实例等待事件的最大时间调整为600。
1.2.3 Nova调度器管理
在OpenStack中,修改调度器规则为会将VM放置到load最低的节点上的调度器。
1.2.4 Linux系统调优-swap限制
修改controller节点的配置文件,要求永久生效swappiness为20。
1.2.5 OpenStack镜像压缩
在HTTP文件服务器中存在一个镜像为CentOS7.5-compress.qcow2的镜像,请对该镜像进行压缩操作。
1.2.6 Ceph部署
使用提供的ceph.tar.gz软件包,安装ceph服务并完成初始化操作。
1.2.7 Minio服务搭建
使用提供的OpenStack云平台,申请一台云主机,使用提供的软件包安装部署MINIO服务并使用systemctl管理。
1.2.8 Glance调优
在OpenStack平台中,修改相关配置文件,将子进程数量相应的配置修改成2。
1.2.9 Nova资源优化
编辑nova.conf文件,将内存预留量配置为4GB。
1.2.10 Nova安装与优化-优化数据库连接
修改nova相关配置文件,修改连接池大小和最大允许超出的连接数为10。
1.2.11 完成私有云平台的调优或排错工作。(本任务只公布考试范围,不公布赛题)
1.3.1 编写Shell脚本备份数据库
编写数据库的定期备份shell脚本。
1.3.2 Ansible部署zabbix服务
编写Ansible脚本,部署zabbix服务。
1.3.3 Ansible部署ELK服务
编写Playbook,部署的ELK。
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 容器化部署Koko
编写Dockerfile文件构建koko镜像,要求基于centos完成Koko服务的安装和配置;(并设置服务开机自启。
2.2.2 容器化部署Guacamole
编写Dockerfile文件构建guacamole镜像,要求基于centos完成Guacamole服务的安装和配置,并设置服务开机自启。
2.2.3 容器化部署MariaDB
编写Dockerfile文件构建mysql镜像,要求基于centos完成数据库的安装和配置,并设置服务开机自启。
2.2.4 容器化部署Core
编写Dockerfile文件构建core镜像,要求基于centos完成Python环境的安装与配置,
并设置服务开机自启。
2.2.5 编排部署JumpServer堡垒机
编写docker-compose.yaml文件,要求使用镜像mysql、redis、core、koko、guacamole和nginx完成JumpServer堡垒机的编排部署。
2.2.6 部署Jenkins
在default命名空间下完成Jenkins的部署,配置Jenkins的持久化存储,完成离线插件的安装,并设置登录信息。
2.2.7 配置Jenkins Slave
在Jenkins中添加Kubernetes云,并完成容器模板、Pod模板和标签的配置。
2.2.8 部署GitLab
将GitLab部署到default命名空间下,部署完成后新建公开项目,并将提供的代码上传到该项目。
2.2.9 在Kubernetes集群default命名空间下完成RabbitMQ和Nacos环境的部署,并完成Nacos服务的配置管理。
2.2.10 构建CI/CD
在Jenkins中新建流水线任务,在GitLab项目中编写声明式Pipeline,触发项目构建,要求完成项目代码的编译,然后构建Docker镜像并推送到Harbor仓库,并基于新构建的镜像将服务自动发布到Kubernetes集群中。
2.2.11 服务网格:Sidecar管理
在default命名空间下部署Bookinfo应用。创建exam命名空间,并声明一个Sidecar配置,允许向指定命名空间的公共服务输出流量。为所有指定标签的Pod声明一个Sidecar配置,接收和转发指定的流量。
2.2.12 KubeVirt运维:创建VM
使用云端镜像在default命名空间下创建一台VM,名称为exam,指定VM的内存、CPU、运行策略、启动参数等配置。
2.2.13 完成容器云平台的调优或排错工作。(本任务只公布考试范围,不公布赛题)
2.3.1 管理Deployment服务
Kubernetes Python运维脚本开发-使用SDK方式管理Deployment服务。
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 HPA管理—创建HPA规则
在kcloud集群节点/root目录下编写YAML文件hpa.yaml,完成HPA管理。
3.3.1 开发环境搭建
创建一台云主机,并登录此云服务器,安装Python3.68运行环境与SDK依赖库。
3.3.2 云主机管理
调用SDK云主机管理的方法,实现云主机的的增删查改。
3.3.3 云主机组管理
调用SDK云主机组管理的方法,实现云主机组的的增删查改。
3.3.4 弹性伸缩组管理
编写Python代码,调用弹性伸缩组API,创建弹性伸缩组。
3.3.5 完成公有云平台自动化运维程序开发。(本任务只公布考试范围,不公布赛题)
3.4.1 云端部署
构建Kubernetes容器云平台,云端部署KubeEdge CloudCore云测模块,并启动cloudcore服务。
3.4.2 边端部署
在边侧部署KubeEdge EdgeCore边侧模块,并启动edgecore服务。
3.4.3 边缘应用部署
通过边缘计算平台完成应用场景镜像部署与调试。(本任务只公布考试范围,不公布赛题)
3.5.1 对接边缘计算系统,完成云应用微服务开发。(本任务只公布考试范围,不公布赛题)