华为云用户手册

  • 解决方案 本文将以Spring Cloud Demo项目为例,带您体验使用AppStage的开发中心、运维中心及运行时引擎进行工程创建、代码开发、打包发布、部署上线的全过程。 图1 应用上云流程 工程创建 创建产品/服务/微服务信息:企业资源接入AppStage前,需要先将企业产品/服务/微服务信息录入AppStage系统中,信息录入成功后,AppStage将同步产品/服务/微服务信息至AppStage的开发中心、运维中心等各个中心。 添加开发中心用户:开发中心的用户数根据购买规格有相应的用户数量限制,组织管理员通过用户的添加或删除来合理管理开发中心的使用人员。 创建团队:在开发中心进行服务开发前,需要组织管理员先创建一个团队,将团队关联需要开发的服务。 配置服务信息:将团队关联服务后,还需将团队关联的服务关联CodeArts项目,后续的服务开发管理过程中才能正常使用CodeArts服务的代码托管、流水线、编译构建功能。 添加团队成员:在团队多用户协作开发过程中,不同角色成员执行各自权限和责任事项,因此需要在团队中添加协作开发的各角色成员(项目经理、开发人员、测试人员等),实现统一有序的成员信息管理。 创建版本:为服务创建版本,进而在版本管理活动中进行流水线和发布流程等有序开发和特定发布过程管理。 代码开发 创建代码仓库:开发人员进行代码开发前,需要先创建代码仓库用于托管代码。本实践中使用代码托管 CodeArts Repo服务提供的模板创建,适用于本地没有仓库,希望按模板初始化一个仓库的场景。 下载代码到本地:开发人员进行代码文件的操作前,需要使用Git Bash客户端和TortoiseGit客户端下载代码仓库文件到本地环境中。 开发业务代码和编写IaC脚本:开发人员在本地开发业务代码以及IaC部署脚本。 提交代码到代码仓库:开发人员在本地完成业务代码和IaC脚本后,需要提交代码文件至代码仓库。 打包发布 创建/配置/执行流水线:通过流水线配置代码打包发布的编译构建自动化任务(包括添加业务包构建、IaC自动部署包构建任务),对这些自动化任务进行自定义编排后,一次配置后即可一键自动化触发调度执行,最终生成代码构建产物。 发布流水线构建的包到运维中心:版本开发及编译构建完成,且发布准入检查项均通过后,将版本软件包发布到运维中心的软件仓库。 部署上线 安装部署软件包:完成环境准备,并将发布在运维中心的软件包进行安装部署。 业务验证:软件包部署完成后,验证是否部署成功。
  • 背景信息 Spring Cloud为微服务开发提供了一套完整的解决方案,大幅简化了分布式系统中基础设施如服务发现与注册、配置管理、负载均衡、数据监控以及分布式调用链等的开发工作。通过Spring Cloud提供的简易框架,开发者能够基于Spring Boot轻松实现微服务项目的构建。 然而,除了开发阶段的便捷性外,我们还需要关注应用的部署、运维和监控等方面,以确保微服务应用在生产环境中的稳定性和性能。应用平台(AppStage)是基于平台工程理念打造的下一代应用全生命周期管理平台,帮助客户快速高效地实现应用全生命周期管理,为应用构建、运维和运营等生命周期管理活动提供自助式服务能力。 原生Spring Cloud应用仅需引入AppStage组件依赖并进行简单配置,即可轻松接入AppStage。接入后,用户即可体验到平台所提供的丰富功能,如服务注册与发现、智能运维、应用监控、服务治理、应用运营等。
  • 注册华为账号 并实名认证 使用AstroFlow前,需要先注册一个华为账号并进行实名认证。如果您已有一个华为账号,可直接跳过如下操作。 进入华为云官网,单击页面右上角的“注册”。 参考注册华为账号并开通华为云中操作,完成注册。 注册后参考个人账号如何完成实名认证或企业账号如何完成实名认证中操作,完成个人或企业账号实名认证。 执行本入门中操作,只需购买一个AstroFlow基础版实例。基础版实例当前为免费试用,所以不需要为您的账户充值。
  • 购买AstroFlow基础版实例 在使用AstroFlow前,您需要购买一个AstroFlow实例。AstroFlow实例是一个独立的资源空间,所有的操作都是在实例内进行,不同实例间的资源相互隔离。 执行本入门中操作,只需购买一个AstroFlow基础版实例。基础版实例当前为免费试用。 若您的账号已购买过AstroZero免费版、标准版或专业版实例,则无需再单独购买AstroFlow实例。因为购买AstroZero上述三种类型的实例时,会同步为您创建一个AstroFlow基础版实例。AstroZero是Astro低代码平台提供的一个低代码和零代码开发平台,更多关于AstroZero的介绍,请参见Astro轻应用 AstroZero。 进入购买Astro工作流实例页面。 规格选择“基础版”,单击“立即购买”。 图1 规格选择基础版 选择支付方式,单击“确认付款”,完成订单支付。 图2 确认付款 订单支付成功后,单击“返回Astro工作流控制台”。 在Astro工作流控制台中,可以查看Astro工作流的实例状态。当“实例状态”变为“运行中”时,说明实例已安装好,可以正常使用。 图3 查看AstroFlow实例
  • 步骤五:发布应用 应用开发完成后,需要发布应用。应用发布后,用户才可以正常访问应用。 流程发布成功后,单击,返回“流程管理”页面。 图33 返回流程管理页面 在主菜单中,选择“应用发布”。 在发布配置中,单击“启动发布”。 发布应用前,单击页面上方的“预览”,可预览应用。应用发布后,此按钮会变为“访问”,单击可直接访问运行态应用,功能和“应用发布地址”后的跳转相同。 图34 发布应用 获取应用的访问地址,并进行分享。 此处获取的地址,为应用运行态的访问地址。 图35 获取应用的访问地址
  • 步骤六:业务功能测试 验证请假申请流程是否按照预期执行,即请假人提交请假申请后,主管对申请进行审批,审批通过将结果通过邮件方式告知HR。 将中获取到的应用运行态访问地址,分享给请假人和主管。 请假人以步骤一:搭建组织层级中配置的邮箱或手机号登录应用,发起请假申请。 首次登录运行态应用时,请单击“设置密码/忘记密码”,通过邮箱或手机号码,根据界面提示完成密码的重置,并勾选隐私协议及服务声明。 单击“设置密码/忘记密码”,进入设置密码页面。 图36 应用运行态登录页 单击“发送验证码”,将验证码发送到用户手机或者邮箱。 图37 获取验证码 输入已获取的验证码,单击“提交”。 图38 输入已获取的验证码 输入新密码后,单击“重置密码”,完成密码重置。 图39 完成密码重置 (可选,首次登录时需要)勾选隐私协议及服务声明,单击“同意并继续”。 图40 勾选隐私协议及服务声明 员工填写请假申请。 图41 发起请假申请 发起请假申请后,在“我的申请”中可查看到已发起的记录,且状态显示为“主管审批”。 图42 查看请假记录 主管以步骤一:搭建组织层级中配置的邮箱或手机号登录应用。 首次登录时,请参考2中操作,重置密码。 在“待处理”中,单击员工请假审批流程后的,进入审批页面。 图43 进入审批页面 单击“通过”,输入审批意见,再单击“通过”,即可完成审批。 图44 审批申请 审批通过后,HR收到审批结果通过告知邮件。 图45 HR接收到邮件
  • 步骤四:创建表单触发流程 流程用于实现业务数据的自动化处理和自动流转。在AstroFlow中,一条流程由1个触发器(事件触发、定时触发和表单触发)和N个动作节点组成。其中,触发器(触发节点)是工作流能否启动的开关,满足了触发器的条件才能启动流程。动作节点是流程中自动执行的操作,流程中需要进行的数据操作、通知、审批等任务都需要对应的动作节点来完成。 本入门以步骤三:添加员工请假申请表中新增请假记录数据后,触发流程自动执行(主管审批、结果抄送HR)为例,向您介绍如何创建一个流程。 表单创建成功后,返回员工请假应用页面,在主菜单中,选择“流程管理”。 图18 选择流程管理 在流程管理页面,单击“创建流程”。 设置流程名称(如请假流程),触发方式选择“表单触发”,单击“创建”。 图19 创建表单触发流程 在流程设计页面的主菜单中,单击“切换横向布局”,调整页面布局。 图20 调整页面布局 设置表单触发节点。 选中触发节点(表单触发),选择步骤三:添加员工请假申请表中创建的表单,触发方式选择“仅新增记录时”。设置后,当员工请假申请表中有新增请假记录时,自动触发流程执行。 图21 设置触发节点 添加审批节点,并设置审批人信息。 将鼠标放在触发节点后的连接线上,单击,添加审批节点。 图22 添加审批节点 选中审批节点,修改节点名称为“主管审批”。 图23 修改节点名称 设置审批人信息。 审批对象:选择“表单触发”。 审批人类型:选择从通讯录中,获取审批人。 审批人:单击“添加审批人”,在成员中添加对应的审批人,如步骤一:搭建组织层级中添加的主管。 图24 设置审批人信息 设置完成后,单击“保存”。 添加分支(审批)节点。 分支(审批)节点只能作用于审批节点后,通过审批情况进行后续不同的操作。本示例中,审批通过后需要将审批结果通过发送邮件方式告知HR,驳回则直接执行结束。 将鼠标放在审批节点后的连接线上,单击,添加分支(审批)节点。 图25 添加分支(审批)节点 在通过分支上,单击,添加发送邮件节点。 图26 添加发送邮件节点 选中发送邮件节点,修改节点的名称为“抄送HR”。 图27 修改节点的名称 配置发送邮件节点。 图28 设置发送邮件节点 邮件服务器:使用租户或系统自带的邮箱,发送邮件告知相关人员。如果使用租户邮件服务器发送邮件,请提前在“组织设置”中配置,如何配置请参见设置租户邮件服务器。本入门使用系统邮件服务器。 收件人:设置邮件收件人,即步骤一:搭建组织层级中添加的HR。 抄送人:设置邮件抄送人,本示例不涉及。 密送人:设置邮件密送人,本示例不涉及。 收件人为空处理:设置收件人为空时的处理方式。如果当前节点还有其他收件人,则其他收件邮件正常发送。若当前节点无可用收件人,请根据实际情况设置收件人为空时的节点处理方式,如自动进入下一节或直接结束流程。 主题:设置邮件主题,本示例配置为“请假审批通过”。 正文:单击输入框,进入编辑邮件内容页面。在邮件内容中,输入“请假人:”后,单击左侧“表单启动”中的“请假人”。按照上述操作,添加请假天数和请假理由。单击“确定”,完成邮件内容编辑。 图29 编辑邮件内容 邮件节点设置完成后,单击“保存”。 图30 完整员工请假审批流程 校验流程。 在“流程设计”页面,单击页面上方的“校验”,对流程中参数的规则和合法性进行校验。 若页面提示“校验成功!”,则流程规则无误。 若校验失败,请根据界面提示进行修改,修改后再次执行校验操作。 图31 校验流程 流程校验成功后,单击页面上方的“发布”,发布流程。 图32 流程发布成功
  • 步骤三:添加员工请假申请表 表单用于收集和存储业务数据,想录入的任何数据,都需要建立对应的表单。在运行应用时,通过提交表单,来触发流程执行并记录业务数据。 在已创建应用的页面管理中,单击“添加页面”。 图11 单击添加页面 在添加页面中,选择“表单页面”,进入表单编辑器。 图12 选择表单页面 在页面左上角,单击,修改表单名称为“员工请假申请表”。 在组件库中,拖拽“单行文本输入”组件到表单设计区,修改组件的标题为“请假人”。 图13 拖入单行文本输入组件并设置属性 拖拽“数字输入框”组件到“单行文本输入”组件下方,修改组件的标题为“请假天数”。 图14 拖入数字输入框组件并设置属性 拖拽“多行文本输入”组件到“数字输入框”组件下方,修改组件的标题为“请假理由”。 图15 拖入多行文本组件并设置属性 表单设计完成后,单击“保存并预览”,可保存并预览表单。 您可以预览表单在电脑端和移动端的效果。 图16 保存并预览表单 表单保存成功后,在“表单发布”页签,单击“启动发布”,发布表单。 表单发布后,成员才可以在运行态访问到该表单。 知识点拓展:如果想把表单分享给组织外的用户(如匿名用户)去填写,该如何操作呢?此时可将表单设置为“公开发布”,如图17所示。设置后,获得链接的用户无需登录即可直接进行填写。 图17 将表单设置为公开发布
  • 步骤一:搭建组织层级 在Astro低代码平台中,通过组织管理可以便捷的配置组织的各类信息、角色和授权关系,实现对组织用户的管理游刃有余。搭建组织层级前,需要先设置通信录的维护方式,即从哪里添加成员。在Astro中,支持自维护和飞书两种通信录维护类型。本入门以自维护方式为例,向您介绍如何搭建组织层级,即先创建一个组织,再为组织添加所需的成员(如员工、主管和HR),最后为成员进行AstroFlow服务授权。 仅AstroFlow专业版或企业版实例支持对接飞书。若您购买的是基础版,请先将实例升级到专业版或企业版,再执行对接飞书的操作。 进入Astro低代码平台。 在左侧导航栏中,选择“组织管理” 。 进入组织管理时,如果提示图3中信息,说明您还未设置通信录维护方式,请单击“去设置”。 图3 设置通信录维护方式 在组织管理页面,选择“组织层级”。 创建部门。 创建一个部门,用于集中管理用户,也可以直接使用系统默认的部门。 图4 创建部门 部门创建完成后,单击“邀请成员”。 在邀请成员页面,设置用户信息。 您可以通过“手动添加成员”、“批量导入成员”和“一键公开邀请”三种方式添加成员。本示例以手动添加成员为例,关于添加成员的详细介绍,请参见如何添加一个成员。 图5 设置待邀请的用户信息 姓名:待添加用户的姓名,长度不能超过32个字符。 本示例需要添加请假发起人(张三)、主管和HR。 手机:待添加用户的手机号。 部门:用户所属的部门,如选择4中创建的子部门。 邮箱:待添加用户的邮箱地址。 工号:待添加用户的工号,不能超过60个字符。 设置完成后,单击“保存”。 如果需要继续添加用户,请单击“保存并继续添加”。在企业成员列表中,可查看到已添加的成员。本示例需要添加请假发起人(张三)、主管和HR。 图6 查看成员信息 在“服务授权”页签,单击“添加授权成员”,对已邀请的成员进行服务授权。 图7 对用户进行服务授权 在成员列表中,可以查看到已授权的成员。授权后,成员才可以正常使用AstroFlow。 图8 查看已授权的成员 此处邀请的成员只需要访问AstroFlow中开发的应用,故成员不需要通过邀请码加入组织,也不需要为其赋予AstroFlow中的角色和权限。若成员需要登录AstroFlow进行应用开发,请参考如何进行服务授权和赋予成员不同的角色权限中操作,将成员加入组织并赋予成员所需的权限。
  • 开发流程 在AstroFlow中,开发一个请假申请流程的步骤,如图2所示。 图2 开发请假申请流程图 步骤一:搭建组织层级 在Astro低代码平台中,通过组织管理可以便捷的配置组织的各类信息、角色和授权关系,实现对组织用户的管理游刃有余。本入门中,您需要先创建一个组织,再为组织添加所需的成员(如员工、主管和HR)。 步骤二:创建员工请假应用 应用是AstroFlow业务系统运行时的访问入口,由表单和流程组成。所以,在使用AstroFlow创建工作流前,需要先创建一个应用。 步骤三:添加员工请假申请表 表单由多个组件组成,是数据填报和收集的工具。应用创建后,需要为其添加一个或多个表单。在运行应用时,通过提交表单,来触发流程并记录业务数据。 步骤四:创建表单触发流程 AstroFlow提供了可视化的流程编排功能,用于助力企业一站式创建业务全流程。在AstroFlow中,一条流程由1个触发器和N个动作节点组成。其中,触发器(触发节点)是工作流能否启动的开关,满足了触发器的条件才能启动流程。动作节点是流程中自动执行的操作,流程中需要进行的数据操作、通知、审批等任务都需要对应的动作节点来完成。 步骤五:发布应用 发布应用并获取应用运行态的访问地址。将地址分享给组织内的其它成员(如张三、主管),成员即可登录应用发起请假申请和审批。 步骤六:业务功能测试 验证请假申请流程是否按照预期执行,即请假人提交请假申请后,主管对申请进行审批,同意申请则将审批结果通过发送邮件的方式告知HR。
  • 开发流程 在AstroFlow中,开发一个面试管理流程的步骤,如图2所示。 图2 面试管理流程图 步骤一:创建面试流程管理应用 应用是AstroFlow业务系统运行时的访问入口,由表单和流程组成。所以,在使用AstroFlow创建工作流前,需要先创建一个应用。 步骤二:添加简历管理表单 在应用中添加一个简历管理表单,供求职者填写个人基本信息、教育经历、工作经历和资格证书等信息。 步骤三:编排面试流程 创建一个表单触发流程,当简历管理表单中有新增数据时,触发流程执行。 步骤四:发布应用 发布应用,获取应用运行态的访问地址。应用发布后,求职者才可以登录应用,填写求职信息。 步骤五:业务功能测试 验证面试管理流程是否按照预期执行。
  • 步骤四:发布应用 应用开发完成后,需要发布应用。应用发布后,用户才可以正常访问应用。 流程发布成功后,单击,返回流程管理页面。 在主菜单中,选择“应用发布”。 在发布配置中,单击“启动发布”。 发布应用前,单击页面上方的“预览”,可预览应用。应用发布后,此按钮会变为“访问”,单击可直接访问运行态应用,功能和“应用发布地址”后的跳转相同。 获取应用的访问地址,并进行分享。 此处获取的地址,为应用运行态的访问地址。 图60 获取面试应用的访问地址
  • 步骤五:业务功能测试 验证面试流程是否按照预期执行,即求职者提交求职申请后,直接用人部门进行简历筛选,符合要求通知HR预约面试时间。 求职者发起求职申请。 求职者通过4中的地址,登录应用。 首次登录运行态应用时,请单击“设置/忘记密码”,通过邮箱或手机号码,根据界面提示完成密码的重置,并勾选隐私协议及服务声明。 图61 登录应用 在简历维护表单中,填写个人基本信息、教育经历、工作经历和资格证书,单击“提交”。 提交成功后,在我的申请中,可查看到已提交的记录。 用人单位主管审核简历。 用户单位主管通过4中的地址,登录应用。 在待处理中,单击对应流程后的。 主管审核简历。 图62 主管审批 审核通过,执行3。 驳回申请,流程执行结束。 HR收到简历初审通过的邮件通知。 图63 简历初审通过邮件 HR填写预约时间及地址,并将结果反馈给用人部门主管。 HR通过4中的地址,登录应用。 在待处理中,单击对应流程后的。 设置面试时间及地址。 图64 设置面试时间及地址 将预约结果反馈给部门主管。 图65 反馈预约结果 主管现场面试,填写面试结果。 图66 填写最终面试结果
  • 规格版本差异 数据安全中心 服务提供了标准版和专业版两个服务版本供您选择,其差异如表1所示。 当前版本的数据库数量和OBS体量不能满足业务需求时,可以通过升级版本和规格增加数据库扩展包和OBS扩展包的数量。 表1 服务版本差异 规格版本 支持添加的数据库数量 OBS体量 API调用额度 支持的功能 标准版 2个 100GB 不支持 资产地图 敏感数据识别 数据风险检测 专业版 2个 100GB 100W次 资产地图 敏感数据识别 数据风险检测 数据脱敏 数据水印注入/提取 API接口的调用
  • log-agent指标说明 log-agent插件的log-operator、fluent-bit和otel-collector组件提供了一系列指标,您可以使用 AOM 或Prometheus来监控这些指标,以便及时了解log-agent插件的运行情况,具体操作可参考使用AOM监控自定义指标或使用Prometheus监控自定义指标。详细的指标如下所述: log-operator组件(仅华为云集群) 端口:8443;地址:/metrics;协议:https 表7 指标 指标名 说明 类型 log_operator_aksk_latest_update_times AK/SK最后更新时间 Gauge log_operator_aksk_update_total AK/SK更新次数 Counter log_operator_send_request_total 发送请求数 Counter log_operator_webhook_listen_status Webhook监听状态 Gauge log_operator_http_request_duration_seconds HTTP请求时延 Histogram log_operator_http_request_total HTTP请求数 Counter log_operator_webhook_request_total Webhook请求数 Counter fluent-bit组件 端口:2020;地址:/api/v1/metrics/prometheus;协议:http 表8 指标 指标名 说明 类型 fluentbit_filter_add_records_total 用于记录在过滤器中添加的记录总数 Counter fluentbit_filter_drop_records_total 用于记录被过滤掉的日志记录数量 Counter fluentbit_input_bytes_total 用于衡量Fluent Bit在处理日志数据时输入的总字节数 Counter fluentbit_input_files_closed_total 用于记录关闭的文件总数 Counter fluentbit_input_files_opened_total 用于监控Fluent Bit的文件输入插件(input plugin)打开的文件数量 Counter fluentbit_input_files_rotated_total 用于记录Fluent Bit输入插件已经轮转的文件总数 Counter fluentbit_input_records_total 用于衡量 Fluent Bit 在输入插件中处理的记录数 Counter fluentbit_output_dropped_records_total 用于记录输出插件丢弃的记录数量 Counter fluentbit_output_errors_total 用于监控 Fluent Bit 的输出错误数量 Counter fluentbit_output_proc_bytes_total 用于监控 Fluent Bit 的输出插件(output plugin)处理的总字节数 Counter fluentbit_output_proc_records_total 用于监控 Fluent Bit 的输出插件处理的记录数 Counter fluentbit_output_retried_records_total 用于衡量 Fluent Bit 在输出数据时重试的次数 Counter fluentbit_output_retries_total 用于衡量 Fluent Bit 在发送数据到输出插件时发生重试的次数 Counter fluentbit_uptime Fluent Bit 运行的时间,通常以秒为单位 Counter fluentbit_build_info 用于显示Fluent Bit的版本和构建信息 Gauge otel-collector组件 端口:8888;地址:/metrics;协议:http 表9 指标 指标名 说明 类型 otelcol_exporter_enqueue_failed_log_records 用于衡量OpenTelemetry Collector在将日志记录发送到下游系统时,由于某些原因无法成功发送的日志记录数量 Counter otelcol_exporter_enqueue_failed_metric_points 用于衡量在将指标数据发送到后端时,由于某些原因导致无法成功发送的指标数据点的数量 Counter otelcol_exporter_enqueue_failed_spans 用于衡量otelcol exporter在将span发送到后端时失败的次数 Counter otelcol_exporter_send_failed_log_records 用于衡量日志记录发送失败的数量 Counter otelcol_exporter_sent_log_records 用于衡量OpenTelemetry Collector(otelcol)发送的日志记录数量 Counter otelcol_process_cpu_seconds 用于度量进程CPU使用时间的指标,它表示进程在特定时间段内使用的CPU时间,单位为秒 Counter otelcol_process_memory_rss 是OpenTelemetry中用于监控进程内存使用情况的一个指标。其中,rss代表Resident Set Size,即进程当前占用的物理内存大小 Gauge otelcol_process_runtime_heap_alloc_bytes 用于监控进程运行时堆内存分配的指标。它表示进程在运行时分配的堆内存的总字节数。 Gauge otelcol_process_runtime_total_alloc_bytes 用于衡量进程在运行时分配的总字节数 Counter otelcol_process_runtime_total_sys_memory_bytes 用于衡量进程在运行时使用的系统内存总量,单位为字节。 Gauge otelcol_process_uptime 指OpenTelemetry收集器进程的运行时间,以秒为单位。 Counter otelcol_receiver_accepted_log_records 用于衡量OpenTelemetry收集器接收并成功处理的日志记录数量 Counter otelcol_receiver_refused_log_records 用于衡量接收器(receiver)拒绝接收的日志记录数量 Counter
  • log-agent事件说明 在log-agent插件的安装和运行阶段,log-operator组件会上报事件,您可以根据这些事件来判断安装是否成功,并确定故障原因。具体如表6所示: 表6 log-agent事件说明 事件名称 说明 InitLTSFailed 初始化LTS日志组日志流失败 WatchAKSKFailed 监听AKSK失败 WatchAKSKSuccessful 监听AKSK成功 RequestLTSFailed 请求LTS接口失败 InitLTSSuccessful 初始化LTS日志组日志流成功 CreateWebhookConfigFailed 创建MutatingWebhookConfiguration失败 CreateWebhookConfigSuccessful 创建MutatingWebhookConfiguration成功 StartServerSuccessful 开启监听成功 StartServerFailed 开启监听失败 StartManagerFailed 开启CRD监听失败 InjectAnnotationFailed annotation注入失败 InjectAnnotationSuccessful annotation注入成功 UpdateLogConfigFailed 更新logconfig信息失败 GetConfigListFailed 获取CR列表失败 GenerateConfigFailed 生成fluent-bit、otel配置失败
  • 本地集群安装云原生日志插件前置授权 由于云原生日志插件需要访问LTS和AOM两个云服务,访问云服务需要对云原生日志插件进行鉴权,本地集群云原生日志插件使用工作负载 Identity方式允许集群中的工作负载模拟 IAM 用户来访问云服务。 工作负载 Identity方式是将集群的公钥配置到IAM身份提供商中,并添加 ServiceAccount 与 IAM 账号映射规则。工作负载部署时挂载ServiceAccount对应的Token,使用此Token访问云服务,IAM 使用该公钥验证Token,从而无需直接使用 IAM 账号的 AK/SK 等信息,降低安全风险。 获取本地集群私钥签发的jwks,该公钥用于验证集群签发的 ServiceAccount Token。 使用kubectl连接本地集群。 执行如下命令获取公钥。 kubectl get --raw /openid/v1/jwks 返回结果为一个 json 字符串,是当前集群的签名公钥,用于访问身份供应商。 { "keys": [ { "kty": "RSA", "e": "AQAB", "use": "sig", "kid": "Ew29q....", "alg": "RS256", "n": "peJdm...." } ] } 在 IAM 配置身份供应商,标志当前集群在 IAM 侧的身份。 登录IAM控制台,查询本地集群所在项目的ID,创建身份供应商,协议选择OpenID Connect。指定插件需要配置指定的身份供应商名称,具体请参见表1。用户组的权限配置具体操作请参见用户组策略内容。 表1 log-agent身份供应商配置 插件名称 身份提供商名称 客户端 ID namespace ServiceAccountName 用户组需要开通的最小权限 log-agent ucs-cluster-identity-{项目ID} ucs-cluster-identity monitoring log-agent-serviceaccount aom:alarm:* lts:*:* 图1 修改身份提供商信息 单击“确定”,然后修改身份提供商信息,需要修改的信息如表2所示。随后创建身份转换规则,单击“创建规则”进行创建。 图2 修改身份提供商信息 表2 身份提供商配置参数说明 参数 说明 访问方式 选择“编程访问”。 配置信息 身份供应商 URL:https://kubernetes.default.svc.cluster.local。 客户端 ID:指定插件需要配置指定的客户端ID,请参见表1。 签名公钥:本地集群的 jwks,获取方法请参见1。涉及多个集群时,请用逗号分隔每个集群的keys数组内容。 身份转换规则 身份转换规则的作用将集群内的ServiceAccount和IAM用户组做映射。 属性:sub 条件:any_one_of 值: 值的格式为:system:serviceaccount:Namespace:ServiceAccountName 其中Namespace请修改为需要创建ServiceAccount的命名空间,ServiceAccountName请修改为需要创建的ServiceAccount名称。 例如:值为system:serviceaccount:monitoring:log-agent-serviceaccount,表明在monitoring命名空间下创建一个名为log-agent的ServiceAccount,并映射到对应用户组,后续使用该 ServiceAccount获取的IAM Token就拥有了对应用户组的权限。 说明: 本地集群中的相关插件需要配置指定的 ServiceAccountName 和用户组权限才能正常工作,请参见 表1。 图3 创建身份转换规则 单击“确定”。
  • 本地集群安装云原生日志采集插件 登录U CS 控制台,选择容器舰队,单击集群名称进入集群,在左侧导航栏中选择“插件中心”,在右侧找到云原生日志采集插件,单击“安装”。 在安装插件页面,设置“规格配置”。 表3 插件规格配置 参数 参数说明 插件规格 该插件可配置“小规格”、“大规格”或“自定义”规格。 实例数 选择上方插件规格后,显示插件中的实例数。 选择“自定义”规格时,您可根据需求调整插件实例数。 容器 log-agent插件包含以下容器,您可根据需求自定义调整规格: fluent-bit:日志收集器,以DaemonSet形式安装在每个节点。 cop-logs:负责采集侧配置文件生成及更新的组件。 log-operator:负责解析及更新日志规则的组件。 otel-collector:负责集中式日志转发的组件,将fluent-bit收集的日志转发到LTS。 设置插件支持的“参数配置”。 Kubernetes事件上报AOM:采集Kubernetes事件并上报到 应用运维管理 AOM,可在AOM配置事件告警规则。 设置插件实例日志上报的“网络配置”。 公网接入:通过公网Internet接入,要求集群能够访问公网,具有弹性灵活、成本低、易接入的优势。公网接入要求集群能够访问公网,请确保集群已符合此条件,否则会接入失败。 云专线/VPN接入:通过云专线(DC)或 虚拟专用网络 (VPN)服务将云下网络与云上虚拟私有云(VPC)连通,并利用 VPC终端节点 通过内网与容器智能分析建立连接,具有高速、低时延、安全的优势。详情见本地集群使用云专线/VPN上报日志。 完成以上配置后,单击“安装”。
  • 组件说明 表4 log-agent组件 容器组件 说明 资源类型 fluent-bit 轻量级的日志收集器和转发器,部署在每个节点上采集日志。 DaemonSet cop-logs 负责生成采集文件的软链接,和fluent-bit运行在同一Pod。 DaemonSet log-operator 负责生成内部的配置文件。 Deployment otel-collector 负责收集来自不同应用程序和服务的日志数据,集中后上报至LTS。 Deployment
  • 自定义事件上报AOM log-agent插件会将所有Warning级别事件以及部分Normal级别事件上报到AOM。您也可以根据需求自行设置需要上报的事件,具体方法如下: 在集群上执行以下命令,编辑当前的事件采集配置。 kubectl edit logconfig -n kube-system default-event-aom 根据需要修改事件采集配置。 apiVersion: logging.openvessel.io/v1 kind: LogConfig metadata: annotations: helm.sh/resource-policy: keep name: default-event-aom namespace: kube-system spec: inputDetail: #采集端配置 type: event #采集端类型,请勿修改 event: normalEvents: #Normal级别事件采集配置 enable: true #是否开启Normal级别事件采集 includeNames: #需要采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp includeNames: #不采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp warningEvents: #Warning级别事件采集配置 enable: true #是否开启Warning级别事件采集 includeNames: #需要采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp includeNames: #不采集的事件名,不指定则采集所有事件 - NotTriggerScaleUp outputDetail: type: AOM #输出端类型,请勿修改 AOM: events: - name: DeleteNodeWithNoServer #事件名,必选 nameCn: 废弃节点清理 #事件对应的中文名,不填则上报的事件直接显示英文 resourceType: Namespace #事件对应的资源类型 severity: Major #事件上报到AOM后的事件级别,默认Major。可选值:Critical:紧急;Major:重要;Minor:次要;Info:提示
  • 约束与限制 云原生日志采集插件有如下限制: 仅支持1.21及以上版本集群。 每个集群限制50条日志规则。 不采集.gz、.tar、.zip后缀类型的日志文件。 采集容器文件日志时,若节点存储模式为Device Mapper模式,路径配置必须为节点数据盘挂载路径。 若容器运行时为containerd模式,容器标准输出日志中的多行配置暂不生效。 每个集群限制单行日志采集速率不超过10000条/秒,多行日志不超过2000条/秒。 容器运行时间建议不小于1分钟,防止日志文件删除过快,无法及时采集。
  • 权限说明 云原生日志采集插件中的fluent-bit组件会根据用户的采集配置,读取各节点上容器标准输出、容器内文件日志以及节点日志并采集。 fluent-bit组件运行会使用到以下权限: CAP_DAC_OVERRIDE:忽略文件的 DAC 访问限制。 CAP_FOWNER:忽略文件属主 ID 必须和进程用户 ID 相匹配的限制。 DAC_READ_SEARCH:忽略文件读及目录搜索的 DAC 访问限制。 SYS_PTRACE:允许跟踪任何进程。
  • 背景 Podinfo是一个微模型的Web应用程序,它展示了在Kubernetes中运行微服务的最佳实践,其主要用作于测试和研讨。本章将用podinfo源代码来做创建配置集合的示例。 为了可以更快的、更稳定的持续地交付软件、减少后续维护工作,所以将podinfo的源代码放入GitHub仓库,并通过创建配置集合的方式部署到集群中,通过GitOps能力实现软件自动化部署,具体请参考操作步骤。 创建podinfo源代码仓时,请先注册一个属于自己的GitHub账号,然后将podinfo所有代码fork到自己的GitHub仓库中。 在git仓库中定义交付资源清单文件时,不应包含敏感信息(如数据库连接密钥等)。相关敏感信息应以环境变量、加密存储的Secret等方式进行存储。 图1 Podinfo界面
  • 操作步骤 登录华为云控制台。 在左侧导航栏中选择“分布式云原生”,选择“配置管理”。 在右上角“添加集群”,选择需要启用配置管理功能的目标集群,单击确定。 在集群概览页,选择目标集群,单击“Gitops能力”,查看Gitops插件(名称:集群名称-FluxPlugin)是否安装成功。当插件部署状态显示运行中,表示插件已部署成功。 图2 集群概览页 选择“配置集合”页签,单击创建配置集合。 选择仓库源,如果已有仓库源请参考使用已有仓库源配置,如果需要创建新仓库源,请参考创建新仓库源。
  • 创建新仓库源 单击“创建新仓库源”输入仓库源名称、仓库源URL地址。 输入需要与其同步的代码库分支。 选择数据源验证,以及输入密钥。 选择公有类型的仓库无需进行身份验证,即可提供只读权限。 选择私有类型的仓库,则数据源验证可选择“选择集群secret”和“提供认证信息(SSH)”,两种方式都需要配置的秘钥进行身份验证。 仓库秘钥创建请参考秘钥。 仓库源创建完成后,在“自动同步策略”内输入“配置集合路径”,单击“下一步:信息确认”。 确认配置信息无误后,单击“创建配置集合”;如有问题,单击上一步进行修改。
  • 查看快照信息 登录 GaussDB (DWS) 管理控制台。 在左侧导航栏中,单击“快照管理”。 在快照列表中,默认显示用户所有的快照。 在快照列表中,查看快照的“快照名称”、“快照状态”、“集群名称”、“备份方式”、“快照类型”、“快照介质”和“快照创建时间”。 用户也可以在快照列表的右上角,输入快照名称或集群名称并单击,搜索指定的快照。支持模糊搜索名称的部分字符。 快照状态如表1所示。 表1 快照状态说明 状态 说明 “可用” 表示当前快照工作正常。 “创建中” 表示当前快照正在创建中。 “不可用” 表示当前快照无法提供服务。 备份方式如表2所示。 表2 备份方式 类型 说明 手动 用户通过GaussDB(DWS)管理控制台或者API接口手动创建的快照。用户可以删除手动快照。 自动 用户为集群开启快照自动备份策略后,系统自动创建的快照。用户不能删除自动快照,自动快照的保留天数超期后,系统会自动进行删除。 快照类型如表3所示。 表3 快照类型 类型 说明 全量 该快照为全量备份。 增量 该快照为增量备份。 快照介质如表4所示。 表4 快照介质 快照介质 说明 OBS 策略中配置备份设备为:OBS,则创建出的快照为OBS快照,备份数据保存在OBS服务器上。 NFS 策略中配置备份设备为:NFS,则创建出的快照为NFS快照,备份数据保存在NFS服务器上。
  • 告警参数 参数名称 参数含义 告警源 产生告警的系统名称。例如:DWS。 集群名称 产生告警的集群名称。 定位信息 产生告警的集群ID、集群名称、实例ID、实例名称。例如,cluster_id: xxxx-xxxx-xxxx-xxxx,cluster_name: test_dws,instance_id: xxxx-xxxx-xxxx-xxxx,instance_name: test_dws-dws-cn-cn-1-1。 详细信息 产生告警的详细信息,包括集群、实例、磁盘、阈值信息。例如:CloudService=DWS, resourceId: xxxx-xxxx-xxxx-xxxx, resourceIdName: test_dws, instance_id: xxxx-xxxx-xxxx-xxxx,instance_name: test_dws-dws-cn-cn-2-1,host_name: host-192-168-1-122,disk_name: /dev/vdb,first_alarm_time: 2022-11-26 11:14:58; 节点10分钟内的平均数据磁盘使用率为84%,超过阈值80%。 产生日期 产生告警的时间。 状态 当前告警的处理状态。
  • 告警参数 参数名称 参数含义 告警源 产生告警的系统名称,告警的详细分类。 集群名称 产生告警的集群。 定位信息 产生告警的集群ID,集群名称。 详细信息 CloudService表示产生告警的云服务,依次为服务名,资源标识,资源名称,首次告警时间;格式化告警信息。示例:CloudServiceDWS,resourceId=xxxx-xxxx-xxxx-xxxx,resourceIdName=test_dws,first_alarm_time:2023-01-11:19:02:09;集群test_dws在10分钟内堆积的查询语句数量平均值为30,超过阈值10。 产生日期 产生告警的时间。 状态 当前告警的处理状态。
  • 在“连接客户端”页面获取集群连接地址 登录GaussDB(DWS)管理控制台。 在左侧导航栏中,单击“连接客户端”。 在“ 数据仓库 连接信息”区域,选择一个可用的集群名称。 只能选择状态为“可用”的集群。 图1 数据仓库连接信息 查看并获取集群的连接信息。 “内网IP” “公网IP” “弹性负载均衡地址” “JDBC连接字符串(内网)” “JDBC连接字符串(公网)” “ODBC连接字符串” 如果创建集群时没有自动绑定弹性IP,“公网IP”显示为空。如果您想使用公网访问地址(由弹性IP和数据库端口组成)从互联网访问集群,可以单击“绑定弹性IP”为集群绑定弹性IP。 如果创建集群时绑定了弹性IP,如果您不想使用公网访问地址访问集群,可以单击“解绑弹性IP”为集群解绑弹性IP。弹性IP解绑后,“公网IP”显示为空。 如果创建集群时没有绑定弹性负载均衡,“弹性负载均衡地址”显示为空,可以单击“绑定弹性负载均衡”进行绑定,解决CN单点故障。 如果集群绑定了弹性负载均衡,为保证集群高可用,请优先使用弹性负载均衡地址连接集群。 如果集群开启了IPv6双栈网络功能,则内网IP既有IPv4,也有IPv6,您可根据需要选择IPv4或IPv6进行DWS集群的连接。
  • 告警参数 参数名称 参数含义 告警源 产生告警的系统名称,告警的详细分类。 集群名称 产生告警的集群。 定位信息 产生告警的集群ID,集群名称。 告警信息 CloudService表示产生告警的云服务,依次为服务名,资源标识,资源名称,首次告警时间;格式化告警信息。示例:CloudServiceDWS,resourceId=xxxx-xxxx-xxxx-xxxx,resourceIdName=test_dws,first_alarm_time:2023-01-11:19:02:09;集群test_dws在20分钟内出现默认资源池队列阻塞。 告警时间 告警的产生时间。 状态 告警当前的活动状态。
共100000条