{"id":24930661,"url":"https://github.com/logica0419/argocd-helmfile-plugin","last_synced_at":"2026-05-02T07:11:06.992Z","repository":{"id":259898516,"uuid":"879754471","full_name":"logica0419/argocd-helmfile-plugin","owner":"logica0419","description":"Argo CD CMP for Helmfile","archived":false,"fork":false,"pushed_at":"2026-02-22T01:51:59.000Z","size":77,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-22T09:31:04.383Z","etag":null,"topics":["argocd","helm","helmfile","kubernetes","plugin"],"latest_commit_sha":null,"homepage":"","language":"Shell","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/logica0419.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":"2024-10-28T13:47:46.000Z","updated_at":"2026-02-22T01:52:24.000Z","dependencies_parsed_at":null,"dependency_job_id":"af8d36a0-74a9-41fa-be3a-be82f7a030ea","html_url":"https://github.com/logica0419/argocd-helmfile-plugin","commit_stats":null,"previous_names":["logica0419/argocd-helmfile-plugin"],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/logica0419/argocd-helmfile-plugin","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logica0419%2Fargocd-helmfile-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logica0419%2Fargocd-helmfile-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logica0419%2Fargocd-helmfile-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logica0419%2Fargocd-helmfile-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/logica0419","download_url":"https://codeload.github.com/logica0419/argocd-helmfile-plugin/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/logica0419%2Fargocd-helmfile-plugin/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29817295,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-25T05:36:42.804Z","status":"ssl_error","status_checked_at":"2026-02-25T05:36:31.934Z","response_time":61,"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":["argocd","helm","helmfile","kubernetes","plugin"],"created_at":"2025-02-02T13:55:19.260Z","updated_at":"2026-02-25T10:11:00.070Z","avatar_url":"https://github.com/logica0419.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# argocd-helmfile-plugin\n\n[![CI Pipeline](https://github.com/logica0419/argocd-helmfile-plugin/actions/workflows/ci.yaml/badge.svg)](https://github.com/logica0419/argocd-helmfile-plugin/actions/workflows/ci.yaml)\n[![License](https://img.shields.io/github/license/logica0419/argocd-helmfile-plugin.svg)](https://github.com/logica0419/argocd-helmfile-plugin/blob/main/LICENSE)\n[![Current Release](https://img.shields.io/github/release/logica0419/argocd-helmfile-plugin.svg?logo=github)](https://github.com/logica0419/argocd-helmfile-plugin/releases/latest)\n\nArgo CD CMP (Config Management Plugin) for Helmfile\n\n## Installation\n\n### Without encryption\n\nIf you don't use [helm-secrets](https://github.com/jkroepke/helm-secrets) to encrypt the values files, you can install Argo CD with this CMP as follows.\n\n1. **Create the values file**\n\n    ```yaml\n    repoServer:\n      extraContainers:\n        - name: helmfile-plugin\n          image: ghcr.io/logica0419/argocd-helmfile-plugin:latest\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 999\n          volumeMounts:\n            - mountPath: /var/run/argocd\n              name: var-files\n            - mountPath: /home/argocd/cmp-server/plugins\n              name: plugins\n    ```\n\n2. **Install Argo CD with [Helm](https://helm.sh/)**\n\n    ```sh\n    helm repo add argo https://argoproj.github.io/argo-helm\n    helm upgrade --install --create-namespace -n argocd argocd argo/argo-cd -f values.yaml\n    ```\n\n### With encryption\n\nIf you want to encrypt the values files with [helm-secrets](https://github.com/jkroepke/helm-secrets), follow the steps below.\n\n1. **Check the prerequisites**\n\n   - [SOPS](https://github.com/getsops/sops)\n     - The backend of helm-secret\n   - [age](https://github.com/FiloSottile/age)\n     - Used for encryption from SOPS\n\n2. **Create the private key \u0026 secret**\n\n    First, create a private key for encrypting with [age](https://github.com/FiloSottile/age):\n\n    ```sh\n    age-keygen -o keys.txt\n    ```\n\n    Then, create a Kubernetes secret from this key:\n\n    ```sh\n    kubectl -n argocd create secret generic age --from-file=key.txt\n    ```\n\n3. **Install Argo CD**\n\n    Create the values file:\n\n    ```yaml\n    repoServer:\n      volumes:\n        - name: age\n          secret:\n            secretName: age\n\n      extraContainers:\n        - name: helmfile-plugin\n          image: ghcr.io/logica0419/argocd-helmfile-plugin:latest\n          securityContext:\n            runAsNonRoot: true\n            runAsUser: 999\n          env:\n            - name: SOPS_AGE_KEY_FILE\n              value: /app/config/age/key.txt\n          volumeMounts:\n            - mountPath: /var/run/argocd\n              name: var-files\n            - mountPath: /home/argocd/cmp-server/plugins\n              name: plugins\n            - mountPath: /app/config/age/\n              name: age\n    ```\n\n    Finally, install Argo CD with [Helm](https://helm.sh/docs/intro/install/):\n\n    ```sh\n    helm repo add argo https://argoproj.github.io/argo-helm\n    helm upgrade --install --create-namespace -n argocd argocd argo/argo-cd -f values.yaml\n    ```\n\n## Usage\n\nCreate an application with the `helmfile.yaml` path and an empty object in the plugin field.\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: example-application\n  namespace: argocd\n  finalizers:\n    - resources-finalizer.argocd.argoproj.io\nspec:\n  project: default\n  source:\n    repoURL: {{ YOUR_GIT_REPO_URL }}\n    path: {{ YOUR_HELMFILE_PATH }}\n    targetRevision: main\n    plugin: {}\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: example\n  syncPolicy:\n    syncOptions:\n      - CreateNamespace=true\n    automated:\n      prune: true\n      selfHeal: true\n```\n\n### Environment Variables\n\nThis CMP has two environment variables.\n\n| Name        | `ENV_NAME`                         | `ENABLE_LOOKUP`                                                                                                                                                 |\n| ----------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Description | The environment that Helmfile uses | Enable the [\"lookup\" function](https://helm.sh/docs/chart_template_guide/functions_and_pipelines/#using-the-lookup-function) in the helm chart (default: false) |\n\n\u003e NOTE 1: The **\"lookup\" function doesn't work with the \"helmfile template\"** (actually \"helm template\") command by default.  \n\u003e See [argoproj/argo-cd#5202](https://github.com/argoproj/argo-cd/issues/5202#issuecomment-2040122017).\n\u003e\n\u003e NOTE 2: You must provide the **appropriate Role or ClusterRole to the repo-server** to look up the resources with the \"lookup\" function.\n\nYou can configure them in the application manifest:\n\n```yaml\napiVersion: argoproj.io/v1alpha1\nkind: Application\nmetadata:\n  name: example-application\n  namespace: argocd\n  finalizers:\n    - resources-finalizer.argocd.argoproj.io\nspec:\n  project: default\n  source:\n    repoURL: {{ YOUR_GIT_REPO_URL }}\n    path: {{ YOUR_HELMFILE_PATH }}\n    targetRevision: main\n    plugin:\n      env:\n        - name: ENABLE_LOOKUP\n          value: \"true\"\n        - name: ENV_NAME\n          value: development\n  destination:\n    server: https://kubernetes.default.svc\n    namespace: example\n  syncPolicy:\n    syncOptions:\n      - CreateNamespace=true\n    automated:\n      prune: true\n      selfHeal: true\n```\n\nOr in the Argo CD values file:\n\n```yaml\nrepoServer:\n  extraContainers:\n    - name: helmfile-plugin\n      image: ghcr.io/logica0419/argocd-helmfile-plugin:latest\n      securityContext:\n        runAsNonRoot: true\n        runAsUser: 999\n      volumeMounts:\n        - mountPath: /var/run/argocd\n          name: var-files\n        - mountPath: /home/argocd/cmp-server/plugins\n          name: plugins\n      env:\n        - name: ENABLE_LOOKUP\n          value: \"true\"\n        - name: ENV_NAME\n          value: development\n\n  clusterRoleRules:\n    enabled: true\n    rules:\n      - apiGroups: [\"\"]\n        resources:\n          - configmaps\n          - secrets\n        verbs:\n          - get\n```\n\n### Encryption\n\nPlease read the [helm-secrets](https://github.com/jkroepke/helm-secrets/wiki/Usage) documentation to encrypt secrets or values files.\n\n## Why the new Helmfile CMP?\n\nThe Argo CD CMPs for Helmfile already exist.\n\n- \u003chttps://github.com/lucj/argocd-helmfile-plugin\u003e\n- \u003chttps://github.com/travisghansen/argo-cd-helmfile\u003e\n\nOf course, they influenced this CMP so much.\n\nHowever, these CMPs have some problems:\n\n- The enormous amount of **dependencies**\n  - Helmfile has many dependencies, and these CMPs install them in the Dockerfile.\n  - This requires active \u0026 frequent maintenance and upgrade.\n- The **complexity** of the codes \u0026 functionalities\n  - The codes are complex due to the dependencies and functionalities, making them hard to maintain.\n  - The too many customizable features make it hard to understand.\n- The lack of the **\"lookup\" function** support\n  - The \"lookup\" function is a powerful feature in the Helm chart, but these CMPs don't support it.\n\nThis CMP solves these problems:\n\n- Based on the **Helmfile official Docker image**\n  - It realizes the single dependency, making it easy to maintain.\n  - It also enables the auto version determination \u0026 upgrade.\n- The **Simple \u0026 minimal codes and functionalities**\n  - The customizable settings are only `ENV_NAME` and `ENABLE_LOOKUP`.\n  - It has a short code length, making it much more readable.\n- The **\"lookup\" function** support\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogica0419%2Fargocd-helmfile-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flogica0419%2Fargocd-helmfile-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flogica0419%2Fargocd-helmfile-plugin/lists"}