今天玩了一下云效的体验场景,还是挺有意思的,,踩了一丁丁的小坑,记录一下
(发现可以bp阿里K8s实验环境,每次两小时,不错!
1、首先,去阿里云体验实验室,get一个实验资源
https://developer.aliyun.com/adc/scenario/04621f4624514bc6a85b9c8c5af1ec05?spm=a2c6h.13858378.0.0.54be10224wGQ0v
点击开始体验:左边是课件,拉大了看
2、准备实验中打包用的代码,,教程推荐阿里云的codeup(类似git
https://codeup.aliyun.com?channel=yy_yc_flowlab
登录后,点击【导入代码库】
选择【URL导入】,源代码库地址填写(这一步实际上是copy了一份大佬写好的demo代码,放在自己的仓库里,如果你是大佬就导入你自己熟悉的git):
https://code.aliyun.com/flow-example/spring-boot.git
3、进入云效流水线功能(代码copy完之后,点上面一排菜单有个“流水线”,点创建弹到流水线的面板,此时你就被codeup成功引流到了“云效流水线”这个产品✔️)
https://flow.aliyun.com/my?page=1
——点击左上角九筒图标,可以看到其他一些相关的产品功能(与本实验无关)
进入创建步骤,此处教程中建议采用的k8s发布模板已经无了,,不要慌,只是一个模板而已,点java-选“镜像构建,发布到EDAS k8s”,改改一样能用
选中之后,点创建
4、流水线填充
创建之后,进入流程配置环节,此时需要对模板给的两个步骤(①构建 ②部署)进行内容填充
首先——
点最左侧的“添加代码源”,如果你在第4步是从codeup跳转过来的,这里已经会有一个自动配置好的源,,
如果你是从别处或者主页重新点进来的,那需要自己写一下源的配置:点添加代码源-选类型-填指定信息,选codeup类型还是会自动关联到你自己的仓库,分支选master
如果你不想用配好的源,可以在右侧属性窗口,编辑:把它删了,,重做
重点【属性窗口往下拉,打开“开启代码源触发”,这样后续在仓库改了代码,会自动触发流水线->构建、测试、部署。
第二步,
在这个步骤,我们需要先有个镜像仓库,存储构建好的镜像,提供给下一步的部署使用
可以用阿里的https://cr.console.aliyun.com/,选择【个人实例】-【创建个人版】
——设置阿里云Docker Registry登录密码,点确定。然后开始创建镜像仓库,点左上角【个人实例】右侧小国旗,可以选区。记住自己的大区,我选华东2(上海),,后面拉镜像的时候,要去你的大区里找你的仓库,
创建仓库-创建命名空间-仓库名称——类型选公开,下一步,选本地仓库——创建仓库完成
(如果你是大佬,这个环节你也可以选用自己的harbor,只要云效和k8s访问仓库的网络是通的)
继续,点“Docker镜像构建”,右边弹出属性框,,任务名称可以自由修改,集群可以选
模板已经自动给加了一个步骤“镜像构建并推送阿里云”,点小三角拉开步骤详情,醒目的“新建服务授权”跳转同意后,会自动把你阿里云的仓库信息填过来,地域选择刚才仓库的大区,然后就可以找到自己的仓库了。。。
标签填“${DATETIME}”,表示以流水线触发时的时间戳作为镜像的标签。Dockerfile路径可改
(如果你是大佬,不用阿里的仓库,可以把默认步骤删了,重新加个步骤-构建,选推到自定义的仓库)
第三步、k8s资源准备
回到最开始申请的体验资源的页面,左上角有本次配给资源的账密信息,,
【另外打开一个别的品牌的浏览器 Chrome打开新的无痕窗口!】访问阿里云ACK控制台:https://cs.console.aliyun.com 选择RAM用户登录,填入配给的账密登录
进入后可以看到前面申请的k8s实验资源,点 详情-连接信息-公网访问,即可得到该k8s的conf(如果不玩云效的话,就可以拿这个配置去直接玩kubectl了,安逸~)
第四步、部署环节1-步骤
这里我们是用EDAS的模板创建的,直接把这个部署动作删掉重加,点新阶段(新的任务)-部署-k8s发布,,
在预设好的步骤“kubectl发布”中,新建集群连接-自定义集群——名字要记住(验证需要)——配置信息,把第三步获得的conf内容copy过来——保存
下拉,把【YAML路径修改为app-configs/manifest-app】
第五步、部署环节2-参数
单击添加参数,第一个参数类型选择上游输出,参数名填入IMAGE,参数值选择镜像构建并推送到阿里云镜像仓库.镜像VPC地址。这样在运行时,云效Flow会把YAML路径下的所有文件中的${IMAGE}都替换成镜像的地址,然后再进行kubectl发布。
再次单击添加参数,参数类型选择自定义,参数名称填入HOST,参数值填入ACK集群的测试域名(此域名在刚才ack-k8s控制台-基本信息中查看,copy后把前面的.*删去,,等于在实际发布中,ack将帮助我们完成域名-ip的映射,,阿里提供的域名是有备案的,这样才能在公网上直接访问,,如果你是大佬,不用阿里提供的k8s能力,那么此处换成你自己的云服务商提供的域名) 这样,yaml文件中的${HOST}就会被替换成实际的测试地址。
第六步、添加一个验证环节(可选)
继续点击【添加步骤】,选择【其他】-【云效运营活动验证】
新建连接- 集群配置和 上一步kubectl的发布保持一致
5、流水线发布
配置完成后,点网页右上角保存并运行,,流水线执行过程需要1~3分钟,部署阶段任务完成即流水线执行完成。
执行的每个阶段可以查看日志,,如果有错误看看日志
发布成功后,查看部署环节的日志,可以看到发布成功的HOSTS(域名)和ADDRESS(公网IP)地址。
(注意区分,不是最后面10打头的私网IP那段)教程中说如果没有address就重新运行流水线,今天我试了两次,都是第二次运行才出现address……
编辑自己电脑的hosts文件,将域名和Address加入hosts映射,然后浏览器访问该域名,,出现测试页说明成功部署
如果访问出现“404”或者“503”错误,可能是因为镜像仓库为私有仓库,集群无法推送拉取镜像,需要在阿里云容器镜像服务台修改对应镜像仓库为公开,重新部署
6、测试修改代码-自动发布
因为我们在前面开启了代码源触发,所以当检测到master分支有代码进行变更,将会自动触发流水线的运行。
访问代码仓库https://codeup.aliyun.com/
找到demo应用的测试页,仓库URL/spring-boot/blob/master/src/main/java/com/example/demo/HelloController.java
修改第19行
return "Greetings from Spring Boot! V4";
改为了
return "update in 20210920";
点保存-提交
再回到流水线管理页https://flow.aliyun.com/my?page=1
找到自己的流水线点进去,查看运行历史——可以看到之前的两次“手动触发”已完成,刚刚发起的“代码触发”还在跑,点“查看”进入详情页
完成后再访问域名页面,可以看到测试页的内容变了~
【End.】