make-argocd-fly


Namemake-argocd-fly JSON
Version 0.4.2 PyPI version JSON
download
home_pageNone
SummaryA tool to generate Kubernetes manifests from templates
upload_time2025-10-26 20:00:03
maintainerNone
docs_urlNone
authorNone
requires_python>=3.11
licenseNone
keywords argocd kustomize jinja2
VCS
bugtrack_url
requirements PyYAML Jinja2 jinja2-ansible-filters yamllint packaging Deprecated
Travis-CI No Travis.
coveralls test coverage
            # ✈️ make-argocd-fly

A powerful tool for generating **ArgoCD Applications** and their **rendered Kubernetes resources** from **Helm**, **Kustomize**, and **Jinja2** β€” across multiple environments, at scale.

[![tests](https://img.shields.io/github/actions/workflow/status/Karandash8/make-argocd-fly/coverage.yml?branch=main)](https://github.com/Karandash8/make-argocd-fly/actions/workflows/coverage.yml)
[![cov](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Karandash8/26eb92c97bbfac22b938afebac85e7cd/raw/covbadge.json)](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Karandash8/26eb92c97bbfac22b938afebac85e7cd/raw/covbadge.json)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

---

## πŸ”§ What It Does

**`make-argocd-fly`** lets you:

- Render **Helm charts** and **Kustomize overlays** into plain Kubernetes manifests, so you know exactly what will be deployed
- Add **Jinja2-based templating** for reusable parametrization
- Automatically generate **ArgoCD Application** resources
- Organize applications into a **well-defined directory structure**
- Define multiple environments and control **what gets deployed where**

Think of it as a static GitOps generator for Kubernetes β€” rendering, organizing, and wiring your apps for ArgoCD.

---

## 🧩 The Rendered Manifest Pattern

The Kubernetes GitOps community recently introduced the [Rendered Manifest Pattern](https://www.youtube.com/watch?v=TonN-369Qfo) as a best practice for managing applications with ArgoCD.

Instead of letting ArgoCD invoke Helm or Kustomize internally, you **pre-render manifests outside the cluster** and commit only plain YAML to Git.
This makes your Git repo the *single source of truth* for the exact Kubernetes resources being deployed.

### Why this matters

When ArgoCD runs Helm or Kustomize directly, you may hit problems like:
- **Version drift** – different clusters use different plugin versions and render inconsistently
- **Debugging blind spots** – failures happen inside ArgoCD, with no access to the rendered YAML
- **Unreviewable diffs** – Git diffs show template changes, not the actual manifests applied
- **Limited portability** – CI/CD, linters, and policy tools can’t easily check resources
- **Operational surprises** – subtle plugin/env differences lead to unexpected drift

With pre-rendered manifests you gain:
- **Single source of truth** – Git shows exactly what ArgoCD applies
- **Deterministic builds** – no hidden differences across environments
- **Transparent reviews** – PR diffs show actual Kubernetes changes
- **Pluggable checks** – run linters and security scanners on YAML in CI
- **Simpler ops** – ArgoCD only syncs plain YAML, reducing complexity

**`make-argocd-fly` is a practical implementation of the Rendered Manifest Pattern.**
It automates rendering of Helm charts, Kustomize overlays, and Jinja2 templates, organizes them by environment, and generates ArgoCD `Application` resources pointing to the rendered output.


---

## πŸ’‘ Key Features

* βœ… **Helm rendering**
Render Helm charts into raw manifests.

* βœ… **Kustomize overlays**
Render Kustomize overlays into fully resolved Kubernetes manifests. See the full, flattened configuration before deployment.

* βœ… **Jinja2 templating**
Use variables, logic, and partials to build composable app definitions.

* βœ… **Multi-environment support**
Define once and deploy to multiple environments (e.g. `dev`, `staging`, `prod`) with clean separation of concerns.

* βœ… **ArgoCD Application generation**
Automatically generate Application CRs based on your configuration and environment layout.

* βœ… **Repeatable & Git-friendly**
Fully GitOps-compatible. Output is deterministic and fits naturally into pull request workflows.

---

## πŸ“¦ Installation

```bash
pip install make-argocd-fly
```

---

## πŸ“ Project Structure (Example)

```
config/
  β”œβ”€β”€ my_vars.yml              # Config file
  └── my_apps.yml              # Config file
source/
  β”œβ”€β”€ my_awesome_app/          # Application source resources
  └── monitoring/
        β”œβ”€β”€ prometheus/        # Application source resources
        └── grafana/           # Application source resources
output/
  └── my_env/                  # Environment name
        β”œβ”€β”€ my_awesome_app/    # Application YAML resources
        └── monitoring/
            β”œβ”€β”€ prometheus/    # Application YAML resources
            └── grafana/       # Application YAML resources
```

---

## πŸ”„ Example Workflow

```
make-argocd-fly
```

What it does:
- Applies Jinja2 templates with the right variables
- Renders Helm and Kustomize into raw manifests
- Generates `Application` manifests for ArgoCD
- Organizes everything under `./output/`

---

## πŸ“˜ Documentation

- [Getting Started](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/getting-started.md)
- [Configuration Reference](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/configuration.md)
- [Application Templates](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/templates.md)
- [Kustomize & Helm Applications](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/kustomize.md)
- [ArgoCD Integration](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/argocd.md)
- [CLI Reference](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/cli.md)
- [Examples](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/examples.md)
- [Troubleshooting & Limitations](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/caveats.md)

---

## πŸ“£ Community & Feedback

- Found a bug or have a feature request? [Open an issue](https://github.com/Karandash8/make-argocd-fly/issues)
- Want to contribute? Check out [CONTRIBUTING.md](https://github.com/Karandash8/make-argocd-fly/blob/main/CONTRIBUTING.md)

---

## πŸ›‘ License

MIT License – see [LICENSE](https://github.com/Karandash8/make-argocd-fly/blob/main/LICENSE) for full text.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "make-argocd-fly",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.11",
    "maintainer_email": null,
    "keywords": "argocd, kustomize, jinja2",
    "author": null,
    "author_email": "Andrei Lapin <karandash8@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/e8/e4/fca206d30d23df1713c2d2f1b8aa8335604ddffb8330cc3ca7e7b5282564/make_argocd_fly-0.4.2.tar.gz",
    "platform": null,
    "description": "# \u2708\ufe0f make-argocd-fly\n\nA powerful tool for generating **ArgoCD Applications** and their **rendered Kubernetes resources** from **Helm**, **Kustomize**, and **Jinja2** \u2014 across multiple environments, at scale.\n\n[![tests](https://img.shields.io/github/actions/workflow/status/Karandash8/make-argocd-fly/coverage.yml?branch=main)](https://github.com/Karandash8/make-argocd-fly/actions/workflows/coverage.yml)\n[![cov](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Karandash8/26eb92c97bbfac22b938afebac85e7cd/raw/covbadge.json)](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Karandash8/26eb92c97bbfac22b938afebac85e7cd/raw/covbadge.json)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n\n---\n\n## \ud83d\udd27 What It Does\n\n**`make-argocd-fly`** lets you:\n\n- Render **Helm charts** and **Kustomize overlays** into plain Kubernetes manifests, so you know exactly what will be deployed\n- Add **Jinja2-based templating** for reusable parametrization\n- Automatically generate **ArgoCD Application** resources\n- Organize applications into a **well-defined directory structure**\n- Define multiple environments and control **what gets deployed where**\n\nThink of it as a static GitOps generator for Kubernetes \u2014 rendering, organizing, and wiring your apps for ArgoCD.\n\n---\n\n## \ud83e\udde9 The Rendered Manifest Pattern\n\nThe Kubernetes GitOps community recently introduced the [Rendered Manifest Pattern](https://www.youtube.com/watch?v=TonN-369Qfo) as a best practice for managing applications with ArgoCD.\n\nInstead of letting ArgoCD invoke Helm or Kustomize internally, you **pre-render manifests outside the cluster** and commit only plain YAML to Git.\nThis makes your Git repo the *single source of truth* for the exact Kubernetes resources being deployed.\n\n### Why this matters\n\nWhen ArgoCD runs Helm or Kustomize directly, you may hit problems like:\n- **Version drift** \u2013 different clusters use different plugin versions and render inconsistently\n- **Debugging blind spots** \u2013 failures happen inside ArgoCD, with no access to the rendered YAML\n- **Unreviewable diffs** \u2013 Git diffs show template changes, not the actual manifests applied\n- **Limited portability** \u2013 CI/CD, linters, and policy tools can\u2019t easily check resources\n- **Operational surprises** \u2013 subtle plugin/env differences lead to unexpected drift\n\nWith pre-rendered manifests you gain:\n- **Single source of truth** \u2013 Git shows exactly what ArgoCD applies\n- **Deterministic builds** \u2013 no hidden differences across environments\n- **Transparent reviews** \u2013 PR diffs show actual Kubernetes changes\n- **Pluggable checks** \u2013 run linters and security scanners on YAML in CI\n- **Simpler ops** \u2013 ArgoCD only syncs plain YAML, reducing complexity\n\n**`make-argocd-fly` is a practical implementation of the Rendered Manifest Pattern.**\nIt automates rendering of Helm charts, Kustomize overlays, and Jinja2 templates, organizes them by environment, and generates ArgoCD `Application` resources pointing to the rendered output.\n\n\n---\n\n## \ud83d\udca1 Key Features\n\n* \u2705 **Helm rendering**\nRender Helm charts into raw manifests.\n\n* \u2705 **Kustomize overlays**\nRender Kustomize overlays into fully resolved Kubernetes manifests. See the full, flattened configuration before deployment.\n\n* \u2705 **Jinja2 templating**\nUse variables, logic, and partials to build composable app definitions.\n\n* \u2705 **Multi-environment support**\nDefine once and deploy to multiple environments (e.g. `dev`, `staging`, `prod`) with clean separation of concerns.\n\n* \u2705 **ArgoCD Application generation**\nAutomatically generate Application CRs based on your configuration and environment layout.\n\n* \u2705 **Repeatable & Git-friendly**\nFully GitOps-compatible. Output is deterministic and fits naturally into pull request workflows.\n\n---\n\n## \ud83d\udce6 Installation\n\n```bash\npip install make-argocd-fly\n```\n\n---\n\n## \ud83d\udcc1 Project Structure (Example)\n\n```\nconfig/\n  \u251c\u2500\u2500 my_vars.yml              # Config file\n  \u2514\u2500\u2500 my_apps.yml              # Config file\nsource/\n  \u251c\u2500\u2500 my_awesome_app/          # Application source resources\n  \u2514\u2500\u2500 monitoring/\n        \u251c\u2500\u2500 prometheus/        # Application source resources\n        \u2514\u2500\u2500 grafana/           # Application source resources\noutput/\n  \u2514\u2500\u2500 my_env/                  # Environment name\n        \u251c\u2500\u2500 my_awesome_app/    # Application YAML resources\n        \u2514\u2500\u2500 monitoring/\n            \u251c\u2500\u2500 prometheus/    # Application YAML resources\n            \u2514\u2500\u2500 grafana/       # Application YAML resources\n```\n\n---\n\n## \ud83d\udd04 Example Workflow\n\n```\nmake-argocd-fly\n```\n\nWhat it does:\n- Applies Jinja2 templates with the right variables\n- Renders Helm and Kustomize into raw manifests\n- Generates `Application` manifests for ArgoCD\n- Organizes everything under `./output/`\n\n---\n\n## \ud83d\udcd8 Documentation\n\n- [Getting Started](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/getting-started.md)\n- [Configuration Reference](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/configuration.md)\n- [Application Templates](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/templates.md)\n- [Kustomize & Helm Applications](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/kustomize.md)\n- [ArgoCD Integration](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/argocd.md)\n- [CLI Reference](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/cli.md)\n- [Examples](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/examples.md)\n- [Troubleshooting & Limitations](https://github.com/Karandash8/make-argocd-fly/blob/main/docs/caveats.md)\n\n---\n\n## \ud83d\udce3 Community & Feedback\n\n- Found a bug or have a feature request? [Open an issue](https://github.com/Karandash8/make-argocd-fly/issues)\n- Want to contribute? Check out [CONTRIBUTING.md](https://github.com/Karandash8/make-argocd-fly/blob/main/CONTRIBUTING.md)\n\n---\n\n## \ud83d\udee1 License\n\nMIT License \u2013 see [LICENSE](https://github.com/Karandash8/make-argocd-fly/blob/main/LICENSE) for full text.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A tool to generate Kubernetes manifests from templates",
    "version": "0.4.2",
    "project_urls": {
        "Source Code": "https://github.com/Karandash8/make-argocd-fly"
    },
    "split_keywords": [
        "argocd",
        " kustomize",
        " jinja2"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "c1d16849e904e9a50cadbabd2ff1e0eac105452f82d1804b32aa018379d16e01",
                "md5": "f045c0fcc0217608fbd59a63b7af9fe7",
                "sha256": "b0e89189f4f772f8606019308caf9bb581d452d230cc08b47ddc07167a8ede19"
            },
            "downloads": -1,
            "filename": "make_argocd_fly-0.4.2-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "f045c0fcc0217608fbd59a63b7af9fe7",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.11",
            "size": 251281,
            "upload_time": "2025-10-26T20:00:01",
            "upload_time_iso_8601": "2025-10-26T20:00:01.952995Z",
            "url": "https://files.pythonhosted.org/packages/c1/d1/6849e904e9a50cadbabd2ff1e0eac105452f82d1804b32aa018379d16e01/make_argocd_fly-0.4.2-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "e8e4fca206d30d23df1713c2d2f1b8aa8335604ddffb8330cc3ca7e7b5282564",
                "md5": "4f1adfa960ca062efff09a3bd3563463",
                "sha256": "99a11dbcd30f68f4e14b15c4532016a56f5ab947406b7c35411c40d9a37e1433"
            },
            "downloads": -1,
            "filename": "make_argocd_fly-0.4.2.tar.gz",
            "has_sig": false,
            "md5_digest": "4f1adfa960ca062efff09a3bd3563463",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.11",
            "size": 147369,
            "upload_time": "2025-10-26T20:00:03",
            "upload_time_iso_8601": "2025-10-26T20:00:03.736720Z",
            "url": "https://files.pythonhosted.org/packages/e8/e4/fca206d30d23df1713c2d2f1b8aa8335604ddffb8330cc3ca7e7b5282564/make_argocd_fly-0.4.2.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-26 20:00:03",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "Karandash8",
    "github_project": "make-argocd-fly",
    "travis_ci": false,
    "coveralls": true,
    "github_actions": true,
    "requirements": [
        {
            "name": "PyYAML",
            "specs": [
                [
                    "==",
                    "6.0.3"
                ]
            ]
        },
        {
            "name": "Jinja2",
            "specs": [
                [
                    "==",
                    "3.1.6"
                ]
            ]
        },
        {
            "name": "jinja2-ansible-filters",
            "specs": [
                [
                    "==",
                    "1.3.2"
                ]
            ]
        },
        {
            "name": "yamllint",
            "specs": [
                [
                    "==",
                    "1.37.1"
                ]
            ]
        },
        {
            "name": "packaging",
            "specs": [
                [
                    "==",
                    "25.0"
                ]
            ]
        },
        {
            "name": "Deprecated",
            "specs": [
                [
                    "==",
                    "1.2.18"
                ]
            ]
        }
    ],
    "tox": true,
    "lcname": "make-argocd-fly"
}
        
Elapsed time: 4.68555s