Readme.md

September 25, 2025 · View on GitHub

imgproxy logo

Website | Blog | Documentation | imgproxy Pro

Docker Bluesky X X Discord

GH Check


This repo contains a Helm chart to deploy imgproxy.

imgproxy is a fast and secure standalone server for resizing and converting remote images. The main principles of imgproxy are simplicity, speed, and security.

TL;DR

To install imgproxy to your kubernetes cluster simply run:

helm repo add imgproxy https://helm.imgproxy.net/

helm upgrade -i imgproxy imgproxy/imgproxy

Important

This readme shows documentation for chart version 1.x.

  • For previous version see the v0.9.0 tag

Introduction

imgproxy can be used to provide a fast and secure way to replace all the image resizing code of your web application (like calling ImageMagick or GraphicsMagick, or using libraries), while also being able to resize everything on the fly, fast and easy. imgproxy is also indispensable when handling lots of image resizing, especially when images come from a remote source.

imgproxy does one thing — resizing remote images — and does it well. It works great when you need to resize multiple images on the fly to make them match your application design without preparing a ton of cached resized images or re-doing it every time the design changes.

imgproxy is a Go application, ready to be installed and used in any Unix environment — also ready to be containerized using Docker.

See this article for a good intro and all the juicy details! imgproxy: Resize your images instantly and securely

See official README for more.

Prerequisites

  • Kubernetes 1.4+ with Beta APIs enabled

Installing chart

helm repo add imgproxy https://helm.imgproxy.net/

helm upgrade -i imgproxy imgproxy/imgproxy

The command deploys imgproxy on the Kubernetes cluster in the default configuration. The configuration section lists various ways to override default configuration during deployment.

Tip: To list all releases use helm list

Uninstalling the Chart

helm delete imgproxy

The command removes all the Kubernetes components associated with the chart and deletes the release.

Configuration

Specify each parameter using the --set key=value[,key=value] argument to helm install or provide your own file via -f values.yaml. For example,

helm upgrade -i imgproxy \
  --namespace imgproxy \
  --set image.tag=v3.28.0 \
  imgproxy/imgproxy

The above command installs a specified version of imgproxy.

Supported Chart values

Environment Variables

Use the env part of the values to configuse imgproxy server itself. Check the documentation for the list of supported variables.

# values.yml
---
# ...
env:
  FOO: bar

Additional secrets

If you want to manage your keys in a more secure manner prepare Secrets (via External Secrets Operator, Sealed Secrets, etc)

# values.yaml
resources:
  addSecrets:
    - improxy-external-secrets

Image

Options for downloading the imgproxy image

ValueDescriptionDefault
image.pullSecrets.passwordPassword to your private registry``
image.pullSecrets.registryURL of a private registry you want to authorize to``
image.pullSecrets.usernameLogin to your private registry``
image.addPullSecretsList of existing image pull secrets[]

Resources

