• 沒有找到結果。

授权管理_容器镜像服务 SWR_用户指南_华为云

N/A
N/A
Protected

Academic year: 2022

Share "授权管理_容器镜像服务 SWR_用户指南_华为云"

Copied!
84
0
0

加載中.... (立即查看全文)

全文

(1)

用户指南

文档版本 01

发布日期 2022-01-21

(2)

版权所有 © 华为技术有限公司 2022。 保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。

商标声明

和其他华为商标均为华为技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。

(3)

目 录

1 容器镜像服务企业版... 1

1.1 申请公测...1

1.2 权限管理...2

1.2.1 创建用户并授权使用企业仓库... 2

1.2.2 企业仓库自定义策略... 3

1.2.3 企业仓库资源...6

1.3 购买企业版实例...7

1.4 网络访问控制... 9

1.4.1 网络访问控制概述... 9

1.4.2 公网访问控制...9

1.4.3 内网访问控制... 11

1.5 创建访问凭证...12

1.6 组织管理... 14

1.7 镜像仓库... 16

1.8 Helm Chart 仓库... 19

1.9 镜像同步... 23

1.10 镜像老化... 31

1.11 触发器... 37

1.12 全域分发... 40

2 容器镜像服务共享版... 43

2.1 欢迎使用容器镜像服务... 43

2.2 权限管理... 44

2.2.1 创建用户并授权使用 SWR... 44

2.3 容器引擎基础知识... 45

2.4 镜像管理... 48

2.4.1 客户端上传镜像...48

2.4.2 获取长期有效登录指令...50

2.4.3 页面上传镜像... 52

2.4.4 下载镜像... 53

2.4.5 编辑镜像属性... 54

2.4.6 共享私有镜像... 55

2.4.7 添加触发器... 57

2.4.8 添加镜像老化规则... 61

(4)

2.4.9 自动同步镜像... 66

2.4.10 镜像安全扫描...68

2.4.11 镜像中心... 69

2.4.12 设置镜像加速器... 70

2.5 组织管理... 71

2.6 授权管理... 73

2.7 审计... 77

2.7.1 支持云审计的关键操作...77

2.7.2 查看云审计日志...79

(5)

1 容器镜像服务企业版

1.1 申请公测 1.2 权限管理 1.3 购买企业版实例 1.4 网络访问控制 1.5 创建访问凭证 1.6 组织管理 1.7 镜像仓库

1.8 Helm Chart仓库 1.9 镜像同步

1.10 镜像老化 1.11 触发器 1.12 全域分发

1.1 申请公测

操作场景

容器镜像服务企业版目前在“华东-上海一”区域开放公测,您可以申请公测免费试 用。

操作步骤

步骤1 登录容器镜像服务控制台。

步骤2 在左侧导航栏选择“企业版 公测”,跳转至企业版控制台。

步骤3 单击右上角“申请公测”,填写申请信息并勾选公测协议,单击“申请公测”。

(6)

1-1 申请公测

步骤4 公测申请审批通过后,即可体验企业版相关功能。

----结束

1.2 权限管理

1.2.1 创建用户并授权使用企业仓库

操作场景

如果您需要对您所拥有的企业仓库进行精细的权限管理,您可以使用统一身份认证服 务(Identity and Access Management,简称IAM),通过IAM,您可以:

● 根据企业的业务组织,在您的华为云帐号中,给企业中不同职能部门的员工创建 IAM用户,让员工拥有唯一安全凭证,并使用SWR资源。

● 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。

● 将企业仓库资源委托给更专业、高效的其他华为云帐号或者云服务,这些帐号或 者云服务可以根据权限进行代运维。

如果华为云帐号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章 节,不影响您使用企业仓库的其他功能。

本章节以授予“SWR FullAccess”权限为例介绍为用户授权的方法。

(7)

前提条件

给用户组授权之前,请您了解用户组可以添加的企业仓库权限,并结合实际需求进行 选择,企业仓库支持的系统权限,请参见:SWR企业版权限。若您需要对除SWR之外 的其他服务授权,IAM支持服务的所有权限请参见:系统权限。

示例流程

1-2 给用户授予企业仓库权限流程

1. 创建用户组并授权

在IAM控制台创建用户组,并授予容器镜像服务的管理员权限“SWR FullAccess”。

2. 创建用户并加入用户组

在IAM控制台创建用户,并将其加入1中创建的用户组。

3. 用户登录并验证权限

新创建的用户登录控制台,切换至授权区域,验证权限:在右上角单击“购买企 业版实例”,如果能购买企业仓库,说明权限设置成功。

1.2.2 企业仓库自定义策略

操作场景

如果系统预置的企业仓库权限不满足您的授权要求,可以创建自定义策略。自定义策 略中可以添加的授权项(Action)请参考表1-1。

目前华为云支持以下两种方式创建自定义策略:

● 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服 务、操作、资源、条件等策略内容,可自动生成策略。

● JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内 容;也可以直接在编辑框内编写JSON格式的策略内容。

(8)

具体创建步骤请参见:创建自定义策略。本章为您介绍常用的企业仓库自定义策略样 例。

企业仓库自定义策略样例

● 示例1:用户可以创建、更新、查看、删除组织。

{ "Version": "1.1", "Statement": [ {

"Effect": "Allow", "Action": [

"swr:repository:getNamespace", "swr:repository:listNamespaces", "swr:repository:createNamespace", "swr:repository:updateNamespace", "swr:repository:deleteNamespace"

] } ] }

● 示例2:

拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略 中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先原则。

如果您给用户授予SWR FullAccess的系统策略,但不希望用户拥有SWR

FullAccess中定义的删除企业仓库实例权限,您可以创建一条拒绝删除企业仓库实 例的自定义策略,然后同时将SWR FullAccess和拒绝策略授予用户,根据Deny优 先原则,则用户可以对企业仓库执行除了删除企业仓库实例外的所有操作。拒绝 策略示例如下:

{ "Version": "1.1", "Statement": [ {

"Effect": "Deny", "Action": [

"swr:instance:delete"

] } ] }

企业仓库操作与系统策略关系

1-1 企业仓库操作与系统策略关系

操作 Action名称 SWR

FullAccess SWR

OperateAcc ess

SWRReadOnlyAcc ess

创建企业版实

例 swr:instance:creat

e √ x x

查询企业版实

例列表 swr:instance:list √ √ √ 查询企业版实

例详情 swr:instance:get √ √ √

(9)

操作 Action名称 SWR

FullAccess SWR

OperateAcc ess

SWRReadOnlyAcc ess

删除企业版实

例 swr:instance:delet

e √ x x

创建组织 swr:repository:cre

ateNamespace √ √ x 查询组织列表 swr:repository:list

Namespaces √ √ √

查询组织详情 swr:repository:get

Namespace √ √ √

修改组织 swr:repository:up

dateNamespace √ √ x 删除组织 swr:repository:del

eteNamespace √ √ x 查询制品仓库

列表

swr:repository:list

Repositories √ √ √ 查询制品仓库

详情

swr:repository:get

Repository √ √ √

修改制品仓库 配置

swr:repository:up

dateRepository √ √ x 删除制品仓库 swr:repository:del

eteRepository √ √ x 上传制品 swr:repository:upl

oadArtifact √ √ x 下载制品 swr:repository:do

wnloadArtifact √ √ √ 查询chart列表 swr:chart:list √ √ √ 上传chart swr:chart:upload √ √ x 下载chart swr:chart:downlo

ad √ √ √

删除chart swr:chart:delete √ √ x 创建临时访问

凭证 swr:instance:creat

eTempCredential √ √ √ 创建长期访问

凭证 swr:instance:creat

eLTCredential √ x x 查询长期访问

凭证列表 swr:instance:listLT

Credentials √ √ √

(10)

操作 Action名称 SWR

FullAccess SWR

OperateAcc ess

SWRReadOnlyAcc ess

删除长期访问

凭证 swr:instance:delet

eLTCredential √ x x

1.2.3 企业仓库资源

资源是服务中存在的对象。在企业仓库中,资源包括:镜像仓库、企业版实例、Chart 仓库,您可以在创建自定义策略时,通过指定资源路径来选择特定资源。

1-2 SWR 的指定资源与对应路径

指定资源 资源路径

repository 【格式】

SWR:*:*:repository:镜像仓库名称

【说明】

对于镜像仓库资源,IAM自动生成资源路径前缀 SWR:*:*:repository:

