基于ACR和云效快速部署spring-hello应用

本文以spring-hello为例,为您介绍如何基于ACR和云效快速部署应用,包括通过云效管理代码,使用ACR基于云效代码库来构建自有镜像,然后在ACK Serverless集群中使用自有镜像快速部署应用。

说明

本示例使用云效来管理代码,使用ACR来构建镜像。相关产品介绍,请参见云效容器镜服务ACR

前提条件

步骤一:准备代码并上传到云效代码库

  1. 在本地准备代码。

    1. 安装Git

    2. 单击此处下载spring-hello.zip

    3. 将代码存放到目标文件夹下(例如:D:\doctest),然后解压至文件夹spring-hello。

  2. 创建云效代码库。

    1. 登录云效Codeup控制台,在页面右上角单击新建代码库

    2. 在弹出的对话框中完成代码库设置,然后单击确定

      本文使用的代码库名称示例codebasetest,其他参数保持默认。更多信息,请参见新建第一个代码库

      新建代码库.png

  3. 将代码上传到云效平台。

    1. 完成Git全局设置。

      进入codebasetest代码库,在命令行指引区域,给出了Git全局设置的代码。复制代码,并在Git中执行。

      Git全局设置.png

    2. 执行如下命令,关联本地文件夹。更多信息,请参见关联本地文件夹

      # existing_folder是代码文件所在实际位置。
      cd existing_folder
      git init
      # https://codeup.xxxx.git是新建代码库的地址,在新建代码库页面右上角或者命令行指引区域可获取。
      git remote add origin https://codeup.xxxx.git
      git add .
      git commit -m 'init'
      git push -u origin master

      请将本地代码所在的文件路径,以及云效代码库的地址替换为实际值。示例如下:

      cd D:\doctest
      cd spring-hello
      git init
      git remote add origin https://codeup.aliyun.com/6731aa97cc7f222f53c8****/codebasetest.git
      git add .
      git commit -m 'init'
      git push -u origin master
      重要

      执行git push命令时,会要求输入用户名和密码。您可以在云效平台右上角单击账号头像,选择个人设置,在HTTPS 密码页面获取克隆账号和密码。更多信息,请参见配置 HTTPS 克隆账号密码

    3. 确认代码已上传成功。

      codebasetest代码库中存在如下文件,则表示代码上传成功。

      成功.jpg

步骤二:绑定代码库到ACR实例并构建镜像

绑定云效代码库到ACR实例

  1. 登录云效Codeup控制台,创建并记录访问令牌。

    1. 单击右上角的账号头像,选择个人设置

    2. 个人设置页面的左侧导航栏,单击个人访问令牌

    3. 个人访问令牌页面,单击右上角的新建令牌

    4. 完成令牌配置,然后单击新建

      名称和到期时间可自定义设置,权限请按最小权限设置。以下为ACR访问云效代码库所需的最小权限。

      权限类别

      权限

      基础服务

      • 组织成员:只读

      • 组织部门:只读

      代码管理

      • 代码仓库:只读

      • 代码组:读写

      • 分支:只读

      • 标签:只读

      • Webhook:读写

    5. 创建完成后,记录访问令牌。

      重要

      请务必记录创建的访问令牌,您只可见一次。

      访问令牌.png

  2. 云效Codeup控制台,获取克隆账号。

    1. 单击右上角的账号头像,选择个人设置

    2. 个人设置页面的左侧导航栏,单击HTTPS 密码

    3. 记录克隆账号。

  3. 登录容器镜像服务控制台,为ACR实例绑定云效代码库。

    1. 在顶部菜单栏,选择地域,然后在实例列表页面找到并单击目标ACR实例。

    2. ACR实例详情页的左侧导航栏,选择仓库管理 > 代码源

    3. 单击云效Codeup对应的绑定账号

    4. 在弹出的对话框中填写用户名称和访问令牌,然后单击确定

      用户名称处请输入在云效平台查询的HTTPS克隆账号;个人访客令牌处请输入在云效平台创建的访问令牌。

    5. 代码源页面确认已经绑定成功。

      绑定云效.png

