/
DirectorySecurity AdvisoriesPricing
Sign In
Directory
airflow-iamguarded logo

airflow-iamguarded

Last changed

Request a free trial

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

Request trial
Tags
Overview
Comparison
Provenance
Specifications
SBOM
Vulnerabilities
Advisories

Chainguard Container for airflow-iamguarded

Apache Airflow is a platform to programmatically author, schedule, and monitor workflows as directed acyclic graphs (DAGs).

Chainguard Containers are regularly-updated, secure-by-default container images.

Download this Container Image

For those with access, this container image is available on cgr.dev:

docker pull cgr.dev/ORGANIZATION/airflow-iamguarded:latest

Be sure to replace the ORGANIZATION placeholder with the name used for your organization's private repository within the Chainguard Registry.

Overview

Airflow IAMGuarded is a security-enhanced variant of Airflow designed to be deployed using its companion IAMGuarded Helm chart. This image and chart combination includes an exporter for Prometheus metrics and provides additional security benefits over standard Airflow deployments.

Helm Chart Installation

The Airflow IAMGuarded Helm chart is delivered exclusively through the same OCI registry as your Chainguard images:

cgr.dev/$ORGANIZATION/iamguarded-charts/airflow

Basic Installation

Once authenticated (see below) you can install the chart with standard Helm commands and your organization name:

helm install airflow oci://cgr.dev/$ORGANIZATION/iamguarded-charts/airflow \
  --set "global.org=$ORGANIZATION"

Important: Replace $ORGANIZATION with your Chainguard organization name. The default organization in the chart values is chainguard-private, which must be changed to match your organization.

Configuration Requirements

Organization Setting

The global.org value is required and can be set either:

  • Via --set flag during installation
  • In your existing values.yaml file

Registry Configuration

For users who mirror images to custom repositories:

  • Use global.imageRegistry to override the default cgr.dev
  • For complex mirroring strategies, consult the chart's values.yaml for individual image configuration options including registry, repository, tag, and digest

Example values.yaml for individual image configuration:

# Main Airflow image
image:
  registry: myregistry.example.com
  repository: mirrored/airflow-iamguarded
  digest: sha256:... # Use specific digest instead of tag

# Prometheus statsd exporter image
metrics:
  image:
    registry: myregistry.example.com
    repository: mirrored/prometheus-statsd-exporter-iamguarded
    digest: sha256:... # Use specific digest instead of tag

# Redis dependent chart images
redis:
  # Redis server image
  image:
    registry: myregistry.example.com
    repository: mirrored/redis-server-iamguarded
    digest: sha256:... # Use specific digest instead of tag

  # Redis Sentinel image for high availability
  sentinel:
    enabled: true
    image:
      registry: myregistry.example.com
      repository: mirrored/redis-sentinel-iamguarded
      digest: sha256:... # Use specific digest instead of tag

  # OS Shell image for volume permissions
  volumePermissions:
    enabled: true
    image:
      registry: myregistry.example.com
      repository: mirrored/os-shell-iamguarded
      digest: sha256:... # Use specific digest instead of tag

  # OS Shell image for sysctl
  sysctl:
    enabled: true
    image:
      registry: myregistry.example.com
      repository: mirrored/os-shell-iamguarded
      digest: sha256:... # Use specific digest instead of tag

  # Prometheus Redis exporter for metrics
  metrics:
    enabled: true
    image:
      registry: myregistry.example.com
      repository: mirrored/prometheus-redis-exporter-iamguarded
      digest: sha256:... # Use specific digest instead of tag

  # kubectl image for management operations
  kubectl:
    image:
      registry: myregistry.example.com
      repository: mirrored/kubectl-iamguarded
      digest: sha256:... # Use specific digest instead of tag

# PostgreSQL dependent chart images
postgresql:
  # PostgreSQL image
  image:
    registry: myregistry.example.com
    repository: mirrored/postgres-iamguarded
    digest: sha256:... # Use specific digest instead of tag

  # Prometheus Exporter
  metrics:
    image:
      registry: myregistry.example.com
      repository: mirrored/prometheus-postgres-exporter-iamguarded
      digest: sha256:... # Use specific digest instead of tag

  # OS Shell image for volume permissions
  volumePermissions:
    enabled: true
    image:
      registry: myregistry.example.com
      repository: mirrored/os-shell-iamguarded
      digest: sha256:... # Use specific digest instead of tag

Authentication

Ensure proper pull credentials are configured through one of the following methods:

Option 1: Using Helm values with global.imagePullSecrets

