---
title: "Install monedula-gitops"
description: "Install the monedula-gitops CLI with Homebrew, go install, a release binary or Docker, and the Kubernetes operator with Helm or Kustomize."
url: https://monedula.dev/flock/docs/gitops/how-to/install/
---
One binary runs as the CLI or as the Kubernetes operator. Install the CLI wherever you run commands such as `apply` and `verify`, on your machine or a CI runner, and the operator in the Kubernetes cluster that should reconcile your custom resources.

## Before you start

- For the CLI, depending on the method: [Homebrew](https://brew.sh/), Go 1.26 or newer, or Docker. The prebuilt binary needs none of them.
- For the operator, a Kubernetes cluster at version 1.25 or newer, `kubectl` and, for the chart, [Helm](https://helm.sh/docs/intro/install/).

## Steps

### 1. Install the CLI

Install the binary with one of these methods:

<Tabs group="install-method" labels={['Homebrew', 'Go', 'Docker']} label="Install method">

```bash
brew install monedula-dev/tap/monedula-gitops
```

```bash
go install github.com/monedula-dev/monedula-gitops/cmd/monedula-gitops@latest
```

```bash
docker run --rm ghcr.io/monedula-dev/monedula-gitops:latest --help
```

</Tabs>

To use a prebuilt binary instead, download the archive for your operating system and architecture from the [latest release](https://github.com/monedula-dev/monedula-gitops/releases/latest), extract it, and put `monedula-gitops` on your `PATH`.

The Docker image's entrypoint is `monedula-gitops` and its default command is `operator`, so anything you pass after the image name replaces that default: `--help` above prints the CLI help instead of starting the operator.

### 2. Install the operator

Install the Helm chart into its own namespace:

```bash
helm install monedula-gitops oci://ghcr.io/monedula-dev/charts/monedula-gitops \
  --namespace monedula-system --create-namespace
```

The chart installs the custom resource definitions, the RBAC rules and the operator Deployment, and pulls the operator image `ghcr.io/monedula-dev/monedula-gitops`, tagged with the chart's app version. `helm uninstall` leaves the custom resource definitions and your custom resources in place.

The admission webhook is off by default. To turn it on, install [cert-manager](https://cert-manager.io/) first, which issues its serving certificate (or bring your own certificate), and add `--set webhook.enabled=true`; [Configure the Kubernetes operator](/flock/docs/gitops/how-to/configure-the-operator/) covers the webhook and the other chart values.

To install with Kustomize instead, apply the repository's default configuration at the release tag:

```bash
kubectl apply -k "github.com/monedula-dev/monedula-gitops/config/default?ref=v1.0.0"
```

It creates the namespace `monedula-system`, the custom resource definitions, the RBAC rules and the operator Deployment `monedula-controller-manager`, with the webhook off. To turn the webhook on, install cert-manager first and apply `config/overlays/webhook` at the same tag instead of `config/default`.

## Check it worked

Check that the CLI runs:

```bash
monedula-gitops version
```

It prints the version, the commit and the build date. A binary that `go install` builds reports its version as `dev`. With the Docker image, pass `version` after the image name instead.

Check that the operator Deployment, named after the Helm release (`monedula-controller-manager` with Kustomize), finished rolling out:

```bash
kubectl -n monedula-system rollout status deploy/monedula-gitops
```

If the rollout does not finish, read the operator logs:

```bash
kubectl -n monedula-system logs deploy/monedula-gitops
```

## Related

- [Get started with the CLI](/flock/docs/gitops/tutorials/getting-started-cli/) and [Get started with the operator](/flock/docs/gitops/tutorials/getting-started-operator/) walk through a first run on a local cluster.
- [Connect to a secured Kafka cluster](/flock/docs/gitops/how-to/connect-to-a-secured-cluster/) is the next step after installing.