Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@alexellis
Copy link
Owner

Description

Add kluctl by opencode/grok coder

Closes #1164 requested by @sto

Add kluctl as a new tool to arkade get. Kluctl is a tool to deploy applications declaratively to Kubernetes via a gitops approach.

Motivation and Context

Kluctl provides a way to manage Kubernetes applications using GitOps principles, making it a valuable addition to arkade's toolset.

  • I have raised an issue to propose this change, which has been given a label of design/approved by a maintainer (required)

How Has This Been Tested?

If updating or adding a new CLI to arkade get, run:

go build && ./hack/test-tool.sh TOOL_NAME

Testing output for kluctl:

Testing: kluctl
Kluctl is a tool to deploy applications declaratively to Kubernetes via a gitops approach.
Binary exists in GitHub releases: https://github.com/kluctl/kluctl/releases/tag/v2.25.0
Binary exists for linux/arm64: https://github.com/kluctl/kluctl/releases/download/v2.25.0/kluctl_v2.25.0_linux_arm64.tar.gz
Binary exists for linux/amd64: https://github.com/kluctl/kluctl/releases/download/v2.25.0/kluctl_v2.25.0_linux_amd64.tar.gz
Binary exists for darwin/arm64: https://github.com/kluctl/kluctl/releases/download/v2.25.0/kluctl_v2.25.0_darwin_arm64.tar.gz
Binary exists for darwin/amd64: https://github.com/kluctl/kluctl/releases/download/v2.25.0/kluctl_v2.25.0_darwin_amd64.tar.gz
Binary exists for windows/amd64: https://github.com/kluctl/kluctl/releases/download/v2.25.0/kluctl_v2.25.0_windows_amd64.zip

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Documentation

  • I have updated the list of tools in README.md if (required) with ./arkade get --format markdown
  • I have updated the list of apps in README.md if (required) with ./arkade install --help

Checklist:

  • My code follows the code style of this project.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I've read the CONTRIBUTION guide
  • I have signed-off my commits with git commit -s
  • I have tested this on arm, or have added code to prevent deployment

@reviewfn
Copy link

reviewfn bot commented Nov 15, 2025

AI Pull Request Overview

Summary

  • Adds kluctl as a new tool to arkade get for declarative Kubernetes deployments via GitOps
  • Updates README.md to include kluctl in the tools list and increments tool count to 177
  • Adds unit test for kluctl download URL generation across multiple platforms
  • Defines kluctl tool configuration in tools.go with proper binary template

Summary per file

Summary per file
File path Summary
README.md Adds kluctl entry to tools table and updates total tool count from 175 to 177
pkg/get/get_test.go Adds Test_DownloadKluctl function testing download URLs for linux/darwin/windows platforms
pkg/get/tools.go Appends kluctl tool definition with GitHub repo details and binary template

Overall Assessment

Overall Assessment

The PR successfully adds kluctl as a new tool to arkade's get command, following established patterns for tool additions. The changes are minimal, focused, and maintain consistency with existing codebase conventions. The implementation appears correct for adding a GitHub-released binary tool with multi-platform support. However, there is a version inconsistency between the PR description (v2.25.0) and test code (v2.27.0) that should be resolved for clarity. Overall, this is a low-risk addition that enhances arkade's toolset for Kubernetes GitOps workflows.

Detailed Review

Detailed Review

README.md

  • Correctly adds kluctl entry in alphabetical order between "kind" and "kops"
  • Description matches the one in tools.go: "Kluctl is a tool to deploy applications declaratively to Kubernetes via a gitops approach."
  • Tool count updated accurately from 175 to 177
  • No issues with formatting or placement

pkg/get/tools.go

  • Tool definition follows the standard Tool struct pattern used throughout the file
  • Owner and Repo correctly set to "kluctl" and "kluctl"
  • Binary template properly handles OS/arch mapping:
    • Maps "ming" to "windows" for OS
    • Maps "x86_64" to "amd64" and "aarch64" to "arm64" for arch
    • Uses appropriate file extensions (.tar.gz for unix, .zip for windows)
  • Template syntax is consistent with other tools in the codebase
  • No security concerns with the template logic

pkg/get/get_test.go

  • Test function Test_DownloadKluctl follows the naming and structure of other tool tests
  • Covers all major platforms: linux (amd64/arm64), darwin (amd64/arm64), windows (amd64)
  • Uses version "v2.27.0" which appears to be a recent release
  • URLs are correctly formatted according to the binary template
  • Issue: Version mismatch with PR description which references v2.25.0. While v2.27.0 is likely more current, the PR should be updated to reflect the tested version for consistency.

General Observations

  • No impact on existing functionality - addition only
  • No migration concerns as this is a new tool
  • Testing appears adequate for URL generation, though integration testing via the mentioned ./hack/test-tool.sh kluctl would be valuable
  • Performance impact negligible - just another entry in the tools slice
  • Security: No obvious issues; relies on GitHub releases which is standard practice
  • Consistency: Matches patterns of other GitHub-based tools like kind, kops, etc.
  • The tool addition aligns with arkade's purpose of providing easy access to Kubernetes-related utilities

Recommendations:

  1. Update PR description to reference v2.27.0 instead of v2.25.0 to match the test
  2. Consider adding a brief note in the PR about kluctl's role in GitOps workflows for context
  3. Ensure the tool has been tested with ./hack/test-tool.sh kluctl as mentioned in the PR template
/home/ubuntu/workdir/REVIEW.md

AI agent details.

Agent processing time: 42.923s
Environment preparation time: 6.402s
Total time from webhook: 52.682s

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds kluctl, a declarative GitOps deployment tool for Kubernetes, to arkade's toolset. The implementation follows arkade's established patterns for adding new tools.

