{"id":13823078,"url":"https://github.com/bitnami/charts-syncer","last_synced_at":"2026-02-03T19:05:08.049Z","repository":{"id":40423105,"uuid":"261817946","full_name":"bitnami/charts-syncer","owner":"bitnami","description":"Tool for synchronizing Helm Chart repositories.","archived":false,"fork":false,"pushed_at":"2026-01-01T13:22:24.000Z","size":1934,"stargazers_count":235,"open_issues_count":0,"forks_count":54,"subscribers_count":18,"default_branch":"v2","last_synced_at":"2026-01-21T16:42:26.595Z","etag":null,"topics":["helm","kubernetes"],"latest_commit_sha":null,"homepage":"https://bitnami.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bitnami.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-06T16:32:06.000Z","updated_at":"2026-01-08T00:15:52.000Z","dependencies_parsed_at":"2025-01-08T20:50:00.226Z","dependency_job_id":"6c70c6b0-4de0-4b8f-9874-9cebd559ae03","html_url":"https://github.com/bitnami/charts-syncer","commit_stats":null,"previous_names":["bitnami/charts-syncer","bitnami-labs/charts-syncer","bitnami-labs/chart-repository-syncer"],"tags_count":40,"template":false,"template_full_name":null,"purl":"pkg:github/bitnami/charts-syncer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitnami%2Fcharts-syncer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitnami%2Fcharts-syncer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitnami%2Fcharts-syncer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitnami%2Fcharts-syncer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bitnami","download_url":"https://codeload.github.com/bitnami/charts-syncer/tar.gz/refs/heads/v2","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bitnami%2Fcharts-syncer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28901004,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T04:02:34.702Z","status":"ssl_error","status_checked_at":"2026-01-30T04:02:33.562Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["helm","kubernetes"],"created_at":"2024-08-04T09:00:20.418Z","updated_at":"2026-02-03T19:05:08.043Z","avatar_url":"https://github.com/bitnami.png","language":"Go","funding_links":[],"categories":["Go","Projects"],"sub_categories":[],"readme":"[![Go Report Card](https://goreportcard.com/badge/github.com/bitnami/charts-syncer)](https://goreportcard.com/report/github.com/bitnami/charts-syncer)\n[![CI](https://github.com/bitnami/charts-syncer/actions/workflows/ci.yaml/badge.svg)](https://github.com/bitnami/charts-syncer/actions/workflows/ci.yaml)\n\n# charts-syncer\n\nSync chart packages and associated container images between chart repositories\n\n\u003e [!IMPORTANT]  \n\u003e Starting in 2026, this project is licensed under a Broadcom license. For details, see the [_LICENSE_](https://raw.githubusercontent.com/bitnami/charts-syncer/refs/heads/v2/LICENSE) file\n\n# Table of Contents\n\n- [Usage](#usage)\n    + [Sync all charts](#sync-all-helm-charts)\n    + [Sync all charts from specific date](#sync-all-charts-from-specific-date)\n- [Advanced Usage](#advanced-usage)\n    + [Skip syncing artifacts](#skip-syncing-artifacts)\n    + [Skip syncing images](#skip-syncing-images)\n    + [Sync only specific container platforms](#sync-only-specific-container-platforms)\n    + [Sync Helm Charts and Container Images to different registries](#sync-helm-charts-and-container-images-to-different-registries)\n    + [Sync charts between repositories without direct connectivity](#sync-helm-charts-and-associated-container-images-between-disconnected-environments)\n- [Configuration](#configuration)\n  * [Harbor example](#harbor-example)\n  * [OCI example](#oci-example)\n  * [Local example](#local-example)\n- [Requirements](#requirements)\n- [Changes performed in a chart](#changes-performed-in-a-chart)\n    + [Update *values.yaml* and *values-production.yaml* (if exists)](#update--valuesyaml--and--values-productionyaml---if-exists-)\n    + [Update dependencies files](#update-dependencies-files)\n    + [Update *README.md*](#update--readmemd-)\n    + [values.yaml](#valuesyaml)\n    + [requirements.lock (only for Helm v2 charts)](#requirementslock--only-for-helm-v2-charts-)\n    + [Chart.lock (only for Helm v3 charts)](#chartlock--only-for-helm-v3-charts-)\n    + [README.md](#readmemd)\n- [How to build](#how-to-build)\n- [Deploy to Kubernetes](#deploy-to-kubernetes)\n\n## Usage\n\n### Sync all Helm Charts\n\n```console\n$ charts-syncer sync\n```\n\n### Sync Helm Charts from a specific date\n\n```console\n$ charts-syncer sync --from-date 2020-05-15\n```\n\n### Sync latest version of each Helm Chart\n\n```console\n$ charts-syncer sync --latest-version-only\n```\n\n## Advanced Usage\n\n### Sync only specific container platforms\n\nBy default, all container platforms are sync-ed to the destination registry, but this behavior can by tweaked by defining a list of platforms to sync:\n\n```yaml\n#\n# Example config file\n#\nsource:\n  repo:\n    kind: OCI\n    url: http://localhost:8080\ntarget:\n  # Container images registry authn\n  repo:\n    kind: OCI\n    url: http://localhost:9090/charts\n\ncontainerPlatforms:\n  - linux/amd64\n\ncharts:\n  - redis\n  - mariadb\n```\n\n### Skip syncing artifacts\n\nIf your chart and docker images include artifacts such as signatures or metadata, they will be synced to the destination repository. If you want to disable this behavior, you can opt out by setting `skipArtifacts` to true:\n\n```yaml\nsource:\n  repo:\n    kind: OCI\n    url: http://localhost:8080\ntarget:\n  repo:\n    kind: OCI\n    url: http://localhost:9090/charts\ncharts:\n  - redis\n\nskipArtifacts: true\n```\n\nThis is especially useful when you filter the container platforms to sync, which would invalidate the signatures. Using `skipArtifacts: true` will prevent syncing the now invalid signatures:\n\n```yaml\nsource:\n  repo:\n    kind: OCI\n    url: http://localhost:8080\ntarget:\n  repo:\n    kind: OCI\n    url: http://localhost:9090/charts\ncharts:\n  - redis\nskipArtifacts: true\ncontainerPlatforms:\n  - linux/amd64\n```\n\n### Skip syncing images\n\nBy default images referenced in charts will be synced and their refences in the chart will be updated to the target repo. If you want to disable this behavior, you can opt out by setting `skipImages` to true:\n\n```yaml\nsource:\n  repo:\n    kind: OCI\n    url: http://localhost:8080\ntarget:\n  repo:\n    kind: OCI\n    url: http://localhost:9090/charts\ncharts:\n  - redis\n\nskipImages: true\n```\n\n### Sync Helm Charts and Container Images to different registries\n\nBy default, charts-syncer syncs Helm Charts packages and their container images to the same registry specified in the `target.repo.url` property. If you require to configure a different destination registry for the images, this can be configured in the `target.containers.url` property:\n\n```yaml\n#\n# Example config file\n#\nsource:\n  repo:\n    kind: OCI\n    url: http://localhost:8080\ntarget:\n  # Container images registry authn\n  containers:\n    url: http://localhost:9090/containers\n    auth:\n      username: \"USERNAME\"\n      password: \"PASSWORD\"\n  repo:\n    kind: OCI\n    url: http://localhost:9090/charts\n    # Helm repository authentication\n    # auth:\n    #   username: \"USERNAME\"\n    #   password: \"PASSWORD\"\ncharts:\n  - redis\n  - mariadb\n```\n\n### Sync Helm Charts and associated container images between disconnected environments\n\nThere are scenarios where the source and target Helm Charts repositories are not reachable at the same time from the same location.\n\nFor those cases, charts-syncer supports a two steps relocation for offline Chart and container images transport, check the [air gap docs](docs/airgap.md).\n\n----\n\n## Configuration\n\nBelow you can find an example configuration file. To know all the available configuration keys see the [charts-syncer](./charts-syncer.yaml) file as it includes explanatory comments for each configuration key.\n\n```yaml\n#\n# Example config file\n#\nsource:\n  repo:\n    kind: HELM\n    url: http://localhost:8080\n    # Helm repository authentication, same for other repo types i.e OCI\n    # auth:\n    #   username: \"USERNAME\"\n    #   password: \"PASSWORD\"\n  # Container images registry authn\n  # containers:\n  #  auth:\n  #     registry: 'REGISTRY'\n  #     username: \"USERNAME\"\n  #     password: \"PASSWORD\"\ntarget:\n  repo:\n    kind: OCI\n    url: http://localhost:9090\n    # Helm repository authentication\n    # auth:\n    #   username: \"USERNAME\"\n    #   password: \"PASSWORD\"\ncharts:\n  - redis\n  - mariadb\n# opt-out counterpart of \"charts\" property that explicit list the Helm charts to be skipped \n# either \"charts\" or \"skipCharts\" can be used at once\n# skipCharts:\n#  - mariadb\n```\n\n\u003e [!TIP]\n\u003e Note that the `repo.url` property you need to specify is the same one you would use to add the repo to Helm with the `helm repo add command`.\n\u003e Example: `helm repo add bitnami https://charts.bitnami.com/bitnami`.\n\nCredentials for the Helm Chart repositories and container images registries can be provided using a config file or the following environment variables:\n\nHelm Chart repositories\n\n- `SOURCE_REPO_AUTH_USERNAME`\n- `SOURCE_REPO_AUTH_PASSWORD`\n\n\n- `TARGET_REPO_AUTH_USERNAME`\n- `TARGET_REPO_AUTH_PASSWORD`\n\nContainer images registries\n\n- `SOURCE_CONTAINERS_AUTH_REGISTRY`\n- `SOURCE_CONTAINERS_AUTH_USERNAME`\n- `SOURCE_CONTAINERS_AUTH_PASSWORD`\n\n\n- `TARGET_CONTAINERS_AUTH_USERNAME`\n- `TARGET_CONTAINERS_AUTH_PASSWORD`\n\nCurrent available Kinds are `LOCAL`, `HELM`, `CHARTMUSEUM`, `HARBOR` and `OCI` for the Source Repo and `OCI` and `LOCAL` for the Target Repo.\n\n\u003e [!NOTE]\n\u003e The list of charts in the config file is optional except for OCI repositories used as source.\n\u003e The rest of chart repositories kinds already support autodiscovery.\n\n### Google Artifact Registry example (Tanzu Application Catalog hosted registry)\n\nThe Google Artifact Registry (GAR) is the default option for Tanzu Application Catalog hosted registries.\n\nBefore running the charts syncer, it's recommended to test registry connectivity. You can do that by downloading the JSON file with credentials and try logging in with docker cli:\n\n```console\n$ cat _json_key.json | docker login -u _json_key --password-stdin https://YOUR_REGISTRY\n```\n\nTanzu Application Catalog credentials are in JSON multiline format. The simplest and recommended option for using `chart-syncer` configuration is to `base64` encode this credentials on a single line\n\n```console\n$ cat _json_key.json | base64\newogICJ0eXBlIjogInNlcnZpY2VfYWNjb3VudCIsCiAgInByb2plY3Rfa......\n```\n\nThe output from the previous command is a long single line of base64 encoded content. That will be the registry password. The registry username is the special name `_json_key_base64` that hints Google that credentials are base64 encoded.\n\nSee below an example of configuration file using GAR and Debian 12 Helm charts and containers:\n\n```yamlsource:\nsource:\n  repo:\n    kind: OCI\n    url: https://us-east1-docker.pkg.dev/vmw-app-catalog/hosted-registry-YOUR_ID/charts/debian-12\n    auth:\n      username: _json_key_base64\n      password: __YOUR_BASE64_ENCODED_PASSWORD_HERE__\n  containers:\n    auth:\n      registry: https://us-east1-docker.pkg.dev/vmw-app-catalog/hosted-registry-YOUR_ID/containers/debian-12\n      username: _json_key_base64\n      password: __YOUR_BASE64_ENCODED_PASSWORD_HERE__\n\ntarget:\n  repo:\n    kind: OCI\n    url: https://YOUR_REGISTRY/tac-charts\n    auth:\n      username: ${TARGET_REPO_AUTH_USERNAME} # Username for target repo authentication\n      password: ${TARGET_REPO_AUTH_PASSWORD} # Password for target repo authentication\n```\n\n### Harbor example\n\nIn the case of HARBOR kind repos, be aware that chart repository URLs are:\n\nhttps://$HARBOR_DOMAIN/chartrepo/$HARBOR_PROJECT\n\nSo if HARBOR_DOMAIN=my.harbor.com and HARBOR_PROJECT=my-project, you would need to specify this repo in the config file like:\n\n```yaml\nsource:\n repo:\n   kind: HARBOR\n   url: https://my.harbor.com/chartrepo/my-project\n```\n\n### OCI example\n\nSince Harbor 2.0.0, there are two ways of storing charts. The legacy one uses chartmuseum under the hood and it corresponds to the HARBOR kind of this project.\nThe new one however uses OCI to store helm charts as OCI artifacts. In case you are using Harbor with OCI backend you can use the following example:\n\n```yaml\ntarget:\n repo:\n   kind: OCI\n   url: https://my.harbor.com/my-project/subpath\n```\n\n`subpath` in the previous url is optional in case your charts are not stored directly under your projects.\nIt is worth mentioning that you can use Harbor robot accounts using OCI registries as source or target.\n\nAlso, take into account that if you use OCI as the source repository you must specify the list of charts to synchronize\nor a pointer to a [charts index file](#charts-index-for-oci-based-repositories) in the repository.\n\n#### Charts index for OCI-based repositories\n\nBy using a charts index file for OCI-Based repository you won't need to maintain a hardcoded list of chart names in the config file.\ncharts-syncer will be able to auto-discover what charts need to be synchronized.\n\nBy default, the library will look up for a \"charts-index:latest\" charts index artifact within the source OCI repository.\n\nHowever, this can be customized using the `chartsIndex` field using the format `REGISTRY/PROJECT/[SUBPATH][:TAG|@sha256:DIGEST]`.\n\nFor example, if your URL is `https://my-oci-registry.io/my-project/subpath` and no `chartsIndex` is specified, charts-syncer will try to use \n`my-oci-registry.io/my-project/subpath/charts-index:latest` asset as index if it exists.\n\nAn example of the valid index format can be seen directly in its [Protobuf definition](internal/indexer/api/index.proto). Worth to mention \nthat the format of the charts index for OCI repositories is a custom one, not a traditional Helm index file.\n\n```yaml\nsource:\n repo:\n   kind: OCI\n   url: https://my-oci-registry.io/my-project/subpath\n   # disableChartsIndex: true\n   # Charts index location override, charts-index:latest by default\n   chartsIndex: my-oci-registry.io/my-project/my-custom-index:prod\n```\n\nFinally, if no charts index is found, charts-syncer will require the list of charts in the config file:\n\n```yaml\nsource:\n  repo:\n    kind: OCI\n    url: https://my-oci-registry.io/my-project/subpath\n...\n# Required if no index is provided or found\ncharts:\n  - redis\n  - mariadb\n  - ...\n```\n\n#### Amazon Elastic Container Registry (ECR)\nAmazon Elastic Container Registry (ECR) is an OCI registry, but it has two peculiarities that should be taken into account when interacting with charts-syncer.\n\nThe first peculiarity relates to authentication, usually you would have an IAM user with access_key_id and secret_access_key credentials. These **are not** the credentials that should be entered in the config file.\nTo obtain the proper credentials, you need to obtain a temporary password to operate the ECR registry. By using the following command, you can get the password:\n\n```console\n$ aws ecr get-login-password --region REGION\n```\n\nIn the previous command remember to update the REGION placeholder by a proper value.\nThe username will always be `AWS`.\n\nThe second peculiarity only affects when using ECR as a target registry since you need to create the repositories in advance.\nIf the repositories don't exist when executing charts-syncer you will get an error like the following:\n\n```\nfailed to do request: Post \"https://AWS_ACCOUNT.dkr.ecr.AWS_REGION.amazonaws.com/v2/charts-syncer-test/charts/common/blobs/uploads/\": EOF\nfailed to do request: Post \"https://AWS_ACCOUNT.dkr.ecr.AWS_REGION.amazonaws.com/v2/charts-syncer-test/charts/apache/blobs/uploads/\": EOF\nfailed to do request: Post \"https://AWS_ACCOUNT.dkr.ecr.AWS_REGION.amazonaws.com/v2/charts-syncer-test/charts/mariadb/blobs/uploads/\": EOF\nfailed to do request: Post \"https://AWS_ACCOUNT.dkr.ecr.AWS_REGION.amazonaws.com/v2/charts-syncer-test/charts/mysql/blobs/uploads/\": EOF\nfailed to do request: Post \"https://AWS_ACCOUNT.dkr.ecr.AWS_REGION.amazonaws.com/v2/charts-syncer-test/charts/redis/blobs/uploads/\": EOF\n```\n\nIn that case make sure all the missing repositories are created before executing charts-syner again. Please refer to [AWS documentation](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-create.html) to see how to do it.\n\n### LOCAL example\n\nIn case charts-syncer is not able to directly push the modified charts to the desired target, it would be possible to sync the charts\nto a local folder using the LOCAL target kind and then use any other tool or process to upload these charts to the final charts repository.\n\n```yaml\ntarget:\n repo:\n   kind: LOCAL\n   path: your_local_path\n```\n\n## Requirements\n\nIn order for this tool to be able to successfully migrate a chart from a source repository to another it must fulfill the following requirements:\n\n- The images used by the chart must be specified in the following way in the values.yaml file:\n\n```yaml\nimage:\n  registry: docker.io\n  repository: bitnami/ghost\n  tag: 3.22.2-debian-10-r0\n```\n\nThe parent section name does not matter. In the previous example, instead of `image` it could be `mainImage` or whatever other name.\n\nThe important thing is that the image name is specified with `registry`, `repository` and `tag`.\n\nThe values of the parameters `containerRegistry` and `containerRepositories` from the configuration file will be used to update the `registry` and `repository` properties in the values.yaml. If these parameters are unset, the associated properties won't be modified. The `tag` property remains unchanged.\n\n\u003e [!WARNING]\n\u003e Be aware that this tool expects the images to be already present in the target container registry.\n\n## Changes performed in a chart\n\nIn order to migrate a chart from one repository to another and retrieve the images from a new container registry, this tool performs the following changes in the chart code:\n\n#### Update *values.yaml*\n\nThis file is updated with the new container registry where the chart should pull the images from.\n\n### Update *Chart.yaml*\n\nThis file will get its `images` annotation rewritten to point to the new relocated container images.\n\n### Update *Images.lock*\n\nIf present, the [Images.lock](https://github.com/vmware-labs/distribution-tooling-for-helm/tree/main?tab=readme-ov-file#creating-an-images-lock)\n will be relocated to point to the new container images.\n\n If the file does not exist, it will be created.\n\n------\n\nLet's see the performed changes with an example. Imagine I sync the Ghost chart from the Bitnami chart repo to a local chartmuseum repo with no authentication.\n\nI would use this config file:\n\n```yaml\nsource:\n  repo:\n    kind: HELM\n    url: https://charts.bitnami.com/bitnami\ntarget:\n  repo:\n    kind: OCI\n    url: http://localhost:8080\n```\n\nAfter executing the tool, these are the changes performed to the following files:\n\n#### values.yaml\n\n```diff\ndiff --git a/values.yaml b/values.yaml\nindex dff53b1..a9d5884 100755\n--- a/values.yaml\n+++ b/values.yaml\n@@ -68,8 +68,8 @@\n ## @param image.debug Enable image debug mode\n ##\n image:\n-  registry: docker.io\n-  repository: bitnami/ghost\n+  registry: localhost:80\n+  repository: library/bitnami/ghost\n   tag: 5.79.4-debian-12-r2\n   digest: \"\"\n   ## Specify a imagePullPolicy\n@@ -608,8 +608,8 @@\n   ## @param volumePermissions.image.pullSecrets OS Shell + Utility image pull secrets\n   ##\n   image:\n-    registry: docker.io\n-    repository: bitnami/os-shell\n+    registry: localhost:80\n+    repository: library/bitnami/os-shell\n     tag: 12-debian-12-r15\n     digest: \"\"\n     pullPolicy: IfNotPresent\n```\n\n\n#### Chart.yaml\n\n```diff\ndiff --git a/Chart.yaml b/Chart.yaml\n--- a/Chart.yaml\n+++ b/Chart.yaml\n@@ -2,9 +2,9 @@\n   category: CMS\n   images: |\n     - name: ghost\n-      image: docker.io/bitnami/ghost:5.79.4-debian-12-r2\n+      image: localhost:80/library/bitnami/ghost:5.79.4-debian-12-r2\n     - name: os-shell\n-      image: docker.io/bitnami/os-shell:12-debian-12-r15\n+      image: localhost:80/library/bitnami/os-shell:12-debian-12-r15\n   licenses: Apache-2.0\n apiVersion: v2\n appVersion: 5.79.4\n```\n\n#### Images.lock\n\n```diff\n--- /dev/null\t2024-02-23 14:30:30\n+++ b/Images.lock\t2024-02-22 10:51:59\n@@ -0,0 +1,50 @@\n+apiVersion: v0\n+kind: ImagesLock\n+metadata:\n+  generatedAt: \"2024-02-22T09:46:03.681760496Z\"\n+  generatedBy: Distribution Tooling for Helm\n+chart:\n+  name: ghost\n+  version: 19.10.2\n+  appVersion: 5.79.4\n+images:\n+- name: ghost\n+  image: localhost:80/library/bitnami/ghost:5.79.4-debian-12-r2\n+  chart: ghost\n+  digests:\n+  - digest: sha256:950c0bcbdcd9e97fb6db96c70cde4408ab30e658e5568445f4a1a9734cc9cc68\n+    arch: linux/amd64\n+  - digest: sha256:c7ba15d98097bc06baf80091fba8f0b0c2a05fd4d94f3bec4ea4c92c3202e3b6\n+    arch: linux/arm64\n+- name: os-shell\n+  image: localhost:80/library/bitnami/os-shell:12-debian-12-r15\n+  chart: ghost\n+  digests:\n+  - digest: sha256:fbb2bf7afc15ff68e89b36c24cf3210a47729246f1943db056ae3c9a0c2f278d\n+    arch: linux/amd64\n+  - digest: sha256:051cc71e48d8d901f2958e3f323977964c2373a153a9e2b6183c3dbd2cd2075c\n+    arch: linux/arm64\n+- name: mysql\n+  image: localhost:80/library/bitnami/mysql:8.0.36-debian-12-r7\n+  chart: mysql\n+  digests:\n+  - digest: sha256:af4f8a296ed5081a5c91d262f06c897ac956714009a71192ee36b22742f23b9d\n+    arch: linux/amd64\n+  - digest: sha256:1b15bdfd66ad9acc14a6a81d570c39eb607e53a73242f13e91d63c64496b2b2f\n+    arch: linux/arm64\n+- name: mysqld-exporter\n+  image: localhost:80/library/bitnami/mysqld-exporter:0.15.1-debian-12-r7\n+  chart: mysql\n+  digests:\n+  - digest: sha256:cc417c3577774bd439bc8cef6aeced1ef1019192964b763116072fafad16b73a\n+    arch: linux/amd64\n+  - digest: sha256:81ead00a80c63f562ff028c3fc2772354f8354085fe0ffb5ba29b04f6d4a2f4a\n+    arch: linux/arm64\n+- name: os-shell\n+  image: localhost:80/library/bitnami/os-shell:12-debian-12-r15\n+  chart: mysql\n+  digests:\n+  - digest: sha256:fbb2bf7afc15ff68e89b36c24cf3210a47729246f1943db056ae3c9a0c2f278d\n+    arch: linux/amd64\n+  - digest: sha256:051cc71e48d8d901f2958e3f323977964c2373a153a9e2b6183c3dbd2cd2075c\n+    arch: linux/arm64\n```\n\n\n## Deploy to Kubernetes\n\nVisit [this guide](docs/kubernetes-deployment.md) to deploy a Kubernetes CronJob that will keep two Helm Chart repositories synced.\n\n## How to build\n\nCheck the [developer docs](docs/development.md).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitnami%2Fcharts-syncer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbitnami%2Fcharts-syncer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbitnami%2Fcharts-syncer/lists"}