From 0aa594eeab077a5e33915c6fe90efd421c0eb76b Mon Sep 17 00:00:00 2001 From: faweizhao26 Date: Tue, 21 Feb 2023 12:10:54 +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/yiheda.md | 163 +++++++++++++++++++++++++++++ static/images/case/logo-yiheda.png | Bin 0 -> 36274 bytes 4 files changed, 171 insertions(+) create mode 100644 content/zh/case/yiheda.md create mode 100644 static/images/case/logo-yiheda.png diff --git a/content/en/case/_index.md b/content/en/case/_index.md index 22d3f427a..12be651ac 100644 --- a/content/en/case/_index.md +++ b/content/en/case/_index.md @@ -152,6 +152,8 @@ section3: icon: '/images/case/logo-crrc.png' - name: 'keyenlinx' icon: '/images/case/logo-keyenlinx.png' + - name: 'yiheda' + icon: '/images/case/logo-yiheda.png' - name: 'Energy' children: diff --git a/content/zh/case/_index.md b/content/zh/case/_index.md index 8497bdc9c..5ca32345d 100644 --- a/content/zh/case/_index.md +++ b/content/zh/case/_index.md @@ -96,6 +96,10 @@ section2: content: "技研智联是一家专注于为纺织企业提供自动化控制系统软件、工业互联网应用平台、数字化转型与智能制造整体解决方案的高新技术企业。" link: "keyenlinx/" + - icon: "images/case/logo-yiheda.png" + content: "怡合达自动化专业从事自动化零部件研发、生产和销售,提供 FA 工厂自动化零部件一站式供应。" + link: "yiheda/" + section3: title: 'KubeSphere 助力各行各业' tip: 全部 @@ -208,6 +212,8 @@ section3: icon: '/images/case/logo-crrc.png' - name: 'keyenlinx' icon: '/images/case/logo-keyenlinx.png' + - name: 'yiheda' + icon: '/images/case/logo-yiheda.png' - name: '能源' children: diff --git a/content/zh/case/yiheda.md b/content/zh/case/yiheda.md new file mode 100644 index 000000000..1e17a9043 --- /dev/null +++ b/content/zh/case/yiheda.md @@ -0,0 +1,163 @@ +--- +title: yiheda +description: + +css: scss/case-detail.scss + +section1: + title: 怡合达 + content: 怡合达自动化专业从事自动化零部件研发、生产和销售,提供 FA 工厂自动化零部件一站式供应。 + +section2: + listLeft: + - title: 公司简介 + contentList: + - content: 东莞怡合达自动化股份有限公司,成立于 2010 年,专业从事自动化零部件研发、生产和销售,提供 FA 工厂自动化零部件一站式供应。公司深耕自动化设备行业,基于应用场景对自动化设备零部件进行标准化设计和分类选型,通过标准设定、产品开发、供应链管理、平台化运营,以信息和数字化为驱动,致力于为自动化设备行业提供高品质、低成本、短交期的自动化零部件产品。 + - content: 公司以“推动智能制造赋能中国制造”为企业愿景,致力于打造行业领先的 FA 工厂自动化零部件一站式供应商。公司以平台化为支撑,以信息和数字化为驱动,充分整合社会资源,链接自动化设备行业上下游资源,以标准设定和产品开发为起点,遵循“产品供给一平台整合一生态驱动”的发展路径,逐渐提高自动化设备中零部件标准化、模块化、组件化的覆盖比例,提升自动化设备供给效率,降低综合成本,最终推动自动化行业的技术进步。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-1.png + + - title: 背景介绍 + contentList: + - content: 在使用 Kubernetes 之前,公司一直是采用超融合传统虚拟机的方式来部署上线项目,这就导致公司资源浪费非常严重,每年单单在服务器的开销就大大增加。在使用 Kubernetes 之前,公司一直是采用超融合传统虚拟机的方式来部署上线项目,这就导致公司资源浪费非常严重,每年单单在服务器的开销就大大增加。 + - content: 目前公司拥有 3000+ 的员工,其中研发团队(运维,开发,测试,产品等)超过 300 人,在苏州,湖北都有研发团队。 + - content: 目前行业正在向自动化、云原生靠近,传统的互联网模式已经无法满足大公司的业务需求了,为了让开发人员将更多的精力放在业务上,自动化部署、项目的全方位监控就变得越来越重要。目前公司云原生是刚刚起步,很多东西需要去探索发现,所以技术上有很多欠缺,需要非常细致的理解各个组件的运行原理和模式。 + image: + + - title: 选型 + contentList: + - content: 在使用 KubeSphere 之前,我们也使用了很多其他的项目,如 KubeOperator,DaoCloud,Choerodon等。但是在使用过程中发现,其他工具的功能并不是很完善,遇到问题很难排查,社区也不是很活跃,这就导致我们的使用成本和维护成本大大增加。 + - content: 经过实践使用 KubeSphere 搭建的集群更加稳定,资源管控更加便捷,与同类云原生产品相比,KubeSphere 几乎实现了我们在生产环境会用到的所有功能。于是我们就开始在测试环境搭建并使用,随后慢慢地向生产环境迁移。目前我们公司有三分一的项目已经迁移到 KubeSphere 平台上,并且回收了之前的旧服务器,大大提高了资源使用率。 + image: + + - type: 1 + contentList: + - content: 提升资源利用率 + - content: 全方位项目管控 + - content: 规范项目部署发版流程 + + - title: 实践过程 + contentList: + - specialContent: + text: 基础设施与部署架构 + level: 3 + - content: 目前我们使用私有环境来搭建 Kubernetes 与 KubeSphere,因为是在我们内部使用,所以不考虑在云上进行搭建。 + - content: 基础服务器采用的是 Linux Centos 7,内核版本是 5.6。 + - content: 在搭建 Kubernetes 集群时,我选择使用 Keepalived 和 HAproxy 创建高可用 Kubernetes 集群,其中包括两个负载均衡入口。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-2.png + - title: + contentList: + - content: 然后是 3 个 Master 节点,3 个 Worker 节点,一个 Etcd 集群,因为是多集群,我会为公司每个项目创建一个集群,所有我们单个集群分配的资源不是很多,当资源不够使用时需要进行申请。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-3.png + - title: + contentList: + - specialContent: + text: 平台的存储与网络 + level: 3 + - content: 平台的持久化存储我们使用的是第三方杉岩,这就需要对方来提供存储卷和创建存储系统空间,所以在这里就不做过多介绍。大家也可以使用开源的存储插件来做,KubeSphere 文档中提到了很多开源存储插件,使用起来也非常的方便。 + - content: 在集群内部我们采用的是 Calico CNI 插件负责集群的内部通讯,当我们的服务部署至 Kubernetes 集群时会产生一个内部访问地址,这个地址在我们集群内是可以 ping 通和访问的,但外部无法访问。 + - content: 所以在外部网络通讯方面我做了两套方案: + - content: 1. 考虑到我们之前的项目使用 APISIX 作为网关路由,所以我们就在集群内搭建了 APISIX: + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-4.png + - title: + contentList: + - content: 搭建方式也非常简单,创建一个 APISIX 模板,再创建一个应用就可以了: + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-5.png + - title: + contentList: + - content: 创建完成之后集群内的项目就可以使用 APISIX 了,将 APISIX 开启对外访问,作为集群的唯一入口,接下来在服务中创建路由,就会在 APISIX 中自动生成一条路由规则与上游服务: + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-6.png + - title: + contentList: + - content: 2. 第二种方案则是使用负载均衡器 OpenELB,OpenELB 官方提供了三种模式,我们选用的是 Layer2 模式,因为 BGP 和 VIP 需要机器的支持,就暂时没有搭建,后续会考虑改用另外两种模式对外访问。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-7.png + - title: + contentList: + - content: 但是需要注意的是,通过应用商店进行安装一定要注意集群的内存空间是否充足,否则会导致集群监控组件异常。 + - content: 安装完成之后,我们只需要开启 strictARP: true,并设置 EIP 池就可以了,然后我们在部署服务时加上注解。将 type 改为 LoadBalance,就会在我们的 IP 池中获取一个对外访问的 IP 分配给服务进行对外访问了。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-code.png + - title: + contentList: + - specialContent: + text: 日志与监控 + level: 3 + - content: 我们搭建了一套 EFK 的日志系统,通过 Filebeat 收集服务端的数据,再通过 Kafka 发送到 es 中,然后通过 Kibana 查询日志数据,另外我们增加了一套 SkyWalking,它会给我们生成一个链路 ID,这样我们就可以根据这个链路 ID 直接查找当前请求下的所有日志。 + - content: 在监控方面除了 KubeSphere 自带的监控之外,我们还用了一套外部的监控系统: + - content: 主机层面:Prometheus + General + - content: 服务层面:SkyWalking + - content: 包括服状态的监控以及所有的告警 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-8.png + - title: + contentList: + - content: + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-9.png + - title: + contentList: + - specialContent: + text: CI/CD + level: 3 + - content: 我们开启了 KubeSphere 的 DevOps 模块,里面集成了 Jenkins,流水线的构建,实现了项目从拉取代码,质量检查到项目部署一键化的流程。 + - content: 在 DevOps 模块中用的是自定义 GitLab 仓库,如果是自己实践的话可以去 KubeSphere 应用商店中下载使用,在这里我就介绍一下自定义实现。 + - content: 首先需要打开 KubeSphere 自带的 Jenkins,进入页面创建一个 GitLab 的凭证,然后在系统配置自定义 GitLab 的地址。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-10.png + - title: + contentList: + - content: 这里的凭据就是我们刚刚创建的 GitLab 凭据,地址就直接填自己仓库的地址,然后就可以在 KubeSphere 中看到刚刚填写的地址了。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-11.png + - title: + contentList: + - content: 根据官方文档创建的流水线,其中有些地方需要自己指定。 + - content: 在 Jenkins 中是提供一个 Maven,在这里我需要改成自定义的 Maven,不然项目构建的时候会失败,我们只需要在 configMap 中修改 setting.xml 文件就可以了。 + - content: 镜像仓库用的是自定义 Harbor 仓库,要在 Harbor 中先创建存放镜像的地址,然后创建权限,在 KubeSphere 中添加凭证就可以使用了。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-12.png + - title: + contentList: + - content: 在使用流水线之前一定要把 GitLab、Kubernetes、镜像仓库的凭证建好,后面直接使用就可以了。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-13.png + - title: + contentList: + - content: 一些前置的条件配置好之后就可以直接去创建流水线了。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-14.png + - title: + contentList: + - content: 运行后可以看到运行记录。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-15.png + - title: + contentList: + - content: 流水线跑完之后就可以在项目中看到之前部署的项目了。 + image: https://pek3b.qingstor.com/kubesphere-community/images/kubesphere-yiheda-16.png + - title: + contentList: + - content: 包括服务和容器组,在里面就可以对项目进行管理了,包括负载均衡,网关,路由,扩容等一些操作。 + image: + + - title: 使用效果 + contentList: + - content: 1. 在使用 KubeSphere 之后,我们所有的项目都集中在一起了,管理起来方便很多,服务器的资源也很大程度的减少,在资金方面节省了很多。 + - content: 2. 项目上线现在只需要创建执行流水线就可以了,再根据定时任务定时执行,并且项目可以自动增加副本,项目启动失败会自动回滚到之前的版本。 + - content: 3. 在业务方面,接口的请求时间降低了,用户的使用体验也增加了不少,出现 bug 能够快速的定位并解决问题。 + image: + + - type: 2 + content: 'KubeSphere 提供了项目一站式的部署,管理,监控流程,最大化的分配资源使用率,提高项目的稳定性,降低了维护成本和人员消耗。' + author: '怡合达' + + - title: 未来规划 + contentList: + - content: 未来我们将把公司内部系统与 KubeSphere 完全打通,成立云原生小组来负责云原生的研发工作。 + - content: 公司的服务器资源将完全回收,将会以集群分配的方式管理项目,之后会自研一些插件和组件使用并进行开源。 + image: + + rightPart: + icon: /images/case/logo-yiheda.png + list: + - title: 行业 + content: 智能制造供应链 + - title: 地点 + content: 中国东莞 + - title: 云类型 + content: 私有云 + - title: 挑战 + content: 资源利用率,大规模项目管理,人员资源分配 + - title: 采用功能 + content: DevOps,多集群管理,日志,OpenELB +--- diff --git a/static/images/case/logo-yiheda.png b/static/images/case/logo-yiheda.png new file mode 100644 index 0000000000000000000000000000000000000000..f7984d72ac827bba444457a929afd9fb44b68a78 GIT binary patch literal 36274 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