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


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/518760.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拔掉数据库的电源会怎样?阿里云数据库新型灾备架构,让云端容灾有“备”无患

拔掉数据库的电源会怎样&#xff1f; 假设我们拔掉数据库的电源会怎样&#xff1f; 在日前举行的阿里云“企业级”云灾备解决方案发布会上&#xff0c;阿里云智能技术战略总监陈绪就来了一场现场“断电”演示&#xff0c;拔掉了数据库的电源。 &#xff08;直播回放&#xf…

高可用 kubernetes 集群部署实践

前言 Kubernetes&#xff08;k8s&#xff09; 凭借着其优良的架构&#xff0c;灵活的扩展能力&#xff0c;丰富的应用编排模型&#xff0c;成为了容器编排领域的事实标准。越来越多的企业拥抱这一趋势&#xff0c;选择 k8s 作为容器化应用的基础设施&#xff0c;逐渐将自己的核…

还不知道 AWS 是什么?这 11 个重点带你认识 AWS !

作者 | Sajan Agrawal译者 | 天道酬勤 责编 | 徐威龙封图| CSDN 下载于视觉中国云计算的出现使软件行业受益匪浅。大多数公司已经改变了策略&#xff0c;将现有的项目转移到云上&#xff0c;并在此基础上构建新的项目。今天&#xff0c;让我们了解一个名为亚马逊网络服务云&…

KeeperErrorCode = Unimplemented for /test

使用Curator时报错&#xff0c;原因是因为版本问题 zookeeper版本&#xff1a;zookeeper-3.4.8 cuartor版本&#xff1a;3.2.0 看Curator官网的声明&#xff1a; 地址&#xff1a;http://curator.apache.org/ The are currently two released versions of Curator, 2.x.x and 3…

Java-用户交互Scanner