通过镜像仓库名称指定具体的资源路径,支持通配符*。例如:

SWR:*:*:repository:*表示任意镜像仓库。

instance 【格式】

SWR:*:*:instance:企业版实例名称

【说明】

对于企业版实例资源,IAM自动生成资源路径前缀 SWR:*:*:instance:

通过企业版实例名称指定具体的资源路径,支持通配符*。例 如:

SWR:*:*:instance:*表示任意企业版实例。

chart 【格式】

SWR:*:*:chart:Chart仓库名称

【说明】

对于Chart仓库资源,IAM自动生成资源路径前缀SWR:*:*:chart:

通过Chart仓库名称指定具体的资源路径,支持通配符*。例 如:

SWR:*:*:chart:*表示任意Chart仓库。

例如只允许用户操作名为“example-instance”的企业版实例,则可以通过如下方式 配置。

{ "Version": "1.1",

(11)

"Statement": [ {

"Effect": "Allow", "Action": [ "swr:instance:*"

],

"Resource": [

"SWR:*:*:instance:example-instance"

] } ] }

1.3 购买企业版实例

操作场景

使用容器镜像服务企业仓库前,您首先需要购买企业版实例。企业仓库提供企业级的 云原生制品安全托管服务,提供容器镜像、Helm Chart等符合OCI规范的云原生制品 托管。

前提条件

● 已开通容器镜像服务所依赖的云服务:虚拟私有云 VPC、对象存储 OBS、密钥管 理服务 KMS、VPC终端节点 VPCEP。

● 已为容器镜像服务企业版授权您的虚拟私有云、对象存储等资源权限。

操作步骤

步骤1 登录容器镜像服务控制台。

步骤2 单击右上角“购买企业版实例”。

步骤3 在企业版实例购买页面,填写以下参数。

1-3 购买企业版实例

(12)

● 计费模式:当前仅支持按需计费模式,公测期间,可免费使用。

● 所属项目:选择企业版实例所在区域或项目。实例购买后区域或项目将无法更 改,请根据容器集群所在地进行选择。

● 实例名称:输入企业版实例名称。该名称将直接应用于该实例的访问地址,购买 后不可修改,请谨慎填写。

● 套餐规格:选择企业版实例规格。不同实例规格具有不同的功能及配额,请参考 界面上的规格对比进行选择。

● 虚拟私有云:选择企业版实例所在虚拟私有云。如果没有选项可参见创建虚拟私 有云和子网创建。

● 子网:选择企业版实例所在子网。

● 企业项目:针对企业用户使用,只有开通了企业项目的用户,或者权限为企业主 帐号的用户才可见。默认项目为“default”。

OBS桶加密:实例购买后默认在您帐号下创建OBS桶,用来托管容器镜像。开启 OBS桶加密后,上传对象时自动进行加密,以提高数据存储安全。但同时会影响 仓库性能,请您谨慎选择。

● 描述:输入企业版实例的描述。

步骤4 单击“立即购买”。

支付成功后返回实例列表,查看创建进度。当实例状态为“运行中”时,表示当前实 例已成功购买并处于可用状态。

1-4 实例列表

说明

若实例一直处于“创建中”,或者从列表中消失,请单击列表左上方的“操作记录”查看失败原 因。若无法定位,您可新建工单联系我们。

----结束

后续操作

企业版实例支持网络访问控制,新创建的企业版实例默认阻断全部访问来源,请参考 网络访问控制开通访问控制,避免无法正常访问实例。

(13)

1.4 网络访问控制

1.4.1 网络访问控制概述

容器镜像服务企业版支持网络访问控制,新创建的企业版实例默认阻断全部访问来 源,以确保您的镜像仓库及Helm Chart内的数据安全。您可以根据业务需要配置访问 控制策略,以最小范围放通业务客户端访问实例。

企业版实例支持从公网访问和从华为云内网访问,并能分别控制公网和内网访问权 限。

1-5 企业版实例访问示意图

● 公网访问:企业版实例支持从公网访问,通过白名单策略控制哪些公网IP网段可 以访问企业版实例。

● 内网访问:企业版实例支持从所在区域的内部网络的任一VPC中访问,如企业版 实例在“上海一”区域,则可从上海一的任一VPC中访问企业版实例。

每个企业版实例所在VPC默认能访问企业版实例,您可以在内网访问页面看到一 条默认的内网访问规则。

详情请参见:

● 公网访问控制

● 内网访问控制

约束与限制

IAM用户使用网络访问控制功能时,需要拥有“VPC ReadOnlyAccess”权限,从而能 够获取到VPC的子网列表。请使用帐号登录IAM为IAM用户授权,具体方法请参见创建 用户组并授权。

1.4.2 公网访问控制

操作场景

容器镜像服务企业版支持公网访问控制,可基于白名单策略限制来自公网环境的客户 端对实例的访问,保障实例内的数据安全。新创建的企业版实例默认不开启公网访问 入口。

本文档介绍如何为企业版实例配置公网访问控制。

(14)

操作步骤

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“安全可信 > 访问控制”。

步骤3 选择“公网访问”页签,单击“启用公网访问”。阅读弹窗中的提示信息,并单击

“确定”。

1-6 启用公网访问

步骤4 单击右上角“创建公网访问”,在弹出的窗口中填写白名单IP网段,如图1-7所示。如 果一次需要添加多个网段,可单击“添加白名单IP”进行添加。

1-7 添加白名单

步骤5 单击“确定”,该白名单IP添加成功并生效。

说明

如需修改该白名单信息,可删除后再次新建。

----结束

后续操作

创建公网访问后,您还需要创建访问凭证,才可以访问企业版实例。访问凭证的获取 方法请参见1.5 创建访问凭证。

(15)

1.4.3 内网访问控制

操作场景

容器镜像服务企业版支持内网访问控制,可基于内网访问链路限制私有网络内的客户 端访问实例。

本文档介绍如何为企业版实例配置内网访问控制。完成以下配置后,您可使用指定 VPC内的云服务器通过内网拉取企业版实例中的镜像。

说明

每个企业版实例所在VPC默认能访问企业版实例,您可以在内网访问页面看到一条默认的内网访 问规则。

操作步骤

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“安全可信 > 访问控制”。

步骤3 选择“内网访问”页签,单击右上角“创建内网访问”。

步骤4 在弹出的窗口中选择所属项目、内网IP所属VPC和子网,如图1-8所示。

1-8 创建内网访问

步骤5 单击“确定”。

等待“状态”变为“正常”,且“IP”不为空时,则说明内网访问已创建成功。

(16)

1-9 内网访问

创建完成后,就可以从已添加的内网IP网段访问企业版实例。

创建内网访问会在VPC终端节点(VPCEP)服务下创建一个对应的VPC终端节点,请勿 删除,否则会影响访问。

1-10 内网访问 VPC 终端节点

----结束

后续操作

创建内网访问后,您还需要创建访问凭证,才可以访问企业版实例。访问凭证的获取 方法请参见1.5 创建访问凭证。

1.5 创建访问凭证

操作场景

镜像仓库和Chart仓库需要使用访问凭证才能访问。访问凭证分为长期凭证和临时凭 证:

● 长期凭证:生成后永久有效,支持禁用及删除。长期凭证可应用在前期测试、

CICD流水线及容器集群拉取镜像等场景中。

注意

长期凭证没有时效限制,生成后请妥善保管,如果遗失请及时禁用或删除。

● 临时凭证:24小时内有效,生成后无法禁用及吊销。临时凭证可应用在临时使 用,对外单次授权等场景中,对安全性要求较高的生产集群也可通过定时刷新的 方式进行使用。

创建长期凭证

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“制品仓库 > 访问凭证”。

(17)

步骤3 选择“长期凭证”页签,单击“新建长期凭证”。

步骤4 在弹出的窗口中填写凭证名称,如图1-11所示。

1-11 新建长期凭证

步骤5 单击“确定”。

单击确定后会自动下载一个“长期凭证名称.csv”文件,内容包括如图1-12所示几项内 容。

1-12 长期凭证

其中:

● 镜像访问凭证是docker命令,用于访问镜像仓库,镜像仓库的使用详细说明请参 见1.7 镜像仓库。

● chart访问凭证是helm命令,用于访问Chart仓库,Chart仓库的使用详细说明请参 见1.8 Helm Chart仓库。

