diff --git a/lib/modules/manager/flux/__fixtures__/multidoc.yaml b/lib/modules/manager/flux/__fixtures__/multidoc.yaml
index 675feac3fc586033236462409ad311f614df2476..9fdea372428dd637550973d25f5abaf8cb2ab60d 100644
--- a/lib/modules/manager/flux/__fixtures__/multidoc.yaml
+++ b/lib/modules/manager/flux/__fixtures__/multidoc.yaml
@@ -13,6 +13,10 @@ spec:
         name: external-dns
       version: "1.7.0"
   interval: 1h0m0s
+  values:
+    image:
+      repository: k8s.gcr.io/external-dns/external-dns
+      tag: v0.13.4
 ---
 apiVersion: source.toolkit.fluxcd.io/v1beta1
 kind: HelmRepository
diff --git a/lib/modules/manager/flux/extract.spec.ts b/lib/modules/manager/flux/extract.spec.ts
index 134fc4dd6ed73ef2b8b3af6b037d96cc8c936b95..70e97ac27466142b527bc697bd107b5d7f8c7c2e 100644
--- a/lib/modules/manager/flux/extract.spec.ts
+++ b/lib/modules/manager/flux/extract.spec.ts
@@ -34,6 +34,16 @@ describe('modules/manager/flux/extract', () => {
             depName: 'external-dns',
             registryUrls: ['https://kubernetes-sigs.github.io/external-dns/'],
           },
+          {
+            autoReplaceStringTemplate:
+              '{{newValue}}{{#if newDigest}}@{{newDigest}}{{/if}}',
+            currentDigest: undefined,
+            currentValue: 'v0.13.4',
+            datasource: DockerDatasource.id,
+            depName: 'k8s.gcr.io/external-dns/external-dns',
+            replaceString: 'v0.13.4',
+            versioning: DockerDatasource.id,
+          },
           {
             currentValue: 'v11.35.4',
             datasource: GithubTagsDatasource.id,
diff --git a/lib/modules/manager/flux/extract.ts b/lib/modules/manager/flux/extract.ts
index 98e10778b09785190086ada5073417649b9acb41..3178c28e989303196cda2d4d1574faa6465fefaf 100644
--- a/lib/modules/manager/flux/extract.ts
+++ b/lib/modules/manager/flux/extract.ts
@@ -13,6 +13,7 @@ import { GithubTagsDatasource } from '../../datasource/github-tags';
 import { GitlabTagsDatasource } from '../../datasource/gitlab-tags';
 import { HelmDatasource } from '../../datasource/helm';
 import { getDep } from '../dockerfile/extract';
+import { findDependencies } from '../helm-values/extract';
 import { isOCIRegistry, removeOCIPrefix } from '../helmv3/oci';
 import { extractImage } from '../kustomize/extract';
 import type {
@@ -187,6 +188,10 @@ function resolveResourceManifest(
         );
         resolveHelmRepository(dep, matchingRepositories, registryAliases);
         deps.push(dep);
+
+        if (resource.spec.values) {
+          deps.push(...findDependencies(resource.spec.values, registryAliases));
+        }
         break;
       }
       case 'GitRepository': {
diff --git a/lib/modules/manager/flux/readme.md b/lib/modules/manager/flux/readme.md
index bb1777f3bd8f05a49843a34f8a8b2766e481bcf0..508331962138f00f928922acb0f62f2f6a283156 100644
--- a/lib/modules/manager/flux/readme.md
+++ b/lib/modules/manager/flux/readme.md
@@ -22,6 +22,8 @@ Namespaces will not be inferred from the context (e.g. from the parent `Kustomiz
 
 Renovate updates `HelmRelease` resources coming from `GitRepository` by updating the `GitRepository` resource.
 
+Renovate updates Docker dependencies inside `HelmRelease` `values` like the [`helm-values`](../helm-values/index.md) manager.
+
 ### GitRepository support
 
 Renovate can update `git` references from `GitRepository` resources.
diff --git a/lib/modules/manager/flux/schema.ts b/lib/modules/manager/flux/schema.ts
index 8e4870b2245bf3ca85bccf4c4f207893c23f8925..d76ff8fb5b2222a53f3181dc3098c42c86581ef7 100644
--- a/lib/modules/manager/flux/schema.ts
+++ b/lib/modules/manager/flux/schema.ts
@@ -29,6 +29,7 @@ export const HelmRelease = KubernetesResource.extend({
           .optional(),
       }),
     }),
+    values: z.record(z.unknown()).optional(),
   }),
 });
 
diff --git a/lib/modules/manager/helm-values/extract.ts b/lib/modules/manager/helm-values/extract.ts
index 59e465c0f0000e263b365e12c39755d6abb7c108..2987b3ca1297e37056ac58b4679f1b488645e655 100644
--- a/lib/modules/manager/helm-values/extract.ts
+++ b/lib/modules/manager/helm-values/extract.ts
@@ -17,13 +17,9 @@ function getHelmDep(
   registry: string,
   repository: string,
   tag: string,
-  config: ExtractConfig,
+  registryAliases: Record<string, string> | undefined,
 ): PackageDependency {
-  const dep = getDep(
-    `${registry}${repository}:${tag}`,
-    false,
-    config.registryAliases,
-  );
+  const dep = getDep(`${registry}${repository}:${tag}`, false, registryAliases);
   dep.replaceString = tag;
   dep.versioning = dockerVersioning;
   dep.autoReplaceStringTemplate =
@@ -36,11 +32,17 @@ function getHelmDep(
  *
  * @param parsedContent
  */
-function findDependencies(
+export function findDependencies(
   parsedContent: Record<string, unknown> | HelmDockerImageDependency,
-  packageDependencies: Array<PackageDependency>,
-  config: ExtractConfig,
-): Array<PackageDependency> {
+  registryAliases: Record<string, string> | undefined,
+): PackageDependency[] {
+  return findDependenciesInternal(parsedContent, [], registryAliases);
+}
+export function findDependenciesInternal(
+  parsedContent: Record<string, unknown> | HelmDockerImageDependency,
+  packageDependencies: PackageDependency[],
+  registryAliases: Record<string, string> | undefined,
+): PackageDependency[] {
   if (!parsedContent || typeof parsedContent !== 'object') {
     return packageDependencies;
   }
@@ -53,14 +55,16 @@ function findDependencies(
       registry = registry ? `${registry}/` : '';
       const repository = String(currentItem.repository);
       const tag = `${currentItem.tag ?? currentItem.version}`;
-      packageDependencies.push(getHelmDep(registry, repository, tag, config));
+      packageDependencies.push(
+        getHelmDep(registry, repository, tag, registryAliases),
+      );
     } else if (matchesHelmValuesInlineImage(key, value)) {
-      packageDependencies.push(getDep(value, true, config.registryAliases));
+      packageDependencies.push(getDep(value, true, registryAliases));
     } else {
-      findDependencies(
+      findDependenciesInternal(
         value as Record<string, unknown>,
         packageDependencies,
-        config,
+        registryAliases,
       );
     }
   });
@@ -86,7 +90,7 @@ export function extractPackageFile(
     const deps: PackageDependency<Record<string, any>>[] = [];
 
     for (const con of parsedContent) {
-      deps.push(...findDependencies(con, [], config));
+      deps.push(...findDependencies(con, config.registryAliases));
     }
 
     if (deps.length) {