ValueDescriptionDefault
resources.deployment.affinityNode and inter-pod affinity configuration
resources.deployment.annotationsCustom annotations for imgproxy deployment{}
ValueDescriptionDefault
resources.pod.annotationsCustom annotations for imgproxy pod{}
resources.pod.labelsCustom labels for imgproxy pods{}
ValueDescriptionDefault
resources.deployment.lifecylcleLifecycle hook for the preStart or PreStop commands
resources.deployment.livenessProbeTimeouts and counters for the liveness probe
resources.deployment.minReadySecondsMinimum ready seconds for the statement set
resources.deployment.nodeSelectorA node selector labels
resources.deployment.priority.levelThe level of the pod priority0
resources.deployment.priority.nameThe name of the priority class
resources.deployment.priority.preemptingIf the pod should be preempting (k8s v1.19+)true
resources.deployment.readinessProbeTimeouts and counters for the readiness probe
resources.deployment.replicaCountHow many pods with imgproxy should be running simultaneously (DEPRECATED, use replicas.default instead!)1
resources.deployment.replicas.cpuUtilizationThe target percentage for the average CPU utilization by pods after which they should be scaled.80
resources.deployment.replicas.defaultHow many pods with imgproxy should be running after deployment1
resources.deployment.replicas.maxCountThe maximum number of pods the imgproxy can be scaled to.1
resources.deployment.replicas.minCountThe minimal number of pods the imgproxy can be scaled to.1
resources.deployment.replicas.stabilizationIntervalThe number of seconds for which past recommendations should be considered while scaling up or scaling down (0 - 3600) to prevent flapping.300
resources.deployment.replicas.stepCountThe max number of pods to be added/dropped during autoscaling step.1
resources.deployment.replicas.stepSecondsThe period in seconds (1-1800) during which up to stepCount pods can be added or dropped by autoscaler.60
resources.deployment.resourcesHash of resource limits for your pods{}
resources.deployment.podSecurityContextSecurity context settings for pods{}
resources.deployment.containerSecurityContextSecurity context setting for containers, see the docs{}
resources.deployment.securityContextDEPRECATED: Security context settings for pods{}
resources.deployment.terminationGracePeriodSecondsA custom amount of time to terminate the app30
resources.deployment.tolerationsTolerations for Kubernetes taints
resources.deployment.topologySpreadConstraintstopologySpreadConstraints for distributing pods across zones[]
ValueDescriptionDefault
resources.podDisruptionBudget.enabledEnable or disable a disruption budget policyfalse
resources.podDisruptionBudget.maxUnavailablemaxUnavailable option for the PodDisruptionBudget0
resources.podDisruptionBudget.minAvailableminAvailable option for the PodDisruptionBudget0
ValueDescriptionDefault
resources.serviceAccount.existingNameThe name of an existing service account to be used by deployments``
resources.serviceAccount.annotationsAnnotations for the Kubernetes service account for imgproxy``
resources.serviceAccount.aws.accountIdThe AWS Account ID to authenticate via IAM``
resources.serviceAccount.aws.iamRoleNameThe name of the AWS IAM Role to authenticate via IAM``
ValueDescriptionDefault
resources.service.typeKubernetes service type for imgproxyClusterIP
resources.service.loadBalancerIPLoad balancer ip for service type "LoadBalancer"''
resources.service.loadBalancerSourceRangesLoad balancer source ranges for service type "LoadBalancer"`[]
resources.service.externalTrafficPolicyEnable client source IP preservationCluster
resources.service.nodePortSet the initial value when Kubernetes type is NodePort``

Ingress configuration

ValueDescriptionDefault
resources.ingress.acmeEnables the ingress resource annotation which tells cert-manager to issue a Let's Encrypt certificatefalse
resources.ingress.annotationsAdditional annotations for the ingress resource
resources.ingress.enabledWhen true, enables ingress resource for imgproxyfalse
resources.ingress.health.whitelistComma separated string of CIDR addresses that are allowed to access /health url of imgproxy
resources.ingress.hostsHostnames for the ingress resource to use[~]
resources.ingress.pathSuffixSuffix to be added to path prefix, for example wildcard '*' for AWS balancer
resources.ingress.tlsTLS config array
resources.ingress.tls[].hostsHostnames this tls secret is used for["example.com"]
resources.ingress.tls[].secretNameName of the k8s Secret resource which stores crt & key for the ingress resource
resources.ingress.classNameingressClassName to use

See values.yaml for some more Kubernetes-specific configuration options.

Persistence

Options to mount a persistent volume.

ValueDescriptionDefault
persistence.enabledEnable persistence for deployment.false
persistence.nameSet name for persistent volume claim.imgproxy-data
persistence.existingClaimReference an existing PVC instead of creating a new one.""
persistence.mountPathMount path for PVC in the imgproxy pod./images
persistence.subPathMount sub path of the persistent volume.""
persistence.accessModesAccess modes for the persistent volume.- ReadWriteOnce
persistence.sizeStorage size of the PV.10Gi
persistence.storageClassSet the storageClass for the persistent volume claim.""
persistence.dataSourceCreate a PV from a data source (e.g. snapshot).""