----结束

创建临时凭证

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“制品仓库 > 访问凭证”。选择“临时凭证”页签。

步骤3 选择“镜像”或“chart”,单击“生成临时访问凭证”,如图1-13所示。

1-13 生成临时访问凭证

临时凭证会直接显示在页面上,如图1-14所示,您可以复制后使用。

(18)

1-14 临时凭证

其中:

● 镜像访问凭证是docker命令,用于访问镜像仓库,镜像仓库的使用详细说明请参 见1.7 镜像仓库。

● chart访问凭证是helm命令,用于访问Chart仓库,Chart仓库的使用详细说明请参 见1.8 Helm Chart仓库。

----结束

后续操作

● 上传镜像

● 使用Helm客户端上传及下载Helm Chart

1.6 组织管理

操作场景

组织用于管理多个具有关联属性的镜像仓库和Helm Chart,不直接存储容器镜像和 Helm Chart,可对应企业内部的一个产品项目或部门。

说明

企业版实例创建成功后,默认会创建一个名为“library”的公有组织。

创建组织

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏单击“组织管理”。

步骤3 在右上角单击“创建组织”。

步骤4 填写组织名称,选择组织类型。

(19)

1-15 创建组织

● 公有组织:允许任何用户登录后下载组织内的制品,如需其他操作需在IAM上为 用户授权。

● 私有组织:需在IAM上为用户授权才可以对组织内的制品进行操作。

授权操作请参见1.2 权限管理。

步骤5 单击“确定”。

组织创建成功后,您可以选择列表视图或卡片视图查看组织详情,在右上角单击 或 图标进行视图切换。

----结束

删除组织

● 列表视图:选择需要删除的组织,单击操作列的“删除”,在弹出的对话框中输 入“DELETE”,单击“确定”。

● 卡片视图:选择需要删除的组织,单击 图标,在弹出的对话框中输入

“DELETE”,单击“确定”。

1-16 删除组织

(20)

说明

为避免您误删重要数据,内部仍有镜像和Helm Chart的组织无法删除。

1.7 镜像仓库

操作场景

镜像仓库直接管理容器镜像,您可以上传镜像、下载镜像,查看镜像构建历史。

前提条件

使用镜像仓库前,您需要完成如下工作:

● 已经购买企业版实例。

● 已经设置了企业版实例的访问权限,具体请参见1.4.1 网络访问控制概述。

● 已经创建访问凭证。

上传镜像

步骤1 准备一台计算机,需满足如下要求:

● 安装的容器引擎版本必须为1.11.2及以上。

● 这台计算机已在网络访问控制中定义的公网或内网允许访问范围内。

步骤2 以root用户登录这台计算机。

步骤3 使用1.5 创建访问凭证获取的镜像访问凭证登录镜像仓库。

示例如下:

docker login -u 0504222226a8010e01f3ec0011111baa -p

eyJhbGciOiJSUzI1NiIsImp3ayI6ImV5SmxJam9pUVZGQlFpSXNJbXRwWkNJNklrOUxTRTQ2UjBWSlZ6cExRalZCT 2tzMVN6UTZTbFkyV1RwV1VsSk5PazQzVmtrNk5VbzBTenBKVkVGTE9qTXpTVlk2VDBFek56bzBVMEZSSWl3a WEzUjVJam9pVWxOQklpd2liaUk2SWpBNGJETlFTVE40TlV0dk1USk9ZemRvWDA1b01sOTZTa3h1Ym1kRWJrcF dVMTlOYkY5WVRXVm9RM2RwWlhsVFRVczVhVjlFVDAxamRpMU9ZV2MyTjJWR1NXVm9ka0psTW5RMmRtbD JTVTFyTFc1cWR6Uk9jM1pwZERCME1HOVZORXR2YmtrdE4xWnlhMUpNUXpWWVpqaGFRMmhNYVVWaFJWa EtjV3c0WXpWS2FFMTVTamRaTjBKNFJGZ3dValJxVTJOTlJGaElURVI2VDBKa09EaGpNVVJhYWw5alZFNVBjbXR1 YWt4UmJHeFdSMEU0Tlhob1RFbEpPSGR5TkRRdFZrRm5lVTk0VmtaeFVtMHlaakY0YmpWeVNFaFRWa05PY3p sck1HcFFiWE0xVlc1cVVERnNjRWcwYW1obVVFRlJNREpxTTIxMlZWZE1hRzlWUm5CTk16Sk5WRkpoWDBGNk4 xcDJRMVEyUmxaaU5EbHVaMWs1T1RWMExUWlhNMjlGVW14R1QwUlJZM0F6WDBwUlE34444333M1RVbFBi WGhyZERVd1VuVjZVM1JQU0V4SVpXbFJlRTFGVUVvMlFVOUlaWGxKVVNKOSIsInR5cCI6IkpXVCJ9.eyJjcmVhdG VkX2F0IjoxNjMxNzYyNzk5LCJkb21haW5faWQiOiIwNTAzZGRhODc4MDAwZmVkMGY3NWMwMDk2ZDcwYT k2MCIsImV4cGlyZV9kYXRlIjoxNjMxODQ5MTk5LCJpbnN0YW5jZV9pZCI6ImQxODMzZjc3LTE1ZDYtMTFlYy05Yj Q1LTAyNTVhYzEwMGZkMCIsInRva2VuX2lkIjoiZTdmNDA2NjAtMTY5ZC0xMWVjLWJmZDAtMDI1NWFjMTAwZ mUwIiwidG9rZW5fdHlwZSI6InRlbXAiLCJ1c2VyX2lkIjoiMDUwNDE4NmU2YTgwMTBlMDFmM2VjMDA5YTcyNz liYWEifQ.cp68r9jVI_BH9gQqvSWabeIbAzTj8ujrJCw74Hpt7uU3P4Y9y1zBU4mzsuq8rET9dNPPyYdAVNouzdDD6 rQ1_f3kIrNeESIJcGz4kGR4OJpFeoBqN5R2awOl8AjyGIcaHXtk1zliWSO1gMXARd6x16GHisl5h2oMz3t3a7rJA_c m72_6pQsQrfzcDZUCUyeFvhfB8kl6UrKBcsbx5xsT3aOLSyObWt_TO67Y8sxzqNDtr7uV4us1RNPQJYbpHIVtijg2i crTvLwdKcmTIYY_ytDsdUmuABtwU0vznuULVpy6qX0iKx1Ui3BD3MIKzP4CDNkxjAsn6P5wbRzvWmUM6g test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com

登录成功会显示“Login Succeeded”。

步骤4 执行以下命令为镜像打标签。

docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名 称2]

其中:

(21)

[镜像名称1:版本名称1]请替换为您所要上传的实际镜像的名称和版本名称。

[镜像仓库地址]为企业版实例的访问地址,获取方式如下:

登录容器镜像服务控制台,单击企业版实例进入,在“总览”页面获取访问地 址,如图1-17所示。

1-17 访问地址

[组织名称]请替换为您在创建组织中创建的组织。

[镜像名称2:版本名称2]请替换为您期待的镜像名称和版本名称。

样例如下:

docker tag nginx:latest test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/

library/nginx:1.1.1 步骤5 上传镜像至镜像仓库。

docker push [镜像仓库地址]/[组织名称]/[镜像名称:版本名称]

样例如下:

docker push test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/library/nginx:

1.1.1

终端显示如下信息,表明上传镜像成功。

fbce26647e70: Pushed fb04ab8effa8: Pushed 8f736d52032f: Pushed 009f1d338b57: Pushed 678bbd796838: Pushed d1279c519351: Pushed f68ef921efae: Pushed

v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780

在企业版实例控制台“制品仓库 > 镜像仓库”中可查看到对应的镜像信息。

说明

镜像上传以后,您可以在CCE控制台创建工作负载,详细指导请参见CCE集群如何使用企业版镜 像创建工作负载?。

----结束

(22)

查看镜像下载地址

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“制品仓库 > 镜像仓库”。

步骤3 单击镜像名称进入镜像详情。

步骤4 在对应镜像版本“下载指令”一列可以获取镜像下载指令,如图1-18所示。

1-18 下载指令

----结束

查看镜像构建历史

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“制品仓库 > 镜像仓库”。

步骤3 单击镜像名称进入镜像详情。

步骤4 单击任何一个版本名称,在侧边栏中可查看容器镜像的构建历史,如图1-19所示。

