Skip to content

Commit c645d2a

Browse files
authored
Add Calamari Image Volume docs page (#3201)
1 parent ccafd27 commit c645d2a

9 files changed

Lines changed: 106 additions & 0 deletions

File tree

dictionary-octopus.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,10 @@ autopopulate
4242
awsaccount
4343
azureaccount
4444
azureactivedirectory
45+
azureappservice
4546
azurefile
47+
azureresourcegroup
48+
azurescripting
4649
bacpac
4750
Bento
4851
Blkio
@@ -184,6 +187,7 @@ globbing
184187
Gluster
185188
googleaccount
186189
googleapps
190+
googlecloudscripting
187191
gpedit
188192
groff
189193
Groupsand
-15.4 KB
Loading
-31.2 KB
Loading
-7.49 KB
Loading
-49.3 KB
Loading
-5.25 KB
Loading
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"width":2328,"height":458,"updated":"2026-06-05T05:56:41.392Z"}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"width":2004,"height":2344,"updated":"2026-06-05T05:56:41.562Z"}
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
---
2+
layout: src/layouts/Default.astro
3+
pubDate: 2026-06-05
4+
modDate: 2026-06-05
5+
title: Calamari Image Volume
6+
description: How the Kubernetes agent uses Kubernetes Image Volumes to provide Calamari to script pods
7+
navOrder: 35
8+
---
9+
10+
Calamari is the command-line tool invoked by the Kubernetes agent during deployments. Currently Octopus Server, at the start of the deployment, verifies that the correct version of Calamari is present on the shared storage volume.
11+
12+
When a new version of Calamari is required, this is packaged by Octopus Server, sent to the agent, and then unpacked into the shared volume. Then, during deployment, Calamari is executed from the shared filesystem.
13+
14+
When the Calamari Image Volume feature is enabled, the agent instead mounts Calamari as a read-only [Kubernetes Image Volume](https://kubernetes.io/docs/concepts/storage/volumes/#image) directly into each script pod.
15+
16+
## Benefits
17+
18+
- **Eliminates the Calamari transfer step**: When Octopus Server ships a new version of Calamari, there is no longer a bundle transfer and unpack step. The cluster pulls the updated image through its normal container image pull mechanism.
19+
- **Node-level caching**: The Calamari image is cached at the node level by the container runtime, consistent with how all other container images are managed.
20+
- **Increased performance**: As Calamari is no longer being executed from the shared storage, performance is improved.
21+
- **Reduced persistent storage**: Calamari is no longer stored on the shared persistent volume. Only workspace data and user packages remain on shared storage.
22+
23+
## Requirements
24+
25+
- **Kubernetes**: 1.35 or later. Image Volumes require the `ImageVolume` feature gate, which is enabled by default from Kubernetes 1.35 (Beta) and is GA from 1.36. Clusters running an older version will fall back to the existing transfer-and-unpack mechanism automatically and log a warning.
26+
- **Kubernetes agent**: v3.5.0
27+
- **Octopus Server**: 2026.3.892 or later
28+
29+
## Enabling the feature
30+
31+
Calamari Image Volume is opt-in. To enable it, set the following value in the Helm chart:
32+
33+
```yaml
34+
scriptPods:
35+
calamariImageVolume:
36+
enabled: true
37+
```
38+
39+
Or as a `--set` flag in your Helm command:
40+
41+
```bash
42+
--set scriptPods.calamariImageVolume.enabled=true
43+
```
44+
45+
## Using a private registry
46+
47+
By default, the Calamari image is pulled from the `octopusdeploy` repository on Docker Hub. If your cluster cannot access Docker Hub directly, you must mirror the Calamari image to your own registry and update the repository value accordingly:
48+
49+
```yaml
50+
scriptPods:
51+
calamariImageVolume:
52+
enabled: true
53+
image:
54+
repository: "your-registry.example.com/octopusdeploy"
55+
pullPolicy: IfNotPresent
56+
```
57+
58+
:::div{.warning}
59+
When using a private registry, you are responsible for keeping the mirrored Calamari image up to date as new versions are released.
60+
:::
61+
62+
### Changing the repository
63+
64+
The structure of the Calamari image name is `octopusdeploy/{CalamariTool}:{Version}` where the `{CalamariTool}` and `{Version}` are dictated and provided by Octopus Server during deployment execution.
65+
66+
This means that the `scriptPods.calamariImageVolume.image.repository` should *not* include the `{CalamariTool}` and `{Version}` part of image name.
67+
68+
For example, if your mirrored Calamari image names are like `your-registry.example.com/octopusdeploy/{CalamariTool}`, then the `scriptPods.calamariImageVolume.image.repository` should be `your-registry.example.com/octopusdeploy`.
69+
70+
## Fallback behavior
71+
72+
If Calamari Image Volume is enabled but the cluster is running Kubernetes 1.34 or earlier, the agent will log a warning to the task log and fall back to the existing Octopus Server delivery mechanism.
73+
74+
## Images
75+
76+
**Source code**: [GitHub](https://github.com/OctopusDeploy/Calamari)
77+
78+
### octopusdeploy/calamari
79+
80+
**Default registry**: [Docker Hub](https://hub.docker.com/r/octopusdeploy/calamari)
81+
82+
### octopusdeploy/calamari.azureappservice
83+
84+
**Default registry**: [Docker Hub](https://hub.docker.com/r/octopusdeploy/calamari.azureappservice)
85+
86+
### octopusdeploy/calamari.azureresourcegroup
87+
88+
**Default registry**: [Docker Hub](https://hub.docker.com/r/octopusdeploy/calamari.azureresourcegroup)
89+
90+
### octopusdeploy/calamari.azurescripting
91+
92+
**Default registry**: [Docker Hub](https://hub.docker.com/r/octopusdeploy/calamari.azurescripting)
93+
94+
### octopusdeploy/calamari.googlecloudscripting
95+
96+
**Default registry**: [Docker Hub](https://hub.docker.com/r/octopusdeploy/calamari.googlecloudscripting)
97+
98+
### octopusdeploy/calamari.terraform
99+
100+
**Default registry**: [Docker Hub](https://hub.docker.com/r/octopusdeploy/calamari.terraform)

0 commit comments

Comments
 (0)