开发者社区> 流生> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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

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

本文档以构建一个 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: bamboo
  name: bamboo

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: bamboo-cluster-admin
subjects:
  - kind: ServiceAccount
    name: bamboo
    namespace: bamboo
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io

---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: bamboo-agent
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bamboo-agent
  template:
    metadata:
      labels:
        app: bamboo-agent
    spec:
      serviceAccountName: bamboo
      containers:
      - name: bamboo-agent
        env:
        - name: BAMBOO_SERVER_URL
          value: http://xx.xx.xx.xx:8085
        image: registry.cn-hangzhou.aliyuncs.com/haoshuwei/docker-bamboo-agent:v1
        imagePullPolicy: Always
        volumeMounts:
          - mountPath: /root/.docker/
            name: kaniko-docker-cfg
      volumes:
        - name: kaniko-docker-cfg
          secret:
            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 下查看:
image

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

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

image

image

3.2 配置Stages并添加Job

image

Job配置:

3.2.1 源码拉取

image

3.2.2 mvn打包

image

3.2.3 kaniko打包和推送容器镜像

image

本示例中script body为:

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

3.2.4 kubectl部署应用到kubernetes

image
本示例中script body为:

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

3.3 运行build

image

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

image

4. 其他

本示例中的镜像registry.cn-hangzhou.aliyuncs.com/haoshuwei/docker-bamboo-agent:v1的制作可以参考:
https://github.com/haoshuwei/docker-bamboo-agent.git

参考:
https://confluence.atlassian.com/get-started-with-bitbucket/get-started-with-bitbucket-cloud-856845168.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
直播带练 | 30 分钟用阿里云容器服务和容器网络文件系统搭建 WordPress 网站
如何在 30 分钟内用阿里云容器服务和容器网络文件系统搭建 WordPress 网站?点击下文查看直播回放,立即获取相关知识!
193 0
与阿里云容器服务 ACK 发行版的深度对话第一弹:如何借助 sealer 实现快速构建 & 部署
本文将以ACK 发行版的口吻为大家详细讲解阿里巴巴的开源集群镜像技术 sealer,以及如何借助它来实现阿里云 ACK 服务的快速稳定交付。
222 0
国内唯一!阿里云容器服务进入 Forrester 领导者象限
近日,国际权威咨询机构 Forrester 发布《 The Forrester WaveTM: Public Cloud Container Platforms, Q1 2022 》报告,报告显示,阿里云进入全球公共云容器平台"领导者"象限,这是中国云计算厂商首次进入该象限。
345 0
在阿里云容器服务上基于Istio实现东西向流量管理
本文通过示例演示了Istio针对集群内服务之间的东西向流量管理、或者称之为服务网格之间的流量管理。
2666 0
阿里云容器服务新增支持Kubernetes编排系统,性能重大提升
作为容器编排系统的两大流派, Kubernetes和Swarm的重要性不言而喻。融合了两大高性能集成的阿里云容器服务,不仅可以降低50%的基础架构成本,提高交付速度将产品迭代加快13倍,还可以实现秒级的海量容器启动、秒级的应用架构伸缩与恢复、分钟级部署。
4061 0
全球首批通过Kubernetes一致性认证,阿里云容器服务之最新解读
2017 年 11 月 13 日,Cloud Native Computing Foundation (CNCF) 宣布认证Kubernetes一致性计划以推动Kubernetes产品的一致性和可移植性,阿里云成全球首批通过认证的32家云计算及平台厂商之一。
6979 0
阿里云双11访谈之容器服务
在阿里云双11访谈容器服务专场中,阿里云容器服务高级专家戒空为大家介绍了阿里云容器服务以及容器镜像服务的基本情况和各自的优势所在,并且针对“双11”这样大流量的场景分享了容器技术和容器镜像技术的最佳实践。
7800 0
Python应用容器化(二)----使用阿里云容器服务部署应用
我们曾经在Python程序容器化(一)中介绍了如何将一个克隆版Twitter程序(retwit-py)容器化,并使用docker-compose运行于宿主机上。对于经典的Web程序,处理前端请求的Web服务通常都是可扩展伸缩的。生产环境中,随着访问量的不断增长,需要部署多个Web服务实例,并通过负载
5943 0
+关注
文章
问答
来源圈子
更多
容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级 Kubernetes 容器化应用的全生命周期管理。容器服务 Kubernetes 版简化集群的搭建和扩容等工作,整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳的 Kubernetes 容器化应用运行环境。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
Kubernetes上基于Istio体验云原生应用实践
立即下载
基于 kubernetes 的企业级容器云
立即下载
阿里云容器服务Knative 极致 Serverless 体验
立即下载