• 如何基于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: 1 #实例数量
      revisionHistoryLimit: 2 #保留的历史记录数,设置为0将清理部署的所有历史记录,无法回滚
      strategy:
        type: Recreate   #更新策略为快速更新,即关闭所有实例重新创建
      template: #pod模板
        metadata:
          labels:
            app: teamcity
        spec:
          containers:
          - image: jetbrains/teamcity-server  #镜像
            imagePullPolicy: Always  #拉取策略
            name: teamcity
            ports:  #端口列表
              - containerPort: 8111  #端口
            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: 30 #删除需要时间
          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: 8111
          nodePort: 30001
      selector:
        app: teamcity
     

    代理端YAML定义

    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        app: tc-agent
      name: tc-agent
    spec:
      replicas: 3
      revisionHistoryLimit: 2 #保留的历史记录数,设置为0将清理部署的所有历史记录,无法回滚
      strategy:
        rollingUpdate: #滚动更新配置
          maxSurge: 1
          maxUnavailable: 0
        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: 4
                memory: 10024Mi
              requests: #代理构建时消耗比较大,尽量分配多点资源
                cpu: 1
                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: 30
          volumes:
          - name: vol
            emptyDir: {} #临时目录
          hostNetwork: true
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        app: tc-agent
      name: tc-agent
    spec:
      ports:
      - name: tcp-9090-9090
        nodePort: 0
        port: 9090
        protocol: TCP
        targetPort: 9090
      selector:
        app: tc-agent
      sessionAffinity: None
      type: ClusterIP

  • 相关阅读:
    paip.禁用IKAnalyzer 的默认词库.仅仅使用自定义词库.
    paip.语义分析分词常见的单音节字词 2_deDuli 单字词 774个
    IFL嵌入式小组技术博客入口导航
    devc++5.0.0.9的调试方法
    getch()、getche()和getchar()之间的区别
    devc++5.0.0.9的调试方法
    声明和定义的区别
    IFL嵌入式小组技术博客入口导航
    C/C++程序到内存分配个人总结
    getch()、getche()和getchar()之间的区别
  • 原文地址:https://www.cnblogs.com/codelove/p/11897370.html
Copyright © 2020-2023  润新知