本文檔以構建一個 Java 軟件項目並部署到 阿里雲容器服務的Kubernetes集羣 爲例說明如何使用 Bamboo在阿里雲Kubernetes服務上運行Remote Agents並在agents上運行Build Plans。java
本示例中建立的GitHub源碼項目地址爲:linux
https://github.com/AliyunContainerService/jenkins-demo.git
分支爲:git
bamboo
kaniko-docker-cfg secret用於Remote Agent上構建任務使用kaniko推送容器鏡像時的權限配置github
kubectl -n bamboo create secret generic kaniko-docker-cfg --from-file=/root/.docker/config.json
上面命令中的/root/.docker/config.json,是在linux服務器上使用root用戶經過如下命令生成的:docker
docker login registry.cn-hangzhou.aliyuncs.com
注意: 本示例中的clusterrolebinding爲admin權限, 具體使用中能夠根據本身的須要建立最小權限的serviceaccountjson
bamboo-agent.yaml:api
--- 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 下查看:app
Job配置:ui
本示例中script body爲:
kaniko -f `pwd`/Dockerfile -c `pwd` --destination=registry.cn-hangzhou.aliyuncs.com/haoshuwei/bamboo-java-demo:latest
本示例中script body爲:
sed -i 's#IMAGE_URL#registry.cn-hangzhou.aliyuncs.com/haoshuwei/bamboo-java-demo:latest#' ./*.yaml kubectl apply -f ./
[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
原文連接 本文爲雲棲社區原創內容,未經容許不得轉載。