CICD联动阿里云容器服务Kubernetes实践之Bamboo篇
本文档以构建一个 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篇相关推荐
- 使用阿里云容器服务Kubernetes实现蓝绿发布功能
背景 在发布应用时,经常需要先上线一个新版本,用较小的流量去测试一下该新版本的可用性.但是Kubernetes的ingress resource 并没有实现流量控制与切分的功能,导致针对同一个域名下的 ...
- 阿里云容器服务DaemonSet实践
DaemonSet 保证在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志.监控或者其他系统管理应用.下面以日志收集 fluentd 为例,看下如何使用阿里云容器服务控制台创建Daemo ...
- 一小时快速搭建基于阿里云容器服务-Kubernetes的Web应用
本文面向的读者 如果您是一个Kubernetes的初学者,本文可以帮助你快速在云上搭建一个可实际使用的集群环境,并发布自己的第一个应用.你无须提前准备任何的硬件资源或者下载任何的软件包. 如果您已经 ...
- 【阿里云-容器】阿里云容器服务Kubernetes版快速入门
一.部署并公开 本步骤指导您如何在ACK集群中快速部署一个无状态应用(Deployment),即魔方游戏,并将该应用向公网公开.关于创建Deployment的详细参数描述,请参见创建无状态工作负载De ...
- Istio 在阿里云容器服务的部署及流量治理实践
目标 在阿里云容器服务 Kubernetes 集群上部署 Istio 服务网格 实践灰度发布.故障注入.熔断等 Istio 流量管理特性 准备工作 安装和设置 kubectl 客户端,请参考不同的操作 ...
- 阿里云容器服务差异化 SLO 混部技术实践
背景介绍 阿里巴巴在"差异化 SLO 混合部署"上已经有了多年的实践经验,目前已达到业界领先水平.所谓"差异化 SLO",就是将不同类型的工作负载混合运行在同一 ...
- 首批!阿里云容器服务 ACK 顺利通过信通院云原生混部项目评估
作者:OSCAR 为了分享过去一年云原生产业联盟(CNIA)在标准建设.评估认证.技术研究.实践合作等方面的工作成果.探索行业最新趋势动态,云原生产业联盟于 2023 年 1 月举办了 2022 年度 ...
- 通过阿里云容器服务K8S Ingress Controller实现应用服务的灰度发布
简介 日常工作中我们经常需要对服务进行版本更新升级,为此我们经常使用到的发布方式有滚动升级.分批暂停发布.蓝绿发布以及灰度发布,今天主要跟大家分享下在阿里云容器服务Kubernetes集群中如何通过I ...
- 阿里云容器服务cni网络插件terway非官方网络性能测试
作者:张荣滨,酷划在线后端架构师,关注微服务治理,容器化技术,Service Mesh等技术领域 terway网络性能测试 酷划在线成立于2014年,是国内激励广告行业的领军者.酷划致力于打造一个用户 ...
最新文章
- Linus Torvalds: 成功的项目源于99%的汗水与1%的创新
- iOS动画编程-Layer动画[ 2 ] Getting Started with Layer Animations
- php拒绝服务,CVE-2015-7803
- 【Linux】一步一步学Linux——fg命令(130)
- oracle常用角色权限,Oracle角色、权限的一些常用视图 - 一夜寒江
- PowerPC VxWorks BSP分析(1)--PowerPC体系结构
- C#: 8.0 和 9.0 常用新特性
- P4288 [SHOI2014]信号增幅仪 最小圆覆盖
- message:MCODE参数不存在,mobile类型mcode参数必需
- 船舶定位实时查询系统_港口人员精准定位系统,实时安全管控与智能预警
- JAVA 正则表达式 RegexUtil
- node Express 框架
- 超赞 ! 老外的一种避免递归查询所有子部门的树数据表设计与实现!
- @excel 注解_SpringBoot中关于Excel的导入和导出
- 格力董明珠和小米雷军的10亿赌局 --- 当年的理念谁赢谁输
- vscode SVN not found
- 心情不好的时候,用 Python 画棵樱花树送给自己吧
- 蓝牙耳机什么牌子音质好听?蓝牙耳机音质排行榜
- 2017年异步社区优秀图书和作译者评选TOP10
- 单片机中断的基本概念
热门文章
- 浅谈Java中类加载机制
- ultraos win10启动盘_UltraISO制作U盘启动安装MSDN原版Win10系统教程 - SDN系统库
- python创建虚拟环境venv_Python 3 使用venv创建虚拟环境
- 一组数字中算出最相近的组合_据说在金字塔里发现的这组数字,貌似是通往宇宙的密码...
- 添加javascript代码:_JavaScript(1)
- 计算机网络 --- 传输层TCP协议
- leetcode 116 --- 填充每个节点指向最右节点的next指针
- strace命令_在软件部署中使用 strace 进行调试
- presto联合查询mysql和ES_presto-mysql/elasticsearch6.0.0安装部署测试,异种数据源关联查询入门实践...
- linux spi驱动分析 三,Linux下SPI驱动分析