Key Changes:

  • Added kluctl tool definition with support for Linux, Darwin, and Windows across amd64 and arm64 architectures
  • Implemented comprehensive tests covering all supported OS/architecture combinations
  • Updated README with kluctl entry and incremented the tool count to 177

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
pkg/get/tools.go Adds kluctl tool definition with BinaryTemplate supporting multiple OS/arch combinations
pkg/get/get_test.go Adds Test_DownloadKluctl covering Linux, Darwin, and Windows platforms with different architectures
README.md Updates tool list with kluctl entry in alphabetical order and updates tool count from 175 to 177

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Owner: "kluctl",
Repo: "kluctl",
Name: "kluctl",
Description: "Kluctl is a tool to deploy applications declaratively to Kubernetes via a gitops approach.",
Copy link

Copilot AI Nov 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The term "gitops" should be capitalized as "GitOps" to be consistent with other tool descriptions in this codebase. See lines 1663, 1872, and 1981 in tools.go where "GitOps" is used with proper capitalization.

Suggested change
Description: "Kluctl is a tool to deploy applications declaratively to Kubernetes via a gitops approach.",
Description: "Kluctl is a tool to deploy applications declaratively to Kubernetes via a GitOps approach.",

Copilot uses AI. Check for mistakes.
| [kgctl](https://github.com/squat/kilo) | A CLI to manage Kilo, a multi-cloud network overlay built on WireGuard and designed for Kubernetes. |
| [kim](https://github.com/rancher/kim) | Build container images inside of Kubernetes. (Experimental) |
| [kind](https://github.com/kubernetes-sigs/kind) | Run local Kubernetes clusters using Docker container nodes. |
| [kluctl](https://github.com/kluctl/kluctl) | Kluctl is a tool to deploy applications declaratively to Kubernetes via a gitops approach. |
Copy link

Copilot AI Nov 15, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The term "gitops" should be capitalized as "GitOps" to be consistent with the standard capitalization used elsewhere in this file for GitOps-related tools.

Suggested change
| [kluctl](https://github.com/kluctl/kluctl) | Kluctl is a tool to deploy applications declaratively to Kubernetes via a gitops approach. |
| [kluctl](https://github.com/kluctl/kluctl) | Kluctl is a tool to deploy applications declaratively to Kubernetes via a GitOps approach. |

Copilot uses AI. Check for mistakes.
Closes #1164 requested by @sto

Signed-off-by: Alex Ellis (OpenFaaS Ltd) <[email protected]>
@alexellis alexellis merged commit 091ffca into master Nov 17, 2025
4 of 5 checks passed
@alexellis alexellis deleted the kluctl branch November 17, 2025 19:02
@reviewfn
Copy link

reviewfn bot commented Nov 17, 2025

AI Pull Request Overview

Summary

  • Adds support for kluctl, a GitOps tool for Kubernetes deployments
  • Adds support for dufs, a file server with static serving and uploading
  • Updates README.md to include the new tools and correct the total count
  • Includes unit tests for both tools' download URLs
  • Modifies the description of nushell in the README for consistency

Summary per file

Summary per file
File path Summary
README.md Added dufs and kluctl entries to the tools list, updated tool count from 176 to 178, and shortened nushell description
pkg/get/get_test.go Added Test_DownloadKluctl and Test_DownloadDufs test functions to verify download URLs
pkg/get/tools.go Added Tool structs for kluctl and dufs with appropriate binary templates

Overall Assessment

Overall Assessment

The pull request successfully adds two new tools to arkade's get command: kluctl and dufs. Both tools are implemented following the existing codebase patterns, with proper binary templates, unit tests, and README updates. The code appears correct and consistent. The versions used (kluctl v2.27.0, dufs v0.45.0) are recent releases. No security concerns or performance issues identified. The change to nushell's description improves consistency in the tool list formatting.

Detailed Review

Detailed Review

README.md

  • Addition of dufs and kluctl: Both tools are correctly added to the markdown list with links to their GitHub repositories and brief descriptions. The alphabetical ordering is maintained.
  • Tool count update: Correctly updated from 176 to 178 tools.
  • Nushell description change: Shortened from "Nushell, a new type of shell..." to "A new type of shell..." for brevity and consistency with other entries.

pkg/get/tools.go

  • Kluctl tool addition: The Tool struct is properly defined with owner "kluctl", repo "kluctl", and a binary template that correctly handles OS/arch mapping (windows for ming, amd64/arm64 for arch, zip for windows, tar.gz for others). This matches the GitHub release naming convention.
  • Dufs tool addition: Similarly well-implemented with conditional binary template for different OS/arch combinations, aligning with dufs' release assets.

pkg/get/get_test.go

  • Test_DownloadKluctl: Comprehensive test covering linux (amd64/arm64), darwin (amd64/arm64), and windows (amd64) platforms. URLs are correctly formatted and version v2.27.0 is used.
  • Test_DownloadDufs: Tests all supported platforms with appropriate URLs for v0.45.0. Note that the test uses "mingw64_nt-10.0-18362" for windows OS, which is consistent with arkade's testing patterns.

Potential Improvements

  • Consider adding version validation or checks for latest releases in the future.
  • The PR includes changes for both dufs and kluctl, but the title only mentions kluctl. Consider updating the title for clarity.

Testing

  • The PR body mentions testing with go build && ./hack/test-tool.sh TOOL_NAME for kluctl v2.25.0, but the code uses v2.27.0. Ensure the test script passes with the updated version.
  • No integration tests mentioned, but unit tests are sufficient for URL generation.

Consistency

  • Code follows existing patterns in the codebase.
  • No use of deprecated APIs or inconsistent styling observed.

AI agent details.

Agent processing time: 59.994s
Environment preparation time: 6.068s
Total time from webhook: 1m8.862s

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add kluctl

2 participants