#导入MD文档图片#使用 KubeSphere 创建DevOps工程

网友投稿 282 2022-10-24

#导入MD文档图片#使用 KubeSphere 创建DevOps工程

说明

创建CI流水线,使用KubeSphere DevOps完成源码编译、镜像构建并推送到Harbor仓库或其他云仓库,最后以git commit方式更新yaml仓库中image字段。

CD部分我们使用Argo CD来做,Argo CD持续监测yaml仓库配置文件变动,当 CI 部分执行git push时便会触发 Argo CD 更新 yaml 文件到 k8s 集群。

准备工作

流水线概述

备注:

KubeSphere 创建流水线

创建一个帐户

(2)了解内置账户角色

(3)创建帐户将被分配platform-regular角色。

创建一个企业空间

(2)在企业空间中,可以看到仅列出了一个默认企业空间system-workspace,即系统企业空间,其中运行着与系统相关的组件和服务,无法删除该企业空间。

创建项目

(3)设置项目配额

(4)邀请成员java并授予demp-workspace-self-provisioner角色权限

创建一个 DevOps 工程

(1)以java身份登录 KubeSphere,创建DevOps 工程。

(2)创建相关凭证

创建git仓库和镜像仓库凭证

(3)在 KubeSphere DevOps 工程下创建一条空流水线,命名为demo-java

进入流水线,选择编辑 Jenkinsfile,复制以下内容:

pipeline { environment { GIT_URL='http://192.168.98.221:8091/root/spring-demo.git' GIT_CREDENTIAL_ID = 'git-id' GIT_BRANCH = 'master' REGISTRY = 'registry.cn-shanghai.aliyuncs.com/tengfeiwu/spring-demo' REGISTRY_CREDENTIAL_ID = 'harbor-id' } agent { node { label 'maven' } } stages { stage('SCM Checkout') { steps { git branch: "${GIT_BRANCH}", credentialsId: "${GIT_CREDENTIAL_ID}", url: "${GIT_URL}" } } stage('source build') { steps { container('maven') { sh 'mvn clean package' } } } stage('docker build & push') { steps { script { env.COMMIT_ID = sh(returnStdout: true, script: "git log -n 1 --pretty=format:'%h'").trim() env.TIMESTRAP = sh(returnStdout: true, script: 'date +%Y%m%d%H%M%S').trim() env.DOCKER_TAG = "dev_${TIMESTRAP}_${COMMIT_ID}_${BUILD_NUMBER}" } container('maven') { withCredentials([usernamePassword(passwordVariable : 'DOCKER_PASSWORD' ,usernameVariable : 'DOCKER_USERNAME' ,credentialsId : "$REGISTRY_CREDENTIAL_ID" ,)]) { sh 'docker build -t $REGISTRY:$DOCKER_TAG .' sh 'echo "$DOCKER_PASSWORD" | docker login $REGISTRY -u "$DOCKER_USERNAME" --password-stdin' sh 'docker push $REGISTRY:$DOCKER_TAG' } } } } stage('update docker tag') { environment { BUILD_USER = 'tengfei.wu' BUILD_USER_EMAIL = 'tengfei.wu@ceshi.com' YAML_REPO_URL='http://${username}:${password}@192.168.98.221:8091/root/argocd-gitops.git' } steps { withCredentials([usernamePassword(passwordVariable : 'password' ,usernameVariable : 'username' ,credentialsId : "$GIT_CREDENTIAL_ID" ,)]) { sh """ git config --global user.name "$BUILD_USER" git config --global user.email "$BUILD_USER_EMAIL" git clone ${YAML_REPO_URL} && cd argocd-gitops sed -i "s#$REGISTRY.*#${REGISTRY}:${DOCKER_TAG}#g" javademo/javademo-deployment.yaml git add -A && git commit -m "update tag: ${DOCKER_TAG}" && git push ${YAML_REPO_URL} """ } } } } }

说明:

注意修改相关参数,流水线中引用了 2 个凭证:

GIT_CREDENTIAL_ID为内网git仓库账号密码; REGISTRY_CREDENTIAL_ID为镜像仓库账号密码;

(4)运行流水线

查看流水线构建日志,可以看到执行了以下过程,其中最后 update docker tag 步骤,执行了 2 个关键操作,sed 命令替换镜像 tag,然后执行 git push 更新 yaml 仓库。

(5)查看推送到镜像仓库的镜像

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:kubernetes 集群中Flannel的使用说明
下一篇:USB接口设计的注意要点
相关文章

 发表评论

暂时没有评论,来抢沙发吧~