# values.yaml
global:
  imagePullSecrets:
    - name: chainguard-pull-secret

Option 2: Create a Kubernetes pull secret

# Step 1: Authenticate with chainctl and generate a pull token
chainctl auth login
chainctl auth configure-docker --pull-token --save --ttl=24h

# Step 2: Create the Kubernetes secret
kubectl create secret docker-registry chainguard-pull-secret \
  --docker-server=cgr.dev \
  --docker-username=$(echo cgr.dev | docker-credential-cgr get | jq -r '.Username') \
  --docker-password=$(echo cgr.dev | docker-credential-cgr get | jq -r '.Secret') \
  -n <your-namespace>

# Step 3: Reference the secret in your Helm installation
helm install airflow oci://cgr.dev/$ORGANIZATION/iamguarded-charts/airflow \
  --set "global.org=$ORGANIZATION" \
  --set "global.imagePullSecrets[0].name=chainguard-pull-secret"

Option 3: Cluster node-scoped registry permissions (cluster-dependent)

Best Practices

  1. Pin to Digest: While charts follow the same tagging scheme as Chainguard images, always pin to a specific chart digest to prevent unexpected updates:

    helm install airflow oci://cgr.dev/$ORGANIZATION/iamguarded-charts/airflow@sha256:DIGEST \
      --set "global.org=$ORGANIZATION"

    The digest can be found in the output of helm pull e.g:

    helm pull oci://cgr.dev/$ORGANIZATION/iamguarded-charts/airflow
    Pulled: cgr.dev/chainguard-private/iamguarded-charts/airflow:22.7.3
    Digest: sha256:c2ac4bca21cbd890b5eb5897d243ec083c999b293bd86aa63204e7a41325efa2
  2. Review Default Values: The chart provides security-minded defaults that are sensible but may not be production-ready for all use cases. Review the chart's values.yaml (run helm show values) for the full range of configuration options.

  3. Image Pinning: All IAMGuarded charts pin images to specific digests that have been tested for compatibility, ensuring reliable deployments.

Validation

After deployment, validate your Airflow IAMGuarded installation using standard Airflow verification methods. The deployment functions as a standard Airflow instance, so all typical Airflow validation procedures apply.

Prerequisites

Prerequisites are defined in the chart's Chart.yaml and individual templates. No additional requirements beyond standard Kubernetes and Helm functionality are needed.

Security Considerations

The Airflow IAMGuarded chart provides security-minded defaults while acknowledging the cluster-specific nature of both Airflow and Kubernetes environments. Review and adjust settings based on your specific security requirements and cluster configuration.

For detailed configuration options and advanced usage, refer to the chart's values.yaml file.

What are Chainguard Containers?

Chainguard Containers are minimal container images that are secure by default.

In many cases, the Chainguard Containers tagged as :latest contain only an open-source application and its runtime dependencies. These minimal container images typically do not contain a shell or package manager. Chainguard Containers are built with Wolfi, our Linux undistro designed to produce container images that meet the requirements of a more secure software supply chain.

The main features of Chainguard Containers include:

For cases where you need container images with shells and package managers to build or debug, most Chainguard Containers come paired with a -dev variant.

Although the -dev container image variants have similar security features as their more minimal versions, they feature additional software that is typically not necessary in production environments. We recommend using multi-stage builds to leverage the -dev variants, copying application artifacts into a final minimal container that offers a reduced attack surface that won’t allow package installations or logins.

Learn More

To better understand how to work with Chainguard Containers, please visit Chainguard Academy and Chainguard Courses.

In addition to Containers, Chainguard offers VMs and Libraries. Contact Chainguard to access additional products.

Trademarks

This software listing is packaged by Chainguard. The trademarks set forth in this offering are owned by their respective companies, and use of them does not imply any affiliation, sponsorship, or endorsement by such companies.

Licenses

Chainguard container images contain software packages that are direct or transitive dependencies. The following licenses were found in the "latest" tag of this image:

  • Apache-2.0

  • BSD-2-Clause

  • BSD-3-Clause

  • CC-PDDC

  • GCC-exception-3.1

  • GPL-2.0-only

  • GPL-2.0-or-later

For a complete list of licenses, please refer to this Image's SBOM.

Software license agreement

Category
application

Safe Source for Open Sourceâ„¢
Media KitContact Us
© 2025 Chainguard. All Rights Reserved.
Private PolicyTerms of Use

Products

Chainguard ContainersChainguard LibrariesChainguard VMs