如何基于k8s快速搭建TeamCity(YAML分享)
前言
最近有朋友基于之前的博客《Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)》搭建TeamCity时出现了一些问题,由于平常比较忙,没有及时答复,非常抱歉。
这里分享下基于本地k8s集群(云端k8s服务注意使用云盘或者其他存储)搭建TeamCity的相关Yaml的配置文件,注意使用“kubectl apply -f <路径>”命令执行。
服务端YAML定义
apiVersion: apps/v1beta1
kind: Deployment
metadata:
labels:
app: teamcity
name: teamcity
spec:
replicas: #实例数量
revisionHistoryLimit: #保留的历史记录数,设置为0将清理部署的所有历史记录,无法回滚
strategy:
type: Recreate #更新策略为快速更新,即关闭所有实例重新创建
template: #pod模板
metadata:
labels:
app: teamcity
spec:
containers:
- image: jetbrains/teamcity-server #镜像
imagePullPolicy: Always #拉取策略
name: teamcity
ports: #端口列表
- containerPort: #端口
resources:
limits:
cpu: 1000m #最大CPU,这里为1核
memory: 4184Mi #最大内存
requests:
cpu: 97m #预分配CPU,这里为0.097核
memory: 2092Mi #预分配内存
volumeMounts:
- mountPath: /data/teamcity_server/datadir
name: data-vol
- mountPath: /opt/teamcity/logs
name: log-vol
nodeName: k8s-node1 #强制约束将Pod调度到指定的Node节点上
restartPolicy: Always #重启策略
terminationGracePeriodSeconds: #删除需要时间
volumes:
- name: data-vol
hostPath: #使用主机目录
path: /var/teamcity
- name: log-vol
emptyDir: {} #临时目录
hostNetwork: true
---
kind: Service
apiVersion: v1
metadata:
name: teamcity-service
spec:
type: NodePort #通过节点端口提供对外访问
ports:
- port:
nodePort:
selector:
app: teamcity
代理端YAML定义
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: tc-agent
name: tc-agent
spec:
replicas:
revisionHistoryLimit: #保留的历史记录数,设置为0将清理部署的所有历史记录,无法回滚
strategy:
rollingUpdate: #滚动更新配置
maxSurge:
maxUnavailable:
type: RollingUpdate #使用滚动更新策略
template:
metadata:
labels:
app: tc-agent
spec:
containers:
- env:
- name: AGENT_NAME #代理名称
value: Agent1
- name: SERVER_URL #服务端访问地址
value: http://172.16.2.202:30001
- name: DOCKER_IN_DOCKER
value: start
image: jetbrains/teamcity-agent
imagePullPolicy: Always
name: tc-agent
resources: #资源限制
limits:
cpu:
memory: 10024Mi
requests: #代理构建时消耗比较大,尽量分配多点资源
cpu:
memory: 4096Mi
securityContext:
privileged: true #特级权限
volumeMounts:
- mountPath: /data/teamcity_agent/conf
name: vol
- mountPath: /var/lib/docker
name: vol
dnsPolicy: ClusterFirst
nodeName: k8s-node3 #强制约束将Pod调度到指定的Node节点上
restartPolicy: Always
terminationGracePeriodSeconds:
volumes:
- name: vol
emptyDir: {} #临时目录
hostNetwork: true
---
apiVersion: v1
kind: Service
metadata:
labels:
app: tc-agent
name: tc-agent
spec:
ports:
- name: tcp--
nodePort:
port:
protocol: TCP
targetPort:
selector:
app: tc-agent
sessionAffinity: None
type: ClusterIP
如何基于k8s快速搭建TeamCity(YAML分享)的更多相关文章
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
- 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈
本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...
- 基于Docker快速搭建多节点Hadoop集群--已验证
Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...
- springboot+dubbo基于zookeeper快速搭建一个demo
由于小编是在windows环境下搭建的,故该示例均为在windows下操作,这里只是提供一个快速搭建思路,linux操作也基本上差不多. 首先本示例的dubbo是基于zookeeper发布订阅消息的, ...
- 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目
目录 前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文 ...
- 基于 Jenkins 快速搭建持续集成环境
什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...
- 基于Vue-cli 快速搭建项目
Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装v ...
- 基于Docker快速搭建ELK【华为云技术分享】
[摘要] 本文基于自建的Docker平台速搭建一套完整的ELK系统,相关的镜像直接从Docker Hub上获取,可以快速实现日志的采集和分析检索. 准备镜像 l 获取ES镜像:docker pull ...
- 基于Docker快速搭建ELK
[摘要] 本文基于自建的Docker平台速搭建一套完整的ELK系统,相关的镜像直接从Docker Hub上获取,可以快速实现日志的采集和分析检索. 准备镜像 l 获取ES镜像:docker pull ...
随机推荐
- Java自动化测试框架-03 - TestNG之Test Group篇 - 我们一起组团打怪升级(详细教程)
简介 其实这篇文章的group宏哥在上一篇中就提到过,但是就是举例一笔带过的,因此今天专门有一篇文章来讲解Group的相关知识.希望大家茅塞顿开 ,有着更进一步认识和了解测试组. 一.Test Gro ...
- Python3_基础
目录 数据类型 变量 数据类型的转换 算术操作符 输入 字符串常用方法 数据类型 我们先来看看三种常见的数据类型 字符串 str 在Python中,字符串一般都用引号引起来,不管是用单引号还是双引号都 ...
- PMBOK(第六版) PMP笔记-质量审计、风险审计、采购审计的区分
质量审计.风险审计.采购审计的区分 三个概念的相同之处: 都是审计的概念 都是特定知识领域的审计 三个概念的区别: (1)三个概念虽然都是审计,但分布在不同的管理过程组. ·质量审计:执行过程组, ...
- Cocos2d-x 学习笔记(11.6) Sequence
1. Sequence 动作序列.动作按参数顺序执行,动作总时长为每个动作的时长之和. 1.1 成员变量 FiniteTimeAction *_actions[]; float _split; // ...
- Mac系统 安装Photoshop CC 2018破解版
应用场景 本人从事前端行业,但是工作中有时也需要会点PS技能,之前一直使用window系统,突然换了Mac其他软件基本都差不多安装完了,就剩下比较难搞的PS.刚开始按照网上乱七八槽的教程下载过好多次都 ...
- php和apache的关系是什么?
例如我们在自己的电脑里练习如何做网站的时候,我们需要搭建一个本地环境,这个本地环境就是PHP+APACHE + MYSQL的环境,这样就可以让我们的电脑拥有PHP要求的运行环境了.那么php和apac ...
- pytest4-单文件使用fixture(Fixtures as Function arguments)
Fixtures as Function arguments (fixture作为函数参数传入)Test functions can receive fixture objects by naming ...
- Vue + Js 面试宝典
https://github.com/rohan-paul/Awesome-JavaScript-Interviewshttps://github.com/nieyafei/front-end-int ...
- 百万年薪python之路 -- 文件操作
1.文件操作: f = open("zcy.txt" , mode="r" , encoding="UTF-8") open() 打开 第一 ...
- qt读取文本
直接 代码: // lyy : 2016/8/26 16:40:11 说明:读取文本 bool FileOpeartion:: GetTheTextContent (const QString str ...