weave-gitops
Weave GitOps is transitioning to a community driven project! It provides insights into your application deployments, and makes continuous delivery with GitOps easier to adopt and scale across your teams.
Top Related Projects
Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.
Declarative Continuous Deployment for Kubernetes
Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Cloud Native pipelines from Tekton
Deploy workloads from Git to large fleets of Kubernetes clusters
Pulumi - Infrastructure as Code in any programming language 🚀
Quick Overview
Weave GitOps is an open-source GitOps platform that automates the deployment and management of Kubernetes applications. It provides a user-friendly interface for managing applications, clusters, and infrastructure as code, enabling teams to implement GitOps practices efficiently.
Pros
- Simplifies GitOps implementation with a user-friendly interface and automated workflows
- Supports multi-cluster management and application deployment across various environments
- Integrates well with existing CI/CD pipelines and Kubernetes ecosystems
- Provides built-in observability and monitoring features for deployed applications
Cons
- Requires a learning curve for teams new to GitOps practices
- May have limitations in customization compared to more flexible, DIY GitOps solutions
- Dependency on specific tools and platforms (e.g., Flux) may not suit all organizational needs
- Community support and ecosystem may be less extensive compared to some alternatives
Getting Started
To get started with Weave GitOps, follow these steps:
- Install the Weave GitOps CLI:
curl -L https://github.com/weaveworks/weave-gitops/releases/latest/download/gitops-$(uname)-$(uname -m).tar.gz | tar xz
sudo mv gitops /usr/local/bin
gitops version
- Bootstrap Weave GitOps on your cluster:
gitops bootstrap
- Access the Weave GitOps UI:
gitops dashboard
For more detailed instructions and advanced configuration options, refer to the official Weave GitOps documentation.
Competitor Comparisons
Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.
Pros of Flux
- More mature and widely adopted in the Kubernetes ecosystem
- Supports a broader range of GitOps use cases and scenarios
- Offers a more extensive set of built-in controllers and custom resources
Cons of Flux
- Steeper learning curve for beginners
- Less user-friendly interface compared to Weave GitOps
- Configuration can be more complex for advanced scenarios
Code Comparison
Flux manifest example:
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: GitRepository
metadata:
name: podinfo
namespace: flux-system
spec:
interval: 1m
url: https://github.com/stefanprodan/podinfo
ref:
branch: master
Weave GitOps manifest example:
apiVersion: gitops.weave.works/v1alpha1
kind: Application
metadata:
name: podinfo
namespace: default
spec:
source:
repoURL: https://github.com/stefanprodan/podinfo
targetRevision: master
destination:
namespace: default
Both Flux and Weave GitOps provide GitOps solutions for Kubernetes, but they differ in their approach and feature set. Flux offers more flexibility and advanced features, while Weave GitOps focuses on simplicity and ease of use. The code examples show how both tools define Git repositories for deployment, with Flux using its custom GitRepository resource and Weave GitOps using an Application resource.
Declarative Continuous Deployment for Kubernetes
Pros of Argo CD
- More mature and widely adopted in the Kubernetes ecosystem
- Supports a broader range of deployment strategies and application types
- Offers a rich set of features for advanced GitOps workflows
Cons of Argo CD
- Steeper learning curve for beginners
- Can be more complex to set up and configure initially
- May require additional tools for certain enterprise-level features
Code Comparison
Argo CD application manifest:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: myapp
spec:
destination:
namespace: default
server: https://kubernetes.default.svc
project: default
source:
path: k8s
repoURL: https://github.com/example/myapp.git
targetRevision: HEAD
Weave GitOps application manifest:
apiVersion: gitops.weave.works/v1alpha1
kind: Application
metadata:
name: myapp
spec:
source:
url: https://github.com/example/myapp.git
path: k8s
interval: 1m
prune: true
Both tools use similar YAML-based configuration for defining applications, but Argo CD's manifest is more detailed and offers more customization options out of the box. Weave GitOps aims for simplicity with a more concise configuration, which can be beneficial for simpler deployments or teams new to GitOps practices.
Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Cloud Native pipelines from Tekton
Pros of jx
- More mature project with a larger community and ecosystem
- Supports multiple cloud providers and Kubernetes distributions
- Offers a wider range of features for CI/CD pipelines and automation
Cons of jx
- Steeper learning curve due to its extensive feature set
- Can be resource-intensive, especially for smaller projects
- Configuration and setup process can be complex
Code Comparison
jx:
pipeline:
agent:
image: gcr.io/jenkinsxio/builder-go
stages:
- name: Build
steps:
- sh: make build
weave-gitops:
apiVersion: gitops.weave.works/v1alpha1
kind: Application
metadata:
name: my-app
spec:
source:
repoURL: https://github.com/org/repo.git
path: ./app
Both projects aim to simplify GitOps workflows, but they approach it differently. jx focuses on providing a comprehensive CI/CD solution with built-in pipeline management, while weave-gitops emphasizes a more lightweight approach to GitOps with a focus on Kubernetes-native applications.
jx offers more out-of-the-box features and integrations, making it suitable for larger teams and complex projects. weave-gitops, on the other hand, provides a simpler, more focused solution for GitOps workflows, which may be preferable for smaller teams or projects with specific GitOps requirements.
Deploy workloads from Git to large fleets of Kubernetes clusters
Pros of Fleet
- Broader multi-cluster management capabilities
- Tighter integration with Rancher ecosystem
- More flexible bundle structure for managing resources
Cons of Fleet
- Steeper learning curve for non-Rancher users
- Less focus on GitOps-specific workflows
- More complex setup for simple GitOps scenarios
Code Comparison
Fleet bundle example:
kind: Bundle
metadata:
name: example-bundle
spec:
resources:
- content:
inline: |
apiVersion: apps/v1
kind: Deployment
# ... deployment spec
Weave GitOps example:
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2
kind: Kustomization
metadata:
name: example-app
spec:
interval: 5m
path: ./kustomize
prune: true
sourceRef:
kind: GitRepository
name: example-repo
Fleet focuses on a custom Bundle resource for managing deployments across clusters, while Weave GitOps leverages Flux's Kustomization CRD for GitOps workflows. Fleet offers more flexibility in resource management, but Weave GitOps provides a more streamlined GitOps-centric approach.
Pulumi - Infrastructure as Code in any programming language 🚀
Pros of Pulumi
- Supports multiple programming languages (TypeScript, Python, Go, etc.)
- Offers a broader scope for infrastructure management beyond Kubernetes
- Provides strong typing and IDE support for infrastructure code
Cons of Pulumi
- Steeper learning curve for those unfamiliar with programming languages
- May require more setup and configuration compared to Weave GitOps
- Less focused on GitOps-specific workflows and Kubernetes management
Code Comparison
Weave GitOps (YAML):
apiVersion: gitops.weave.works/v1alpha1
kind: GitopsCluster
metadata:
name: my-cluster
spec:
secretRef:
name: my-cluster-secret
Pulumi (TypeScript):
import * as pulumi from "@pulumi/pulumi";
import * as k8s from "@pulumi/kubernetes";
const deployment = new k8s.apps.v1.Deployment("my-app", {
spec: { replicas: 3, /* ... */ }
});
Both tools aim to simplify infrastructure management, but Pulumi offers a more general-purpose approach using familiar programming languages, while Weave GitOps focuses on Kubernetes-centric GitOps workflows with YAML configurations. Pulumi's flexibility comes at the cost of complexity, while Weave GitOps provides a more streamlined experience for Kubernetes-specific use cases.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Weave GitOps
Weave GitOps is a simple, open source developer platform for people who want cloud native applications but who don't have Kubernetes expertise. Experience how easy it is to enable GitOps and run your apps in a cluster. Use Git to collaborate with team members making new deployments easy and secure. Start with what developers need to run apps, and then easily extend to define and run your own enterprise platform.
From Kubernetes run Weave GitOps to get:
- Application Operations: manage and automate deployment pipelines for apps and more
- Platforms: the easy way to have your own custom PaaS on cloud or on premise
- Extensions: coordinate Kubernetes rollouts with eg. VMs, databases, and cloud services
Our vision is that all cloud native applications should be easy for developers, and that operations should be automated and secure. Weave GitOps is a highly extensible tool to achieve this by placing Kubernetes and GitOps at the core and building a platform around that.
Weave GitOps defaults are Flux as the GitOps engine, Kustomize, Helm, Sops, and Kubernetes CAPI. If you use Flux already, then you can easily add Weave GitOps to create a platform management overlay.
Weave GitOps Open Source provides:
- Continuous Delivery through GitOps for apps and infrastructure.
- Support for GitHub, GitLab, and Bitbucket; S3-compatible buckets as a source; all major container registries; and all CI workflow providers.
- A secure, pull-based mechanism, operating with least amount of privileges, and adhering to Kubernetes security policies.
- Compatibility with any conformant Kubernetes version and common ecosystem technologies such as Helm, Kustomize, RBAC, Prometheus, OPA, Kyverno, etc.
- Multitenancy, multiple Git repositories, multiple clusters.
- Alerts and notifications.
Manage and view applications all in one place.
Easily see your continuous deployments and what is being produced via GitOps. There are multiple views for debugging as well as being able to sync your latest Git commits directly from the UI.
Check out the Graph view.
Review the yaml file.
See your entire source landscape whether it is a git repository, helm repository, or bucket.
Quickly see the health of your reconciliation deployment runtime. These are the workers that are ensuring your software is running on the Kubernetes cluster.
Getting Started
CLI Installation
Mac / Linux
curl --silent --location "https://github.com/weaveworks/weave-gitops/releases/download/v0.39.0-rc.2/gitops-$(uname)-$(uname -m).tar.gz" | tar xz -C /tmp
sudo mv /tmp/gitops /usr/local/bin
gitops version
Alternatively, users can use Homebrew:
brew tap weaveworks/tap
brew install weaveworks/tap/gitops
Please see the getting started guide.
CLI Reference
Command line utility for managing Kubernetes applications via GitOps.
Usage:
gitops [command]
Examples:
# Get help for gitops add cluster command
gitops add cluster -h
gitops help add cluster
# Get the version of gitops along with commit, branch, and flux version
gitops version
To learn more, you can find our documentation at https://docs.gitops.weaveworks.org/
Available Commands:
beta This component contains unstable or still-in-development functionality
check Validates flux compatibility
completion Generate the autocompletion script for the specified shell
create Creates a resource
get Display one or many Weave GitOps resources
help Help about any command
version Display gitops version
Flags:
-e, --endpoint WEAVE_GITOPS_ENTERPRISE_API_URL The Weave GitOps Enterprise HTTP API endpoint can be set with WEAVE_GITOPS_ENTERPRISE_API_URL environment variable
-h, --help help for gitops
--insecure-skip-tls-verify If true, the server's certificate will not be checked for validity. This will make your HTTPS connections insecure
--kubeconfig string Paths to a kubeconfig. Only required if out-of-cluster.
--namespace string The namespace scope for this operation (default "flux-system")
-p, --password WEAVE_GITOPS_PASSWORD The Weave GitOps Enterprise password for authentication can be set with WEAVE_GITOPS_PASSWORD environment variable
-u, --username WEAVE_GITOPS_USERNAME The Weave GitOps Enterprise username for authentication can be set with WEAVE_GITOPS_USERNAME environment variable
Use "gitops [command] --help" for more information about a command.
For more information please see the docs
FAQ
Please see our Weave GitOps OSS FAQ
Contribution
Need help or want to contribute? Please see the links below.
- Getting Started?
- Follow our Get Started guide and give us feedback
- Need help?
- Talk to us in the #weave-gitops channel on Weaveworks Community Slack. Invite yourself if you haven't joined yet.
- Have feature proposals or want to contribute?
- Please create a Github issue
- Learn more about contributing here.
Top Related Projects
Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.
Declarative Continuous Deployment for Kubernetes
Jenkins X provides automated CI+CD for Kubernetes with Preview Environments on Pull Requests using Cloud Native pipelines from Tekton
Deploy workloads from Git to large fleets of Kubernetes clusters
Pulumi - Infrastructure as Code in any programming language 🚀
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot