From aaab7299bdce580ebe5cf151aae1e12dd99e82c2 Mon Sep 17 00:00:00 2001 From: faweizhao26 Date: Thu, 20 Jul 2023 23:32:36 +0800 Subject: [PATCH] add one new case Signed-off-by: faweizhao26 --- content/en/case/_index.md | 2 + content/zh/case/_index.md | 6 + content/zh/case/eastcom.md | 247 ++++++++++++++++++++++++++++ static/images/case/logo-eastcom.png | Bin 0 -> 42885 bytes 4 files changed, 255 insertions(+) create mode 100644 content/zh/case/eastcom.md create mode 100644 static/images/case/logo-eastcom.png diff --git a/content/en/case/_index.md b/content/en/case/_index.md index 91036fe85..83f408884 100644 --- a/content/en/case/_index.md +++ b/content/en/case/_index.md @@ -184,6 +184,8 @@ section3: children: - name: 'chinamobile-iot' icon: 'images/case/chinamobile-iot.png' + - name: 'eastcom' + icon: 'images/case/logo-eastcom.png' - name: 'Educational' children: diff --git a/content/zh/case/_index.md b/content/zh/case/_index.md index 5d37a4755..1236837fc 100644 --- a/content/zh/case/_index.md +++ b/content/zh/case/_index.md @@ -112,6 +112,10 @@ section2: content: "深圳市文鼎创数据科技有限公司创立于 2006 年,是全球领先的线上身份认证解决方案提供商。" link: "excelsecu/" + - icon: "images/case/logo-eastcom.png" + content: "东方通信是一家集硬件设备、软件、服务为一体的整体解决方案提供商。" + link: "eastcom/" + section3: title: 'KubeSphere 助力各行各业' tip: 全部 @@ -256,6 +260,8 @@ section3: children: - name: 'chinamobile-iot' icon: 'images/case/chinamobile-iot.png' + - name: 'eastcom' + icon: 'images/case/logo-eastcom.png' - name: '教育' children: diff --git a/content/zh/case/eastcom.md b/content/zh/case/eastcom.md new file mode 100644 index 000000000..b3d0cb5e7 --- /dev/null +++ b/content/zh/case/eastcom.md @@ -0,0 +1,247 @@ +--- +title: eastcom +description: + +css: scss/case-detail.scss + +section1: + title: 东方通信 + content: 东方通信是一家集硬件设备、软件、服务为一体的整体解决方案提供商。 + +section2: + listLeft: + - title: 公司简介 + contentList: + - content: 东方通信股份有限公司(以下简称“东方通信”)创立于 1958 年,是一家集硬件设备、软件、服务为一体的整体解决方案提供商。公司于 1996 年成功改制上市,成为上海证交所同时发行 A 股和 B 股的国有控股上市公司。公司业务主要包括:专网通信及信息安全产品和解决方案、公网通信相关产品及 ICT 服务、金融电子设备及软件产品、智能制造业务。 + - content: 十四五期间,公司主责主业聚焦在以专网通信、公网通信、ICT 服务为基础的“信息通信产业”,金融电子为基础的“金融科技产业”和“智能制造产业”三大产业,围绕主责主业不断创新与转型升级。 肩负“科技创造价值,共筑美好生活”的使命,东方通信坚持“诚信、务实、创新、共赢”的理念,致力于为客户提供优质的产品、便利的体验、完美的方案和满意的服务,努力成为在国际市场中拥有优势品牌、持续创新和发展的领先企业! + image: + + - title: 技术现状 + contentList: + - content: 在使用 KubeSphere 之前,公司已经开始研究云原生和探索应用上云的道路。但是由于每个团队接触和学习云原生技术的时间不同,原生 Kubernetes 的使用还是存在一定的门槛。并且随着公司云的基础设施和使用团队的的增加,也提高了云平台团队对云的管理难度。 + - content: 项目的交付方式还是传统的瀑布式开发模式,没有高效的流程,不同的环境下需要对应的开发或运维人员手动部署,增大出现差异性和错误的几率。 + image: + + - title: 团队规模 + contentList: + - content: 公司拥有国家级企业技术中心和博士后工作站,承担着多项国家重点研发项目,并多次荣获国家科技进步奖,现有员工 2500 余名,其中 75% 以上为技术专业人才。 + image: + + - title: 背景介绍 + contentList: + - content: 近几年,云原生技术已经不再是一个新鲜词汇,根据权威 IT 研究公司 Gartner 预测,到 2025 年,云原生平台将成为 95%以上的新数字化计划的基础,而在 2021 年这一比例只有不到 40%。云原生技术在效率上的巨大优势,使其逐渐成为 IT 发展的主流趋势。 + - content: 针对用户在业务上提出的一些需求,云原生技术能够为我们提供更多的选择。以我司最近的一个项目为例,用户要求为每条业务线路提供主备实例,同时还需要提供容灾备份。在传统部署方式下,需要采购的服务器数量是业务线路数量的 4 倍。但是使用云原生技术,通过容器的方式来实现业务线路之间的隔离,可以大大降低基础设施部署的成本,使用 Kubernetes 作为编排引擎,以声明式脚本的方式部署业务,规范并简化了部署流程,提高了可重复性和一致性。 + - content: 上面举例中提到的只是云原生技术带来的其中一部分改变,随着业务更加深入的进行云化改造,还可以在业务的弹性和高可用,敏捷开发等方面带来更多的价值。 + image: + + - title: 选型 + contentList: + - content: 公司与 KubeSphere 的相遇始于针对 Kubernetes 的 Dashboard 的选型。在使用 KubeSphere 之前,我们也研究和试用了许多其他的项目,比如 Kubernetes 官方的 Dashboard 和其他市场同类型产品。Kubernetes 官方的 Dashboard 的功能比较单一,只是提供了对集群资源的管理,市场同类型产品虽然功能更丰富,但还是无法完全满足我们的需求。 + - content: 最终选择 KubeSphere 的原因有以下几点: + - content: 首先,KubeSphere 不仅仅只是单纯的 Dashboard ,除了针对 Kubernetes 资源管理之外,还提供了统一的集群管理、包含日志、审计、监控在内的强大的可观测性等许多附加功能。同时提供可插拔组件的部署方式,既满足了功能多样性,又满足了部署的灵活性需求。 + - content: 其次,KubeSphere 很好的集成了 DevOps 自动化流程,而 DevOps 自动化流程是提高软件交付速度、保障质量和可靠性的最佳实践方法。 + - content: 最后,我们看重的是 KubeSphere 活跃的开源社区。最为一款开源产品,一个充满活力的开放性开源社区,才能提供充分的能力和技术知识支持,让大家能共享开源模式所带来的红利。 + image: + + - type: 1 + contentList: + - content: 大幅度提高现有资源利用率 + - content: 为各业务组提供上云改造参考 + - content: 提高发布、部署效率 + + - title: 实践过程 + contentList: + - specialContent: + text: 基础设施与部署架构 + level: 3 + - content: 在使用 KubeSphere 的过程中,我们首先是借助 KubeSphere 提供的多集群和多租户功能对现有的集群资源和云上的组织整体架构做了调整,下图所示是我们现在基于 KubeSphere 的东信云组织架构。 + image: https://pek3b.qingstor.com/kubesphere-community/images/eastcom-kubesphere-architecture.jpg + - title: + contentList: + - content: 利用多集群管理功能,对现有的集群资源进行了统一管理。既实现了隔离不同环境,又实现了跨集群的统一管理。通过统一的控制平面,将应用程序及其副本分发到不同集群,实现了集中监控、日志系统、事件和审计日志。 + - content: 其次,借助多租户管理功能,为不同的事业部创建各自的企业空间(WorkSpace),在企业空间中控制资源访问权限。每个企业空间下按开发、测试、运维小组划分为不同的部门,同时为每个项目创建项目空间(NameSpace)。部门作为权限管理的逻辑单元,通过设置项目角色使部门拥有项目的对应权限,再将用户分配至部门后,简化对新加入成员的权限分配过程。 + - content: 引入 DevOps 工作流,利用 S2I、B2I 实现镜像的快速交付,借助 Jenkins 流水线实现 CI/CD,帮助团队实现软件的快速、安全、可靠地交付。 + - content: 借助 KubeSphere 的应用商店功能来管理应用程序的整个生命周期(提交、审核、测试、发布、升级和下架),同时我们还部署了 Harbor 来管理容器镜像。 + image: + - title: + contentList: + - specialContent: + text: 存储实现方案 + level: 3 + - content: 为了解决持久化存储的问题,采用基于 nfs-subdir-external-provisioner 的 storageclass 作为存储类,同时对不方便进行改造的业务支持使用本地存储。由用户创建业务 Pod 和 PVC 来申请使用一定量的存储资源,集群管理员管理存储类和 PV,如果使用的是 NFS 类型的存储,由 nfs-subdir-external-provisioner 根据 PVC 申请的存储大小自动创建 PV,如果使用的是本地存储,则由管理员负责手动创建 PV。 + image: https://pek3b.qingstor.com/kubesphere-community/images/image-20230714102940995.png + - title: + contentList: + - specialContent: + text: 日志与监控 + level: 3 + - content: 为了实现日志文件持久化存储,从容器中读取日志可读,且重启和掉电不丢。采用 EFK(Elasticsearch + Fluentd + Kibana)的日志收集和分析方案来帮助有效的管理和分析大规模日志数据。日志收集目标包括:Docker 组件日志、业务容器日志、管理面组件日志。Elasticsearch 组件目前是直接使用 KubeSphere 内置的 ES,后期为了提升性能,考虑接入外部的 Elasticsearch。 + image: https://pek3b.qingstor.com/kubesphere-community/images/image-20230714104912008.png + - title: + contentList: + - content: 引入 Prometheus 服务作为监控中心,定时采集业务容器、控制面组件以及物理服务器三个层面的指标数据,通过 KubeSphere 界面或 Grafana 的界面展示详细信息。使用采集到的各种指标来判断业务或集群是否正常,针对异常可通过 Prometheus 的 AlarmManage 告警功能进行信息的转发,将告警信息同步到网管(内部管理平台)或通过邮箱、短信、钉钉等方式通知到运维人员。 + image: https://pek3b.qingstor.com/kubesphere-community/images/image-20230714104651231.png + - title: + contentList: + - specialContent: + text: 多租户管理 + level: 3 + - content: 这里我们想重点分享一下我们针对 KubeSphere 的多租户结构的分析,KubeSphere 在 Kubernetes 的 RBAC 和命名空间提供的基本的逻辑隔离能力基础上,增加了企业空间提供了跨集群、跨项目(即 Kubernetes 中的命名空间)共享资源的能力和权限控制。下面的分析都是基于我们公司使用的 KubeSphere V3.3.0 版本展开。 + image: https://pek3b.qingstor.com/kubesphere-community/images/16892401243511.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/eastcom-kubesphere-xxx.png + - title: + contentList: + - content: 1. 用户 Users: + - content: 用户是 KubeSphere 的帐户实例,是登陆 KubeSphere 控制台的实体账号,在 KubeSphere 中使用 users.iam.kubesphere.io 资源对用户进行抽象。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992925029.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/16892399292385.png + - title: + contentList: + - content: 用户信息中保存了用户名、密码、最后登陆时间等信息。 + image: https://pek3b.qingstor.com/kubesphere-community/images/16892399292386.png + - title: + contentList: + - content: 平台角色 globalroles: + - content: 在 KubeSphere 中平台角色使用 globalroles.iam.kubesphere.io 资源抽象。安装成功后,会预创建 4 个内置的平台角色,每个平台角色实际又关联着一个或多个平台模板角色(平台角色的权限是关联模板角色权限的集合)。 + image: https://pek3b.qingstor.com/kubesphere-community/images/eastcom-kubesphere-yyy.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/16892399292387.png + - title: + contentList: + - content: 以 users-manager 角色为例子,其关联了用户查看、角色查看、用户管理、角色管理四个模板角色,这让 users-manager 角色拥有了这四个角色模板下所对应的资源访问权限。 + image: https://pek3b.qingstor.com/kubesphere-community/images/16892399292388.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/16892399292389.png + - title: + contentList: + - content: 平台角色绑定 globalrolebindings: + - content: 创建用户后,需要为用户分配一个平台角色,使用 globalrolebindings.iam.kubesphere.io 资源来抽象用户和平台角色的绑定关系。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923810.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923911.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923912.png + - title: + contentList: + - content: 在创建一个新的平台角色时,需要编辑权限,此时就是为新创建的平台角色关联预创建的角色模板。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923913.png + - title: + contentList: + - content: 2. 企业空间 WorkSpace + - content: 企业空间是 KubeSphere 中用来管理项目、DevOps 项目、应用模板和应用仓库的一种逻辑单元。可以在企业空间中控制资源访问权限,也可以安全地在团队内部分享资源。在 KubeSphere 中使用 workspaces.tenant.kubesphere.io 和 workspacesTemplate.tenant.kubesphere.io 资源对企业空间进行抽象。 + - content: 企业空间角色 workspaceroles: + - content: 在 KubeSphere 中企业空间角色使用 workspaceroles.iam.kubesphere.io 资源抽象。安装成功后,会预创建 4 个内置的企业空间角色,每个企业空间角色实际又关联着一个或多个企业空间模板角色(企业空间角色的权限是关联企业空间模板角色权限的集合)。 + image: https://pek3b.qingstor.com/kubesphere-community/images/eastcom-kubesphere-zzz.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923914.png + - title: + contentList: + - content: 以 system-workspace-viewer 为例子,其关联了业空间设置查看、角色查看、成员查看、部门查看、项目查看、DevOps 项目查看、应用模板查看、应用仓库查看八个模板角色。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923915.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923916.png + - title: + contentList: + - content: 企业空间角色绑定 workspacerolebindings: + - content: 在企业空间中,可以在企业空间成员处邀请用户加入企业空间,邀请用户加入时,还需要为其分配企业空间角色,使用 workspacerolebindings.iam.kubesphere.io 资源来抽象用户和企业空间角色的绑定关系。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923917.png + - title: + contentList: + - content: 此处以企业空间的默认管理员角色为例(管理员的角色绑定是在创建企业空间时选择管理员时绑定)。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992923918.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924019.png + - title: + contentList: + - content: 3. 项目 NameSpace + - content: KubeSphere 中项目就是 K8s 中的命名空间,使用的就是 NameSpace 资源来抽象项目,企业空间和项目的关系是一对多,即一个企业空间下,可以创建多个项目。K8s 的默认命名空间和 KubeSphere 系统相关的命名空间,都归属于默认企业空间 system-workspace。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924020.png + - title: + contentList: + - content: 下面在前面创建的 demo-ws 企业空间下创建一个新的项目 demo-ws-project-01。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924021.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924022.png + - title: + contentList: + - content: 项目角色 roles: + - content: 在 KubeSphere 中项目角色对应的就是 K8s 自带的 roles 资源。但是通过 KubeSphere 创建新项目时,会自动创建 3 个内置的项目角色,每个项目角色实际又关联着一个或多个项目模板角色(项目角色的权限是关联项目模板角色权限的集合)。 + image: https://pek3b.qingstor.com/kubesphere-community/images/eastcom-kubesphere-xyz.png + - title: + contentList: + - content: 下图展示的是 demo-ws-project-01 项目下的项目角色,如需查看其他项目下的角色,需要带 -n 参数指定项目名(命名空间)。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924023.png + - title: + contentList: + - content: 以 viewer 角色为例,关联了如下的项目模板角色。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924024.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924025.png + - title: + contentList: + - content: 项目角色绑定 rolebindings: + - content: 在项目下,可以在项目成员处邀请用户加入项目,邀请用户加入时,还需要为其分配项目角色,此时使用的就是 K8s 自带的 rolebindings 资源。以 demo-ws-project-01 项目下绑定关系为例。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924026.png + - title: + contentList: + - content: 从下图可以看到,admin 用户绑定了该项目下的 admin 角色。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924027.png + - title: + contentList: + - content: 从下图可以看到,admin 用户绑定了该项目下的 admin 角色。 + image: https://pek3b.qingstor.com/kubesphere-community/images/168923992924028.png + + - title: 使用效果 + contentList: + - content: 1. 在使用了 KubeSphere 之后,原有的分散管理的多个集群在逻辑上组成了一个大一统环境,集群管理的许多操作不需要再分别连接到不同集群上去操作,对多个集群的状态监控也能够在统一的入口获取,极大的提高了管理的效率。 + - content: 2. 项目交付和部署更加的规范,减少了因环境和不同人员操作而可能产生的差异性,特别是应用商城让应用如同货架上的商品一样唾手可得,应用的部署也只需要很少的修改后即可一键安装。 + - content: 3. 友好的用户界面和可视化的操作方式,降低了公司其他团队使用云的门槛,让即使是刚接触云原生的团队,也能很快的上手。 + image: + + - type: 2 + content: '借助 KubeSphere 的集群管理,有效的整合集群资源并提升了资源使用效率。改造传统业务,加快业务的发布、部署,提高产品核心竞争力。' + author: '东方通信' + + - title: 未来规划 + contentList: + - content: 未来我们计划探索和使用更多 KubeSphere 的组件功能,如审计日志、服务网格等。针对东信团队的内部需求,对 KubeSphere 的源码进行二次开发,并争取能够回馈社区。积极参与社区活动,与社区进行更加深入的交流。 + image: + + rightPart: + icon: /images/case/logo-eastcom.png + list: + - title: 行业 + content: 通信 + - title: 地点 + content: 中国杭州 + - title: 云类型 + content: 私有云 + - title: 挑战 + content: 资源统一管理、传统业务改造及定制化、快速发布/部署 + - title: 采用功能 + content: 集群化统一管理资源;存储、网络、日志业务上云改造,少量业务定制化;发布/部署方案及实现上云重构 +--- diff --git a/static/images/case/logo-eastcom.png b/static/images/case/logo-eastcom.png new file mode 100644 index 0000000000000000000000000000000000000000..09ae2281be6a92c131940bc0dc13c81c961caa13 GIT binary patch literal 42885 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 literal 0 HcmV?d00001