1-19 镜像构建历史

----结束

镜像仓库其他操作

● 搜索镜像

支持根据组织和镜像名称搜索镜像。

1-20 搜索镜像

(23)

● 删除镜像

单击镜像所在行的“删除”即可删除镜像。为避免您误删重要数据,删除镜像时 需要二次确认。

注意

删除镜像会同时删除镜像下的所有版本,请谨慎操作。

● 删除镜像版本

单击镜像名称进入镜像详情,在镜像版本所在行单击“删除”即可删除镜像版 本。为避免您误删重要数据,删除镜像版本时需要二次确认。

后续操作

镜像上传到镜像仓库后,您还可以对镜像进行一系列的操作,包括:

● 配置镜像同步规则,根据规则与目标仓库自动同步镜像。具体请参见1.9 镜像同 步。

● 配置镜像老化规则,根据规则自动清理不需要的镜像。具体请参见1.10 镜像老 化。

1.8 Helm Chart 仓库

操作场景

容器镜像服务企业版支持托管Helm Chart,满足用户对云原生应用托管分发的需要。

您可以在同一个组织内同时管理容器镜像和Helm Chart,实现在业务项目内同时使用 容器镜像和Helm Chart。

背景信息

Kubernetes提供了统一模式的API,能以YAML格式的文件定义Kubernetes集群中的资 源,包括Pod、Service、Deployment、StatefulSet、Job等等。这些资源种类繁多,

且分散的kubernetes应用配置文件难以管理、编辑和更新,因此云原生社区衍生了一 个更高维度的概念及其实现工具,即Chart和Helm。

● Chart是描述相关的一组Kubernetes集群内资源的文件集合。

● Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。

容器镜像服务企业版支持使用控制台页面或Helm客户端实现Chart的上传和下载。

通过页面上传及下载 Helm Chart

上传本地Helm Chart包

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“制品仓库 > chart仓库”。

步骤3 在右上角单击“页面上传”。

(24)

步骤4 在弹出页面中选择存放chart的组织,选择chart文件或将chart文件拖到对话框中。

上传的tgz包命名格式为:name-version.tgz,包名不超过255个字符,name字段不超 过64个字符。

注意

请确认Chart.yaml文件中的名称和版本,若已存在同名同版本chart包,上传将覆盖已 有chart包,请谨慎上传。

1-21 上传 chart 文件

步骤5 单击“开始上传”。

待任务进度显示“上传成功”,关闭“页面上传”页面,在列表中将看到上传成功的 Chart。

----结束

下载Helm Chart包至本地

步骤1 在chart仓库页面查看当前实例内的Helm Chart列表,单击指定Chart名称,进入详情 页面。

步骤2 在“chart版本”中,选择指定版本,单击操作列的“下载”,即可自动下载该版本的 Chart包至本地。

1-22 chart 版本

----结束

(25)

使用 Helm 客户端上传及下载 Helm Chart

安装Helm客户端

本文以在Linux操作系统的节点上安装为例,如在其他平台安装请下载对应安装包。

步骤1 依次执行以下命令,下载并安装Helm客户端。关于安装Helm的更多信息,请参见 Installing Helm。

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/

master/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh

说明

“get_helm.sh”脚本会自动拉取最新的Helm版本进行安装,如需安装其他版本,请从官方下载 需要的Helm版本。

----结束 添加Helm仓库

添加Helm仓库,即指定一个本地仓库名称(建议使用组织名称命名),映射到企业版 实例某一个组织下的某一个Chart仓库。

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 参考1.5 创建访问凭证获取chart访问凭证。

步骤3 在节点上执行chart访问凭证对应的命令。

须知

执行命令的机器需确保已在网络访问控制中定义的公网或内网允许访问范围内。

示例如下。其中,第一个{组织名称}为本地仓库名称,支持自定义,建议使用组织名 称命名;第二个{组织名称}需要替换为实际的取值,组织创建方法请参见1.6 组织管 理。

helm repo add {组织名称} https://test-01-2v8iom.swr.cn-east-3.myhuaweicloud.com/chartrepo/{组织名称} -- username 0504186e6a8010e01f3ec00111122a --password

eyJhbGciOiJSUzI1NiIsImp3ayI6ImV5SmxJam9pUVZGQlFpSXNJbXRwWkNJNklrOUxTRTQ2UjBWSlZ6cExRalZCT 2tzMVN6UTZTbFkyV1RwV1VsSk5PazQzVmtrNk5VbzBTenBKVkVGTE9qTXpTVlk2VDBFek56bzBVMEZSSWl3a WEzUjVJam9pVWxOQklpd2liaUk2SWpBNGJETlFTVE40TlV0dk1USk9ZemRvWDA1b01sOTZTa3h1Ym1kRWJrcF dVMTlOYkY5WVRXVm9RM2RwWlhsVFRVczVhVjlFVDAxamRpMU9ZV2MyTjJWR1NXVm9ka0psTW5RMmRtbD JTVTFyTFc1cWR6Uk9jM1pwZERCME1HOVZORXR2YmtrdE4xWnlhMUpNUXpWWVpqaGFRMmhNYVVWaFJWa EtjV3c0WXpWS2FFMTVTamRaTjBKNFJG2211111VTJOTlJGaElURVI2VDBKa09EaGpNVVJhYWw5alZFNVBjbXR1 YWt4UmJHeFdSMEU0Tlhob1RFbEpPSGR5TkRRdFZrRm5lVTk0VmtaeFVtMHlaakY0YmpWeVNFaFRWa05PY3p sck1HcFFiWE0xVlc1cVVERnNjRWcwYW1obVVFRlJNREpxTTIxMlZWZE1hRzlWUm5CTk16Sk5WRkpoWDBGNk4 xcDJRMVEyUmxaaU5EbHVaMWs1T1RWMExUWlhNMjlGVW14R1QwUlJZM0F6WDBwUlExSndSV0ptT1ZOM1 RVbFBiWGhyZERVd1VuVjZVM1JQU0V4SVpXbFJlRTFGVUVvMlFVOUlaWGxKVVNKOSIsInR5cCI6IkpXVCJ9.eyJjc mVhdGVkX2F0IjoxNjMxNzc0MzczLCJkb21haW5faWQiOiIwNTAzZGRhODc4MDAwZmVkMGY3NWMwMDk2Z DcwYTk2MCIsImV4cGlyZV9kYXRlIjoxOTQ3MzA3MTczLCJpbnN0YW5jZV9pZCI6ImQxODMzZjc3LTE1ZDYtMTFl Yy05YjQ1LTAyNTVhYzEwMGZkMCIsInRva2VuX2lkIjoiZGE5MmVkYzQtMTZiOC0xMWVjLWJmZDAtMDI1NWFj MTAwZmUwIiwidG9rZW5fdHlwZSI6ImxvbmdfdGVybSIsInVzZXJfaWQiOiIwNTA0MTg2ZTZhODAxMGUwMWY zZWMwMDlhNzI3OWJhYSJ9.uFHEics8IXqjZLlNgg9DiK0xcIRm_RDRfh5bO6nmF4VzkCrUtX82u65Y2-

Gn_UMebrEbqLWL44PDdkG6T3wj8PGHhu7ADGF8sRbW0NsSIhUMuR5eNN_sZgQDFep7uMOJws0PZ2hFi5op XXbGaw9QwgLKtY2EK6qCt7mNznLcla_AjGyHdZ1obbHfuD2Lp1Rzs-SvU7WO9xVXfqQexZwlzEGG10ZI51P-

(26)

veIxPcSg6umPvBcJX6tNtH2lHHy3iLnzvZ6Y9J23rhET46l-

XjaD7E1eQ5KI7CcLNsoatsfzQithgQgljCHtj83wSCFFcHl7tPBfCR4OXSNy_XwFs4J87Q

添加成功会显示如下信息:

"{组织名称}" has been added to your repositories

----结束

推送Helm Chart 步骤1 安装Helm Push插件。

说明

在安装Helm Push插件前,需要预先安装Git。

helm plugin install https://github.com/chartmuseum/helm-push 步骤2 在节点上执行如下命令,创建一个Chart。

helm create [Chart名称]

示例:helm create chart-demo

步骤3 执行如下命令,推送指定目录至Chart仓库。

helm push [Chart名称] [本地仓库名称]

示例:

helm push chart-demo group

您还可以将Chart文件打包为tgz压缩包,然后直接上传。

