华为云用户手册

  • 注意事项 当单次插入的数据量大于等于表级参数DELTAROW_THRESHOLD时,数据会直接插入主表生成CU(Compress Unit)。 当插入的数据量小于表级参数DELTAROW_THRESHOLD时,会在辅助Delta表上插入一条类型为I的记录,同时将数据序列化存储到这条记录的values字段。 插入到Delta表的数据跟主表使用全局统一分配的cuid。 插入到delta表的数据依赖autovacuum 来merge到主表CU。
  • 参数说明 DISTINCT [ ON ( expression [, ...] ) ] 从SELECT的结果集中删除所有重复的行,使结果集中的每行都是唯一的。 ON ( expression [, ...] ) 只保留那些在给出的表达式上运算出相同结果的行集合中的第一行。 SELECT列表 指定查询表中列名,可以是部分列或者是全部(使用通配符*表示)。 通过使用子句AS output_name可以为输出字段取个别名,这个别名通常用于输出字段的显示。 FROM子句 为SELECT声明一个或者多个源表。 FROM子句涉及的元素如下所示。 WHERE子句 WHERE子句构成一个行选择表达式,用来缩小SELECT查询的范围。condition是返回值为布尔型的任意表达式,任何不满足该条件的行都不会被检索。 WHERE子句中可以通过指定"(+)"操作符的方法将表的连接关系转换为外连接。但是不建议用户使用这种用法,因为这并不是SQL的标准语法,在做平台迁移的时候可能面临语法兼容性的问题。同时,使用"(+)"有很多限制: GROUP BY子句 将查询结果按某一列或多列的值分组,值相等的为一组。 HAVING子句 与GROUP BY子句配合用来选择特殊的组。HAVING子句将组的一些属性与一个常数值比较,只有满足HAVING子句中的逻辑表达式的组才会被提取出来。 ORDER BY子句 对SELECT语句检索得到的数据进行升序或降序排序。对于ORDER BY表达式中包含多列的情况:
  • 语法格式 1 2 3 4 5 6 7 8 9 10 [ WITH [ RECURSIVE ] with_query [, ...] ] SELECT [/*+ plan_hint */] [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] { * | {expression [ [ AS ] output_name ]} [, ...] } [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY grouping_element [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT | MINUS } [ ALL | DISTINCT ] select ] [ ORDER BY {expression [ [ ASC | DESC | USING operator ] | nlssort_expression_clause ] [ NULLS { FIRST | LAST } ]} [, ...] ] [ { [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ] } | { LIMIT start, { count | ALL } } ]
  • 注意事项 列存表与HStore表都暂不支持SELECT FOR UPDATE语法。 对HStore表执行SELECT查询时,会扫描列存主表CU上的数据、delta表上的I记录中的数据、内存中每行数据更新信息,并将三种信息合并后返回。 在通过主键索引或唯一索引查询数据的场景中: 对于传统列存表,唯一索引会同时存储行存Delta表上的数据位置信息(blocknum,offset)与列存主表的数据位置信息(cuid,offset),数据MERGE到主表后又会插入新的索引元组,索引会持续膨胀。 对于HStore表,由于实现了全局CUID的统一分配,索引元组中始终只存储(cuid,offset), 数据MERGE后不会产生新的索引元组。
  • 参数说明 plan_hint子句 以/*+ */的形式在关键字后,用于对指定语句块生成的计划进行hint调优,详细用法请参见使用Plan Hint进行调优 table_name 要更新的表名,可以使用模式修饰。 取值范围:已存在的表名称。 alias 目标表的别名。 取值范围:字符串,符合标识符命名规范。 expression 赋给字段的值或表达式。 DEFAULT 用对应字段的缺省值填充该字段。 如果没有缺省值,则为NULL。 from_list 一个表的表达式列表,允许在WHERE条件里使用其他表的字段。与在一个SELECT语句的FROM子句里声明表列表类似。 目标表绝对不能出现在from_list里,除非在使用一个自连接(此时它必须以from_list的别名出现)。 condition 一个返回boolean类型结果的表达式。只有这个表达式返回true的行才会被更新。
  • 语法格式 1 2 3 4 UPDATE [/*+ plan_hint */] [ ONLY ] table_name [ * ] [ [ AS ] alias ] SET {column_name = { expression | DEFAULT } |( column_name [, ...] ) = {( { expression | DEFAULT } [, ...] ) |sub_query }}[, ...] [ FROM from_list] [ WHERE condition ];
  • 示例 创建表reason_update: 1 2 3 4 5 6 CREATE TABLE reason_update ( TABLE_SK INTEGER , TABLE_ID VARCHAR(20) , TABLE_NA VARCHAR(20) )WITH(ORIENTATION=COLUMN, ENABLE_HSTORE=ON); 向表reason_update中插入数据: 1 INSERT INTO reason_update VALUES (1, 'S01', 'StudentA'),(2, 'T01', 'TeacherA'),(3, 'T02', 'TeacherB'); 对表reason_update执行UPDATE操作: 1 UPDATE reason_update SET TABLE_NA = 'TeacherD' where TABLE_SK = 3;
  • 与标准数仓的区别 实时数仓与标准数仓是 GaussDB (DWS)的两种不同类型产品,在使用上也存在一定差异,具体可参考表1进行对比分析。 表1 实时数仓与标准数仓的差异 数仓类型 标准数仓 实时数仓 适用场景 融合分析业务,一体化OLAP分析场景。主要应用于金融、政企、电商、能源等领域。 实时入库+分析混合业务,上游数据实时入库+数据入库后实时高效查询场景。主要用于电商、金融等实时入库要求高的场景。 产品优势 性价比高,使用场景广泛。 支持冷热数据分析,存储、计算弹性伸缩,无限算力、无限容量等。 混合负载,入库性能强。 提供与列存相当的高性能查询效率与高压缩率的数据压缩能力。同时拥有处理传统TP场景的事务能力。 功能特点 支持海量数据离线处理和交互查询,数据规模大、复杂数据挖掘具有很好的性能优势。 支持海量数据高并发的更新操作入库以及高性能的查询效率。在数据规模大、入库并发高、查询要求高的场景下具有很好的性能优势。 SQL语法 SQL语法兼容性高,语法通用,易于使用。 兼容列存语法。 GUC参数 丰富的GUC参数,根据客户业务场景适配最适合客户的数仓环境。 兼容标准数仓GUC参数,同时支持实时数仓调优参数。
  • 技术特点 完整的事务一致性 体现在数据插入或者更新后提交即可见,不存在时延;并发更新后数据保证强一致,不会出现乱序导致的结果预期不一致。 查询性能好 多表关联等复杂AP查询场景下,更完善的分布式查询计划与分布式执行器带来的性能优势,支持复杂的子查询和存储过程。 入库快 彻底解决列存CU锁冲突问题,支持高并发的更新入库操作,典型场景下,并发更新性能是之前的百倍以上。 高压缩 数据在MERGE进入列存主表后,按列存储具有天然的压缩优势,能极大地节省磁盘空间与IO资源。 查询加速 支持主键等传统索引能力去重和加速点查,也支持分区、多维字典、局部排序等方式进一步加速AP查询。
  • 行存、列存、HStore表对比 表2 行存、列存、HStore表对比 表类型 行存表 列存表 HStore表 数据存储方式 以元组为单位,将每一条数据的所有属性值存储到临近的空间里。 以CU(Compress Unit)为单位,将单个属性的所有值存储到临近的空间里。 数据主要以CU形式存储在列存主表上,对于被更新的列、小批量插入的数据将被序列化后存储到新设计的Delta表上。 数据写入 行存压缩暂未商用,数据按原始状态存储,磁盘空间占用较大。 按列存储时,由于属性值类型相同具有天然的压缩优势。数据写入时能极大节省IO资源与磁盘空间占用。 批量插入的数据直接写入CU,具有与列存一致的压缩优势。 被更新的列、小批量插入的数据会序列化后压缩。同时定期merge到主表CU。 数据更新 数据按行更新,没有CU锁问题,并发更新(update/upsert/delete等)性能好。 即使更新单条数据,也要获取整个CU的锁,基本无法支持并发更新(update/upsert/delete等)。 彻底解决列存更新的CU锁问题,并发更新(update/upsert/delete等)的性能达到行存的60%以上。 数据读取 按行读取,即使只需访问某一列的数据,也需要将一整行的数据取出。查询性能较差。 按列读取时只需访问该列的CU,再加上CU的压缩优势导致需要占用的IO资源更少,读取性能很好。 对于列存主表的数据按列读取,对于被更新的列、小批量插入的数据会反序列化后取出,数据merge到主表后具有与列存一致的数据读取优势。 优点 并发更新性能好。 查询性能好,磁盘占用空间少。 并发更新性能好,数据MERGE后具有与列存一致的查询性能优势与压缩优势。 缺点 占用磁盘空间多,查询性能差。 基本无法支持并发更新。 需要后台常驻线程对HStore表进行merge清理操作。先merge到CU主表再进行清理,与SQL语法中的Merge无关。 适用场景 更新删除操作频繁的TP事务场景。 点查询(基于索引的、返回数据量小的简单查询)。 查询分析为主的AP场景。 数据量大,存入后的更新删除操作少。 实时并发入库场景。 需要支持高并发的更新入库操作以及高性能的查询效率。
  • 前提条件 已进行Facebook侧配置,如果尚未配置请参考如下步骤对接。 访问https://developers.facebook.com/apps,使用Facebook 开发者账号登录 。 如果没有开发者账号请先创建。 创建应用。 用例类型选择其他,应用类型选择商务,自定义应用名称,其他的保持默认。 为应用添加产品Messenger,单击“设置”即可。 新建公共主页。 绑定刚刚创建的公共主页。 刷新应用界面,获取已绑定的主页ID和口令。 红框中的编号表示公共主页编号,对应AICC侧的“频道标识”。 口令对应AICC侧的“访问凭证”和“刷新凭证”。 获取已创建的应用编号和应用密钥。 “应用编号”对应AICC侧的“客户端标识” “应用密钥”对应AICC侧的“客户端秘钥” 设置访问权限。 访问https://developers.facebook.com/tools/explorer/ 将最上方的参数设置为:me?fields=id,name 设置“Meta 应用”为2中创建的应用。 往“Permission”中添加如下权限: pages_show_list pages_messaging pages_read_engagement pages_manage_metadata pages_read_user_content pages_manage_posts pages_manage_engagement 设置“用户或公共主页”。 单击,选择“获取公共主页访问口令”。 单击“以XXX的身份继续”,选择3中添加的公共主页。 单击“继续”。 单击“保存”。 再次单击,选择已添加的公共主页。 单击生成“Generate Access Token”,记录下来。 再次检查下“用户或公共主页”是否为已添加的公共主页,然后单击“提交”,权限添加成功。 设置访问口令3个月的有效期。 访问https://developers.facebook.com/tools/debug/accesstoken 输入7.f获取的访问口令,单击“调试”。 调试成功显示如下信息: 类型显示Page而非User 到期日显示禁止 数据访问权限已过期显示约3个月以后 细化范围最少包含6中添加的权限。
  • 概述 以和ODFS集成的智能语音导航支持如下三类机器人的配置为例,介绍三种不同的知识配置方式: 机器人类型 用途 针对行业 样例 问答型 对话机器人 系统根据用户的具体问题给出具体答案。 回答的内容更基于知识而不是用户目的。 针对垂直领域,技术上强调直接与知识库结合的回复获取方面的技术。 Client : 我在天河区,请问哪里可以办理社保 Robot: (查询FAQ知识库,匹配到对应答案) B: 你好,社会保障局服务中心地址:白云区在白云东路XXXX;天河区在天河大厦101号;越秀区在…… 任务型对话机器人 比如预订机票、订餐、开通彩铃等一系列以完成某项有明确目标的任务为导向的对话机器人。 针对垂直领域(有限信息),技术上强调多轮对话、槽位提取方面的技术。 Client : 我想开通流量套餐 B:我们有5G包月,10G包月,不限量套餐,请问你想开通哪一种? Client : 5G包月 B:你想开通5G包月流量套餐,请问你确认吗? Client:确认 B : (调用开通套餐的服务接口(传入用户号码,5G包月参数),得到成功结果) B : 好的,已为你成功开通5G包月流量套餐,10分钟后生效。 B :请问你还需要办理其他服务吗? 父主题: 配置智能机器人
  • 配置流程 您可以参考下面简单的流程说明进行人员配置。 参考配置组织机构新建组织机构。此时由于还没有员工、主管等信息,对新建的组织机构可先不配置其公共角色、员工、主管等。 AICC系统预置了两个角色:租户环境管理员、默认座席角色。若不满足实际需求,请参考配置角色权限新建角色。 参考配置员工信息新建员工,新建员工时您可以为其选择角色、组织机构等信息,但不支持配置主管。 请再次回到配置组织机构,为其组织机构配置主管和公共角色等信息,主管即为当前组织机构下所有员工的主管,公共角色的权限也将赋予组织机构下所有的员工。
  • 基本概念 配置人员前,您需要了解一些基本概念。 图1 人员配置 组织机构:企业租间拥有一个默认组织机构,可以按照职责在默认组织机构上建立组织机构。每个组织机构下可以建立多个组织。例如:客服部、维护部。 角色:角色是工作权限的集合。当您把某个员工赋上某角色,这个员工就拥有了这个角色包含的所有权限。例如:客服、管理员、工单责任人、任务处理人。 功能权限:功能权限是将界面资源(如使用某菜单的权限)、界面操作(界面上的增、删、改、查等操作)抽象成权限,只有赋给员工的角色具备了某一功能权限,该员工才能够对该资源进行操作。功能权限属于静态类的资源,一般不会随资源内配置的数据进行变化。功能权限包括: 基础功能权限:指此角色拥有的权限。 可赋功能权限:指此角色可以可赋予其它角色的权限,只能赋予此账号所有拥有的角色给新建的角色。 员工:企业内部的人员。各人员被赋予各种角色后,可以对系统进行权限内的操作。
  • 操作步骤 单击,打开接入智能机器人开关。 设置头像,单击更换头像,共7张系统头像可供选择。 设置机器人名称和机器人性别。 选择机器人,机器人在智能IVR中配置,详情请参见配置智能机器人。 若配置智能IVR时,需要配置呼叫转移图元,呼叫转移类型不能选择31、32、33。 自定义默认回复语、超时回复语、转人工提示语。 配置静默座席技能队列,配置后当机器人与用户交谈过程遇到无法解决的问题时,会求助该技能队列下的座席。 单击“下一步”或“保存”,完成配置。
  • 为什么需要自动切流 MCI提供了一种跨集群的负载均衡和流量路由机制,提高了应用程序的可用性和可靠性。然而,当集群出现故障后,通过MCI分配到该集群上的请求将会失败。 U CS 提供自动切流能力,可自动摘除故障集群上的流量,以进一步保障服务的可用性。自动切流能力的应用场景主要有: 识别集群故障并自动切流:在集群内关键组件CoreDNS功能故障后,自动探查并及时上报至控制面,将该集群上的流量摘除,由此保障服务可用性不受单个集群组件故障影响。具体切流操作请参见配置条件触发自动切流。 提前摘除流量以平滑升级:在集群管理员进行集群升级等操作前,提前将该集群上的流量摘除,操作成功后再切回流量,由此保障服务可用性不受单个集群升级影响。具体切流操作请参见配置无条件触发自动切流。
  • 配置无条件触发自动切流 集群管理员进行集群升级等操作,若出现升级策略不恰当、升级配置有误、操作人员执行失误等问题,可能会导致集群不可用。本小节指导您在进行集群升级前,通过创建无条件触发的Remedy对象,将MCI流量从目标集群上摘除。 创建Remedy对象可在特定触发条件下执行特定动作。集群管理员准备升级目标集群时(如member1),可以创建如下Remedy对象,将MCI流量从member1上摘除。 示例YAML定义了一个Remedy对象,触发条件为空,表示无条件触发,集群联邦控制器会立即将member1上的流量摘除。在集群升级成功之后,删除该Remedy对象,member1上的流量会自动恢复,由此保证单集群的升级不会影响服务的高可用。详细的Remedy对象参数说明请参见表1。 apiVersion: remedy.karmada.io/v1alpha1 kind: Remedy metadata: name: foo spec: clusterAffinity: clusterNames: - member1 actions: - TrafficControl 表1 Remedy参数说明 参数 描述 spec.clusterAffinity.clusterNames 策略关注的集群名列表。仅在该列表中的集群会执行指定动作,为空时不会执行任何动作。 spec.decisionMatches 触发条件列表。当上述集群列表中指定的集群满足任一触发条件时,即会执行指定动作。当列表为空时,表示无条件触发。 conditionType 触发条件的类型。当前仅支持ServiceDomainNameResolutionReady类型,即CPD上报的CoreDNS 域名 解析状态。 operator 判断逻辑,仅支持Equal和NotEqual两种值,即等于和不等于。 conditionStatus 触发条件的状态。 actions 策略要执行的动作,目前仅支持TrafficControl,即流量控制。 父主题: 配置MCI自动切流
  • asm-iam-authenticator使用参考 asm-iam-authenticator作为k8s client端的认证插件,主要提供了generate-kubeconfig和token两个子命令。 A tool to authenticate to ASM using HuaweiCloud IAM credentials Usage: asm-iam-authenticator [command] Available Commands: completion Generate the autocompletion script for the specified shell generate-kubeconfig Generate or modify kubeconfig files based on user configuration help Help about any command token Authenticate using HuaweiCloud IAM and get token for ASM Flags: --alsologtostderr log to standard error as well as files (no effect when -logtostderr=true) -h, --help help for asm-iam-authenticator --log_dir string If non-empty, write log files in this directory (no effect when -logtostderr=true) --log_file string If non-empty, use this log file (no effect when -logtostderr=true) --logtostderr log to standard error instead of files (default true) -v, --v Level number for the log level verbosity --version version for asm-iam-authenticator Use "asm-iam-authenticator [command] --help" for more information about a command. 其中,Flags主要为日志选项。 token token子命令用于获取用户token,获取token的认证方式有用户名/密码、ak/sk两种,选择其中一种即可。 Authenticate using HuaweiCloud IAM and get token for ASM Usage: asm-iam-authenticator token [flags] Flags: --ak string IAM access key ID --aksk-dir string The directory of IAM access key(AK) and secret access key(SK) --cache Cache the token credential on disk until it expires (default true) --domain-name string IAM domain name, typically your account name -h, --help help for token --iam-endpoint string HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com") --insecure-skip-tls-verify If true, the iam server's certificate will not be checked for validity. (default true) --password string IAM user password --project-id string IAM project id, project id and project name should not be empty at same time --project-name string IAM project name, project id and project name should not be empty at same time --sk string IAM secret access key --token-expired-refresh Whether refresh the cached token when it may have expired resulting unauthorized. If true, we will use client.authentication.k8s.io/v1alpha1 api version. Otherwise, use client.authentication.k8s.io/v1beta1 --token-only Return token only for other tool integration --user-name string IAM user name. Same as domain-name when using main account, otherwise use iam user name 其中,Flags分为用户名密码、AKSK和公共配置。 表1 用户名/密码配置 Command Flag Environment Value Description domain-name DOMAIN_NAME 租户名,即账号名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 user-name USER_NAME 子用户名,即IAM用户名。若不配置与domain-name一致。 详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 password PASSWORD 用户或子用户密码。 表2 AK/SK配置 Command Flag Environment Value Description ak AC CES S_KEY_ID ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。 sk SECRET_ACCESS_KEY 表3 公共配置 Command Flag Environment Value Description iam-endpoint IAM_ENDPOINT IAM的Endpoint,必须配置,详情请参见https://developer.huaweicloud.com/endpoint?IAM。 project-name PROJECT_NAME 项目名,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 project-id PROJECT_ID 项目ID,详情请参见https://support.huaweicloud.com/usermanual-ca/ca_01_0001.html。 insecure-skip-tls-verify INSECURE_SKIP_TLS_VERIFY 是否跳过对CCI/IAM服务端的校验,默认为true。 cache CREDENTIAL_CACHE 是否开启将IAM Token缓存到本地,提高访问性能,默认为true。 注意: 在非安全环境,建议关闭此选项。 generate-kubeconfig 为用户直接生成KubeConfig配置,若指定的KubeConfig已存在,则会注入新的server、user、context配置,并将当前的KubeConfig context切换到此次配置的结果。 Generate or modify kubeconfig files based on user configuration. Sets a cluster entry, a user entry and a context entry in kubeconfig and use this context as the current-context. The loading order follows these rules: 1. If the --kubeconfig flag is set, then only that file is loaded. The flag may only be set once and no merging takes place. 2. If $KUBECONFIG environment variable is set, then it is used as a list of paths (normal path delimiting rules for your system). These paths are merged. When a value is modified, it is modified in the file that defines the stanza. When a value is created, it is created in the first file that exists. If no files in the chain exist, then it creates the last file in the list. 3. Otherwise, ${HOME}/.kube/config is used and no merging takes place. Examples: # Generate kubeconfig to ${HOME}/.kube/config using aksk asm-iam-authenticator generate-kubeconfig --mesh-endpoint=https://127.0.0.1:5443 --ak=*** --sk=*** # Generate kubeconfig to ${HOME}/.kube/config using domain name and password asm-iam-authenticator generate-kubeconfig --mesh-endpoint=https://127.0.0.1:5443 --domain-name=*** --password=*** Usage: asm-iam-authenticator generate-kubeconfig [flags] Flags: --ak string IAM access key ID --aksk-dir string The directory of IAM access key(AK) and secret access key(SK) --cache Cache the token credential on disk until it expires (default true) --domain-name string IAM domain name, typically your account name -h, --help help for generate-kubeconfig --iam-endpoint string HuaweiCloud IAM endpoint, i.e. https://iam.cn-north-4.myhuaweicloud.com (default "https://iam.myhuaweicloud.com") --insecure-skip-tls-verify If true, the iam server's certificate will not be checked for validity. (default true) --kubeconfig string use a particular kubeconfig file --mesh-endpoint string Mesh server endpoint, i.e. https://127.0.0.1:5443 --mesh-region string Mesh region, i.e. cn-north-4 --password string IAM user password --project-id string IAM project id, project id and project name should not be empty at same time --project-name string IAM project name, project id and project name should not be empty at same time --sk string IAM secret access key --token-expired-refresh Whether refresh the cached token when it may have expired resulting unauthorized. If true, we will use client.authentication.k8s.io/v1alpha1 api version. Otherwise, use client.authentication.k8s.io/v1beta1 --token-only Return token only for other tool integration --user-name string IAM user name. Same as domain-name when using main account, otherwise use iam user name --validation Validate kubeconfig by trying to access Mesh with existing config (default true) 父主题: 使用kubectl连接网格控制面
  • 获取网格实例Endpoint 登录华为云UCS控制台,左侧菜单栏选择“服务网格”。 F12打开浏览器console切换到“网络”标签页,单击服务网格列表页右上角小刷新按钮,找到meshes接口,单击“预览”标签页,找到对应网格的返回体,找到status.meshEndpoint.vpcEndpointServiceName字段后复制。 登录 VPC终端节点 VPCEP,左侧菜单栏选择“终端节点”,找到终端节点服务名称为步骤2获取到的对应的终端节点,单击进入获取到节点IP。 ASM在您创建网格时选择的枢纽VPC创建终端节点,并将该终端节点连接到网格控制面apiserver,来打通访问网格控制面的网络。更多信息请参考1.2-操作步骤中VPC解释。
  • 非安全环境配置kubectl 参照上述操作,安装并设置kubectl。 编辑KubeConfig文件,删除敏感信息参数。 Linux系统,KubeConfig文件默认位于$HOME/.kube/config。 表2 待删除敏感信息参数 Command Flag Environment Value Description --domain-name DOMAIN_NAME 租户名 --user-name USER_NAME 子用户名 --password PASSWORD 用户密码 --ak ACCESS_KEY_ID Access Key --sk SECRET_ACCESS_KEY Secret Key --cache CREDENTIAL_CACHE 是否开启缓存Token 更多参数说明请参见asm-iam-authenticator使用参考。 配置删除参数相应的环境变量来使用kubectl,以CREDENTIAL_CACHE为例,其他环境变量如ACCESS_KEY_ID和SECRET_ACCESS_KEY可参考CREDENTIAL_CACHE进行配置。 export CREDENTIAL_CACHE=false 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全。 kubectl get serviceentry -n xxx 执行上述命令后,提示如下类似信息:
  • 安装并设置kubectl 以下操作以Linux环境为例,更多详情信息请参见安装和配置kubectl。 1、以下步骤需要在UCS网格接入集群纳管的节点上操作。 2、以下步骤2执行asm-iam-authenticator generate-kubeconfig命名后会更新节点默认配置的config内容,建议执行以下命令备份config文件。 cp $HOME/.kube/config $HOME/.kube/config.backup 将下载kubectl中下载的kubectl赋予可执行权限,并放到PATH目录下。 chmod +x ./kubectl mv ./kubectl $PATH 其中,$PATH为PATH路径(如/usr/local/bin),请替换为实际的值。 您还可以通过如下命令查看kubectl的版本,如下所示。 kubectl version --client=true Client Version: version.Info{Major:"1", Minor:"25", GitVersion:"v1.25.3", GitCommit:"434bfd82814af038ad94d62ebe59b133fcb50506", GitTreeState:"clean", BuildDate:"2022-10-12T10:57:26Z", GoVersion:"go1.19.2", Compiler:"gc", Platform:"linux/amd64"} Kustomize Version: v4.5.7 配置IAM认证信息并持久化到本地。 将下载asm-iam-authenticator中下载的asm-iam-authenticator赋予可执行权限,并放到PATH目录下。 chmod +x ./asm-iam-authenticator mv ./asm-iam-authenticator $PATH 初始化asm-iam-authenticator配置。 初始化asm-iam-authenticator提供了AK/SK和用户名/密码两种方式,请选择其中一种执行。 使用AK/SK的方式配置IAM认证信息 asm-iam-authenticator generate-kubeconfig --iam-endpoint=https://$iam_endpoint --mesh-endpoint=https://$mesh_endpoint --mesh-region=$mesh_region --ak=xxxxxxx --sk=xxxxxx 其中, iam_endpoint为IAM服务的Endpoint,请参见地区和终端节点 mesh_endpoint为网格实例的Endpoint,获取方法请参见获取网格实例Endpoint; mesh_region为网格所在区域; ak、sk的获取方法请参见获取AK/SK,ak为文件中Access Key部分,sk为文件中Secret Key部分。 例如,iam_endpoint为https://iam.cn-north-4.myhuaweicloud.com,mesh_endpoint为https://xx.xx.xx.xx:5443, mesh_region为cn-north-4, ak的值为my-ak,sk的值为ABCDEFAK.. ,则命令如下所示: asm-iam-authenticator generate-kubeconfig --iam-endpoint=https://iam.cn-north-4.myhuaweicloud.com --mesh-endpoint=https://xx.xx.xx.xx:5443 --mesh-region=cn-north-4 --ak=my-ak --sk=ABCDEFAK.. 执行上述命令后,显示如下类似信息: Switched to context "asm-context-cn-north-4-my-ak" 其中,asm-context-cn-north-4-my-ak为context名,可通过kubectl config get-contexts命令查看。 使用用户名/密码的方式配置IAM认证信息 asm-iam-authenticator generate-kubeconfig --iam-endpoint=https://$iam_endpoint --mesh-endpoint=https://$mesh_endpoint --mesh-region=$mesh_region --domain-name=xxxxxxx --user-name=xxxxxx --password='xxxxxx' 其中,iam_endpoint为IAM服务的Endpoint,请参见地区和终端节点, mesh_endpoint为网格实例的Endpoint,获取方法请参见获取网格实例Endpoint; mesh_region为网格所在区域; domain-name为租户名,user-name为子用户名,password为子用户密码,请根据替换为实际的值。 若无子用户,user-name与domain-name配置一致即可,也可以不添加user-name参数。 IAM的Endpoint请参见地区和终端节点,请注意需要使用与网格实例地区相同的Endpoint。 在非安全的环境中使用kubectl,建议您完成此步骤后,使用环境变量的方式重新配置认证信息,具体参考非安全环境配置kubectl。 配置完成后,即可通过kubectl命令操作网格实例的相关资源。 例如,查看北京四的namespace资源。 kubectl get serviceentry -n xxx 执行上述命令后,提示如下类似信息: 当通过API访问公有云系统时,需要使用访问用户名密码或者密钥(AK/SK)进行身份认证并对请求进行加密,确保请求的机密性、完整性和请求双方身份的正确性。请妥善保存$HOME/.kube/config配置文件,确保访问密钥不被非法使用。 当开启cache缓存token提高访问性能时,token会以文件的方式保存在$HOME/.asm/cache的子目录下,请及时清理。 当发现访问密钥被非法使用(包括丢失、泄露等情况),可以自行删除或者通知管理员重置访问密钥,重新配置。 删除的访问密钥将无法恢复。
  • 获取AK/SK AK(Access Key ID):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。 SK(Secret Access Key):与访问密钥ID结合使用的密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。 登录管理控制台。 单击用户名,在下拉列表中单击“我的凭证”。 在“我的凭证”页面,单击“访问密钥”页签。 单击“新增访问密钥”,输入验证码。 单击“确定”,生成并下载访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。
  • 下载asm-iam-authenticator 在ASM官网下载asm-iam-authenticator二进制,最新版本为v1.0.0,下载地址如表1所示。 表1 下载地址 操作系统 下载地址 查看帮助 Linux AMD 64位 asm-iam-authenticator_linux-amd64 asm-iam-authenticator_linux-amd64_sha256 asm-iam-authenticator使用参考
  • 更新服务授权 登录UCS控制台,在左侧导航栏中单击“服务网格”。 单击服务网格名称,进入详情页。 在左侧导航栏,单击“服务安全”下的“服务授权”,进入服务授权详情页。 选定要更新的策略,单击操作列下的“YAML编辑”。 更新设置的条件,比如版本号。 spec: selector: matchLabels: app: forecast version: v2 rules: - from: - source: principals: ["cluster.local/ns/weather/sa/frontend"] to: - operation: methods: ["PUT","POST"] when: - key: request.headers[group] values: ["admin"]
  • 创建服务授权 支持YAML创建服务授权。 登录UCS控制台,在左侧导航栏中单击“服务网格”。 单击服务网格名称,进入详情页。 在左侧导航栏,单击“服务安全”下的“服务授权”,进入服务授权详情页。 单击右上角“YAML创建”,弹出服务授权YAML创建界面。 设置如下:满足特定条件的请求访问才会被接受,其他不满足所设定条件的请求访问都会被拒绝。 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy # 创建服务安全类别为服务授权 metadata: name: forecast # 服务授权名 namespace: weather # 在weather命名空间下创建 spec: selector: matchLabels: app: forecast version: v2 rules: - from: - source: principals: ["cluster.local/ns/weather/sa/frontend"] to: - operation: methods: ["PUT","POST"] when: - key: request.headers[group] values: ["admin"]
  • 案例 TCP 服务访问授权。 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: tcp-auth-policy namespace: weather spec: selector: matchLabels: app: forecast action: ALLOW rules: - from: - source: ipBlocks: ["10.**.**.**/**"] to: - operation: ports: ["8090"]
  • 案例 请求令牌自定义属性认证。 apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: detailed-jwt spec: action: ALLOW rules: - from: - source: requestPrincipals: ["weather@cloudnative-istio.book/weather"] when: - key: request.auth.claims[role] values: ["editor"]
  • 创建请求认证 支持YAML创建请求认证。 登录UCS控制台,在左侧导航栏中单击“服务网格”。 单击服务网格名称,进入详情页。 在左侧导航栏,单击“服务安全”下的“请求认证”,进入请求认证详情页。 单击右上角“YAML创建”,弹出请求认证YAML创建界面。 为命名空间下的服务访问,校验请求中的认证信息。 apiVersion: security.istio.io/v1beta1 kind: RequestAuthentication # 创建服务安全类别为请求认证 metadata: name: forecast # 请求认证名 namespace: weather # 在weather命名空间下创建 spec: selector: matchLabels: app: forecast # 标签键值对 jwtRules: - issuer: "weather@cloudnative-istio.book " jwksUri: https://cloudnative-istio.book/jwks-demo/jwks
  • 创建对端认证 支持YAML创建对端认证。 登录UCS控制台,进入网格。 在左侧导航栏,单击“服务安全”下的“对端认证”,进入对端认证详情页。 单击右上角“YAML创建”,弹出对端认证YAML创建界面。 为服务开启双向认证,该服务使用双向认证来接收调用方的访问,只处理TLS通道上加密的请求。 apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication # 创建服务安全类别为对端认证 metadata: name: peer-policy # 对端认证名 namespace: weather # 在weather命名空间下创建 spec: selector: matchLabels: app: forecast # 标签键值对 mtls: mode: STRICT 若要完成网格统一认证策略,设置如下: apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: mesh_tls namespace: istio-system spec: mtls: mode: STRICT
  • 更新对端认证 登录UCS控制台,在左侧导航栏中单击“服务网格”。 单击服务网格名称,进入详情页。 在左侧导航栏,单击“服务安全”下的“对端认证”,进入对端认证详情页。 选定要更新的认证策略,单击操作列下的“YAML编辑”。 根据实际需求更新对端认证。例如:网格统一认证策略更新为命名空间统一认证策略,设置如下: apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: ns_weather_tls namespace: weather spec: mtls: mode: STRICT
共100000条