Skip to main content

Manage multiple apps across one or more k8s clusters.

Project description

Gitops

PyPI version versions Test Lint

Manage multiple apps across one or more k8s clusters.

Overview

Keeping track of numerous of single-tenanted application deployments can quickly become a handful. Enter Gitops!

The tool has two halves:

  • Gitops Server - an instance of this gets deployed to each of your kubernetes clusters, listening on changes made to your gitops cluster repo. The server's responsibility is to update the deployments on the cluster it lives on to match the app specifications in the repo.
  • Gitops CLI - this is a tool that you can use to interact comfortably with your cluster repo. It allows listing all deployed applications, what images they're presently running on, and which clusters they live on. It also provides numerous operations that can be applied to one or more apps at a time, such as bumping to a newer version of an image, or running a particular command across your app cohort.

Currently Kubernetes/Helm is the only supported cluster interface. All app deployments are performed as applications of Helm charts.

So what's a "cluster repo"?

This is a git repository that you set up, where you list out all of your applications and how you want them deployed. It looks like this:

.
+- apps
   +- app_0
      +- deployment.yml
      +- secrets.yml
   +- app_1
      +- deployment.yml
      +- secrets.yml
+- jobs

Gitops CLI Installation

  1. Install the CLI tool with: uv tool install gitops and upgrade it with uv tool upgrade gitops.

  2. Set up the environment variable GITOPS_APPS_DIRECTORY to invoke gitops from any directory.

Gitops Server Installation

Secrets should be placed in secrets.env. The example file secrets.example.env has the environment variables you will need to supply.

Ensure that the gitops service account has edit access to the namespace it is deploying to. An example RoleBinding is:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: gitops-role-binding
  namespace: workforce
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
- kind: ServiceAccount
  name: default
  namespace: gitops

Contribution

We're using releaseplease, to publish a new version do the following:

  1. Checkout a feature branch and make the changes
    1. Make sure to follow instructions for writing commits by releaseplease
      1. fix: which represents bug fixes, and correlates to a SemVer patch.
      2. feat: which represents a new feature, and correlates to a SemVer minor.
      3. feat!:, or fix!:, refactor!:, etc., which represent a breaking change (indicated by the !) and will result in a SemVer major.
  2. Push changes and get the PR approved
  3. Once it is merged; an additional PR containing the release changes needs to be merged to create a release.

Project details


Release history Release notifications | RSS feed

This version

1.5.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gitops-1.5.1.tar.gz (107.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gitops-1.5.1-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file gitops-1.5.1.tar.gz.

File metadata

  • Download URL: gitops-1.5.1.tar.gz
  • Upload date:
  • Size: 107.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for gitops-1.5.1.tar.gz
Algorithm Hash digest
SHA256 e6cf82bbdfa3728d2ef4330fd2065ec151f370d9a5570a2af2e9f5f169de6a4c
MD5 8383d33ea3ce9d98b2c765ea3d1fdde4
BLAKE2b-256 5157621119c7f5aa0e686d71ea0a0300c2f1bf6819276ce7c4efcaaf8ee9947e

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitops-1.5.1.tar.gz:

Publisher: release-please.yaml on uptick/gitops

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file gitops-1.5.1-py3-none-any.whl.

File metadata

  • Download URL: gitops-1.5.1-py3-none-any.whl
  • Upload date:
  • Size: 24.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for gitops-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dd0b4d47688e25195b413b2ebd6c77aa8936abc7b822cd0bd7bb5e176ff9d903
MD5 b47208a8b26c28c526bfc226fbe4a9b1
BLAKE2b-256 6bc7f097b2c8df3cc1a7437573eb4ee2a0288d1ee19980a0e79b6a3ec62e1e80

See more details on using hashes here.

Provenance

The following attestation bundles were made for gitops-1.5.1-py3-none-any.whl:

Publisher: release-please.yaml on uptick/gitops

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page