helm push [Chart名称]-[Chart版本].tgz [本地仓库名称]

示例:

tar zcvf chart-demo-1.0.0.tgz chart-demo/ # 压缩Chart文件 helm push chart-demo-1.0.0.tgz group # 上传Chart压缩包

----结束

下载Helm Chart

步骤1 在节点上执行如下命令,更新本地仓库Chart信息。

helm repo update 步骤2 下载指定版本Chart。

helm pull [本地仓库名称]/[Chart名称] --version [Chart版本]

示例:

helm pull group/chart-demo --version 1.0.0

----结束

(27)

1.9 镜像同步

操作场景

容器镜像服务企业版支持与其他仓库之间同步容器镜像及Helm Chart,可实现单点推 送及全球自动同步分发,方便企业在全球多个地域快速部署更新容器业务。当前支持 与如下类型仓库之间同步:

● harbor:使用harbor搭建的镜像仓库。

● 华为云-容器镜像服务:即SWR共享仓库中的镜像。

● 华为云-企业仓库:其他企业仓库实例,可以是不同地域的企业仓库。

镜像同步功能允许用户自定义创建同步规则,可指定某个实例内的部分资源同步至另 一个实例内的指定位置。例如,用户可选择同步资源类型(容器镜像、Helm Chart、

或是全部同步)、可过滤同步资源路径,通过正则表达式过滤仓库及版本、可选择是 否覆盖已有的同名镜像,避免历史数据覆盖丢失。

添加目标仓库

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“镜像同步 > 目标仓库”。

步骤3 在右上角单击“添加目标仓库”。

1-3 参数说明

参数名称 说明 示例

仓库名 目标仓库名称。 remote-registry 提供者 选择目标仓库所在位置。

● harbor:使用harbor搭建的镜像仓库。

● 华为云-容器镜像服务:即SWR共享仓库 中的镜像。

● 华为云-企业仓库:其他企业仓库实例,

可以是不同地域的企业仓库。

华为云-容器镜像 服务

仓库地址 目标仓库的地址。 swr.cn-

east-3.myhuawei cloud.com

(28)

参数名称 说明 示例 访问ID

访问密码

目标仓库的访问ID和密码。

提供者为“harbor”和“华为云-容器镜像服 务”时需要选择。

ID和密码对应docker login命令中的用户名 和密码,如下所示,-u后的字符串即为ID,- p后的字符串即为密码。

docker login -u cn-

north-4@PT2YYU1ZYYBKIZFTLLOL -p cf5f9ced7b1cd50e871a902735011c2db5f8 a4dbb4f2e7918df5ef31a6fe9ef5 swr.cn- north-4.myhuaweicloud.com

-

验证远程证书 校验证书是否为授信单位发布,如果不是则

不触发。 -

所属区域 提供者为“华为云-企业仓库”时需要选择。 华东-上海一 所属实例 提供者为“华为云-企业仓库”时需要选择。 -

描述 目标仓库的描述信息。 -

1-23 添加目标仓库

步骤4 单击“确定”。

(29)

创建完成后,界面会显示目标仓库的健康状态,您还可以对目标仓库的信息进行修 改。

1-24 目标仓库信息

----结束

创建同步规则

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“镜像同步 > 同步规则”。

步骤3 在右上角单击“创建同步规则”。

步骤4 填写具体规则。

1-4 参数说明

参数名称 说明 示例

规则名称 镜像同步规则的名称。 SyncRule 同步模式 ● 推送到目标仓库:将本企业仓库实

例中镜像推送到目标仓库中。

● 从目标仓库拉取:从目标仓库中拉 取镜像到本企业仓库实例中。

推送到目标仓库

目标仓库 选择添加目标仓库中添加的目标仓

库。 -

目标组织 同步至目标仓库后所在的组织(其他 云厂商可能被称作命名空间、项目 等),不填写则默认是与本仓库中同 名的组织,如果目标仓库中没有该组 织同步可能会失败。

library1

(30)

参数名称 说明 示例 本地组织 从目标仓库拉取到本实例,镜像所在

的组织,不填写则默认是与目标仓库 中同名的组织(其他云厂商可能被称 作命名空间、项目等),如果没有组 织将新建。

library1

规则范围 ● 当同步模式是“推送到目标仓库”

时,规则范围圈定的是本企业仓库 的组织。

● 当同步模式是“从目标仓库拉取”

时,规则范围圈定的是目标仓库的 组织。

组织:组织名称范围。

镜像:镜像名称,默认使用正则表达

式匹配。单击 可手

动选择镜像。

正则表达式规则可填写如nginx-* 、 {repo1, repo2} 等,其中:

● *:匹配不包含路径分隔符“/”的 任何字段。

● **:匹配包含路径分隔符“/”的任 何字段。

● ?:匹配任何单个非“/”的字符。

● {选项1, 选项2, ...}:同时匹配多个 选项。

版本:镜像的版本,同样使用正则表 达式匹配,匹配规则与镜像相同。

library2 nginx-*

**

触发模式 ● 手动:手动触发,规则创建完成后 需要您手动单击执行。

● 事件触发 + 手动:事件触发指推送 和被拉取一方有新增镜像且符合匹 配规则时触发同步。

● 定时 + 手动:定时即为设置周期性 定时同步。

定时 + 手动

定时 触发模式为“定时 + 手动”时可以设 置。

可选择每月、每日或者每周具体某一 天的固定时间扫描。

-

覆盖 当同步相同版本的镜像时,是否覆

盖。 -

规则描述 规则的描述信息。 -

(31)

1-25 创建同步规则

步骤5 单击“确定”完成规则创建。

----结束

同步规则示例

● 推送到目标仓库

将本企业仓库实例中library1组织中以“nginx-”名称开头的所有版本镜像,推送 到目标仓库harbor001的lib1组织下,触发模式为手动触发,且覆盖相同名称版本 的镜像。

(32)

● 从目标仓库拉取

将目标仓库harbor001的lib1组织中以“nginx-”名称开头的所有版本镜像,拉取 到本企业仓库实例library1组织中,触发方式为手动触发,且覆盖相同名称版本的 镜像。

(33)

管理同步规则

成功创建后即可在“同步规则”页面查看已创建的同步规则,您可以执行以下操作管 理同步规则。

1-26 同步规则

(34)

1-27 子任务详情

● 查看同步任务:当同步规则被触发时,符合规则范围的镜像将被同步。同步任务 包含的信息如下:

1-5 同步任务

参数 说明

任务ID 实例内唯一的同步执行任务ID。

状态 任务完成状态。

触发模式 手动或自动。

单击“执行”为手动方式,通过规则定义的周期自动执 行,则为自动方式。

成功百分比 同步成功的镜像数占总数的百分比。

总数 当前任务需要同步的镜像总数。

持续时间 完成一次任务消耗的时间。

创建时间 同步任务被触发的时间。

详情 任务详细信息,单击后在侧边栏可查看哪些镜像被同步。

● 修改规则状态:: 表示规则启用, 表示规则关闭。新创建的同步规 则默认为启用状态,您可以自行调整。

● 执行:手动触发同步规则。

(35)

● 编辑:重新编辑同步规则,所有参数均可编辑。

● 删除:删除该同步规则。

1.10 镜像老化

操作场景

现代软件开发多采用流水线生成镜像,随着版本不断向前迭代,将会不断生成新的镜 像版本。新版本镜像的生成意味着老旧版本的镜像变得不再需要,如何方便快速的删 除这些老旧版本镜像成为了新的问题。容器镜像服务企业版提供镜像老化功能,您可 以创建镜像老化规则,手动或定时触发该规则,根据规则老化删除不需要的镜像。

约束与限制

每个组织下仅允许创建一个老化规则。

创建老化规则

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“运维中心 > 镜像老化”。

步骤3 在右上角单击“创建老化规则”。

步骤4 填写具体规则。

1-6 参数说明

参数名称 说明 示例

规则名称 老化规则的名称。 AgeingRule 组织 选择要老化的镜像所在的组织。 library1 规则范围 镜像:镜像名称,默认使用正则表达

式匹配。单击 可手

动选择镜像。

正则表达式规则可填写如nginx-* 、 {repo1, repo2} 等,其中:

● *:匹配不包含路径分隔符“/”的 任何字段。

● **:匹配包含路径分隔符“/”的任 何字段。

