DirectorySecurity AdvisoriesPricing
Sign in
Directory
alloy logoHELM

alloy

Helm chart
Last changed
Request a free trial

Contact our team to test out this Helm chart and related images for free. Please also indicate any other images you would like to evaluate.

Overview
Chart tags
Default values
Chart metadata
Images

Tag:
Compare:

1
# -- Overrides the chart's name. Used to change the infix in the resource names.
2
nameOverride: null
3
# -- Overrides the chart's namespace.
4
namespaceOverride: null
5
# -- Overrides the chart's computed fullname. Used to change the full prefix of
6
# resource names.
7
fullnameOverride: null
8
## Global properties for image pulling override the values defined under `image.registry` and `configReloader.image.registry`.
9
## If you want to override only one image registry, use the specific fields but if you want to override them all, use `global.image.registry`
10
global:
11
image:
12
# -- Global image registry to use if it needs to be overridden for some specific use cases (e.g local registries, custom images, ...)
13
registry: ""
14
# -- Optional set of global image pull secrets.
15
pullSecrets: []
16
# -- Global image pull policy to apply to all containers. Overrides `image.pullPolicy` and `configReloader.image.pullPolicy`.
17
pullPolicy: ""
18
# -- Security context to apply to the Grafana Alloy pod.
19
podSecurityContext: {}
20
crds:
21
# -- Whether to install CRDs for monitoring.
22
create: true
23
## Various Alloy settings. For backwards compatibility with the grafana-agent
24
## chart, this field may also be called "agent". Naming this field "agent" is
25
## deprecated and will be removed in a future release.
26
alloy:
27
configMap:
28
# -- Create a new ConfigMap for the config file.
29
create: true
30
# -- Content to assign to the new ConfigMap. This is passed into `tpl` allowing for templating from values.
31
content: ''
32
# -- Name of existing ConfigMap to use. Used when create is false.
33
name: null
34
# -- Key in ConfigMap to get config from.
35
key: null
36
clustering:
37
# -- Deploy Alloy in a cluster to allow for load distribution.
38
enabled: false
39
# -- Name for the Alloy cluster. Used for differentiating between clusters.
40
name: ""
41
# -- Name for the port used for clustering, useful if running inside an Istio Mesh
42
portName: http
43
# -- Minimum stability level of components and behavior to enable. Must be
44
# one of "experimental", "public-preview", or "generally-available".
45
stabilityLevel: "generally-available"
46
# -- Path to where Grafana Alloy stores data (for example, the Write-Ahead Log).
47
# By default, data is lost between reboots.
48
storagePath: /tmp/alloy
49
# -- Enables Grafana Alloy container's http server port.
50
enableHttpServerPort: true
51
# -- Address to listen for traffic on. 0.0.0.0 exposes the UI to other
52
# containers.
53
listenAddr: 0.0.0.0
54
# -- Port to listen for traffic on.
55
listenPort: 12345
56
# -- Scheme is needed for readiness probes. If enabling tls in your configs, set to "HTTPS"
57
listenScheme: HTTP
58
# -- Initial delay for readiness probe.
59
initialDelaySeconds: 10
60
# -- Timeout for readiness probe.
61
timeoutSeconds: 1
62
# -- Base path where the UI is exposed.
63
uiPathPrefix: /
64
# -- Enables sending Grafana Labs anonymous usage stats to help improve Grafana
65
# Alloy.
66
enableReporting: true
67
# -- Extra environment variables to pass to the Alloy container.
68
extraEnv: []
69
# -- Maps all the keys on a ConfigMap or Secret as environment variables. https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.24/#envfromsource-v1-core
70
envFrom: []
71
# -- Override the entrypoint command for the Alloy container. When set, this
72
# replaces the image's default entrypoint (the chart-provided `args` are still
73
# passed). Useful on Windows where the binary lives at a different path, for
74
# example `["C:\\Program Files\\GrafanaLabs\\Alloy\\alloy.exe"]`. Leave empty
75
# to use the image's default entrypoint.
76
command: []
77
# -- Extra args to pass to `alloy run`: https://grafana.com/docs/alloy/latest/reference/cli/run/
78
extraArgs: []
79
# -- Extra ports to expose on the Alloy container.
80
# If `service.type` is `NodePort`, each item may set `nodePort` to choose the Service NodePort for that port.
81
extraPorts: []
82
# - name: "faro"
83
# nodePort: 31129
84
# port: 12347
85
# targetPort: 12347
86
# protocol: "TCP"
87
# appProtocol: "h2c"
88
89
# -- Host aliases to add to the Alloy container.
90
hostAliases: []
91
# - ip: "20.21.22.23"
92
# hostnames:
93
# - "company.grafana.net"
94
95
mounts:
96
# -- Mount /var/log from the host into the container for log collection.
97
varlog: false
98
# -- Mount /var/lib/docker/containers from the host into the container for log
99
# collection.
100
dockercontainers: false
101
# -- Extra volume mounts to add into the Grafana Alloy container. Does not
102
# affect the watch container.
103
extra: []
104
# -- Security context to apply to the Grafana Alloy container.
105
securityContext: {}
106
# -- Resource requests and limits to apply to the Grafana Alloy container.
107
resources: {}
108
# -- Resize policy for the Grafana Alloy container. Controls whether an
109
# in-place resize of CPU or memory restarts the container.
110
resizePolicy: []
111
# - resourceName: cpu
112
# restartPolicy: NotRequired
113
# - resourceName: memory
114
# restartPolicy: RestartContainer
115
116
# -- Set lifecycle hooks for the Grafana Alloy container.
117
lifecycle: {}
118
# preStop:
119
# exec:
120
# command:
121
# - /bin/sleep
122
# - "10"
123
124
# -- Set livenessProbe for the Grafana Alloy container.
125
livenessProbe: {}
126
image:
127
# -- Grafana Alloy image registry (defaults to docker.io)
128
registry: cgr.dev
129
# -- Grafana Alloy image repository.
130
repository: chainguard-private/grafana-alloy
131
# -- (string) Grafana Alloy image tag. When empty, the Chart's appVersion is
132
# used.
133
tag: 1.21.3-r0
134
# -- Use a distroless version of Grafana Alloy image (experimental).
135
#
136
# Appends "-distroless" to the image tag (or the chart's appVersion when tag is empty). Ignored when image.digest is set.
137
distroless: false
138
# -- Grafana Alloy image's SHA256 digest (either in format "sha256:XYZ" or "XYZ"). When set, will override `image.tag`.
139
digest: sha256:fe42f5fde9c5fc593a0abd1950acd7c933bfa0ff443e159a30503332ead29bdc
140
# -- Grafana Alloy image pull policy.
141
pullPolicy: IfNotPresent
142
# -- Optional set of image pull secrets.
143
pullSecrets: []
144
rbac:
145
# -- Whether to create RBAC resources for Alloy.
146
create: true
147
# -- If set, only create Roles and RoleBindings in the given list of namespaces, rather than ClusterRoles and
148
# ClusterRoleBindings. If not using ClusterRoles, bear in mind that Alloy will not be able to discover cluster-scoped
149
# resources such as Nodes.
150
namespaces: []
151
# -- The rules to create for the ClusterRole or Role objects.
152
rules:
153
# -- Rules required for the `discovery.kubernetes` component.
154
- apiGroups: ["", "discovery.k8s.io", "networking.k8s.io"]
155
resources: ["endpoints", "endpointslices", "ingresses", "pods", "services"]
156
verbs: ["get", "list", "watch"]
157
# -- Rules required for the `loki.source.kubernetes` component.
158
- apiGroups: [""]
159
resources: ["pods", "pods/log", "namespaces"]
160
verbs: ["get", "list", "watch"]
161
# -- Rules required for the `loki.source.podlogs` component.
162
- apiGroups: ["monitoring.grafana.com"]
163
resources: ["podlogs"]
164
verbs: ["get", "list", "watch"]
165
# -- Rules required for the `mimir.rules.kubernetes` component.
166
- apiGroups: ["monitoring.coreos.com"]
167
resources: ["prometheusrules"]
168
verbs: ["get", "list", "watch"]
169
# -- Rules required for the `mimir.alerts.kubernetes` component.
170
- apiGroups: ["monitoring.coreos.com"]
171
resources: ["alertmanagerconfigs"]
172
verbs: ["get", "list", "watch"]
173
# -- Rules required for the `prometheus.operator.*` components.
174
- apiGroups: ["monitoring.coreos.com"]
175
resources: ["podmonitors", "servicemonitors", "probes", "scrapeconfigs"]
176
verbs: ["get", "list", "watch"]
177
# -- Rules required for the `loki.source.kubernetes_events` component.
178
- apiGroups: [""]
179
resources: ["events"]
180
verbs: ["get", "list", "watch"]
181
# -- Rules required for the `remote.kubernetes.*` components.
182
- apiGroups: [""]
183
resources: ["configmaps", "secrets"]
184
verbs: ["get", "list", "watch"]
185
# -- Rules required for the `otelcol.processor.k8sattributes` component.
186
- apiGroups: ["apps", "extensions"]
187
resources: ["replicasets"]
188
verbs: ["get", "list", "watch"]
189
# -- The rules to create for the ClusterRole objects.
190
clusterRules:
191
# -- Rules required for the Nodes role in the `discovery.kubernetes` component.
192
- apiGroups: [""]
193
resources: ["nodes"]
194
verbs: ["get", "list", "watch"]
195
# -- Rules required for the `discovery.kubelet` component.
196
- apiGroups: [""]
197
resources: ["nodes/pods"]
198
verbs: ["get", "list", "watch"]
199
# -- Rules required accessing metric endpoints on the Node (e.g. Kubelet, cAdvisor, etc...).
200
- apiGroups: [""]
201
resources: ["nodes/metrics"]
202
verbs: ["get", "list", "watch"]
203
# -- Rules required for accessing metrics endpoint.
204
- nonResourceURLs: ["/metrics"]
205
verbs: ["get"]
206
serviceAccount:
207
# -- Whether to create a service account for the Grafana Alloy deployment.
208
create: true
209
# -- Additional labels to add to the created service account.
210
additionalLabels: {}
211
# -- Annotations to add to the created service account.
212
annotations: {}
213
# -- The name of the existing service account to use when
214
# serviceAccount.create is false.
215
name: null
216
# Whether the Alloy pod should automatically mount the service account token.
217
automountServiceAccountToken: true
218
# Options for the extra controller used for config reloading.
219
configReloader:
220
# -- Enables automatically reloading when the Alloy config changes.
221
enabled: true
222
image:
223
# -- Config reloader image registry (defaults to docker.io)
224
registry: cgr.dev
225
# -- Repository to get config reloader image from.
226
repository: chainguard-private/prometheus-config-reloader
227
# -- Tag of image to use for config reloading.
228
tag: 0.94.2-r1
229
# -- SHA256 digest of image to use for config reloading (either in format "sha256:XYZ" or "XYZ"). When set, will override `configReloader.image.tag`
230
digest: sha256:b87ceb164a471df075461caab607dcd356566ec214e644ef32eb33659f1fbacf
231
# -- Config reloader image pull policy.
232
pullPolicy: IfNotPresent
233
# -- Override the args passed to the container.
234
customArgs: []
235
# -- Resource requests and limits to apply to the config reloader container.
236
resources:
237
requests:
238
cpu: "10m"
239
memory: "50Mi"
240
# -- Resize policy for the config reloader container. Controls whether an
241
# in-place resize of CPU or memory restarts the container.
242
resizePolicy: []
243
# -- Security context to apply to the Grafana configReloader container.
244
securityContext:
245
allowPrivilegeEscalation: false
246
readOnlyRootFilesystem: true
247
capabilities:
248
drop:
249
- ALL
250
runAsNonRoot: true
251
runAsUser: 65534
252
runAsGroup: 65534
253
seccompProfile:
254
type: RuntimeDefault
255
controller:
256
# -- Type of controller to use for deploying Grafana Alloy in the cluster.
257
# Must be one of 'daemonset', 'deployment', or 'statefulset'.
258
type: 'daemonset'
259
# -- Number of pods to deploy. Ignored when controller.type is 'daemonset'.
260
replicas: 1
261
# -- Extra labels to add to the controller.
262
extraLabels: {}
263
# -- Annotations to add to controller.
264
extraAnnotations: {}
265
# -- Whether to deploy pods in parallel. Only used when controller.type is
266
# 'statefulset'.
267
parallelRollout: true
268
# -- How many additional seconds to wait before considering a pod ready.
269
minReadySeconds: 10
270
# -- Configures Pods to use the host network. When set to true, the ports that will be used must be specified.
271
hostNetwork: false
272
# -- Configures Pods to use the host PID namespace.
273
hostPID: false
274
# -- Configures the DNS policy for the pod. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-s-dns-policy
275
dnsPolicy: ClusterFirst
276
# -- Configures the DNS config for the pod. https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/#pod-dns-config
277
dnsConfig: {}
278
# -- Termination grace period in seconds for the Grafana Alloy pods.
279
# The default value used by Kubernetes if unspecifed is 30 seconds.
280
terminationGracePeriodSeconds: null
281
# -- The maximum number of revisions that will be maintained in the Controllers's revision history. The history consists of all revisions not represented by a currently applied reversion.
282
revisionHistoryLimit: 10
283
# -- Update strategy for updating deployed Pods.
284
updateStrategy: {}
285
# -- nodeSelector to apply to Grafana Alloy pods.
286
nodeSelector: {}
287
# -- Tolerations to apply to Grafana Alloy pods.
288
tolerations: []
289
# -- Topology Spread Constraints to apply to Grafana Alloy pods.
290
topologySpreadConstraints: []
291
# -- priorityClassName to apply to Grafana Alloy pods.
292
priorityClassName: ''
293
# -- Extra pod annotations to add.
294
podAnnotations: {}
295
# -- Extra pod labels to add.
296
podLabels: {}
297
# -- PodDisruptionBudget configuration.
298
podDisruptionBudget:
299
# -- Whether to create a PodDisruptionBudget for the controller.
300
enabled: false
301
# -- Minimum number of pods that must be available during a disruption.
302
# Note: Only one of minAvailable or maxUnavailable should be set.
303
minAvailable: null
304
# -- Maximum number of pods that can be unavailable during a disruption.
305
# Note: Only one of minAvailable or maxUnavailable should be set.
306
maxUnavailable: null
307
# -- Whether to enable automatic deletion of stale PVCs due to a scale down operation, when controller.type is 'statefulset'.
308
enableStatefulSetAutoDeletePVC: false
309
autoscaling:
310
# -- Creates a HorizontalPodAutoscaler for controller type deployment.
311
# Deprecated: Please use controller.autoscaling.horizontal instead
312
enabled: false
313
# -- The lower limit for the number of replicas to which the autoscaler can scale down.
314
minReplicas: 1
315
# -- The upper limit for the number of replicas to which the autoscaler can scale up.
316
maxReplicas: 5
317
# -- Average CPU utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetCPUUtilizationPercentage` to 0 will disable CPU scaling.
318
targetCPUUtilizationPercentage: 0
319
# -- Average Memory utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetMemoryUtilizationPercentage` to 0 will disable Memory scaling.
320
targetMemoryUtilizationPercentage: 80
321
scaleDown:
322
# -- List of policies to determine the scale-down behavior.
323
policies: []
324
# - type: Pods
325
# value: 4
326
# periodSeconds: 60
327
# -- Determines which of the provided scaling-down policies to apply if multiple are specified.
328
selectPolicy: Max
329
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling down.
330
stabilizationWindowSeconds: 300
331
scaleUp:
332
# -- List of policies to determine the scale-up behavior.
333
policies: []
334
# - type: Pods
335
# value: 4
336
# periodSeconds: 60
337
# -- Determines which of the provided scaling-up policies to apply if multiple are specified.
338
selectPolicy: Max
339
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling up.
340
stabilizationWindowSeconds: 0
341
# -- Configures the Horizontal Pod Autoscaler for the controller.
342
horizontal:
343
# -- Enables the Horizontal Pod Autoscaler for the controller.
344
enabled: false
345
# -- When true, the chart omits `spec.replicas` from the workload AND does NOT
346
# render its own HorizontalPodAutoscaler. Use this when an external controller
347
# (e.g. KEDA, a hand-written HPA, or another scaler) owns replicas for the Alloy
348
# workload. Mutually exclusive with `horizontal.enabled`. When set, all other
349
# `controller.autoscaling.horizontal.*` fields are ignored.
350
#
351
# Upgrade note: switching this from `false` to `true` on an existing release
352
# triggers a one-time single-cycle dip to 1 replica on the next `helm upgrade`
353
# (Helm removes the `replicas` field via `{"spec":{"replicas":null}}`, which
354
# Kubernetes interprets as "reset to default"). The external HPA corrects this
355
# within its next polling interval; users with `minReplicaCount > 1` are
356
# restored within ~30s under KEDA defaults. Plan upgrades accordingly.
357
externalHPA: false
358
# -- The lower limit for the number of replicas to which the autoscaler can scale down.
359
minReplicas: 1
360
# -- The upper limit for the number of replicas to which the autoscaler can scale up.
361
maxReplicas: 5
362
# -- Average CPU utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetCPUUtilizationPercentage` to 0 will disable CPU scaling.
363
targetCPUUtilizationPercentage: 0
364
# -- Average Memory utilization across all relevant pods, a percentage of the requested value of the resource for the pods. Setting `targetMemoryUtilizationPercentage` to 0 will disable Memory scaling.
365
targetMemoryUtilizationPercentage: 80
366
scaleDown:
367
# -- List of policies to determine the scale-down behavior.
368
policies: []
369
# - type: Pods
370
# value: 4
371
# periodSeconds: 60
372
# -- Determines which of the provided scaling-down policies to apply if multiple are specified.
373
selectPolicy: Max
374
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling down.
375
stabilizationWindowSeconds: 300
376
scaleUp:
377
# -- List of policies to determine the scale-up behavior.
378
policies: []
379
# - type: Pods
380
# value: 4
381
# periodSeconds: 60
382
# -- Determines which of the provided scaling-up policies to apply if multiple are specified.
383
selectPolicy: Max
384
# -- The duration that the autoscaling mechanism should look back on to make decisions about scaling up.
385
stabilizationWindowSeconds: 0
386
# -- Configures the Vertical Pod Autoscaler for the controller.
387
vertical:
388
# -- Enables the Vertical Pod Autoscaler for the controller.
389
enabled: false
390
# -- List of recommenders to use for the Vertical Pod Autoscaler.
391
# Recommenders are responsible for generating recommendation for the object.
392
# List should be empty (then the default recommender will generate the recommendation)
393
# or contain exactly one recommender.
394
recommenders: []
395
# recommenders:
396
# - name: custom-recommender-performance
397
398
# -- Configures the resource policy for the Vertical Pod Autoscaler.
399
resourcePolicy:
400
# -- Configures the container policies for the Vertical Pod Autoscaler.
401
containerPolicies:
402
- containerName: alloy
403
# -- The controlled resources for the Vertical Pod Autoscaler.
404
controlledResources:
405
- cpu
406
- memory
407
# -- The controlled values for the Vertical Pod Autoscaler. Needs to be either RequestsOnly or RequestsAndLimits.
408
controlledValues: "RequestsAndLimits"
409
# -- The maximum allowed values for the pods.
410
maxAllowed: {}
411
# cpu: 200m
412
# memory: 100Mi
413
# -- Defines the min allowed resources for the pod
414
minAllowed: {}
415
# cpu: 200m
416
# memory: 100Mi
417
# -- Configures the update policy for the Vertical Pod Autoscaler.
418
updatePolicy:
419
# -- Specifies minimal number of replicas which need to be alive for VPA Updater to attempt pod eviction
420
# minReplicas: 1
421
# -- Specifies whether recommended updates are applied when a Pod is started and whether recommended updates
422
# are applied during the life of a Pod. Possible values are "Off", "Initial", "Recreate", and "Auto".
423
# updateMode: Auto
424
# -- Affinity configuration for pods.
425
affinity: {}
426
volumes:
427
# -- Extra volumes to add to the Grafana Alloy pod.
428
extra: []
429
# -- volumeClaimTemplates to add when controller.type is 'statefulset'.
430
volumeClaimTemplates: []
431
## -- Additional init containers to run.
432
## ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
433
##
434
initContainers: []
435
# -- Additional containers to run alongside the Alloy container and initContainers.
436
extraContainers: []
437
networkPolicy:
438
enabled: false
439
flavor: kubernetes
440
policyTypes:
441
- Ingress
442
- Egress
443
# Default allow all traffic because Alloy is so configurable
444
# It is recommended to change this before deploying to production
445
# To disable each policyType, set value to `null`
446
ingress:
447
- {}
448
egress:
449
- {}
450
service:
451
# -- Creates a Service for the controller's pods.
452
enabled: true
453
# -- Service type
454
type: ClusterIP
455
# -- NodePort port. Only takes effect when `service.type: NodePort`
456
nodePort: 31128
457
# -- Cluster IP, can be set to None, empty "" or an IP address
458
clusterIP: ''
459
# -- Value for internal traffic policy. 'Cluster' or 'Local'
460
internalTrafficPolicy: Cluster
461
# -- Value for external traffic policy. 'Cluster' or 'Local'
462
externalTrafficPolicy: Cluster
463
# -- Value for traffic distribution. 'PreferSameNode' or 'PreferSameZone' (k8s >= 1.34)
464
trafficDistribution: ""
465
annotations: {}
466
# cloud.google.com/load-balancer-type: Internal
467
serviceMonitor:
468
enabled: false
469
# -- Additional labels for the service monitor.
470
additionalLabels: {}
471
# -- Scrape interval. If not set, the Prometheus default scrape interval is used.
472
interval: ""
473
# -- MetricRelabelConfigs to apply to samples after scraping, but before ingestion.
474
# ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
475
metricRelabelings: []
476
# - action: keep
477
# regex: 'kube_(daemonset|deployment|pod|namespace|node|statefulset).+'
478
# sourceLabels: [__name__]
479
480
# -- Customize tls parameters for the service monitor
481
tlsConfig: {}
482
# -- RelabelConfigs to apply to samples before scraping
483
# ref: https://github.com/prometheus-operator/prometheus-operator/blob/main/Documentation/api.md#relabelconfig
484
relabelings: []
485
# - sourceLabels: [__meta_kubernetes_pod_node_name]
486
# separator: ;
487
# regex: ^(.*)$
488
# targetLabel: nodename
489
# replacement: $1
490
# action: replace
491
ingress:
492
# -- Enables ingress for Alloy (Faro port)
493
enabled: false
494
# For Kubernetes >= 1.18 you should specify the ingress-controller via the field ingressClassName
495
# See https://kubernetes.io/blog/2020/04/02/improvements-to-the-ingress-api-in-kubernetes-1.18/#specifying-the-class-of-an-ingress
496
# ingressClassName: nginx
497
# Values can be templated
498
annotations: {}
499
# kubernetes.io/ingress.class: nginx
500
# kubernetes.io/tls-acme: "true"
501
labels: {}
502
path: /
503
faroPort: 12347
504
# pathType is only for k8s >= 1.1=
505
pathType: Prefix
506
hosts:
507
- chart-example.local
508
## Extra paths to prepend to every host configuration. This is useful when working with annotation based services.
509
extraPaths: []
510
# - path: /*
511
# backend:
512
# serviceName: ssl-redirect
513
# servicePort: use-annotation
514
## Or for k8s > 1.19
515
# - path: /*
516
# pathType: Prefix
517
# backend:
518
# service:
519
# name: ssl-redirect
520
# port:
521
# name: use-annotation
522
523
tls: []
524
# - secretName: chart-example-tls
525
# hosts:
526
# - chart-example.local
527
# -- Extra k8s manifests to deploy
528
extraObjects: []
529
# - apiVersion: v1
530
# kind: Secret
531
# metadata:
532
# name: grafana-cloud
533
# stringData:
534
# PROMETHEUS_HOST: 'https://prometheus-us-central1.grafana.net/api/prom/push'
535
# PROMETHEUS_USERNAME: '123456'
536

The trusted source for open source

Talk to an expert
PrivacyTerms

Product

Chainguard ContainersChainguard LibrariesChainguard VMsChainguard OS PackagesChainguard ActionsChainguard Agent SkillsIntegrationsPricing
© 2026 Chainguard, Inc. All Rights Reserved.
Chainguard® and the Chainguard logo are registered trademarks of Chainguard, Inc. in the United States and/or other countries.
The other respective trademarks mentioned on this page are owned by the respective companies and use of them does not imply any affiliation or endorsement.