ACR实例中基于云效代码库构建镜像

  1. 创建镜像仓库。

    1. ACR实例详情页的左侧导航栏,选择代码管理 > 镜像仓库

    2. 单击创建镜像仓库

    3. 在弹出的对话框中完成仓库信息和代码源配置,然后单击创建镜像仓库

      创建镜像仓库.png

      以下为主要配置项,其余配置项保持默认即可。

      配置向导页

      配置项

      说明

      示例

      仓库信息

      命名空间

      选择任意一个命名空间。

      image_***

      仓库名称

      自定义您的镜像仓库名称。

      myrepository

      摘要

      填写摘要。

      不涉及

      代码源

      代码源

      选择Codeup,然后选择步骤一创建的云效代码库。

      codebasetest

  2. 在镜像仓库中构建镜像。

    1. 单击镜像仓库名称进入镜像仓库详情页面。

    2. 在左侧导航栏,单击构建

    3. 构建规则设置区域,单击添加规则

      规则示例如下:

      • 类型:Branch

      • Branch/Tag:master

      • 构建上下文目录:/

      • Dockerfile文件名:Dockerfile

      • 镜像版本:v1

    4. 在规则所在行,单击立即构建

      立即构建.png

  3. 构建日志区域确认镜像构建成功。

    等待几分钟,然后刷新页面,待构建状态显示成功,说明镜像构建成功。

    构建成功.png

    说明

    如果构建失败,可查看日志确认失败原因。

步骤三:在ACK Serverless集群中部署spring-hello应用

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表

  2. 集群列表页面,单击目标ACK Serverless集群名称,然后在左侧导航栏,选择工作负载 > 无状态

  3. 无状态页面,单击使用镜像创建,参见下表配置应用信息并创建应用。

    下表仅介绍主要配置项,其余配置项保持默认即可。更多信息,请参见使用镜像创建无状态应用

    重要

    以下示例会创建一个包含2个副本的Deployment,以及一个LoadBalancer类型的Service,分别对应2ECI实例和一个CLB实例,会产生相关资源费用。您可以前往对应产品的控制台查看实例详情。相关计费说明,请参见ECI实例计费CLB按量付费

    配置向导页

    配置项

    说明

    示例

    应用基本信息

    应用名称

    输入应用名称。

    spring-test

    容器配置

    镜像名称

    单击选择镜像,然后选择ACR镜像仓库,找到并选中步骤二构建的镜像。

    crpi-ryysqpkzyvk8****-vpc.cn-hangzhou.personal.cr.aliyuncs.com/image-***/myrepository:v1

    所需资源

    为容器设置资源额度。

    1 Core,2 GB

    端口

    单击新增,开放8080端口。

    • 名称:hello

    • 容器端口:8080

    • 协议:TCP

    高级配置

    服务

    创建一个负载均衡类型的服务,并增加一条端口映射。

    • 服务类型:负载均衡 (LoadBalancer)

    • 端口映射:

      • 名称:hello

      • 服务端口:8080

      • 容器端口:8080

      • 协议:TCP

  4. 返回无状态页面,确认应用创建成功。

步骤四:访问测试网站

  1. 获取服务地址。

    1. 无状态页面,单击应用名称。

    2. 在应用详情页面,单击访问方式页签。

    3. 找到Service,在其外部端点处获取地址。

      服务地址.png

  2. 打开浏览器输入http://外部端点/hello(例如http://121.40.XX.XX:8080/hello),访问应用。

    如果可以正常访问,页面显示Hello, Aliyun,表示spring-hello应用部署成功。

    访问应用.png

释放资源

完成本教程体验后,建议及时删除资源,避免资源持续计费,造成额外资损。

删除创建DeploymentService

  1. 容器服务管理控制台集群列表页面,单击目标集群名称。

  2. 删除Deployment。

    1. 在集群管理页的左侧导航栏,选择工作负载 > 无状态

    2. 找到创建的spring-test应用,在右侧操作列选择更多 > 删除

  3. 删除Service。

    1. 在集群管理页的左侧导航栏,选择网络 > 服务

    2. 找到并选中创建的服务,单击底部的删除

删除集群

ACK Serverless集群目前处于公测中,可免费试用。但是在使用ACK Serverless集群过程中用到的其他阿里云云产品资源,您需要按照各云产品规定的计费规则,为您使用的资源付费,费用由各云产品收取。完成教程后,请参考以下场景处理集群:

  • 如果无需继续使用集群,请登录容器服务管理控制台,在集群列表页面的操作列,单击目标集群对应的更多 > 删除。在删除集群页面,选中同时删除集群下的ALB资源同时删除集群下的PrivateZone资源我已知晓以上信息并确认删除集群,然后单击确定。关于删除ACK Serverless集群的更多信息,请参见删除集群

  • 如果需要继续使用集群,请至少在试用期到期1小时前为阿里云账号充值,确保账户金额不小于100.00元人民币。在使用ACK Serverless集群Pro过程中用到的其他阿里云云产品资源,相关计费说明,请参见云产品资源计费