● ?:匹配任何单个非“/”的字符。

● {选项1, 选项2, ...}:同时匹配多个 选项。

版本:镜像的版本,同样使用正则表 达式匹配,匹配规则与镜像相同。

nginx-*

(36)

参数名称 说明 示例 老化条件 选择执行的老化条件,有如下条件可

选择:

● 保留最近推送的#个镜像版本

● 保留最近拉取的#个镜像版本

● 保留最近#天被推送过的

● 保留最近#天被拉取过的

其中“#”为变量,取值为下面“版本 数”和“保留天数”的值。

保留最近推送的#个镜像 版本

版本数 老化条件为“保留最近推送的#个镜像 版本”和“保留最近拉取的#个镜像版 本”需设置。

10

保留天数 老化条件为“保留最近#天被推送过 的”和“保留最近#天被拉取过的”需 设置。

10

触发模式 ● 手动:手动触发,规则创建完成后 需要您手动单击执行。

● 定时 + 手动:定时即为设置周期性 定时老化。

定时 + 手动

定时 触发模式为“定时 + 手动”时可以设 置。

可选择每月、每日或者每周具体某一 天的固定时间扫描。

-

(37)

1-28 创建老化规则

步骤5 单击“确定”完成规则创建。

----结束

老化规则示例

● 示例1:

选择library1组织中,名称以“nginx-”开头所有版本的镜像(版本*表示选择所有 版本),保留最近拉取的10个镜像版本,其余镜像全部删除,且需要手动触发执 行。

(38)

● 示例2:

选择library1组织中,nginx和busybox所有版本的镜像(版本不填写表示选择所有 版本),保留最近10天被推送过的镜像,其余镜像全部删除,每周日0时0分执行 该规则,且可以手动触发执行。

(39)

管理老化规则

成功创建后即可在“镜像老化”页面查看已创建的老化规则,您可以执行以下操作管 理老化规则。

1-29 老化规则

(40)

1-30 子任务详情

● 查看老化任务:当老化规则被触发时,符合规则范围的镜像将被删除。老化任务 包含的信息如下:

1-7 老化任务

参数 说明

任务ID 实例内唯一的老化执行任务ID。

状态 任务完成状态。

触发模式 手动或自动。

单击“执行”或“模拟”为手动方式,通过规则定义的周 期自动执行,则为自动方式。

模拟 是或否。

单击“模拟”则为是,单击“执行”则为否。模拟可用于 确认规则是否生效,但不实际清理镜像版本。

持续时间 完成一次任务消耗的时间。

创建时间 老化任务被触发的时间。

详情 任务详细信息,单击后在侧边栏可查看哪些镜像被删除

(“老化数”非0,说明有镜像被删除)。

● 修改规则状态:: 表示规则启用, 表示规则关闭。新创建的老化规 则默认为启用状态,您可以自行调整。

(41)

● 执行:真实执行。为避免误操作,建议在首次执行老化规则前模拟执行。

● 模拟:模拟执行。可用于确认规则是否生效,但不实际清理镜像版本。

● 编辑:重新编辑老化规则,除“组织”外,其余参数均可编辑。

● 删除:删除该老化规则。

1.11 触发器

操作场景

容器镜像服务企业版支持配置并使用触发器功能。您可以通过创建触发器,当有触发 动作(如上传镜像)发生时,自动执行您定义的HTTP POST请求(如让流水线下载镜 像并部署)。使用触发器,您可以快速接入现有研发流程及CI/CD平台,实现容器 DevOps场景。

触发器支持如下触发动作:

● 上传镜像

● 删除镜像

● 上传chart

● 删除chart

● 扫描完成

● 扫描失败

创建触发器

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“运维中心 > 触发器”。

步骤3 在右上角单击“创建触发器”。

步骤4 填写具体规则。

1-8 参数说明

参数名称 说明 示例

规则名称 触发器规则的名称。 TriggerRule 组织 选择要创建触发器的组织。 library1

(42)

参数名称 说明 示例 规则范围 镜像:镜像名称,默认使用正则表达

式匹配。单击 可手

动选择镜像。

正则表达式规则可填写如nginx-* 、 {repo1, repo2} 等,其中:

● *:匹配不包含路径分隔符“/”的 任何字段。

● **:匹配包含路径分隔符“/”的任 何字段。

● ?:匹配任何单个非“/”的字符。

● {选项1, 选项2, ...}:同时匹配多个 选项。

版本:镜像的版本,同样使用正则表 达式匹配,匹配规则与镜像相同。

nginx-*

触发动作 触发器支持如下触发动作:

● 上传镜像

● 删除镜像

● 上传chart

● 删除chart

● 扫描完成

● 扫描失败

上传镜像

验证远程证书 校验证书是否是授信单位发布,如果 不是则不触发。

-

请求地址类型 ● 内网

● 公网

内网

请求地址 触发器被触发后,发起请求的目标地 址。触发器将向该地址发起POST请 求,请求Body中将包含触发动作、触 发规则等信息。支持HTTP和HTTPS协 议。

-

请求头域 触发器发起POST请求时,支持以 Key:Value形式输入可携带的Header 信息。例如,Authentication:

xxxxxxx。

多个Header之间用英文分号(;)分 隔,例如,

param1:value1;param2:value2。

-

(43)

1-31 创建触发器

步骤5 单击“确定”完成创建。

----结束

管理触发器

成功创建后即可在“触发器”页面查看已创建的触发器规则,您可以执行以下操作管 理触发器。

1-32 管理触发器

(44)

● 查看触发历史:当有符合触发器规则的动作发生时,自动触发该规则,您可以单 击 图标查看触发历史。包含信息如下:

1-9 触发历史

参数 说明

触发动作 产生该次触发的触发动作,例如上传chart。

触发资源 产生该次触发动作的仓库资源。

状态 触发器执行Webhook请求的状态。

创建时间 该次触发的启动时间,即发起Webhook请求的时间。

● 修改规则状态: 表示规则启用, 表示规则关闭。新创建的触发器规 则默认为启用状态,您可以自行调整。

● 编辑:重新编辑触发器规则,除“组织”和“请求地址”外,其余参数均可编 辑。

● 删除:删除该触发器规则。

1.12 全域分发

操作场景

在实际业务场景中,经常会在多个区域部署业务,为了能快速下载镜像,通常会在每 个区域的镜像仓库上传一份镜像。由于不同区域的镜像地址不同,在部署时需要根据 镜像地址修改配置文件,非常不方便。

容器镜像服务企业版实例支持全域分发功能,通过连接不同区域的企业仓库,能够在 不同区域使用同一个镜像仓库域名快速下载镜像。

设置中心站点

将本实例设置为全域分发的中心站点后,分发站点的仓库实例可以通过注册的方式对 接到中心站点,在分发站点部署应用时可以通过中心站点的域名直接拉取中心站点的 镜像。

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“全域分发”。

步骤3 在右侧页面单击“本实例设为中心站点”。

步骤4 在弹出的页面中单击“确定”。

----结束

设置分发站点

将本实例设置为分发站点后,可以配置中心站点实例的信息,将本站点注册到中心站 点,注册成功以后在分发站点部署应用时可以利用分发站点的加速分发能力直接通过 中心站点的域名拉取中心站点的镜像。

(45)

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“全域分发”。

步骤3 在右侧页面单击“本实例设为分发站点”。

步骤4 在弹出的页面中单击“确定”。

----结束

连接分发站点和中心站点

假设本实例已设置为分发站点,以下演示将本站点注册到中心站点的操作步骤。完成 后,分发站点和中心站点将建立连接关系。

步骤1 登录容器镜像服务控制台,单击企业版实例进入。

步骤2 在左侧导航栏选择“全域分发”。

步骤3 单击左上角“新增中心站点”。

步骤4 填写参数。

1-33 新增中心站点

1-10 参数说明

参数名称 说明

站点域名 中心站点的域名,用户可以在分发站点已经创建了内网访问控制 的VPC内,通过此域名拉取中心站点的镜像

请求地址类型 分发站点所属VPC内可以访问到中心站点的地址类型 访问地址 分发站点所属VPC内可以访问到中心站点的地址

(46)

参数名称 说明 访问ID

访问密码

中心站点的访问ID和密码

ID和密码对应docker login命令中的用户名和密码,如下所示,- u后的字符串即为ID,-p后的字符串即为密码。

