本文介绍如何使用ACK One分布式工作流集群构建容器镜像CI。
前提条件
已创建工作流集群,从ACK One控制台获取分布式工作流Argo实例的KubeConfig,并通过kubectl连接至工作流集群。具体操作,请参见通过kubectl工具连接集群。
使用限制
暂不支持通过修改代码来自动触发CI流程。
ACK One分布式工作流集群功能优势
构建容器镜像CI
本文在ACK One分布式工作流集群基础上,使用BuildKit实现容器镜像的构建和推送,本实践使用的镜像为docker hub https://hub.docker.com/r/moby/buildkit
的moby/buildkit:v0.12.1-rootless
。
步骤一:在工作流集群中创建Secret保存ACR EE密码
为ACR企业版实例(ACR EE)配置访问凭证。具体操作,请参见配置访问凭证。
执行以下命令,在工作流集群中创建Secret保存ACR EE密码,供BuildKit使用。
替换以下代码中的
${workflow_kubeconfig}
、$username:$password
为您的实际配置信息。# repositoryDomain: 例如demo-test-registry.cn-hangzhou.cr.aliyuncs.com kubectl --kubeconfig ${workflow_kubeconfig} create secret generic docker-config --from-literal="config.json={\"auths\": {\"$repositoryDomain\": {\"auth\": \"$(echo -n $username:$password|base64)\"}}}"
步骤二:在工作流集群中创建WorkflowTemplate
WorkflowTemplate主要用于定义Git Clone代码、构建和推送镜像。
Clone代码:本文采用Public仓库,如果是私有仓库,可以使用token来拉取,如
git clone https://[username]:[token]@gitlab.com/demo3624733/echo-server.git
。构建和推送镜像:本档使用BuildKit来构建镜像。
本文通过不使用共享存储和使用NAS共享存储两种方式介绍如何创建WorkflowTemplate。
不使用共享存储
通过此方式可以快速构建CI流水线,无需关注共享存储的使用。此处使用initContainer用于将代码Clone到emptyDir,之后进入相应的临时目录构建镜像。
使用以下YAML内容,创建worktemplate-1.yaml文件。
您可以在以下WorkflowTemplate的parameters字段中指定代码仓库、分支及镜像等,并将您的username和Token替换到以下YAML文件中。
执行以下命令,在工作流集群中创建WorkflowTemplate。
kubectl --kubeconfig ${ackone_argo_kubeconfig} apply -f worktemplate-1.yaml
使用NAS共享存储
此场景中,Git Clone和构建镜像是两个单独的Pod,所以需要共享存储。关于如何在工作流集群使用NAS存储卷的操作,请参见使用存储卷。
使用以下YAML内容,创建worktemplate-2.yaml文件。
您可以在以下WorkflowTemplate的parameters字段中指定代码仓库、分支及镜像等,并将您的username和Token替换到以下YAML文件中。
执行以下命令,在工作流集群中创建WorkflowTemplate。
kubectl --kubeconfig ${ackone_argo_kubeconfig} apply -f worktemplate-2.yaml
步骤三:创建WorkFlow
使用以下YAML内容,创建workflow.yaml文件。
apiVersion: argoproj.io/v1alpha1 kind: Workflow metadata: annotations: workflows.argoproj.io/pod-name-format: v1 generateName: echo-server- spec: workflowTemplateRef: name: echo-server
执行以下命令,在工作流集群中创建WorkFlow。
kubectl --kubeconfig ${ackone_argo_kubeconfig} create -f workflow.yaml
步骤四:通过ACK One控制台查看工作流
公网访问服务开通后,您可以通过ACK One控制台更快捷地访问Agro控制台。
登录ACK One控制台,在左侧导航栏选择工作流集群。
在基础信息页签下,找到常用操作区域,单击工作流控制台(Argo)。
在工作流控制台页面左侧,选择NAMESPACE为default,查看工作流列表。