前言

最近有朋友基于之前的博客《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分享)的更多相关文章

  1. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  2. 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈

    本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...

  3. 基于Docker快速搭建多节点Hadoop集群--已验证

    Docker最核心的特性之一,就是能够将任何应用包括Hadoop打包到Docker镜像中.这篇教程介绍了利用Docker在单机上快速搭建多节点 Hadoop集群的详细步骤.作者在发现目前的Hadoop ...

  4. springboot+dubbo基于zookeeper快速搭建一个demo

    由于小编是在windows环境下搭建的,故该示例均为在windows下操作,这里只是提供一个快速搭建思路,linux操作也基本上差不多. 首先本示例的dubbo是基于zookeeper发布订阅消息的, ...

  5. 如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

    目录 前言 项目目录 搭建项目 1. docker安装启动mysql以及redis 1.1 安装mysql 1.2 安装redis 2. 初始化数据库 3.创建项目 4.初始化代码 4.1 全局配置文 ...

  6. 基于 Jenkins 快速搭建持续集成环境

      什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域越来越红火 ...

  7. 基于Vue-cli 快速搭建项目

    Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装v ...

  8. 基于Docker快速搭建ELK【华为云技术分享】

    [摘要] 本文基于自建的Docker平台速搭建一套完整的ELK系统,相关的镜像直接从Docker Hub上获取,可以快速实现日志的采集和分析检索. 准备镜像 l 获取ES镜像:docker pull ...

  9. 基于Docker快速搭建ELK

    [摘要] 本文基于自建的Docker平台速搭建一套完整的ELK系统,相关的镜像直接从Docker Hub上获取,可以快速实现日志的采集和分析检索. 准备镜像 l  获取ES镜像:docker pull ...

随机推荐

  1. 拿起键盘就是干:跟我一起徒手开发一套分布式IM系统

    1.引言 老读者应该还记得我在去年国庆节前分享过一篇<技术干货:从零开始,教你设计一个百万级的消息推送系统>,虽然我在文中有贴一些伪代码,依然有些朋友希望能直接分享一些可以运行的源码.好吧 ...

  2. 前端开发 JavaScript 干货知识点汇总

    很多初学的朋友经常问我,前端JavaScript都需要学习哪些东西呀?哪些是JavaScript的重点知识啊? 其实做前端开发工程师,所有的知识点都是我们学习必备的东西,只有扎实的技术基础才是高薪的关 ...

  3. 新手也能看懂的 SpringBoot 异步编程指南

    本文已经收录自 springboot-guide : https://github.com/Snailclimb/springboot-guide (Spring Boot 核心知识点整理. 基于 S ...

  4. [51nod1670] 打怪兽

    lyk在玩一个叫做“打怪兽”的游戏.游戏的规则是这样的.lyk一开始会有一个初始的能量值.每次遇到一个怪兽,若lyk的能量值>=怪兽的能量值,那么怪兽将会被打败,lyk的能量值增加1,否则lyk ...

  5. SpringBoot:1.开启SpringBoot之旅

    什么是 Spring Boot Spring Boot是Spring团队设计用来简化Spring应用的搭建和开发过程的框架.该框架对第三方库进行了简单的默认配置,通过Spring Boot构建的应用程 ...

  6. Django 官方推荐的姿势:类视图

    作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 在开发网站的过程中,有一些视图函数虽然处理的对象不同,但是其大致的代码逻辑是一样的. ...

  7. 本月16日SpringBoot2.2发布,有哪些变化先知晓

    本月(2019年10月16日)Spring Boot 2.2已经正式发布了!在此篇文章中,将给大家介绍一下2.2版为大家带来了哪些重要的新变化.笔者用心书写,希望阅读完成之后转发关注,你的支持是我不竭 ...

  8. Python之路(第四十篇)进程池

    一.进程池 进程池也是通过事先划分一块系统资源区域,这组资源区域在服务器启动时就已经创建和初始化,用户如果想创建新的进程,可以直接取得资源,从而避免了动态分配资源(这是很耗时的). 线程池内子进程的数 ...

  9. C++沉思录笔记 —— 序幕

    #include <stdio.h>   class Trace{public: void print(const char* s) { printf("%s\n", ...

  10. @EnableTransactionalManager 发生了什么

    @EnableTransactionalManager 利用TransactionManagementConfigurationSelector 给容器中注入bean,导入2个组件: AutoProx ...