docker login -u 08d353acfa00d3061f4bc01991653bf1 -p cf5f9ced7b1cd50e871a902735011c2db5f8a4dbb4f2e7918df5e f31a6fe9ef5xxx swr-instance.swr.cn-

east-3.myhuaweicloud.com

步骤5 单击“确定”。

----结束

下载验证

步骤1 登录边缘仓库。

步骤2 使用全域域名下载镜像。

----结束

(47)

2 容器镜像服务共享版

2.1 欢迎使用容器镜像服务 2.2 权限管理

2.3 容器引擎基础知识 2.4 镜像管理

2.5 组织管理 2.6 授权管理 2.7 审计

2.1 欢迎使用容器镜像服务

容器镜像服务(SoftWare Repository for Container,简称SWR)是一种支持镜像全生 命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,包括镜像的上传、下 载、删除等。

SWR提供私有镜像库,并支持细粒度的权限管理,可以为不同用户分配相应的访问权 限(读取、编辑、管理)。SWR还支持容器镜像版本更新自动触发部署。您只需要为 镜像设置一个触发器,通过触发器,可以在每次镜像版本更新时,自动更新云容器引 擎(CCE)中使用该镜像部署的应用。

您可以通过控制台、API使用容器镜像服务。

(48)

2-1 SWR 使用流程

2.2 权限管理

2.2.1 创建用户并授权使用 SWR

如果您需要对您所拥有的容器镜像服务(SWR)进行精细的权限管理,您可以使用统 一身份认证服务(Identity and Access Management,简称IAM),通过IAM,您可 以:

● 根据企业的业务组织,在您的华为云帐号中,给企业中不同职能部门的员工创建 IAM用户,让员工拥有唯一安全凭证,并使用SWR资源。

● 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。

● 将SWR资源委托给更专业、高效的其他华为云帐号或者云服务,这些帐号或者云 服务可以根据权限进行代运维。

如果华为云帐号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章 节,不影响您使用SWR服务的其他功能。

本章节为您介绍对用户授权的方法,操作流程如图2-2所示。

前提条件

给用户组授权之前,请您了解用户组可以添加的SWR权限,并结合实际需求进行选 择,SWR支持的系统权限,请参见:SWR系统权限。若您需要对除SWR之外的其他服 务授权,IAM支持服务的所有权限请参见系统权限。

(49)

示例流程

2-2 给用户授予 SWR 权限流程

1. 创建用户组并授权

在IAM控制台创建用户组,并授予容器镜像服务的管理员权限“SWR Admin”。

2. 创建用户并加入用户组

在IAM控制台创建用户,并将其加入1中创建的用户组。

3. 用户登录并验证权限

新创建的用户登录控制台,切换至授权区域,验证权限(如果能顺利完成如下操 作,说明权限设置成功):

a. 在“服务列表”中选择容器镜像服务,进入SWR主界面。

b. 在左侧导航栏选择“组织管理”,单击右上角“创建组织”,输入组织名 称,能够成功创建组织。

c. 在左侧导航栏选择“我的镜像”,单击右上角“页面上传”,选择上一步创 建的组织,以及一个本地的镜像文件,能够成功上传镜像。

2.3 容器引擎基础知识

容器引擎(Docker)是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、

可移植的、自给自足的容器。

安装容器引擎

在安装容器引擎前,请了解容器引擎的基础知识,具体请参见Docker Documentation。

容器引擎几乎支持在所有操作系统上安装,用户可以根据需要选择要安装的容器引擎 版本,具体请参见https://docs.docker.com/engine/install/。

(50)

说明

● 容器镜像的存储可以使用容器镜像服务(SWR),由于SWR支持容器引擎1.11.2及以上版本 上传镜像,建议下载对应版本。

● 安装容器引擎需要连接互联网,内网服务器需要绑定弹性公网IP后才能访问。

另外,在Linux操作系统(除EulerOS以外)下,可以使用如下命令快速安装容器引 擎。

curl -fsSL get.docker.com -o get-docker.sh sh get-docker.sh

sudo systemctl daemon-reload sudo systemctl restart docker

在EulerOS操作系统下,安装容器引擎的方法如下:

步骤1 登录弹性云服务器。

步骤2 配置yum源。

如果您的机器上还没有配置yum源,可以参照如下方法配置:如何使用华为云提供的 EulerOS镜像源(x86_64和ARM)?。如果已配置过了,可跳过该步骤。

步骤3 安装并运行容器引擎。

1. 获取yum源里的docker-engine包。

yum search docker-engine

2. 使用yum install -y命令安装上一步获取的docker-engine包,x86架构示例:

yum install docker-engine.x86_64 -y 3. systemctl enable docker

4. systemctl start docker 步骤4 检查安装结果。

docker --version

回显如下类似信息,表示容器引擎安装成功。

Docker version 18.09.0, build 384e3e9

----结束

制作容器镜像

本节指导您通过Dockerfile定制一个简单的Web应用程序的容器镜像。Dockerfile是一 个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此 每一条指令的内容,就是描述该层应当如何构建。

使用Nginx镜像创建容器应用,在浏览器访问时则会看到默认的Nginx欢迎页面,本节 以Nginx镜像为例,修改Nginx镜像的欢迎页面,定制一个新的镜像,将欢迎页面改为

“Hello, SWR!”。

步骤1 以root用户登录容器引擎所在机器。

步骤2 创建一个名为Dockerfile的文件。

mkdir mynginx cd mynginx

(51)

touch Dockerfile 步骤3 编辑Dockerfile。

vim Dockerfile 增加文件内容如下:

FROM nginx

RUN echo '<h1>Hello, SWR!</h1>' > /usr/share/nginx/html/index.html

Dockerfile指令介绍如下。

● FROM语句:表示使用nginx镜像作为基础镜像,一个Dockerfile中FROM是必备 的指令,并且必须是第一条指令。

● RUN语句:格式为RUN <命令>,表示执行echo命令,在显示器中显示一段

“Hello, SWR!”的文字。

按“Esc”,输入:wq,保存并退出。

步骤4 使用docker build [选项] <上下文路径> 构建镜像。

docker build -t nginx:v1 .

● -t nginx:v1:指定镜像的名称和版本。

.:指定Dockerfile所在目录,镜像构建命令将该路径下所有的内容打包给容器引 擎帮助构建镜像。

步骤5 执行以下命令,可查看到已成功部署的nginx镜像,版本为v1。

docker images ----结束

制作镜像压缩包

本节指导您将容器镜像制作成tar或tar.gz文件压缩包。

步骤1 以root用户登录容器引擎所在机器。

步骤2 执行如下命令查看镜像。

docker images

查看需要导出的镜像及tag。

步骤3 执行如下命令制作镜像压缩包。

docker save [OPTIONS] IMAGE [IMAGE...]

说明

OPTIONS:--output或-o,表示导出到文件。

压缩包格式为:.tar或.tar.gz。

示例:

$ docker save nginx:latest > nginx.tar

$ ls -sh nginx.tar 108M nginx.tar

$ docker save php:5-apache > php.tar.gz

(52)

$ ls -sh php.tar.gz 372M php.tar.gz

$ docker save --output nginx.tar nginx

$ ls -sh nginx.tar 108M nginx.tar

$ docker save -o nginx-all.tar nginx # 将nginx所有版本打包

$ docker save -o nginx-latest.tar nginx:latest

----结束

2.4 镜像管理

2.4.1 客户端上传镜像

操作场景

本章节以2.3 容器引擎基础知识中制作的nginx:v1镜像为例,介绍如何使用客户端上传 镜像。客户端上传镜像,是指在安装了容器引擎客户端的机器上使用docker命令将镜 像上传到容器镜像服务的镜像仓库。

如果容器引擎客户端机器为云上的ECS或CCE节点,根据机器所在区域有两种网络链路 可以选择:

● 若机器与容器镜像仓库在同一区域,则上传镜像走内网链路。

● 若机器与容器镜像仓库不在同一区域,则上传镜像走公网链路,机器需要绑定弹 性公网IP。

约束与限制

● 使用客户端上传镜像,镜像的每个layer大小不能超过10G。

● 上传镜像的容器引擎客户端版本必须为1.11.2及以上。

前提条件

已创建组织,请参见创建组织。

操作步骤

步骤1 连接容器镜像服务。

1. 登录容器镜像服务控制台。

2. 选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中 单击 复制登录指令。

(53)

2-3 登录指令

说明

