华为云用户手册
-
AppStage开发中心基本概念 基本概念 说明 产能 产能原指在一定时间内,企业所能生产的产品或提供的服务的数量。开发中心中特指版本开发团队每天能提供的开发人员的数量。 Scrum 增量迭代式的软件开发方法,通过最重要的迭代计划会议、每日站会、迭代回顾、验收会议来进行简单高效的管理。 IPD-系统设备类 面向系统设备类产品开发场景的IPD需求管理方法,通过结构化流程、强大的跨项目协作能力来对大型产品开发进行高质高效的管理。 IPD-独立软件类 面向独立软件类开发场景的IPD需求管理方法,通过结构化流程、强大的跨项目协作能力来对大型软件开发进行高质高效的管理。 IPD-自运营软件/云服务类 面向云服务软件类开发场景的IPD需求管理方法,通过端到端客户价值需求管理、灵活轻便的敏捷规划、强大的跨项目协作能力来对云服务软件进行高质高效的管理。 开发插件 开发插件是一种软件应用程序,用于开发、编译、调试和部署软件。IDE通常包含代码编辑器、编译器、调试器和其他开发工具,以提供一个集成的开发环境,方便开发人员进行软件开发工作。 内建质量 内建质量指在产品或服务设计和开发过程中,将质量要求和标准纳入到产品或服务的设计和开发中,从而在产品或服务最初的构建阶段就实现了质量控制。这样做可以避免在后续阶段出现质量问题,提高产品或服务的可靠性和稳定性。 父主题: AppStage开发中心简介
-
使用流程 参考图1和表1可帮助您快速上手开发中心的主流程和核心功能。 图1 开发中心使用流程 表1 使用流程详解 序号 流程环节 说明 参与角色 1 管理团队 添加开发中心用户 开发中心的用户数根据购买规格有相应的用户数量限制,组织管理员通过用户的添加或删除来合理管理开发中心的使用人员。 组织管理员 创建团队 在开发中心进行服务开发前,需要组织管理员先创建一个团队,将团队关联需要开发的服务。 配置服务扩展信息 将团队关联服务后,还需将团队关联的服务关联CodeArts项目,后续的服务开发管理过程中才能正常使用CodeArts服务的代码托管、流水线、编译构建功能。 添加团队成员 在团队多用户协作开发过程中,不同角色成员执行各自权限和责任事项,因此需要在团队中添加协作开发的各角色成员(项目经理、开发人员、测试人员等),实现统一有序的成员信息管理。 项目经理 2 规划版本 创建版本 创建版本的基本配置信息以及选择版本开始和结束时间。 规划交付件 在版本开发启动初期对产品开发过程所需的交付件进行规划,以辅助开发过程规范有序且可追溯。 录入需求 使用内置的多种开箱即用的场景化需求模型和对象类型录入版本开发相关的需求/任务。 规划版本补丁(补丁类型的版本) 针对版本类型为补丁类型的版本规划需要解决的补丁(缺陷)。 3 开发版本 创建代码仓 开发人员进行代码开发前,需要先创建代码仓库用于托管代码。 项目经理 下载代码到本地 开发人员进行代码文件的操作前,需要使用Git Bash客户端和TortoiseGit客户端下载代码仓库文件到本地环境中。 开发人员 安装插件 开发人员可下载代码开发所需的开发工具,如WiseStudio 插件、Nuwa 插件、Wushan 插件等,然后进行安装。 开发代码 开发代码的详细指导请参见《开发指南》。 提交代码到代码仓 开发人员在本地完成业务代码编写后,需要提交代码文件至代码仓库。 管理交付件 进行交付件管理等,保证版本开发过程阶段性成果沉淀以及过程可追溯。 项目经理 4 构建版本 配置流水线 根据业务需要,如开发测试环境应用部署、生产环境应用部署等,对这些自动化任务进行自定义编排,一次配置后就可以一键自动化触发调度执行。 开发人员 代码安全检视 进行安全编码TOP问题的信息统计和检查结果录入。 5 测试版本 缺陷管理 对于版本测试过程发现的缺陷进行记录、跟踪、分析和解决。 开发人员 测试人员 测试评估 编辑总体测试结论、系统预置的测试类型结论,新增和管理自定义测试类型的测试结论,以及新增和管理版本关键风险问题。 6 发布版本 标准发布 待版本开发及编译构建完成,且发布准入检查项均通过后,可由开发人员、测试人员或项目经理提交标准发布申请,待项目经理审批通过后,将软件版本发布到对应的部署平台。 开发人员 测试人员 项目经理 调测发布 在版本标准发布(即正式发布)前,可先执行调测发布进行环境调测。
-
为什么使用AppStage开发中心 开发中心提供全场景一站式作业平台,承载端到端研发作业流,提供涵盖软件研发全生命周期的研发工具链和研发管理服务。以团队为中心,通过单点登录、精准链接等方式深度集成CodeArts需求管理、代码托管、流水线、缺陷管理四个工具的功能,基于服务版本维度提供从需求、设计、开发、测试、部署发布全场景一站式研发门户,实现精细化项目管理,掌握和处理项目全量信息,支撑研发角色统一在一站式门户协同工作,提升团队研发效率。 父主题: AppStage开发中心简介
-
国际站接受哪些货币? 国际站产品支持以美金 定价 ,根据下方的表格,不同的签约主体结算币种可选范围不一样。 表1 签约主体及结算货币说明 签约主体名称 结算货币 SPARKOO TECHNO LOG IES SOUTH AFRICA (PTY) LTD ZAR 南非兰特 Sparkoo Technologies (Thailand) Co., Ltd. THB 泰铢 SPARKOO TECNOLOGIAS DO BRASIL LTDA BRL 巴西雷亚尔 SPARKOO TECHNOLOGIES PERU S.A.C. PEN 秘鲁索尔 Sparkoo Technologies Chile SpA. CLP 智利比索 Sparkoo Technologies Arabia Co., Ltd. SAR 沙特里亚尔 Sparkoo Technologies Singapore Pte. Ltd. EUR 欧元 SGD 新加坡元 CNY 人民币 HKD 港元 JPY 日元 Sparkoo Technologies Hong Kong Co., Limited HKD 港元 CNY 人民币 EUR 欧元 JPY 日元 SGD 新加坡元 父主题: 支持货币和支付方式
-
国际站客户购买华为云中国大陆Region云服务接受哪些结算货币? 国际站产品支持以美金定价,根据下方的表格,不同的签约主体结算币种可选范围不一样。 表1 签约主体及结算货币说明 签约主体名称 结算货币 SPARKOO TECHNOLOGIES SOUTH AFRICA (PTY) LTD ZAR 南非兰特 Sparkoo Technologies (Thailand) Co., Ltd. THB 泰铢 SPARKOO TECNOLOGIAS DO BRASIL LTDA BRL 巴西雷亚尔 SPARKOO TECHNOLOGIES PERU S.A.C. PEN 秘鲁索尔 Sparkoo Technologies Chile SpA. CLP 智利比索 Sparkoo Technologies Arabia Co., Ltd. SAR 沙特里亚尔 Sparkoo Technologies Singapore Pte. Ltd. EUR 欧元 SGD 新加坡元 CNY 人民币 HKD 港元 JPY 日元 Sparkoo Technologies Hong Kong Co., Limited HKD 港元 CNY 人民币 EUR 欧元 JPY 日元 SGD 新加坡元 父主题: 国际站客户购买中国大陆Region云服务
-
真实性核验工作新要求需要做什么? 网站负责人在进行真实性核验时,除了按照系统提示完成真实性核验,还需执行如下操作: 签署《ICP备案信息真实性责任告知书》及《ICP备案信息真实性承诺书》,并上传至备案系统。 录制网站负责人诵读《ICP备案信息真实性承诺书》的视频,并上传至备案系统。 如果主体负责人、网站负责人不是单位法人代表,还需提供《主体负责人法人授权书》、《网站负责人法人授权书》,并上传至备案系统。 父主题: 江苏省ICP备案真实性核验工作新要求
-
服务异常修复 诊断异常的服务,需要先手动修复异常状态的手动处理项,再一键修复可自动处理项。 在诊断状态为异常的服务下单击“处理”,若手动处理项有异常,根据修复指导进行手动修复。 图2 手动处理项 手动修复异常状态的手动处理项后,单击“下一步”进入自动修复项页面,单击“一键修复”,自动处理异常状态的检查项。 图3 自动处理项 如果自动处理无法修复状态异常的检查项,请根据修复指导进行手动修复。 已配置网关或创建灰度发布的服务可能因为Service的端口名称被修改而出现异常,此时不支持进行一键修复。 如果服务未在服务列表中展示,请检查对应的工作负载是否存在。
-
操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网关管理”,在需要添加路由的网关所在行,单击操作列的“添加路由”,配置如下参数。 URL匹配规则 前缀匹配:例如映射URL为/healthz,只要符合此前缀的URL均可访问。例如/healthz/v1、/healthz/v2。 完全匹配:只有完全匹配上才能生效。例如映射URL为/healthz,则必须为此URL才能访问。 支持通过YAML方式配置正则匹配规则,修改VirtualService配置文件即可: ... http: - delegate: name: nginx-80 namespace: default match: - uri: regex: /do[a-z]*/ ... 如上所示,“regex”表示按正则表达式方式匹配URL,注意URL必须以“/”开头。 URL 服务支持的映射URL,例如/example。 同一网关下的URL配置不能相同。 命名空间 服务网关所在的命名空间。 目标服务 添加网关的服务,直接在下拉框中选择。目标服务会根据对应的网关协议进行过滤,过滤规则请参见添加路由时,为什么选不到对应的服务?。 配置诊断失败的服务无法选择,需要先根据手动修复项或自动修复项进行修复。 访问端口 仅显示匹配对外协议的端口。 重写 (对外协议为HTTP/HTTPS时可配置) 重写HTTP/HTTPS的URI和Host/Authority头,于转发前执行。默认关闭。开启后,需要配置如下参数: URI:使用此值重写URI的路径(或前缀),如果原始URI是基于前缀匹配,那么将替换相应匹配的前缀。 Host/Authority头:使用此值重写HTTP/HTTPS的Host/Authority头。 域名 单独配置路由 为网关中某个域名单独配置路由规则。 图1 添加路由 配置完成后,单击“确定”。
-
操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“服务管理”,选择需要更改流量策略的服务,单击操作列的“流量治理”,在右侧页面进行流量策略更改。 接下来,以Bookinfo应用的reviews服务为例,结合 APM ( 应用性能管理 )的监控拓扑图来描述负载均衡算法更改前后的配置效果。 负载均衡算法为“轮询调度”时,不断访问productpage页面,观察流量如何分发。 进入“流量监控”页面,鼠标右键单击reviews服务,选择“展开”选项,这时可以看到所有实例的被分发情况。 从下图可以看出,请求依次分发给reviews的5个实例。这与负载均衡“轮询调度”算法相吻合。 在“负载均衡”页签中,单击“立即配置”,将负载均衡算法修改为“随机调度”。 图1 修改负载均衡算法 不断访问productpage页面,观察流量分发情况。 可以发现流量分发没有什么固定规律,各个实例的访问次数参差不齐,说明随机算法已经生效。
-
验证JWT认证是否生效 使用JWT工具将JWT请求信息编码成JWT Token。 在“Decoded”区域输入以下JWT请求信息,在“Encode”区域将看到自动转换后的JWT Token。 HEADER:设置alg为“RS512”,输入1创建的JWK中的kid,设置type为“JWT”。 PAYLOAD:设置iss为“test”,aud为“ASM”,确保与2中配置的发行者、令牌受众保持一致。 VERIFY SIGNATURE:与1.a中的公钥保持一致。 图4 创建JWT Token 通过入口网关访问httpbin服务。 执行以下命令,带1创建的JWT Token访问服务。 TOKEN=1创建的JWT Token curl -I -H "Authorization: Bearer $TOKEN" http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 200 OK server: istio-envoy date: Wed, 21 Sep 2022 03:11:48 GMT 执行以下命令,带无效的JWT Token访问服务。 curl -I -H "Authorization: Bearer invalidToken" http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 401 Unauthorized www-authenticate: Bearer realm="http://***.***.***.***:***/", error="invalid_token" content-length: 145 content-type: text/plain date: Wed, 21 Sep 2022 03:12:54 GMT server: istio-envoy x-envoy-upstream-service-time: 19 修改2中创建的JWT认证,将令牌受众置空(表示对访问的服务不受限制),然后执行以下命令,带1创建的JWT Token访问服务。 curl -I -H "Authorization: Bearer $TOKEN" http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 200 OK server: istio-envoy date: Wed, 21 Sep 2022 03:20:07 GMT 执行以下命令,不带JWT Token访问服务。 curl -I http://{httpbin服务的外部访问地址}/ 预期输出: HTTP/1.1 403 Forbidden content-length: 85 content-type: text/plain date: Wed, 21 Sep 2022 03:29:31 GMT server: istio-envoy x-envoy-upstream-service-time: 6 根据以上结果,可以看到带有正确的JWT Token的请求访问服务成功,带有错误的JWT Token或者不带JWT Token的请求访问服务失败,说明请求身份认证生效。
-
创建JWT认证 创建JWK。 访问JWT工具网站,选择“Algorithm”为“RS512”,获取公钥(PUBLIC KEY)。 图1 生成公钥 在JWK to PEM Convertor online工具中选中“PEM-to-JWK (RSA Only)”,输入上一步获取的公钥,单击“submit”,将公钥转换为JWK。 图2 将公钥转换为JWK {"kty":"RSA","e":"AQAB","kid":"a78641b9-d81e-4241-b35a-71726c3fa053","n":"u1SU1LfVLPHCozMxH2Mo4lgOEePzNm0tRgeLezV6ffAt0gunVTLw7onLRnrq0_IzW7yWR7QkrmBL7jTKEn5u-qKhbwKfBstIs-bMY2Zkp18gnTxKLxoS2tFczGkPLPgizskuemMghRniWaoLcyehkd3qqGElvW_VDL5AaWTg0nLVkjRo9z-40RQzuVaE8AkAFmxZzow3x-VJYKdjykkJ0iT9w CS 0DRTXu269V264Vf_3jvredZiKRkgwlL9xNAwxXFg0x_XFw005UWVRIkdgcKWTjpBP2dPwVZ4WWC-9aGVd-Gyn1o0CLelf4rEjGoXbAAEgAqeGUxrcIlbjXfbcmw"} 创建JWT认证。 登录应用服务网格控制台,单击网格名称,进入网格详情页面。 在左侧导航栏选择“服务管理”,在列表右上方选择服务所在命名空间。 选择httpbin服务,单击操作列的“安全”,在右侧页面选择“JWT认证”页签,单击“立即配置”,在弹出的“JWT认证”页面填写如下信息: 发行者:JWT的颁发者,本文设置为“test”。 令牌受众:JWT受众列表,设置哪些服务可以使用JWT Token访问目标服务,本文设置为“ASM”。 jwks:设置JWT信息,本文设置为{"keys": [1创建的JWK]},例如1创建的JWK为{"kty":"RSA","e":"AQAB","kid":"a78641b9-d81e-4241-b35a-71726c3****"},则jwks为{"keys": [{"kty":"RSA","e":"AQAB","kid":"a78641b9-d81e-4241-b35a-71726c3****"}]}。 图3 创建JWT认证 单击“确定”完成创建。
-
创建灰度发布 登录应用服务网格控制台,使用以下任意一种方式进入创建灰度任务页面。 (快捷方式)在网格右上方,单击图标。 (快捷方式)在网格中心位置,单击“创建灰度任务”。 在网格详情页创建。 单击网格名称,进入网格详情页,单击左侧导航栏的“灰度发布”。 如果当前不存在发布中的灰度任务,请在金丝雀发布或蓝绿发布中单击“立即发布”;如果当前存在发布中的灰度任务,请单击右上角“灰度发布”。 配置灰度发布基本信息。 灰度类型 选择创建灰度发布的类型,可根据实际需求选择金丝雀发布和蓝绿发布,两者的区别可参考灰度发布概述。 灰度任务名称 自定义灰度任务的名称。输入长度范围为4到63个字符,包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。 命名空间 服务所在的命名空间。 灰度发布服务 在下拉列表中选择待发布的服务。正在进行灰度任务的服务不可再进行选择,列表中已自动过滤。 工作负载 选择服务所属的工作负载。 版本号 当前服务版本号,版本号不支持修改。 图1 灰度发布基本信息 部署灰度版本信息。 部署集群 灰度发布服务所属的集群。 版本号 输入服务的灰度版本号。 实例数量 灰度版本的实例数量。灰度版本可以有一个或多个实例,用户可根据实际需求进行修改。每个灰度版本的实例都由相同的容器部署而成。 镜像名称 默认为该服务的镜像。 镜像版本 请选择灰度版本的镜像版本。 自定义镜像 用户可通过自定义镜像自行配置本地或第三方镜像地址,灰度发布镜像将采用所配置镜像。注意需确保自定义镜像地址有效,镜像可拉取。 图2 灰度版本信息 图3 灰度版本信息 单击“发布”,灰度版本开始创建。 请确保灰度版本的实例状态正常,且启动进度为100%时,再开始下一步进行流量策略的配置。发布之后进入观察灰度状态页面,可查看Pod监控,包括启动日志和性能监控信息。 (仅金丝雀发布涉及)单击“配置流量策略”,进行流量策略配置。 策略类型:分为“基于流量比例”和“基于请求内容”两种类型,通过页签选择确定。 基于流量比例 根据流量比例配置规则,从默认版本中切分指定比例的流量到灰度版本。例如75%的流量走默认版本,25%的流量走灰度版本。实际应用时,可根据需求将灰度版本的流量配比逐步增大并进行策略下发,来观测灰度版本的表现情况。 图4 基于流量比例 流量配比:可以为默认版本与灰度版本设置流量配比,系统将根据输入的流量配比来确定流量在两个版本间分发的比重。 基于请求内容 目前支持基于Cookie内容、自定义Header、Query、操作系统和浏览器的规则约束,只有满足规则约束的流量才可访问到灰度版本。例如,仅Cookie满足“User=Internal”的HTTP请求才能转发到灰度版本,其余请求仍然由默认版本接收。 图5 基于请求内容 Cookie内容 正则匹配:此处需要您使用正则表达式来匹配相应的规则。 自定义Header 完全匹配:只有完全匹配上才能生效。例如:设置Header的Key=User,Vaule=Internal,那么仅当Header中包含User且值为Internal的请求才由灰度版本响应。 正则匹配:此处需要您使用正则表达式来匹配相应的规则。 可以自定义请求头的key和value,value支持完全匹配和正则匹配。 Query 完全匹配:只有完全匹配上才能生效。例如:设置Query的Key=User,Vaule=Internal,那么仅当Query中包含User且值为Internal的请求才由灰度版本响应。 正则匹配:此处需要您使用正则表达式来匹配相应的规则。 可以自定义Query的key和value,value支持完全匹配和正则匹配。 允许访问的操作系统:请选择允许访问的操作系统,包括iOS、Android、Windows、macOS。 允许访问的浏览器:请选择允许访问的浏览器,包括Chrome、IE。 流量管理Yaml信息:根据所设置的参数自动生成规则YAML。 基于请求内容流量策略只对直接访问的入口服务有效。如果希望对所有服务有效,需要业务代码对HTTP请求的Header信息进行传播。 例如:如果您基于reviews服务,配置了基于请求内容的灰度发布策略,通过访问productpage服务的界面,是无法看到效果的。 原因是,您的客户端访问productpage服务携带了HTTP请求的Header信息,而productpage服务请求reviews服务时,将这些Header信息丢失了(详情可参考如何使用Istio调用链埋点),从而失去了基于请求内容的灰度发布效果。 设置完成后,单击“策略下发”。 灰度策略的生效需要几秒时间,您可以查看服务的流量监控,以及对原始版本及灰度版本的健康监控。
-
金丝雀升级原理 ASM基础版网格支持金丝雀升级,金丝雀升级过程中将允许新老网格控制面同时存在,通过在命名空间打上版本对应的标签,可以选择一部分sidecar重启,并连接上新版本的控制面,待所有sidecar都正常连接到新控制面之后下面老版本网格的控制面。 需要注意的是,在部署新网格版本控制面时,istio-ingressgateway和istio-egressgatway的新版本也会同时部署,新老网格版本的网关将同时工作。
-
操作步骤 登录应用服务网格控制台,确认网格是否需要升级版本。判断方法如下: 列表上方是否提示可升级版本的网格。 网格名称右侧是否存在“可升级”提示。 若存在可升级版本的网格,单击该网格名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“升级”页签。 根据升级路径选择合适的升级方式完成网格升级。 基础版本升级 升级详情请查看金丝雀升级。 企业版补丁更新 单击“补丁更新”,在弹出的提示框中单击“确定”。
-
升级路径 网格类型 源版本 目标版本 升级方式 企业版 1.8.4-r1 1.8.6-r3 补丁更新(原地升级) 1.8.4-r2 1.8.6-r3 补丁更新(原地升级) 1.8.4-r3 1.8.6-r3 补丁更新(原地升级) 1.8.4-r4 1.8.6-r3 补丁更新(原地升级) 1.8.4-r5 1.8.6-r3 补丁更新(原地升级) 1.8.6-r1 1.8.6-r3 补丁更新(原地升级) 1.8.6-r2 1.8.6-r3 补丁更新(原地升级) 1.6.9-r4 1.6.9-r5 补丁更新(原地升级) 基础版 1.8.x 1.15.7-r1 先版本升级到1.13最新版本(金丝雀升级),再版本升级(金丝雀升级)到1.15.7-r1 1.13.x 1.15.7-r1 版本升级(金丝雀升级)到1.15.7-r1 1.15.5-rx 1.15.7-r1 补丁更新(金丝雀升级)到1.15.7-r1 1.15.x-rx 1.18.7-r1 版本升级(金丝雀升级)到1.18.7-r1 专有版 1.3.0-rx 1.15.7-r3 先迁移至基础版本网格,再版本升级至1.8.6-r4(金丝雀升级),再版本升级(金丝雀升级)到1.13.x最新版本,再版本升级(金丝雀升级)到1.15.7-r3 1.6.9-rx 1.15.7-r3 先迁移至基础版本网格,再版本升级至1.8.6-r4(金丝雀升级),再版本升级(金丝雀升级)到1.13.x最新版本,再版本升级(金丝雀升级)到1.15.7-r3 1.8.4-r1 1.15.7-r3 先迁移至基础版本网格,再版本升级(金丝雀升级)到1.13.x最新版本,再版本升级(金丝雀升级)到1.15.7-r3
-
Istio资源说明 表1 Istio资源说明 资源类型 说明 AuthorizationPolicy 用于配置授权规则。 DestinationRule 定义路由的目标服务和流量策略。VirtualService和DestinationRule是流量控制最关键的两个资源,DestinationRule定义了网格中某个Service对外提供服务的策略及规则,包括负载均衡策略、异常点监测、熔断控制、访问连接池等。 EnvoyFilter EnvoyFilter为服务网格控制面提供更强大的扩展能力,使Envoy中Filter Chain具备自定义配置的能力。 Gateway Gateway定义了所有HTTP/TCP流量进入网格或者从网格中出站的统一入口和出口,它描述了一组对外公开的端口、协议、负载均衡以及SNI配置。 PeerAuthentication Istio的认证策略包含PeerAuthentication和RequestAuthentication,PeerAuthentication策略用于配置服务通信的mTLS模式。 RequestAuthentication Istio的认证策略包含PeerAuthentication和RequestAuthentication,RequestAuthentication策略用于配置服务的请求身份验证方法。 ServiceEntry 用于注册外部服务到网格内,并对其流量进行管理。 Sidecar 对Sidecar代理进行整体设置。 VirtualService 用于网格内路由的设置。VirtualService和DestinationRule是流量控制最关键的两个资源,在VirtualService中定义了一组路由规则,当流量进入时,逐个规则进行匹配,直到匹配成功后将流量转发给指定的路由地址。 WorkloadEntry 用来将虚拟机(VM)或者裸金属(Bare Metal)进行抽象,使其在网格化后作为与Kubernetes中的Pod同等重要的负载,具备流量管理、安全管理、可视化等能力。
-
创建新的istio资源 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。 单击列表左上方的“创建”。 图2 创建istio资源 在右侧页面直接输入内容,或者单击“导入文件”,将本地编辑好的YAML或JSON文件上传上来。 确认文件内容无误,默认勾选底部提示信息,即控制台相关功能将不再开放使用,单击“确定”保存。 创建Istio资源后,具体哪些控制台功能不可用,与Istio资源类型有关,详细说明请参见YAML配置资源处理策略。
-
编辑已有istio资源 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“istio资源管理”页签。 在搜索框中选择istio资源类型(如“istio资源:virtualservices”),以及资源所属命名空间。 图1 筛选istio资源 单击操作列的“编辑”,在右侧页面修改相关配置,默认勾选底部提示信息,即控制台相关功能将不再开放使用,单击“确定”保存。 编辑Istio资源后,具体哪些控制台功能不可用,与Istio资源类型有关。详细说明请参见YAML配置资源处理策略。 支持以YAML或JSON格式显示,同时可以将配置文件下载到本地。
-
操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网格配置”,单击“升级”页签。 选择可升级版本,单击”版本升级”。 在弹出的提示信息后,单击“确定”。 进入升级前检查页面,单击“执行”,进行升级前检查,详情请查看升级前检查说明。 升级前检查结束后,单击“下一步”,进入控制面升级。 单击“升级”,进行控制面升级,详情请查看控制面升级说明。 控制面升级结束后,单击“下一步”,进行数据面升级。 单击“升级”,进行数据面升级,详情请查看数据面升级说明。 升级后处理,详情请查看升级后处理说明。
-
操作步骤 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“网关管理”,单击“添加网关”。 配置网关参数。 网关名称 请输入网关的名称。由小写字母、数字和中划线(-)组成,且必须以小写字母开头,小写字母或数字结尾,长度范围为4~59个字符。 集群选择 选择网关所属的集群。 访问方式 协议版本:支持选择IPV4和双栈两种,已开启ipv6的网格方可配置该参数。 服务网关使用弹性负载均衡服务(ELB)的负载均衡实例提供网络访问,支持共享型和独享型规格,且支持公网和私网。如果是独享型,实例规格需要选择“网络型(TCP/UDP)”,且网络类型需要勾选“IPv4私网”,确保负载均衡实例有私网IP地址。 访问入口 对外协议 请根据业务的协议类型选择。支持HTTP、GRPC、TCP、TLS及HTTPS五种协议类型的选择。 对外端口 开放在负载均衡服务地址的端口,可任意指定。 外部访问地址 系统自动填充负载均衡实例的IP地址,作为服务访问入口地址,您也可以将其修改为负载均衡实例关联的域名。 TLS终止 对外协议为HTTPS时,TLS终止为开启状态,且不可关闭。 对外协议为TLS时,可选择开启/关闭TLS终止。开启TLS终止时需要绑定证书,以支持TLS数据传输加密认证;关闭TLS终止时,网关将直接转发加密的TLS数据。 密钥证书 配置TLS协议并开启TLS时,需要绑定证书,以支持TLS数据传输加密认证。 配置HTTPS协议时,需要绑定密钥证书。 TLS最低版本/TLS最高版本 配置TLS协议并开启TLS终止,或者配置HTTPS协议时,提供TLS最低版本/TLS最高版本的选择。 图1 添加网关 (可选)配置路由参数。 请求的访问地址与转发规则匹配(转发规则由外部访问地址+URL组成)时,此请求将被转发到对应的目标服务处理。单击图标,弹出“添加路由”对话框。 URL匹配规则 前缀匹配:例如映射URL为/healthz,只要符合此前缀的URL均可访问。例如/healthz/v1、/healthz/v2。 完全匹配:只有完全匹配上才能生效。例如映射URL为/healthz,则必须为此URL才能访问。 支持通过YAML方式配置正则匹配规则,修改VirtualService配置文件即可: ... http: - delegate: name: nginx-80 namespace: default match: - uri: regex: /do[a-z]*/ ... 如上所示,“regex”表示按正则表达式方式匹配URL,注意URL必须以“/”开头。 URL 服务支持的映射URL,例如/example。 命名空间 服务网关所在的命名空间。 目标服务 添加网关的服务,直接在下拉框中选择。目标服务会根据对应的网关协议进行过滤,过滤规则请参见添加路由时,为什么选不到对应的服务?。 配置诊断失败的服务无法选择,需要先根据手动修复项或自动修复项进行修复。 访问端口 仅显示匹配对外协议的端口。 重写 (对外协议为HTTP/HTTPS时可配置) 重写HTTP/HTTPS URI和Host/Authority头,于转发前执行。默认关闭。开启后,需要配置如下参数: URI:使用此值重写URI的路径(或前缀),如果原始URI是基于前缀匹配,那么将替换相应匹配的前缀。 Host/Authority头:使用此值重写HTTP/HTTPS的Host/Authority头。 域名单独配置路由 为网关中某个域名单独配置路由规则。 图2 添加路由 配置完成后,单击“确定”。 网关添加完成后,可前往“服务管理”页面,获取服务外网访问地址。 图3 服务外网访问地址
-
JWT认证原理 JWT(Json Web Token)是一种服务端向客户端发放令牌的认证方式。客户端用户名密码登录时,服务端会生成一个令牌返回给客户端;客户端随后在向服务端请求时只需携带这个令牌,服务端通过校验令牌来验证是否是来自合法的客户端,进而决定是否向客户端返回应答。从机制可以看到,这种基于请求中携带令牌来维护认证的客户端连接的方式解决了早期服务端存储会话的各种有状态问题。 在Istio使用中,JWT令牌生成由特定的认证服务提供,令牌验证由网格执行,彻底解耦用户业务中的认证逻辑,使应用程序专注于自身业务。基于Istio的JWT完整机制如图1所示。 图1 Istio JWT认证流程 ① 客户端连接认证服务,提供用户名和密码; ② 认证服务验证用户名和密码,生成JWT令牌,包括用户标识和过期时间等信息,并使用认证服务的私钥签名; ③ 认证服务向客户端返回生成的JWT令牌; ④ 客户端将收到的JWT令牌存储在本端,供后续请求时使用; ⑤ 客户端在向其他服务发起请求时携带JWT令牌,无需再提供用户名、密码等信息; ⑥ 网格数据面代理拦截到流量,使用配置的公钥验证JWT令牌; ⑦ 验证通过后,网格代理将请求转发给服务端; ⑧ 服务端处理请求; ⑨ 服务端返回应答数据给网格代理; ⑩ 网格数据面代理转发应答数据给调用方。 在这个过程中,重点是第六步,原来服务端的JWT认证功能迁移到了网格代理上。网格数据面从控制面配置的认证策略中获取验证JWT令牌的公钥,可以是jwks(JSON Web Key Set)上配置的公钥,也可以是从jwksUri配置的公钥地址获取到的公钥。获得公钥后,网格代理使用该公钥对认证服务私钥签名的令牌进行验证,并解开令牌中的iss,验证是否匹配认证策略中的签发者信息。验证通过的请求发送给应用程序,验证不通过则直接拒绝,不会发送给应用程序。
-
JWT结构 JWT是一个包含了特定声明的Json结构。从前面介绍的JWT认证流程第六步知道,只要验证这个Json结构本身,即可以确认请求身份,不需要查询后端服务。下面解析JWT结构从而了解如何携带这些认证信息。 JWT包含三部分:头部Header、负载Payload和签名Signature。 头部Header 头部描述JWT的元数据,包括算法alg和类别typ等信息。alg描述签名算法,这样接收者可以根据对应的算法来验证签名,默认是如下所示的HS256,表示 HMAC-SHA256;typ表示令牌类型,设置为JWT,表示这是一个JWT类型的令牌。 { "alg": "HS256", "typ": "JWT" } 负载Payload 存放令牌的主体内容,由认证服务AuthN生成相关信息并放到令牌的负载中。重要属性包括: iss:令牌发行者 issuer aud:令牌受众 audience 在JWT验证时,会校验发行者、受众信息和令牌负载中的发行者iss、受众audience是否匹配。JWT的内容本身不是加密的,所有拿到令牌的服务都可以看到令牌负载Payload中的内容,因此建议Payload里不要存放私密的信息。 签名Signature 签名字段是对头部和负载的签名,确保只有特定合法的认证服务才可以发行令牌。实际使用中一般是把头部和负载分别执行Base64转换成字符串,然后使用认证服务的密钥对拼接的字符串进行签名,签名算法正是前面介绍的头域中定义的算法。 一个完整的JWT示例如下,对于头部Header和负载Payload进行签名得到Signature。 # Header: { "alg": "RS512", "typ": "JWT" } # Payload { "iss": "weather@cloudnative-istio", "audience": "weather@cloudnative-istio" } # Signature RSASHA512( base64UrlEncode(header) + "." + base64UrlEncode(payload) ) 以上结构最终输出的令牌如下,可以看到“.”分割的三个字符串分别对应JWT结构的头部、负载和签名三部分。 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjQ2ODU5ODk3MDAsInZlciI6IjIuMCIsImlhdCI6MTUzMjM4OTcwMCwiaXNzIjoid2VhdGhlckBjbG91ZG5hdGl2ZS1pc3Rpby5ib29rIiwic3ViIjoid2VhdGhlckBjbG91ZG5hdGl2ZS1pc3Rpby5ib29rIn0.SEp-8qiMwI45BuBgQPH-wTHvOYxcE_jPI0wqOxEpauw
-
操作步骤 登录应用服务网格控制台,确认网格是否需要续费。判断方法如下: 列表上方是否提示已超期冻结需及时续费的网格。 网格计费模式中是否存在已超期或即将到期提示。 图1 已超期提示 图2 即将到期提示 若存在已超期或即将到期的网格,单击网格右上角的图标,进入续费页面。 选择续费时长,单击“去支付”,选择支付方式后,单击“确认付款”即可成功续费。 更多信息(自动续费、导出续费清单等)请参考续费管理。
-
结束灰度任务 当新创建的灰度版本接管全部流量后,您可以选择结束灰度任务。结束灰度任务将下线原版本,其中包含的工作负载和Istio相关配置资源会全部删除。 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“灰度发布”,单击灰度发布任务的名称。 在“监测与处理”页面,单击灰度版本后的“全流量接管”。 单击右下角“结束灰度任务”。 在弹出的“结束灰度任务”窗口单击“确定”。 结束的灰度任务可以前往“已结束灰度任务”页签查看,状态显示为“发布成功”。
-
取消灰度任务 当原版本接管全部流量后,您可以选择取消灰度任务。 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“灰度发布”,单击灰度发布任务的名称。 在“监测与处理”页面,单击原版本后的“全流量接管”。 单击右下角“取消灰度任务”。也可以在灰度任务列表,单击任务右上角的图标。 在弹出的“取消灰度任务”窗口单击“确定”。 取消的灰度任务可以前往“已结束灰度任务”页签查看,状态显示为“发布取消”。
-
修改灰度版本的流量策略 修改基于流量比例的策略 选择基于流量比例的策略时,一般会逐步加大灰度版本的流量配比,这样可以避免直接切换带来的业务风险。修改流量配比的方法如下: 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“灰度发布”,单击金丝雀发布任务的名称。 在“配置流量策略”页面,重新输入灰度版本的流量配比。 假设将灰度版本流量配比调整至x,那么原版本的流量配比自动调整为100-x。 单击“策略下发”。 修改基于请求内容的策略 目前支持基于Cookie内容、自定义Header、Query、操作系统和浏览器的规则约束,只有满足规则约束的流量才可访问到灰度版本。实际应用时,可能会多次修改规则,从而充分验证灰度版本运行效果。 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“灰度发布”,单击金丝雀发布任务的名称。 在“配置流量策略”页面,重新配置Cookie内容、自定义Header、Query、允许访问的操作系统或允许访问的浏览器。 单击“策略下发”。
-
切换灰度策略类型 您可以在“基于请求内容”和“基于流量比例”的策略之间切换。策略完成切换后,之前配置的规则将全部失效,所有的流量会根据配置的新策略重新分配。 只有状态为“运行中”的任务才支持流量策略变更,版本发布完成后(即新版本完全接管旧版本流量,且旧版本已下线),将不支持重新配置流量策略。 登录应用服务网格控制台,单击服务网格的名称,进入网格详情页面。 在左侧导航栏选择“灰度发布”,单击金丝雀发布任务的名称。 在“配置流量策略”页面,切换策略类型。 单击“策略下发”。
-
1.18及以后版本 1.18的访问日志提供JSON格式的内容,以如下JSON格式为例。 { "start_time": "%START_TIME%", "route_name": "%ROUTE_NAME%", "method": "%REQ(:METHOD)%", "path": "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%", "protocol": "%PROTOCOL%", "response_code": "%RESPONSE_CODE%", "response_flags": "%RESPONSE_FLAGS%", "response_code_details": "%RESPONSE_CODE_DETAILS%", "connection_termination_details": "%CONNECTION_TERMINATION_DETAILS%", "bytes_received": "%BYTES_RECEIVED%", "bytes_sent": "%BYTES_SENT%", "duration": "%DURATION%", "upstream_service_time": "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%", "x_forwarded_for": "%REQ(X-FORWARDED-FOR)%", "user_agent": "%REQ(USER-AGENT)%", "request_id": "%REQ(X-REQUEST-ID)%", "authority": "%REQ(:AUTHORITY)%", "upstream_host": "%UPSTREAM_HOST%", "upstream_cluster": "%UPSTREAM_CLUSTER%", "upstream_local_address": "%UPSTREAM_LOCAL_ADDRESS%", "downstream_local_address": "%DOWNSTREAM_LOCAL_ADDRESS%", "downstream_remote_address": "%DOWNSTREAM_REMOTE_ADDRESS%", "requested_server_name": "%REQUESTED_SERVER_NAME%", "upstream_transport_failure_reason": "%UPSTREAM_TRANSPORT_FAILURE_REASON%", "pod_name": "%ENVIRONMENT(POD_NAME)%", "pod_namespace": "%ENVIRONMENT(POD_NAMESPACE)%", "mesh_id": "%ENVIRONMENT(ISTIO_META_ASM_MESH_ID)%", "cluster_id": "%ENVIRONMENT(ISTIO_META_ASM_CLUSTER_ID)%", } 其中日志标记与表1含义相同,新增字段解释见表2。 表2 1.18及以上版本istio日志新增字段解读 Log operator 解释 样例 pod_name 产生日志的pod名称 istio-ingressgateway-1-15-7-r2-599d4cf747-ngcfd pod_namespace 产生日志的pod的namespace istio-system mesh_id 网格ID 84961386-6d84-929d-98bd-c5aee93b5c88 cluster_id 集群ID 84961386-6d84-929d-98bd-c5aee93b5c88
-
什么是华为开源镜像站? 华为开源镜像站(Mirrors)是由华为云提供的开源组件、开源操作系统及开源DevOps工具镜像站,致力为用户提供全面、高速、可信的开源组件/OS/工具下载服务。由于网络原因,国内开发者使用国外开源组件、工具和操作系统等资源下载时比较慢,影响开发效率。镜像站将这些资源生成一份镜像,归档到国内并定期/实时同步以供国内开发者高效使用,可以减少开源组件等资源下载的等待时间。镜像站还提供了开源组件使用的配置帮助和论坛帖子,以便开发者使用时能一站式找到所需资源,降低搜索成本。
-
生产排产 已经确认过的生产工单,可以在生产排产的界面单击操作列的“排产”按钮进行生产任务拆解。 排产时,系统会自动根据当前产品配置的生产工艺流程,展示工艺流程中的所有工序。用户在每一道工序中配置对应的工作站以及每个工作站排产的“排产数量”、“开始生产时间”、预估的“生产时长”。 系统根据配置信息为每个工作站生成对应的生产任务。 用户同样也可使用系统提供的甘特图,调整每一个生产任务的开始结束时间,以方便对整个工厂的多个生产工单进行合理排产。排产后的生产任务将自动在移动端对应的工作站任务情况中,按先后顺序进行展示。操作员可对生产任务进行处理。 图3 生产计划
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- ...
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333
推荐文章