Skip to main content Skip to complementary content

Configuring a custom Docker registry for Talend Management Console tasks

Last updated: 10/29/2026

Configure an external Docker registry for data integration Jobs, big data Jobs, Data Services, and Routes in a Dynamic Engine environment.

External Docker registries are configured on a per-environment basis.

Information noteTip: For Dynamic Engine versions older than 1.6.0, this procedure applies to Data Service and Route tasks only.

Before you begin

  • Ensure the registry is accessible through HTTPS.

About this task

Information noteWarning: In version 1.7.0, the embedded docker-registry service has no persistence by default. If its pod restarts, images stored in the service are lost. Use this procedure to configure an external registry (recommended), or enable persistence for the embedded registry.

Procedure

  1. Run the following command to create a custom values file for the external registry connection.
    cat <<EOF > custom-artifact-registry-values.yaml
    configuration:
      registry:
        url: myregistry.example.com
        path: my-specific-registry
        username: foo
        password: bar
        secretName: my-specific-registry
    EOF

    This command creates a values file to provide the credentials for the registry connection. A secret is a Kubernetes object for storing sensitive information.

    If credentials are not required, leave the username, password, and secretName fields empty.

  2. Run the following command to install or upgrade the Dynamic Engine environment with the custom values file.
    helm upgrade --install dynamic-engine-environment-$DYNAMIC_ENGINE_ENVIRONMENT_ID \
     -f $DYNAMIC_ENGINE_ENVIRONMENT_ID-values.yaml \
     -f custom-artifact-registry-values.yaml \
     oci://ghcr.io/talend/helm/dynamic-engine-environment \
     --version $DYNAMIC_ENGINE_VERSION

    This command upgrades or installs the Dynamic Engine environment, depending on whether it has been installed.

  3. Validate the deployment:
    • In the corresponding Dynamic Engine environment namespace, verify:
      • The dpe-data-service-route-deployer pod is running.
      • If the registry requires credentials, the my-specific-registry and dpe-data-service-route-deployer secrets exist, with my-specific-registry containing a .dockerconfigjson value representing the registry authentication and dpe-data-service-route-deployer containing a REGISTRY_CREDENTIALS value.
    • After you deploy a task, confirm the image exists in the registry by running this command:
      docker pull myregistry.example.com/my-specific-registry/<artifact_name>:<artifact_version>

Results

Dynamic Engine can now connect to and use your own Docker registry for task images, but your registry service needs to be configured outside Dynamic Engine. Dynamic Engine does not provide the mechanism to configure your registry.
Information noteTip: Dynamic Engine ships with an internal Docker registry intended for quick-start deployments. This registry is not recommended for production use and should not be customized for autoscaling in production environments.
If you have customized the internal Docker registry, such as, setting up autoscaling, in a production environment, move the configuration to the values file for your own external Docker registry and deploy the file with the desired Dynamic Engine environments. For example
cat <<EOF > autoscaling-external-registry.yaml
configuration:
  dockerRegistry:
    replicaCount: 2
    autoscaling:
      enabled: true
      maxReplicas: 5
EOF

If you need to keep that configuration in the internal Docker registry, bear in mind that the setup should not be used for production environment and in many use cases, for example, multiple replicas for autoscaling, you must enable persistence for the embedded registry with configuration.dockerRegistry.persistence.enabled=true. Set the storage class with configuration.persistence.defaultStorageClassName.

Did this page help you?

If you find any issues with this page or its content – a typo, a missing step, or a technical error – please let us know!