From 3e359d45d410e6868cdfc005d3a1fc4ecbdaf579 Mon Sep 17 00:00:00 2001 From: faweizhao26 Date: Wed, 15 Feb 2023 18:43:21 +0800 Subject: [PATCH] add new case Signed-off-by: faweizhao26 --- content/en/case/_index.md | 2 + content/zh/case/_index.md | 6 ++ content/zh/case/keyenlinx.md | 149 ++++++++++++++++++++++++++ content/zh/case/xdf.md | 2 +- static/images/case/logo-keyenlinx.png | Bin 0 -> 26232 bytes 5 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 content/zh/case/keyenlinx.md create mode 100644 static/images/case/logo-keyenlinx.png diff --git a/content/en/case/_index.md b/content/en/case/_index.md index 5dfb9eb72..22d3f427a 100644 --- a/content/en/case/_index.md +++ b/content/en/case/_index.md @@ -150,6 +150,8 @@ section3: icon: '/images/home/section6-aviation-industry-corporation-of-china.jpg' - name: 'crrc' icon: '/images/case/logo-crrc.png' + - name: 'keyenlinx' + icon: '/images/case/logo-keyenlinx.png' - name: 'Energy' children: diff --git a/content/zh/case/_index.md b/content/zh/case/_index.md index 3e26e2c34..8497bdc9c 100644 --- a/content/zh/case/_index.md +++ b/content/zh/case/_index.md @@ -92,6 +92,10 @@ section2: content: "vesoft inc. 成立于 2018 年 10 月,是一家科技型创业公司。" link: "vesoft/" + - icon: "images/case/logo-keyenlinx.png" + content: "技研智联是一家专注于为纺织企业提供自动化控制系统软件、工业互联网应用平台、数字化转型与智能制造整体解决方案的高新技术企业。" + link: "keyenlinx/" + section3: title: 'KubeSphere 助力各行各业' tip: 全部 @@ -202,6 +206,8 @@ section3: icon: '/images/home/section6-aviation-industry-corporation-of-china.jpg' - name: 'crrc' icon: '/images/case/logo-crrc.png' + - name: 'keyenlinx' + icon: '/images/case/logo-keyenlinx.png' - name: '能源' children: diff --git a/content/zh/case/keyenlinx.md b/content/zh/case/keyenlinx.md new file mode 100644 index 000000000..3453781fe --- /dev/null +++ b/content/zh/case/keyenlinx.md @@ -0,0 +1,149 @@ +--- +title: keyenlinx +description: + +css: scss/case-detail.scss + +section1: + title: 技研智联 + content: 技研智联是一家专注于为纺织企业提供自动化控制系统软件、工业互联网应用平台、数字化转型与智能制造整体解决方案的高新技术企业。 + +section2: + listLeft: + - title: 公司简介 + contentList: + - content: 深圳市技研智联科技有限公司:为佛山技研智联科技有限公司子公司,前者为三技精密和研华合资公司。提供从工控设备,网关,云平台一体化的专业印染数字化工业互联网平台。 + - content: 佛山技研智联科技有限公司(以下简称“技研智联”)是由三技精密技术(广东)股份有限公司以及研华科技股份有限公司于 2020 年 8 月合资成立,是一家专注于为纺织企业提供自动化控制系统软件、工业互联网应用平台、数字化转型与智能制造整体解决方案,并为企业提供行业软件咨询、实施、集成等服务的高新技术企业,专精特新中小企业。 + - content: 公司发展至今已经是 100 多人规模专业技术产品团队,自主研发的 iTEX 智慧纺织云平台,目前已经连接 70 多家工厂,2000 多台设备,能够把工厂各个系统、各类跨业务的数据在同一个平台上打通,让企业实现基于数据和流程的业务协同。 + - content: 公司较早就开始拥抱云原生容器化部署,支持客户在公有云 iTEX 云平台使用 SaaS 产品,同时支持用户按私有云方式私有化部署安装使用。目前 IT 和运维团队规模 5 人,主要满足自身研发上云和客户安装部署运维需求。 + image: + + - title: 背景介绍 + contentList: + - content: 使用超融合服务器上分割部署 K8s 集群,通过 Rancher 来管理服务器集群。DevOps 用的 git 支持的脚步打 Docker 镜像方式,手动发布服务。存在服务器资源不足,扩展性欠缺,运维管理不便,技术框架差异等问题,随着业务发展需要底层资源管理,技术框架,公共服务统一服务化迫在眉睫。 + image: + + - title: 选型 + contentList: + - content: 作为公司基础服务平台团队,需要提供统一易用的容器服务发布部署管理一站式平台,期间对比了 Openshift,Rancher,KubeSphere 这几大开源 PaaS 容器管理平台,一方面 KubeSphere 优秀的交互体验一下击中了研发人员的心理,同时本着融合产品模块化开发的初衷,最终选择了 KubeSphere,希望能提高交互效果,另外期望可以提升整体产品底层设施稳定性和开发效率。 + image: + + - type: 1 + contentList: + - content: 集成发布更便捷 + - content: 性能监控更及时排错更快速 + - content: 租户权限控制更清晰安全性更高 + + - title: 实践过程 + contentList: + - content: K8s 集群基于腾讯云服务器 centos7.9 系统采用三个 Master 节点高可用集群多个 Worker 节点方案搭建,使用稳定 K8s v1.23.5 版本。分为开发,测试,预发布和生产四个私有网络 K8s 集群。 + image: + + - title: + contentList: + - specialContent: + text: 网络方案 + level: 3 + - content: 网络采用 Calico CNI。相比 Flannel,Calico 网络插件具有如下优势: + - content: 功能更全面,还可提供网络安全和管理; + - content: Calico 不使用 Overlay 网络。相反,Calico 配置第 3 层网络,该网络使用 BGP 路由协议在主机之间路由数据包,性能具有优势 - 能做网络策略,可与服务网格 Istio 集成。 + - content: 集群网络为腾讯云 VPC 私有网络外网不可访问,对外采用负载均衡统一接入经过 APISIX 流量网关后再到业务网关处理。服务之间都是内网通过 K8s 虚拟网络解析服务名访问。 + image: + - title: + contentList: + - specialContent: + text: DevOps 持续集成部署 + level: 3 + - content: 在使用 KubeSphere 之前公司公有云服务都部署在超融合服务器环境,使用 GitLab 的 CI 能力,在 Rancher 上发布服务。开发测试环境开发人员进行代码编译打包然后发布,生产环境开发人员打 tag 推送镜像,然后统一由运维人员使用 Rancher 进行发布部署。CI/CD 流程架构图如下: + image: http://pek3b.qingstor.com/kubesphere-community/images/jyzl-1.png + - title: + contentList: + - content: 改用 KubeSphere 后开发人员集成发布在 KubeSphere DevOps 项目里完成整个流程的编辑运行查看等操作。基于 Jenkins 脚本编排流水线,生产环境由运维人员进行 DevOps 项目授权操作。操作起来更流畅,能实现更复杂的流水线编排,但 Jenkins 容器镜像相对较大会吃资源一点。基于 KubepShere CI/CD 流程架构图如下: + image: http://pek3b.qingstor.com/kubesphere-community/images/jyzl-2.png + - title: + contentList: + - specialContent: + text: 日志与监控 + level: 3 + - content: + image: http://pek3b.qingstor.com/kubesphere-community/images/jyzl-3.png + - title: + contentList: + - content: 日志监控采用更为轻量的 Loki 系统组件来采集处理,并用 Grafana 进行可视化展示,监控使用 Prometheus,同样使用 Grafana 来展示。 + image: https://pek3b.qingstor.com/kubesphere-community/images/202302141725488.png + - title: + contentList: + - specialContent: + text: KubeSphere 账号权限管理 + level: 3 + - content: 各个应用普遍存在自己的账号角色体系,管理起来会比较繁琐,因此打通产品应用账号和 KubepShere 账号体系能极大提高配置使用体验,幸好 KubepShere 提供了 oauth 授权接口模板,只需要按照例子配置 url 及 client_id,写好回调处理接口即可打通账号授权登录。授权登录架构图如下: + image: https://pek3b.qingstor.com/kubesphere-community/images/202302141726710.png + + - title: 使用效果 + contentList: + - specialContent: + text: 账号以及项目权限管理 + level: 3 + - content: 打通应用系统账号跟 KubepShere 账号授权后,用户及权限管理更容易便捷,KubeSphere 集成效果如下图: + image: https://pek3b.qingstor.com/kubesphere-community/images/202302141727908.png + - title: + contentList: + - content: 初次登录 KubeSphere 授权个人信息即可,后续登录无需重复授权操作。目前不足之处是企业租户和角色没有和我们平台应用打通,需要各自配置。授权信息需要账号 ID,账号名字以及邮箱等。第一次授权确认账号信息如下图所示: + image: https://pek3b.qingstor.com/kubesphere-community/images/202302141727045.png + - title: + contentList: + - specialContent: + text: 应用服务发布部署 + level: 3 + - content: 应用服务发布部署功能更全面,方便统一管理控制。 + image: https://pek3b.qingstor.com/kubesphere-community/images/202302141728151.png + - title: + contentList: + - content: 在使用过程中也出现过偶尔卡住需要取消重新运行情况,多个流水线同时运行需要较长时间排队问题,后续运行效率这块希望能够优化。 + image: + - title: + contentList: + - specialContent: + text: 资源及服务性能监控 + level: 3 + - content: KubeSphere 监控提供了 Prometheus 监控套件,对服务器资源及使用情况能实时监控同时可以查询历史变化,极大方便了系统维护管理,提前发现系统资源瓶颈进行处理,提高稳定性。服务器集群监控如下图所示: + image: https://pek3b.qingstor.com/kubesphere-community/images/202302141728860.png + - title: + contentList: + - content: KubeSphere 同时支持对单个服务的性能和资源使用进行监控,对评估整体服务部署资源性能占用有了很好计算参考和优化方向。服务监控如下图所示: + image: https://pek3b.qingstor.com/kubesphere-community/images/202302141729978.png + - title: + contentList: + - specialContent: + text: 容器管理组件扩展 + level: 3 + - content: 2022 年六月底 KubeShere 3.3.0 版本发布后第一时间安装尝鲜,一开始全功能安装 KubeSphere,core,Prometheus,Istio,DevOps,monitor,APP 应用商店等各个组件。发现整个一套部署下去会很重,同时当前阶段有些组件还不太用得上,于是在部署安装配置文件里对一些模块(如 Istio,APP 商店)设置为 false 不安装即可。 + image: + + - type: 2 + content: 'KubeSphere 帮助我们解决了 K8s 集群管理和监控问题,让服务部署、监控、日志查询排错变得更容易,大大提升了研发效率,运维安全性也得到了可靠保障。' + author: '技研智联' + + - title: 未来规划 + contentList: + - content: PaaS 容器管理监控等基础设施作为企业产品服务的重要底座,稳定性,易用性,可适配性也是我们不断追求的目标,因此计划后续结合 KubeSphere 强大的容器管理平台能力进行自身产品需求服务管理进行融合,几个重要方向如下: + - content: 1. 轻量化部署 KubeSphere 核心组件,同时开发适配自己需要的插件。 + - content: 2. 轻量化部署后做多环境集群统一管理。 + - content: 3. 同时特殊场景下支持混合云场景。 + - content: 4. 根据后续业务量合适时机上 Istio 和 Serverless。 + image: + + rightPart: + icon: /images/case/logo-keyenlinx.png + list: + - title: 行业 + content: 工业互联网 + - title: 地点 + content: 中国 + - title: 云类型 + content: 公有云和私有云 + - title: 挑战 + content: 部署服务及监控割裂效率低,专业云原生开发团队要求高组建困难,业务团队多租户管理复杂安全稳定性急需提升 + - title: 采用功能 + content: 容器管理、DevOps、日志、监控 +--- diff --git a/content/zh/case/xdf.md b/content/zh/case/xdf.md index 22876d8b8..01adc0f5a 100644 --- a/content/zh/case/xdf.md +++ b/content/zh/case/xdf.md @@ -14,7 +14,7 @@ section2: contentList: - content: 新东方教育科技集团定位于以学生全面成长为核心,以科技为驱动力的综合性教育集团。 - content: 集团由 1993 年成立的北京新东方学校发展壮大而来,拥有短期培训系统、文化传播系统、咨询服务系统、科技产业系统等多个发展平台,打造了新东方学习成长中心、新东方国际教育、新东方大学生学习与发展中心、新东方在线、新东方前途出国、新东方国际游学、新东方满天星、新东方大愚文化等诸多知名教育品牌。 - - content: 作为中国著名私立教育机构,新东方教育科技集团于2006年9月7日在美国纽约证券交易所成功上市,2020 年 11 月 9 日在香港联合交易所成功二次上市。 + - content: 作为中国著名私立教育机构,新东方教育科技集团于 2006 年 9 月 7 日在美国纽约证券交易所成功上市,2020 年 11 月 9 日在香港联合交易所成功二次上市。 image: - title: 背景介绍 diff --git a/static/images/case/logo-keyenlinx.png b/static/images/case/logo-keyenlinx.png new file mode 100644 index 0000000000000000000000000000000000000000..47a5ba4c16233e6f69458f467f9e7258895c5b7c GIT binary patch literal 26232 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 literal 0 HcmV?d00001