– 此处生成的登录指令有效期为24小时,若需要长期有效的登录指令,请参见2.4.2 获取 长期有效登录指令。获取了长期有效的登录指令后,在有效期内的临时登录指令仍然可 以使用。

– 登录指令末尾的域名为镜像仓库地址,请记录该地址,后面会使用到。

3. 在安装容器引擎的机器中执行上一步复制的登录指令。

登录成功会显示“Login Succeeded”。

步骤2 在安装容器引擎的机器上执行以下命令,为nginx镜像打标签。

docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称 2]

其中,

● [镜像名称1:版本名称1]:请替换为您所要上传的实际镜像的名称和版本名称。

● [镜像仓库地址]:可在SWR控制台上查询,即步骤1.2中登录指令末尾的域名。

● [组织名称]:请替换为您创建的组织。

● [镜像名称2:版本名称2]:请替换为您期待的镜像名称和镜像版本。

示例:

docker tag nginx:v1 swr.cn-east-3.myhuaweicloud.com/cloud-develop/

nginx:v1

步骤3 上传镜像至镜像仓库。

docker push [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2]

示例:

docker push swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1 终端显示如下信息,表明上传镜像成功。

The push refers to repository [swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1]

fbce26647e70: Pushed fb04ab8effa8: Pushed 8f736d52032f: Pushed 009f1d338b57: Pushed

(54)

678bbd796838: Pushed d1279c519351: Pushed f68ef921efae: Pushed

v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780

返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜 像信息。

----结束

常见问题

为什么使用客户端上传镜像失败?

2.4.2 获取长期有效登录指令

操作场景

本章节介绍如何获取长期有效的登录指令,长期有效登录指令的有效期为永久。

说明

为保证安全,获取登录指令过程建议在开发环境执行。

前提条件

用户需要有编程访问权限,如果无编程访问权限,需要使用管理员帐号登录IAM,修 改用户访问方式。

2-4 修改访问方式

操作步骤

步骤1 获取区域项目名称、镜像仓库地址。

1. 登录管理控制台,单击右上角您的用户名处,单击“我的凭证”。

2. 在“API凭证”的项目列表中查找当前区域对应的项目。

如下图所示,“华北-北京四”对应的项目名称为“cn-north-4”。

(55)

2-5 区域与项目

3. 镜像仓库地址为 : swr.区域项目名称.myhuaweicloud.com,如华北-北京四对应的 镜像仓库地址为:swr.cn-north-4.myhuaweicloud.com。

步骤2 获取AK/SK访问密钥。

说明

访问密钥即AK/SK(Access Key ID/Secret Access Key),表示一组密钥对,用于验证调用API发 起请求的访问者身份,与密码的功能相似。如果您已有AK/SK,可以直接使用,无需再次获取。

1. 登录管理控制台,单击右上角您的用户名处,单击“我的凭证”。

2. 在左侧导航栏中选择“访问密钥”,单击“新增访问密钥”。

3. 输入描述信息,单击“确定”。

4. 在弹出的提示页面单击“立即下载”。

下载成功后,在“credentials”文件中即可获取AK和SK信息。

说明

为防止访问密钥泄露,建议您将其保存到安全的位置。

步骤3 登录一台linux系统的计算机,执行如下命令获取登录密钥。

printf "

$AK

" | openssl dgst -binary -sha256 -hmac "

$SK

" | od -An -vtx1 | sed 's/[ \n]//g' | sed 'N;s/\n//'

其中$AK和$SK为步骤2获取的AK/SK。

2-6 示例

步骤4 使用如下的格式拼接登录指令。

docker login -u [区域项目名称]@[AK] -p [登录密钥] [镜像仓库地址]

其中,区域项目名称和镜像仓库地址在步骤1中获取,AK在步骤2中获取,登录密钥为 步骤3的执行结果。

示例:

docker login -u cn-north-4@CCXXXXX -p 96xxxxx swr.cn- north-4.myhuaweicloud.com

(56)

2-7 使用长期登录指令连接 SWR

说明

● 登录密钥字符串是经过加密的,无法逆向解密,从-p无法获取到SK。

● 获取的登录指令可在其他机器上使用并登录。

步骤5 使用history -c命令清理相关使用痕迹,避免隐私信息泄露。

----结束

2.4.3 页面上传镜像

操作场景

本章节介绍如何通过页面上传镜像。从页面上传镜像,是指直接通过控制台页面将镜 像上传到容器镜像服务的镜像仓库。

约束与限制

● 每次最多上传10个文件,单个文件大小(含解压后)不得超过2G。

● 仅支持上传1.11.2及以上容器引擎客户端版本制作的镜像压缩包。

前提条件

● 已创建组织,请参见创建组织。

● 镜像已保存为tar或tar.gz文件,具体请参见制作镜像压缩包。

操作步骤

步骤1 登录容器镜像服务控制台。

步骤2 在左侧导航栏选择“我的镜像”,单击右上角“页面上传”。

步骤3 在弹出的窗口中选择组织,单击“选择镜像文件”,选择要上传的镜像文件。

说明

多个镜像同时上传时,镜像文件会按照顺序逐个上传,不支持并发上传。

(57)

2-8 上传镜像

步骤4 单击“开始上传”。

待任务进度显示“上传完成”,表示镜像上传成功。

----结束

常见问题

为什么通过页面上传镜像失败?

2.4.4 下载镜像

操作场景

您可以使用docker pull命令下载容器镜像服务中的镜像。

操作步骤

步骤1 以root用户登录容器引擎所在的虚拟机。

步骤2 参考步骤1获取登录访问权限,连接容器镜像服务。

步骤3 登录容器镜像服务控制台。

步骤4 在左侧导航栏选择“我的镜像”,单击右侧镜像名称。

步骤5 在镜像详情页面中,单击对应镜像版本“下载指令”列的复制图标 ,复制镜像下载 指令。

2-9 获取镜像下载指令

數據

表 2-1 编辑镜像 参数 说明 组织 镜像所属组织。 名称 镜像名称。 类型 镜像类型,可选择: ● 公开 ● 私有 说明 公开镜像所有用户都可以下载使用。 ● 如果您的机器与镜像仓库在同一区域,访问仓库是通过内网访问。 ● 如果您的机器与镜像仓库在不同区域,通过公网才能访问仓库,下载跨区域 仓库的镜像需要机器可以访问公网。 分类 镜像分类,可选择: ● 应用服务器 ● Linux ● Windows ● Arm ● 框架与应用 ● 数据库 ● 语言 ● 其他 描述 输入镜像仓库描述,0-30000个字符
表 2-3 触发器 参数 说明 触发器名称 自定义触发器的名称。 字母开头,由字母、数字、下划线_、中划线-组成,下划线、中划线 不能连续且不能作为结尾,1-64个字符。 触发条件 支持如下三种触发条件,当镜像有新版本时,触发部署应用。 ● 全部触发:有新的镜像版本生成或镜像版本发生更新时,触发部 署。 ● 指定版本号触发:有指定镜像版本生成或更新时,触发部署。 ● 正则触发:有符合正则表达式的镜像版本生成或更新时,触发部 署。正则表达式规则如下: – *:匹配不包含路径分隔符“/”的任何字段。 – **:

參考文獻

相關文件

然而在較古的書上一查,卻還不至於如此虛偽。師覺 授 (南朝宋人,生卒年不詳)

MASS::lda(Y~.,data) Linear discriminant analysis MASS::qda(Y~.,data) Quadratic Discriminant Analysis class::knn(X,X,Y,k,prob) k-Nearest Neighbour(X 為變數資料;Y 為分類)

Windows 95 後的「命令提示字 元」就是執行 MS-DOS 指令的應用

FORTH ENGINE 的機器碼大部分都是 Forth 的基本指令。但也有一些較 複雜的 Forth 指令,需用幾個機器碼組合而成。這種指令,一般可用副程 式的方式來建造。但是在 FORTH

※步進點主要應用於步進電路中。當不使 用步進指令時,步進點可作為一般的輔助 繼電器使用。 FX2 PLC的步進點可分為初

[r]

之意,此指依照命令動作的意義。所謂伺服 系統,就是依照指示命令動作所構成的控制

例如 : http ( 網頁伺服器所用的協定 ) 定義了 client 如何向 server request 網頁及 server 如何 將網頁及其中的各種內容回傳給 client 。. 提供服務給 application layer