云服务器内容精选

  • 操作场景 容器镜像服务企业版支持与其他仓库之间同步容器镜像,可实现单点推送及全球自动同步分发,方便企业在全球多个地域快速部署更新容器业务。当前支持与如下类型仓库之间同步: 容器镜像服务:即SWR共享仓库中的镜像。 容器镜像服务企业版:支持华为云不同地域的企业仓库以及客户基于开源harbor搭建的私有仓库。 镜像同步功能允许用户自定义创建同步规则,可指定某个仓库内的部分资源同步至另一个仓库内的命名空间。例如,用户可选择同步资源类型(容器镜像、Helm Chart、或是全部同步),通过正则表达式过滤镜像及版本,可选择是否覆盖已有的同名镜像,避免历史数据覆盖丢失。
  • 设置访问控制与域名解析 公网访问 设置公网访问控制和域名解析,您可以使用公网并通过自定义域名的方式访问SWR仓库。配置公网的访问控制,详情请参考配置公网访问。 进入云解析服务控制台。 在左侧树状导航栏,选择“公网域名”, 进入域名列表页面。 【可选】如果没有自定义域名后缀的公网域名, 单击右上角的“创建公网域名”,输入域名,单击“确定”。 单击您的域名名称进入详情页。 单击“添加记录集”,进入“添加记录集”页面设置参数,然后单击“确定”。 表1 添加记录集参数设置 参数 配置 主机记录 输入自定义域名的前缀。 类型 CNAME。 线路类型 指域名访问者所在的地区和使用的运营商网络,本例中为全网默认。 TTL 为缓存时间,数值越小,修改记录各地生效时间越快,默认为5分钟。 值 设置为仓库的默认域名。 内网访问 设置内网访问控制和内网域名,您可以在指定VPC内的云服务器通过内网拉取SWR仓库中的镜像。配置内网访问控制,详情请参考配置内网访问。 进入云解析服务控制台。 在左侧树状导航栏,选择“内网域名”, 进入域名列表页面。 【可选】如果没有自定义域名后缀的内网域名, 单击右上角的“创建内网域名”,输入域名,选择区域,以及与仓库打通网络的VPC,单击“确定”。 单击您的域名名称进入详情页。 单击“添加记录集”,进入“添加记录集”页面设置参数,然后单击“确定”。 表2 添加记录集参数设置 参数 配置 主机记录 输入自定义域名的前缀 类型 CNAME 线路类型 指域名访问者所在的地区和使用的运营商网络,本例中为全网默认。 TTL 为缓存时间,数值越小,修改记录各地生效时间越快,默认为5分钟。 值 设置为仓库的默认域名。
  • 前提条件 需要开通云服务:云解析服务 DNS、云证书管理服务(Cloud Certificate Manager,CCM)。 欲使用域名管理功能,您的账户需要具备查询证书列表权限(scm:cert:list)以及证书导出的权限(scm:cert:export)。 已拥有域名。您可以通过域名注册服务注册域名,详细介绍请参见什么是域名注册服务?。 如果您的SWR仓库在中国境内,那么如果您要在公网环境中使用自定义域名,则域名需要备案。如果您的SWR仓库在境外,则域名无需备案。 已为域名签发证书。您可通过云证书管理CCM服务购买证书,并确认已绑定仓库需要使用的自定义域名。
  • 操作步骤 登录云容器引擎CCE控制台。 在左侧导航栏上单击“插件市场”。 在插件市场页面上方搜索框输入“cosign”并搜索。 在下方的搜索结果中找到“容器镜像签名验证”插件,单击“安装”。 填写“安装插件”页面的相关参数。 选择集群:选择镜像所在集群。该插件只能在K8S V1.23及以上版本集群上安装。 对集群某个命名空间进行镜像验签时,需要先为该命名空间添加 policy.sigstore.dev/include:true 标签。 选择版本:选择插件版本 规格配置 单仓库:当前插件只支持在1个仓库上使用。 高可用:当前插件支持在2个仓库上使用。 自定义:自定义仓库数、CPU配额、容器配额。 表1 swr-cosign插件规格配置 参数 参数说明 插件规格 该插件可配置“单实例”、“高可用”或“自定义”规格。 实例数 选择上方插件规格后,显示跟插件规格匹配的实例数。 选择“自定义”规格时,您可根据需求调整插件实例数。 容器 选择“自定义”规格时,您可根据需求调整插件实例的容器规格。 参数配置 KMS密钥:选择一个创建非对称密钥中创建好的密钥。 验签镜像:单击,选择需要验签的镜像。 表2 swr-cosign插件参数配置 参数 参数说明 KMS密钥 选择一个密钥,仅支持 EC_P256、EC_P384、SM2 类型的密钥。 您可以前往密钥管理服务新增密钥。 验签镜像 验签镜像地址通过正则表达式进行匹配,例如填写docker.io/**表示对docker.io镜像仓库的镜像进行验签。如需对所有镜像验签,请填写**。 填写完成后,单击“安装”。 待插件安装完成后,选择对应的集群,然后单击左侧导航栏的“插件中心”,可筛选“已安装插件”查看相应的插件。
  • 添加命名空间标签 登录容器镜像服务控制台,单击左侧菜单栏“企业版”。 选中要添加命名空间标签的仓库,单击仓库名称,进入仓库详情页。 单击仓库详情页左侧导航栏“命名空间”,进入命名空间列表页。单击页面右上角的图标,以列表形式展示命名空间列表。 选择要添加标签的命名空间,单击右侧“标签管理”,进入标签管理页面。 图1 命名空间管理列表页 在标签管理页面,单击,新增一个标签。 图2 标签管理 参考标签命名规则,填写标签的键和值。
  • 使用Helm客户端上传及下载Helm Chart 安装Helm客户端 本文以在Linux操作系统的节点上安装为例,如在其他平台安装请下载对应安装包。 依次执行以下命令,下载并安装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 Chart 安装Helm Push插件。 在安装Helm Push插件前,需要预先安装Git。 helm plugin install https://github.com/chartmuseum/helm-push 在节点上执行如下命令,创建一个Chart。 helm create [Chart名称] 示例:helm create chart-demo 执行如下命令,推送指定目录至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 在节点上执行如下命令,更新本地仓库Chart信息。 helm repo update 下载指定版本Chart。 helm pull [本地仓库名称]/[Chart名称] --version [Chart版本] 示例: helm pull group/chart-demo --version 1.0.0
  • 背景信息 Kubernetes提供了统一模式的API,能以YAML格式的文件定义Kubernetes集群中的资源,包括Pod、Service、Deployment、StatefulSet、Job等等。这些资源种类繁多,且分散的kubernetes应用配置文件难以管理、编辑和更新,因此云原生社区衍生了一个更高维度的概念及其实现工具,即Chart和Helm。 Chart是描述相关的一组Kubernetes集群内资源的文件集合。 Helm是一个命令行程序,用于管理这些Chart,以及其运行态Release。 容器镜像服务企业版支持Helm客户端实现Chart的上传和下载。
  • 创建签名规则 登录容器镜像服务控制台,单击左侧菜单栏“企业版”,然后单击仓库名称进入仓库详情页面。 在左侧导航栏选择“ 镜像签名”。 在右上角单击“创建签名规则”。 填写具体规则。 表2 参数说明 参数名称 说明 示例 规则名称 镜像签名规则的名称。 SignatureRule 命名空间 选择要签名的镜像所在的命名空间。 library 规则范围 镜像:镜像名称,默认使用正则表达式。单击可手动选择镜像。 正则表达式规则可填写如nginx-*、{repo1, repo2} 等,其中: *:匹配不包含路径分隔符“/”的任何字段。 **:匹配包含路径分隔符“/”的任何字段。 ?:匹配任何单个非“/”的字符。 {选项1, 选项2, ...}:同时匹配多个选项。匹配上其中一个即可。 版本:镜像的版本,同样使用正则表达式,匹配规则与镜像名称相同。 nginx-*:表示匹配“nginx-”开头的镜像。 签名方式 当前支持使用KMS签名。 KMS 签名Key 选择在创建非对称密钥中创建的密钥。 key1 触发模式 手动:手动触发,规则创建完成后需要您手动单击执行。 事件触发 + 手动:事件触发指当有新镜像上传到仓库且符合匹配规则时触发镜像签名。 事件触发 + 手动 规则描述 规则的描述信息。 - 图2 创建签名规则 单击“确定”完成规则创建。
  • 创建非对称密钥 登录数据加密服务控制台。 在左侧导航栏选择“密钥管理”,单击右上角的“创建密钥”。 在“创建密钥”对话框中配置参数,然后单击“确定”。 镜像签名功能需要非对称密钥算法的支持,创建密钥时,密钥算法需选择EC、RSA或SM2类型,详情请见表1。其他参数配置请参见创建密钥。 图1 创建密钥 表1 容器镜像服务支持的密钥算法类型 密钥类型 算法类型 密钥规格 说明 用途 非对称密钥 RSA RSA_2048 RSA_3072 RSA_4096 RSASSA_PSS_SHA_256 RSASSA_PSS_SHA_384 RSASSA_PSS_SHA_512 RSASSA_PKCS1_V1_5_SHA_256 RSASSA_PKCS1_V1_5_SHA_384 RSASSA_PKCS1_V1_5_SHA_512 RSA非对称密钥 小量数据的加解密或数字签名。 非对称密钥 ECC EC_P256 ECDSA_SHA_256 EC_P384 ECDSA_SHA_384 椭圆曲线密码,使用NIST推荐的椭圆曲线 数字签名 非对称密钥 SM2 SM2 国密SM2非对称密钥 小量数据的加解密或数字签名。
  • 创建命名空间 登录容器镜像服务控制台,单击左侧菜单栏的“企业版”,在“仓库管理”页面单击您的仓库名称进入仓库。 在左侧导航栏单击“命名空间”。 在右上角单击“创建命名空间”。 填写命名空间名称,选择命名空间类型。 图1 创建命名空间 公有命名空间:允许任何用户登录后下载命名空间内的制品,如需其他操作需在IAM上为用户授权。 私有命名空间:需在IAM上为用户授权才可以对命名空间内的制品进行操作。 单击“确定”。 命名空间创建成功后,您可以选择列表视图或卡片视图查看命名空间详情,在右上角单击或图标进行视图切换。
  • 操作步骤 制作容器镜像或导入镜像文件。 连接容器镜像服务。 登录容器镜像服务控制台。 选择左侧导航栏的“总览”,单击页面右上角的“登录指令”,在弹出的页面中单击复制登录指令。 图1 登录指令 此处生成的登录指令有效期为6小时,若需要长期有效的登录指令,请参见获取长期有效登录指令。获取了长期有效的登录指令后,在有效期内的临时登录指令仍然可以使用。 登录指令末尾的域名为镜像仓库地址,请记录该地址,后面会使用到。 在安装容器引擎的机器中执行上一步复制的登录指令。 登录成功会显示“Login Succeeded”。 在安装容器引擎的机器上执行如下命令,为nginx镜像打标签。 docker tag [镜像名称1:版本名称1] [镜像仓库地址]/[组织名称]/[镜像名称2:版本名称2] 其中, [镜像名称1:版本名称1]:请替换为您所要上传的实际镜像的名称和版本名称。 [镜像仓库地址]:可在SWR控制台上查询,即2.b中登录指令末尾的域名。 [组织名称]:请替换为您创建的组织。 [镜像名称2:版本名称2]:请替换为您期待的镜像名称和镜像版本。 示例: docker tag nginx:v1 swr.cn-east-3.myhuaweicloud.com/cloud-develop/nginx:v1 上传镜像至镜像仓库。 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 678bbd796838: Pushed d1279c519351: Pushed f68ef921efae: Pushed v1: digest: sha256:0cdfc7910db531bfa7726de4c19ec556bc9190aad9bd3de93787e8bce3385f8d size: 1780 返回容器镜像服务控制台,在“我的镜像”页面,执行刷新操作后可查看到对应的镜像信息。
  • 支持审计的关键操作列表 表1 云审计服务支持的SWR操作列表 操作名称 资源类型 事件名称 创建命名空间权限 usernamespaceauth createUserNamespaceAuth 修改命名空间权限 usernamespaceauth updateUserNamespaceAuth 删除命名空间权限 usernamespaceauth deleteUserNamespaceAuth 创建软件包 package createPackage 修改软件包 package updatePackage 删除软件包 package deletePackage 创建仓库 repository createRepository 修改仓库 repository updateRepository 删除仓库 repository deleteRepository 创建版本 version createVersion 修改版本 version updateVersion 删除版本 version deleteVersion 上传镜像包 image uploadImagePackage 上传文件 file uploadFile 下载文件 file downloadFile 删除文件 file deleteFile 创建组织 usernamespace createUserNamespace 删除组织 usernamespace deleteUserNamesapce 收藏镜像 usercollections createUserCollections 取消收藏镜像 usercollections deleteUserCollections 创建触发器 trigger createTrigger 修改触发器 trigger updateTrigger 删除触发器 trigger deleteTrigger 创建仓库权限 userrepositoryauth createUserRepositoryAuth 修改仓库权限 userrepositoryauth updateUserRepositoryAuth 删除仓库权限 userrepositoryauth deleteUserRepositoryAuth 创建镜像仓库 imagerepository createImageRepository 修改镜像仓库 imagerepository updateImageRepository 删除镜像仓库 imagerepository deleteImageRepository 删除镜像版本 imagetag deleteImageTag 生成登录指令 dockerlogincmd createDockerConfig 创建共享镜像 imagerepositoryaccessdomain createImageRepositoryAccessDomain 修改共享镜像 imagerepositoryaccessdomain updateImageRepositoryAccessDomain 删除共享镜像 imagerepositoryaccessdomain deleteImageRepositoryAccessDomain 下载镜像层 downloadimagelayer downloadimagelayer
  • 操作步骤 登录容器镜像服务控制台。 在左侧导航栏选择“我的镜像”,单击右侧镜像名称。 在镜像详情页面单击右上角“镜像自动同步”。 单击图标,选择目标区域和目标组织,然后单击“确定”完成添加。 图1 添加镜像自动同步 目标区域:选择同步的目标区域,例如“华北-北京一”。 目标组织:选择同步的目标组织。 覆盖: 勾选则表示覆盖,同步相同名称相同版本的镜像时,同步后会替换已有的镜像版本。 不勾选则表示不覆盖,同步相同名称相同版本的镜像时,会取消同步并提示已存在相同版本镜像。 在镜像详情页面的“镜像同步记录”页签下,可查看镜像同步启动时间、镜像版本、状态、同步类型、同步耗时等。
  • 操作步骤 登录容器镜像服务控制台。 在左侧导航栏选择“我的镜像”,单击右侧镜像名称,进入镜像详情页。 选择“触发器”页签,单击“添加触发器”,根据表1填写相关参数,然后单击“确定”。 图1 添加触发器 图2 添加触发器 表1 触发器 参数 说明 触发器名称 自定义触发器的名称。 字母开头,由字母、数字、下划线_、中划线-组成,下划线、中划线不能连续且不能作为结尾,1-64个字符。 触发条件 支持如下三种触发条件,当镜像有新版本时,触发部署应用。 全部触发:有新的镜像版本生成或镜像版本号不变,镜像内容发生变化重新推送时,触发部署。 指定版本号触发:有指定镜像版本生成或更新时,触发部署。 正则触发:有符合正则表达式的镜像版本生成或更新时,触发部署。正则表达式规则如下: *:匹配不包含路径分隔符“/”的任何字段。 **:匹配包含路径分隔符“/”的任何字段。 ?:匹配任何单个非“/”的字符。 {选项1, 选项2, ...}:同时匹配多个选项。 触发动作 当前仅支持更新容器的镜像,需指定更新的应用,以及该应用下的容器。 触发器状态 选择“启用”。 触发器类型 选择“云容器引擎CCE”或“云容器实例CCI”。 说明: 当前仅“华北-北京四”区域支持“云容器实例CCI”的触发器类型。 选择应用 选择要更新镜像的容器。
  • 示例2:触发条件为“正则触发” 假设有一个欢迎页面为“Hello, SWR!”的Nginx镜像(版本号为v1),使用该镜像创建了名称为“nginx”的无状态负载,该负载提供对外访问。 为Nginx镜像添加触发器。 触发器名称填写“Tags_regular_expression”,触发条件选择“正则触发”,输入正则表达式:^v2.*(匹配以v2开头的版本号),选择使用了Nginx镜像的无状态负载及容器。 图5 添加触发器-正则触发 Nginx镜像新增一个v1.0.0版本,该版本的欢迎页面为“Hello, SWR! (v1.0.0)”。 图6 镜像版本v1.0.0 Nginx镜像新增一个v2.0.0版本,该版本的欢迎页面为“Hello, SWR! (v2.0.0)”。 图7 镜像版本v2.0.0 确认是否触发成功。 在“触发器”页签,单击图标,查看触发结果。从图8中可以看出,只有v2.0.0版本被触发了,符合设置的正则表达式规则。 图8 触发结果示例 工作负载的访问页面已变更为“Hello, SWR! (v2.0.0)”。