Teamcity Agent
Deployment
YAML
apiVersion: apps/v1
kind: Deployment
metadata:
name: teamcity-agent-deployment
labels:
app: teamcity-agent
spec:
replicas: 1
selector:
matchLabels:
app: teamcity-agent
template:
metadata:
labels:
app: teamcity-agent
spec:
containers:
- name: teamcity-agent
image: jetbrains/teamcity-agent:latest
ports:
- containerPort: 9090
resources:
limits:
cpu: 2
memory: 4000Mi
requests:
cpu: 50m
memory: 50Mi
volumeMounts:
- mountPath: /data/teamcity_agent/conf
name: teamcity-agent
restartPolicy: Always
volumes:
- name: teamcity-agent
persistentVolumeClaim:
claimName: teamcity-agent
Service
YAML
apiVersion: v1
kind: Service
metadata:
name: teamcity-agent-service
labels:
app: teamcity-agent
spec:
selector:
app: teamcity-agent
ports:
- protocol: TCP
port: 9090
Volumes
YAML
apiVersion: v1
kind: PersistentVolume
metadata:
namespace: default
name: teamcity-agent
labels:
type: local
spec:
storageClassName: teamcity-agent
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/kindvol/teamcity/teamcity-agent"
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: teamcity-agent
namespace: default
spec:
storageClassName: teamcity-agent
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
RBAC
YAML
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: teamcity:manage-agents
rules:
- apiGroups: [""]
resources: ["namespaces"]
verbs: ["list", "get"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "create", "list", "delete"]
- apiGroups: ["extensions", "apps"]
resources: ["deployments"]
verbs: ["list", "get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: teamcity:manage-agents
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: teamcity:manage-agents
subjects:
# proper RoleBinding subject depends on your Authentication strategy
# use one of examples below
# if you use OIDC/Certificate auth strategies
- kind: User
name: teamcity
# if you use Service account
- kind: ServiceAccount
name: teamcity