某企业根据自身业务需求,实施数字化转型,规划和建设数字化平台,平台聚焦“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系统调优-防止SYN攻击
修改controller节点的相关配置文件,开启SYN cookie,防止SYN洪水攻击。
1.2.1 Glance镜像上传
在OpenStack私有云平台上,使用cirros-0.3.4-x86_64-disk.img镜像创建一个名为cirros的镜像。
1.2.2 Keystone优化-优化token失效时间
请修改相关配置,将Keystone的失效列表缓存时间增加到原来的两倍。
1.2.3 虚拟机调整flavor
使用OpenStack私有云平台,请修改相应配置,实现云主机调整实例大小可以使用。
1.2.4 使用Heat模板创建flavor
编写模板server.yaml,按要求创建云主机类型。
1.2.5 Ceph部署
使用提供的ceph.tar.gz软件包,安装ceph服务并完成初始化操作。
1.2.6 Glance调优
在OpenStack平台中,修改相关配置文件,将子进程数量相应的配置修改成2。
1.2.7 Swift配置Glance后端存储
使用OpenStack私有云平台,修改相应的配置文件,使对象存储Swift作为glance镜像服务的后端存储。
1.2.8 Nova资源优化
编辑nova.conf文件,将内存预留量配置为4GB。
1.2.9 RabbitMQ集群部署
使用OpenStack私有云平台,创建三个云主机搭建RabbitMQ集群。
1.2.10 云平台安全策略提升
使用OpenStack,安装必要组件,将私有云平台的访问策略从http提升至https。
1.2.11 完成私有云平台的调优或排错工作。(本任务只公布考试范围,不公布赛题)
1.3.1 编写Shell脚本备份数据库
编写数据库的定期备份shell脚本。
1.3.2 Ansible部署MariaDB服务
编写Ansible脚本,部署MariaDB服务。
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 容器化部署MariaDB
编写Dockerfile文件构建mysql镜像,要求基于centos完成MariaDB数据库的安装与配置,并设置服务开机自启。
2.2.2 容器化部署Redis
编写Dockerfile文件构建redis镜像,要求基于centos完成Redis服务的安装和配置,并设置服务开机自启。
2.2.3 容器化部署Hyperf
编写Dockerfile文件构建hyperf镜像,要求基于centos安装PHP及扩展,并安装和配置Swoole,并设置服务开机自启。
2.2.4 容器化部署Nginx
编写Dockerfile文件构建nginx镜像,要求基于centos完成Nginx服务的安装和配置,并设置服务开机自启。
2.2.5 编排部署Hyperf开发框架
编写docker-compose.yaml文件,要求使用镜像mysql、redis、nginx和hyperf完成Hyperf管理系统的编排部署。
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 服务网格:创建Ingress Gateway
将Bookinfo应用部署到default命名空间下,使用Istio Gateway可以实现应用程序从外部访问,请为Bookinfo应用创建一个网关,指定所有HTTP流量通过80端口流入网格,然后将网关绑定到虚拟服务Bookinfo上。
2.2.12 KubeVirt运维:创建VM
使用云端镜像在default命名空间下创建一台VM,名称为exam,指定VM的内存、CPU、运行策略、主机名等配置。
2.2.13 完成容器云平台的调优或排错工作。(本任务只公布考试范围,不公布赛题)
2.3.1 管理Pod服务
Kubernetes Python运维脚本开发-使用SDK方式管理Pod服务。
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 安装Helm
使用提供的Helm软件包,在kcloud集群中安装Helm服务。
3.2.5 HPA管理—创建HPA规则
在kcloud集群节点/root目录下编写YAML文件hpa.yaml,完成HPA管理。
3.2.6 使用Helm模板
使用赛项提供的mychart-0.1.0.tgz模板包,在kcloud集群中安装名为nginx的模板实例。
3.3.1 开发环境搭建
创建一台云主机,并登录此云服务器,安装Python3.68运行环境与SDK依赖库。
3.3.2 安全组管理
调用api安全组的接口,实现安全组的增删查改。
3.3.3 安全组规则管理
调用SDK安全组规则的方法,实现安全组规则的增删查改。
3.3.4 云主机管理
调用SDK云主机管理的方法,实现云主机的的增删查改。
3.3.5 完成公有云平台自动化运维程序开发。(本任务只公布考试范围,不公布赛题)
3.4.1 云端部署
构建Kubernetes容器云平台,云端部署KubeEdge CloudCore云测模块,并启动cloudcore服务。
3.4.2 边端部署
在边侧部署KubeEdge EdgeCore边侧模块,并启动edgecore服务。
3.4.3 边缘应用部署
通过边缘计算平台完成应用场景镜像部署与调试。(本任务只公布考试范围,不公布赛题)
3.5.1 对接边缘计算系统,完成云应用微服务开发。(本任务只公布考试范围,不公布赛题)