本文档以构建一个 Java 软件项目并部署到 阿里云容器服务的Kubernetes集群 为例说明如何使用 Bamboo在阿里云Kubernetes服务上运行Remote Agents并在agents上运行Build Plans。

1. 源码项目

本示例中创建的GitHub源码项目地址为:

https://github.com/AliyunContainerService/jenkins-demo.git  

分支为:

bamboo

2. 在Kubernetes中部署Remote Agent

2.1 创建kaniko-docker-cfg secret

kaniko-docker-cfg secret用于Remote Agent上构建任务使用kaniko推送容器镜像时的权限配置

kubectl -n bamboo create secret generic kaniko-docker-cfg  --from-file=/root/.docker/config.json

上面命令中的/root/.docker/config.json,是在linux服务器上使用root用户通过以下命令生成的:

docker login registry.cn-hangzhou.aliyuncs.com

2.2 创建serviceaccount bamboo以及clusterrolebinding用于kubectl部署应用到kubernetes集群的权限设置,创建bamboo-agent deployment

注意: 本示例中的clusterrolebinding为admin权限, 具体使用中可以根据自己的需要创建最小权限的serviceaccount

bamboo-agent.yaml:

---
apiVersion: v1
kind: ServiceAccount
metadata:namespace: bambooname: bamboo---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: bamboo-cluster-admin
subjects:- kind: ServiceAccountname: bamboonamespace: bamboo
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io---
apiVersion: apps/v1beta2
kind: Deployment
metadata:name: bamboo-agent
spec:replicas: 1selector:matchLabels:app: bamboo-agenttemplate:metadata:labels:app: bamboo-agentspec:serviceAccountName: bamboocontainers:- name: bamboo-agentenv:- name: BAMBOO_SERVER_URLvalue: http://xx.xx.xx.xx:8085image: registry.cn-hangzhou.aliyuncs.com/haoshuwei/docker-bamboo-agent:v1imagePullPolicy: AlwaysvolumeMounts:- mountPath: /root/.docker/name: kaniko-docker-cfgvolumes:- name: kaniko-docker-cfgsecret:secretName: kaniko-docker-cfg
kubectl -n bamboo apply -f bamboo-agent.yaml

上述kubernetes资源创建完毕后等待remote agent完成初始化配置, 可以使用如下命令查看日志:

kubectl -n bamboo logs -f <bamboo agent pod name>

Remote Agent注册成功后可以在 Bamboo administration -> Agents -> Remote agents 下查看:

3. 配置一个build plan完成应用源码拉取、编译打包、容器镜像打包和推送、应用部署的过程

3.1 创建一个build plan bamboo-ack-demo

3.2 配置Stages并添加Job

Job配置:

3.2.1 源码拉取

3.2.2 mvn打包

3.2.3 kaniko打包和推送容器镜像

本示例中script body为:

kaniko -f `pwd`/Dockerfile -c `pwd` --destination=registry.cn-hangzhou.aliyuncs.com/haoshuwei/bamboo-java-demo:latest

3.2.4 kubectl部署应用到kubernetes


本示例中script body为:

sed -i 's#IMAGE_URL#registry.cn-hangzhou.aliyuncs.com/haoshuwei/bamboo-java-demo:latest#' ./*.yaml
kubectl apply -f ./

3.3 运行build

3.4 访问应用服务

[root@iZbp12i73koztp1cz75skaZ bamboo]# kubectl -n bamboo get svc
NAME                TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)        AGE
jenkins-java-demo   LoadBalancer   xx.xx.xx.xx   xx.xx.xx.xx   80:32668/TCP   39m

原文链接
本文为云栖社区原创内容,未经允许不得转载。

CICD联动阿里云容器服务Kubernetes实践之Bamboo篇相关推荐

  1. 使用阿里云容器服务Kubernetes实现蓝绿发布功能

    背景 在发布应用时,经常需要先上线一个新版本,用较小的流量去测试一下该新版本的可用性.但是Kubernetes的ingress resource 并没有实现流量控制与切分的功能,导致针对同一个域名下的 ...

  2. 阿里云容器服务DaemonSet实践

    DaemonSet 保证在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志.监控或者其他系统管理应用.下面以日志收集 fluentd 为例,看下如何使用阿里云容器服务控制台创建Daemo ...

  3. 一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用

    本文面向的读者 如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用.你无须提前准备任何的硬件资源或者下载任何的软件包.  如果您已经 ...

  4. 【阿里云-容器】阿里云容器服务Kubernetes版快速入门

    一.部署并公开 本步骤指导您如何在ACK集群中快速部署一个无状态应用(Deployment),即魔方游戏,并将该应用向公网公开.关于创建Deployment的详细参数描述,请参见创建无状态工作负载De ...

  5. Istio 在阿里云容器服务的部署及流量治理实践

    目标 在阿里云容器服务 Kubernetes 集群上部署 Istio 服务网格 实践灰度发布.故障注入.熔断等 Istio 流量管理特性 准备工作 安装和设置 kubectl 客户端,请参考不同的操作 ...

  6. 阿里云容器服务差异化 SLO 混部技术实践

    背景介绍 阿里巴巴在"差异化 SLO 混合部署"上已经有了多年的实践经验,目前已达到业界领先水平.所谓"差异化 SLO",就是将不同类型的工作负载混合运行在同一 ...

  7. 首批!阿里云容器服务 ACK 顺利通过信通院云原生混部项目评估

    作者:OSCAR 为了分享过去一年云原生产业联盟(CNIA)在标准建设.评估认证.技术研究.实践合作等方面的工作成果.探索行业最新趋势动态,云原生产业联盟于 2023 年 1 月举办了 2022 年度 ...

  8. 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布

    简介 日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级.分批暂停发布.蓝绿发布以及灰度发布,今天主要跟大家分享下在阿里云容器服务Kubernetes集群中如何通过I ...

  9. 阿里云容器服务cni网络插件terway非官方网络性能测试

    作者:张荣滨,酷划在线后端架构师,关注微服务治理,容器化技术,Service Mesh等技术领域 terway网络性能测试 酷划在线成立于2014年,是国内激励广告行业的领军者.酷划致力于打造一个用户 ...

最新文章

  1. Linus Torvalds: 成功的项目源于99%的汗水与1%的创新
  2. iOS动画编程-Layer动画[ 2 ] Getting Started with Layer Animations
  3. php拒绝服务,CVE-2015-7803
  4. 【Linux】一步一步学Linux——fg命令(130)
  5. oracle常用角色权限,Oracle角色、权限的一些常用视图 - 一夜寒江
  6. PowerPC VxWorks BSP分析(1)--PowerPC体系结构
  7. C#: 8.0 和 9.0 常用新特性
  8. P4288 [SHOI2014]信号增幅仪 最小圆覆盖
  9. message:MCODE参数不存在,mobile类型mcode参数必需
  10. 船舶定位实时查询系统_港口人员精准定位系统,实时安全管控与智能预警
  11. JAVA 正则表达式 RegexUtil
  12. node Express 框架
  13. 超赞 ! 老外的一种避免递归查询所有子部门的树数据表设计与实现!
  14. @excel 注解_SpringBoot中关于Excel的导入和导出
  15. 格力董明珠和小米雷军的10亿赌局 --- 当年的理念谁赢谁输
  16. vscode SVN not found
  17. 心情不好的时候,用 Python 画棵樱花树送给自己吧
  18. 蓝牙耳机什么牌子音质好听?蓝牙耳机音质排行榜
  19. 2017年异步社区优秀图书和作译者评选TOP10
  20. 单片机中断的基本概念

热门文章

  1. 浅谈Java中类加载机制
  2. ultraos win10启动盘_UltraISO制作U盘启动安装MSDN原版Win10系统教程 - SDN系统库
  3. python创建虚拟环境venv_Python 3 使用venv创建虚拟环境
  4. 一组数字中算出最相近的组合_据说在金字塔里发现的这组数字,貌似是通往宇宙的密码...
  5. 添加javascript代码:_JavaScript(1)
  6. 计算机网络 --- 传输层TCP协议
  7. leetcode 116 --- 填充每个节点指向最右节点的next指针
  8. strace命令_在软件部署中使用 strace 进行调试
  9. presto联合查询mysql和ES_presto-mysql/elasticsearch6.0.0安装部署测试,异种数据源关联查询入门实践...
  10. linux spi驱动分析 三,Linux下SPI驱动分析