next方式 public class Demo01 {public static void main(String[] args) {// 创建一个 扫描器对象&#xff0c;用于接收键盘数据Scanner scanner new Scanner(System.in);System.out.println("使用next 方式接收&#xff1a;");// 判断用户有没有输入字符串if (sc…

【ECS最佳实践】基于多块云盘构建LVM逻辑卷

一、LVM简介 LVM是逻辑盘卷管理&#xff08;Logical Volume Manager&#xff09;的简称&#xff0c;它是Linux环境下对磁盘分区进行管理的一种机制&#xff0c;LVM是建立在硬盘和分区之上的一个逻辑层&#xff0c;来提高磁盘分区管理的灵活性。 LVM最大的特点就是可以对磁盘进行…

剧情反转:今年AI要凉!薪资碾压全行,但人才缺500万!

最近关于AI有两个消息&#xff0c;一个好的&#xff0c;一个坏的。先说好消息。德勤发布《全球人工智能发展白皮书》&#xff0c;预计到2025年&#xff0c;世界人工智能市场规模将超过6万亿美元&#xff01;2017年至2025年复合增长率达30%。毫无疑问&#xff0c;目前AI还是一个…

maven 报错一站式解决方案

文章目录一、本地maven玩耍三部曲1. 先确认项目引用默认的maven配置是否正确2. 查看IntelliJ IDEA查看maven配置是否正确3. 重新导入maven依赖二、本地maven报错5步走2.1. 配置maven阿里云仓库2.2. 删除本地仓库中不完整的jar2.3. 连接外网2.4. 在线下载依赖2.5. 重新导入maven…

如果测试没有梦想,那跟咸鱼有什么区别?

软件质量不是测出来的&#xff0c;但为什么又有这么多测试工程师为了质量而工作&#xff1f;测试是一个成本部门&#xff0c;测试创造的价值是什么&#xff1f;研发的模式在不断地变化&#xff0c;测试的定位如何不断去定义&#xff0c;未来的测试又会是什么形态&#xff1f;今…

使用阿里云极速型NAS构建高可用的GitLab

使用阿里云文件存储NAS构建GitLab高可用环境 GitLab简介 GitLab是一个利用 Ruby on Rails 开发的开源应用程序&#xff0c;实现一个自托管的Git项目仓库&#xff0c;可通过Web界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得…

The following SDK components were not installed: extra-google-m2repository and platform-tools

安装android studio到最后一步的时候遇见了这个问题 。 android studio安装详见Android Studio 安装 经过查阅多篇博客 把他们的解决方案放在一起一顿操作猛如虎&#xff0c;然后就成了。。。 2篇原文链接我放在这里&#xff1a; Android Studio新建工程时SDK缺少extra-an…

数据库中间件漫谈——看看云时代,它会走向何方

来源 | 阿丸笔记封图| CSDN 下载于视觉中国前言随着业务的发展&#xff0c;MySQL数据库中的表会越来越多&#xff0c;表中的数据量也会越来越大&#xff0c;相应地&#xff0c;数据操作的开销也会越来越大&#xff1b;另外&#xff0c;无论怎样升级硬件资源&#xff0c;单台服务…

即插即用,基于阿里云Ganos快速构建云上开源GIS方案

对于轻量级GIS应用&#xff0c;选择具备时空能力的云上数据库再搭配开源GIS软件&#xff0c;能够快速构建稳定、廉价、实用的GIS解决方案。Ganos是阿里云自研时空基础设施&#xff08;PaaS层&#xff09;的核心引擎&#xff0c;该引擎整合了云上异构计算并行加速、OSS大规模存储…

Knative 初体验:Serving Hello World

通过前面两章的学习你已经掌握了很多 Knative 的理论知识&#xff0c;基于这些知识你应该对 Knative 是谁、它来自哪里以及它要做什么有了一定的认识。可是即便如此你可能还是会有一种犹抱琵琶半遮面&#xff0c;看不清真容的感觉&#xff0c;这就好比红娘拿姑娘的 100 张生活照…

Java-if选择结构

if单选择结构 if双选择结构 if多选择结构 嵌套if结构 https://www.bilibili.com/video/BV12J41137hu?p36&spm_id_frompageDriver

数据仓库介绍与实时数仓案例

1.数据仓库简介 数据仓库是一个面向主题的&#xff08;Subject Oriented&#xff09;、集成的&#xff08;Integrate&#xff09;、相对稳定的&#xff08;Non-Volatile&#xff09;、反映历史变化&#xff08;Time Variant&#xff09;的数据集合&#xff0c;用于支持管理决策…

优酷背后的大数据秘密

在本文中优酷数据中台的数据技术专家门德亮分享了优酷从Hadoop迁移到阿里云MaxCompute后对业务及平台的价值。 本文内容根据演讲视频以及PPT整理而成。 大家好&#xff0c;我是门德亮&#xff0c;现在在优酷数据中台做数据相关的事情。很荣幸&#xff0c;我正好见证了优酷从没…

从提取层、处理层、基础结构入手,带你了解Spark和Kafka!

作者 | Jaskaran S. Puri译者 | 火火酱 责编 | 徐威龙封图| CSDN 下载于视觉中国电子商务市场中典型的一天是这样的&#xff1a;每分钟发生1万个事件流&#xff0c;并且要选择合适的工具对其进行处理。本文将帮助你重新创建一个场景&#xff0c;其中有大量的数据流入&#xff0…

Java-switch选择结构

基本类型 public class SwitchDemo01 {public static void main(String[] args) {// case 穿透char grade B;switch (grade) {case A:System.out.println("优秀");break;case B:System.out.println("良好");break;case C:System.out.println("及格&…

高性能服务器架构思路【不仅是思路】

在服务器端程序开发领域&#xff0c;性能问题一直是备受关注的重点。业界有大量的框架、组件、类库都是以性能为卖点而广为人知。然而&#xff0c;服务器端程序在性能问题上应该有何种基本思路&#xff0c;这个却很少被这些项目的文档提及。本文正式希望介绍服务器端解决性能问…