{"id":37722196,"url":"https://github.com/chainguard-dev/terraform-provider-helm","last_synced_at":"2026-01-16T13:33:56.329Z","repository":{"id":291637028,"uuid":"974539970","full_name":"chainguard-dev/terraform-provider-helm","owner":"chainguard-dev","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-13T08:25:39.000Z","size":458,"stargazers_count":0,"open_issues_count":2,"forks_count":4,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T10:48:44.130Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chainguard-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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":"2025-04-29T00:01:16.000Z","updated_at":"2026-01-13T08:25:42.000Z","dependencies_parsed_at":"2025-12-08T20:06:16.836Z","dependency_job_id":null,"html_url":"https://github.com/chainguard-dev/terraform-provider-helm","commit_stats":null,"previous_names":["chainguard-dev/terraform-provider-helm"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/chainguard-dev/terraform-provider-helm","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainguard-dev%2Fterraform-provider-helm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainguard-dev%2Fterraform-provider-helm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainguard-dev%2Fterraform-provider-helm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainguard-dev%2Fterraform-provider-helm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chainguard-dev","download_url":"https://codeload.github.com/chainguard-dev/terraform-provider-helm/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chainguard-dev%2Fterraform-provider-helm/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28479033,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-16T11:59:17.896Z","status":"ssl_error","status_checked_at":"2026-01-16T11:55:55.838Z","response_time":107,"last_error":"SSL_read: 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":[],"created_at":"2026-01-16T13:33:56.254Z","updated_at":"2026-01-16T13:33:56.317Z","avatar_url":"https://github.com/chainguard-dev.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Terraform Provider for OCI Helm and APK\n\nThis provider allows you to manage OCI Helm charts from APK packages in OCI registries. It supports both direct APK file paths and fetching packages from APK repositories.\n\n## Requirements\n\n- [Terraform](https://www.terraform.io/downloads.html) \u003e= 1.0\n- [Go](https://golang.org/doc/install) \u003e= 1.21\n\n## Building The Provider\n\n1. Clone the repository\n2. Enter the repository directory\n3. Build the provider using the Go `install` command:\n\n```shell\ngo install\n```\n\n## Using the provider\n\n### Basic Usage\n\n```terraform\nterraform {\n  required_providers {\n    helm = {\n      source = \"chainguard-dev/helm\"\n    }\n  }\n}\n\nprovider \"helm\" {\n  extra_repositories = [\"https://packages.wolfi.dev/os\"]\n  extra_keyrings = [\n    \"/path/to/wolfi-signing1.rsa.pub\",\n    \"/path/to/wolfi-signing2.rsa.pub\"\n  ]\n}\n\nresource \"helm_chart\" \"istio_base\" {\n  repository      = \"my-repo/charts\"\n  package_name    = \"istio-charts-base\"\n  package_version = \"1.20.3-r0\"  # Optional, latest will be used if not specified\n  package_arch    = \"aarch64\"    # Optional, defaults to current system architecture\n}\n```\n\n## Example with Wolfi APK Files\n\nFor using Wolfi APK files containing Helm charts:\n\n```terraform\nprovider \"helm\" {\n  extra_repositories = [\"https://packages.wolfi.dev/os\"]\n  extra_keyrings = [\n    \"/path/to/wolfi-signing1.rsa.pub\",\n    \"/path/to/wolfi-signing2.rsa.pub\"\n  ]\n}\n\nresource \"helm_chart\" \"istio_base\" {\n  repository      = \"my-repo/charts\"\n  package_name    = \"istio-charts-base\"\n  package_version = \"1.20.3-r0\"\n  package_arch    = \"x86_64\"\n}\n```\n\n## Provider Configuration\n\nThe provider supports ambient credential helpers for OCI registries, including:\n\n1. Docker credential helpers\n2. Docker config.json files\n3. Environment variables\n\nConfiguration options:\n\n```terraform\nprovider \"helm\" {\n  # Optional: For package repository support\n  extra_repositories = [\"https://packages.wolfi.dev/os\"]  # List of URLs for APK repositories\n  extra_keyrings = [\n    \"/path/to/wolfi-signing1.rsa.pub\",\n    \"/path/to/wolfi-signing2.rsa.pub\"\n  ]  # Paths to public keys for verification\n  default_arch = \"aarch64\"  # Optional default architecture for package fetching\n}\n```\n\nYou can also configure the provider directly in your Terraform code, as shown above.\n\n## How It Works\n\nThe provider extracts APK files, which are essentially tar.gz archives, and finds the Helm chart within the extracted contents. It reads the Chart.yaml to determine chart name and version, and then pushes the chart to the specified OCI registry.\n\n### Architecture Selection\n\nThe provider has a hierarchy for determining which architecture to use when fetching packages:\n\n1. If a resource specifies `package_arch`, that value is used\n2. Otherwise, if the provider specifies `default_arch`, that value is used\n3. Otherwise, it falls back to the system default (currently \"x86_64\")\n\nExample of setting provider-level default architecture:\n\n```terraform\nprovider \"helm\" {\n  default_arch = \"aarch64\"\n}\n```\n\nExample of overriding architecture at the resource level:\n\n```terraform\nresource \"helm_chart\" \"example\" {\n  repo         = \"example/charts\"\n  package_name = \"example-chart\"\n  package_arch = \"arm64\"  # This takes precedence over provider default_arch\n}\n```\n\n### Package Repository Support\n\nWhen using package references instead of direct file paths, the provider:\n\n1. Creates a minimal build context using chainguard-dev/apko\n2. Resolves the package dependencies using the specified repository\n3. Downloads the package to a temporary file\n4. Extracts the APK and processes it the same way as the direct file path\n\n## Developing the Provider\n\nIf you wish to work on the provider, you'll first need [Go](http://www.golang.org) installed on your machine (see [Requirements](#requirements) above).\n\nTo compile the provider, run `go install`. This will build the provider and put the provider binary in the `$GOPATH/bin` directory.\n\nTo generate or update documentation, run `go generate`.\n\n### Local Development Setup\n\n1. Build the provider:\n   ```shell\n   go build -o terraform-provider-helm\n   ```\n\n2. Create a dev.tfrc file to point Terraform to your local provider:\n   ```hcl\n   # dev.tfrc\n   provider_installation {\n     dev_overrides {\n       \"chainguard-dev/helm\" = \"/path/to/terraform-provider-helm\"\n     }\n     direct {}\n   }\n   ```\n\n3. Set up a local APK repository for testing:\n   - The examples/local-apk-repo directory contains a minimal APK repository for testing\n   - It includes a public key for verification (local-melange.rsa.pub) and a packages directory\n\n4. Use the local provider for testing:\n   ```shell\n   cd examples\n   TF_CLI_CONFIG_FILE=dev.tfrc terraform apply\n   ```\n\n5. Alternative setup with local plugin directory:\n   ```shell\n   mkdir -p ~/.terraform.d/plugins/registry.terraform.io/chainguard-dev/helm/0.0.1/$(go env GOOS)_$(go env GOARCH)\n   cp terraform-provider-helm ~/.terraform.d/plugins/registry.terraform.io/chainguard-dev/helm/0.0.1/$(go env GOOS)_$(go env GOARCH)/\n   ```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainguard-dev%2Fterraform-provider-helm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchainguard-dev%2Fterraform-provider-helm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchainguard-dev%2Fterraform-provider-helm/lists"}