The easiest and most effective method for creating and managing Azure DevOps agents on Kubernetes, without the need to spend time and effort wrestling with settings! Scale-out as much as is necessary and demolish them gracefully.
The table presented below outlines the correspondence between Helm chart versions, Docker tags, and the Azure DevOps agent versions included within those Docker images.
Helm Version | Docker Tag | Agent Version |
---|---|---|
2.1.0 | 3.248.0-stable-v2.1.0 | 3.248.0 |
2.0.1 | 3.248.0 | 3.248.0 |
2.0.0 | 3.232.3 | 3.232.3 |
1.0.7 | 2.214.1 | 2.214.1 |
This release includes the same agent version but different Docker image tag and different bash invocations!
- ✅ duplicate apt install command
- ✅ yq download the latest version
- ✅ Upgrade VSTS agent to 3.248.0
- ✅ Optimize the Dockerfile steps and add comment lines.
- ✅ ubuntu 20.04 based image
- ✅ yq upgrade to 4.40.7
- ✅ docker command could be executed without sudo
- ✅ Support for VSTS agent 3.232.3
- Pod Annotations have been implemented
- Service Account support has been implemented
✅ Thanks for contribitions to Alexandre Saison
✅ PR: #8
Since the 1.0.8 release , the Dockerfile and Helm chart have been configured to utilize a non-root user.
✅ Issue : Non-root user should be implemented
✅ Issue : docker could be called without sudo
- Helm
- Personal Access Token with Agent Pool manage scope
You don't need to follow any more instructions beyond the standard self-hosted agent installation in order to utilize this helm chart.
It is pretty straight-forward process with sufficient scope. Please choose one of the links below to generate a PAT.
⚠️ Only the PAT creation procedures are required
- First you need to add repository (if you haven't done yet before)
helm repo add btungut https://btungut.github.io
- Install the helm chart with required parameters
- With bash:
helm install {RELEASE-NAME} btungut/azure-devops-agent \
--set agent.pat={PAT} \
--set agent.organizationUrl=https://dev.azure.com/{YOUR-ORG} \
--namespace {YOUR-NS}
- With powershell:
helm install {RELEASE-NAME} btungut/azure-devops-agent `
--set agent.pat={PAT} `
--set agent.organizationUrl=https://dev.azure.com/{YOUR-ORG} `
--namespace {YOUR-NS}
Run the following snippet to uninstall the release:
helm delete {RELEASE-NAME}
⚠️ Helm chart provides two option for authentication. Please use only one of them.
Name | Description | Value |
---|---|---|
agent.pat |
(1st Option) Personal access token for authentication | "" |
agent.patSecret |
(2nd Option) Already existing secret name that stores PAT | "" |
agent.patSecretKey |
(2nd Option) Key (field) name of the PAT that is stored in secret | "pat" |
Name | Description | Value |
---|---|---|
agent.organizationUrl |
Server / organization url, e.g.: https://dev.azure.com/your-organization-name | "" |
agent.pool |
Agent pool name which the build agent is placed into | "Default" |
agent.workingDirectory |
Working directory of the agent | "_work" |
agent.extraEnv |
Additional environment variables as dictionary | {} |
Name | Description | Value |
---|---|---|
image.repository |
Azure DevOps agent image repository | btungut/azure-devops-agent |
image.tag |
Azure DevOps agent image tag (immutable tags are recommended) | 3.248.0 |
image.pullPolicy |
Azure DevOps agent image pull policy | IfNotPresent |
image.pullSecrets |
Azure DevOps agent image pull secrets | [] |
replicaCount |
Replica count for deployment | 1 |
resources.requests.cpu |
CPU request value for scheduling | "100m" |
resources.requests.memory |
Memory request value for scheduling | "128Mi" |
resources.limits.cpu |
CPU limit value for scheduling | "500m" |
resources.limits.memory |
Memory limit value for scheduling | "512Mi" |
volumes |
Volumes for the container | [] |
volumeMounts |
Volume mountings | [] |
Please refer the values.yaml for other parameters.
The binaries and packages listed below are included in the docker image used by the helm chart:
- Ubuntu 20.04
- unzip
- jq
- yq
- git
- helm
- kubectl
- Powershell Core
- Docker CLI
- Azure CLI
- with Azure DevOps extension